From cbd20276054d97736a35160291a65fdca2e8e06a Mon Sep 17 00:00:00 2001
From: Benito <zs22016070@estudiantes.uv.mx>
Date: Thu, 6 Mar 2025 11:43:14 -0600
Subject: [PATCH] Generar pdf reporte

---
 node_modules/.bin/atob                        |   12 +
 node_modules/.bin/atob.cmd                    |   17 +
 node_modules/.bin/atob.ps1                    |   28 +
 node_modules/.bin/btoa                        |   12 +
 node_modules/.bin/btoa.cmd                    |   17 +
 node_modules/.bin/btoa.ps1                    |   28 +
 node_modules/.package-lock.json               |  203 +
 node_modules/@babel/runtime/LICENSE           |   22 +
 node_modules/@babel/runtime/README.md         |   19 +
 .../@babel/runtime/helpers/AwaitValue.js      |    4 +
 .../@babel/runtime/helpers/OverloadYield.js   |    4 +
 .../helpers/applyDecoratedDescriptor.js       |    9 +
 .../@babel/runtime/helpers/applyDecs.js       |  236 +
 .../@babel/runtime/helpers/applyDecs2203.js   |  184 +
 .../@babel/runtime/helpers/applyDecs2203R.js  |  191 +
 .../@babel/runtime/helpers/applyDecs2301.js   |  222 +
 .../@babel/runtime/helpers/applyDecs2305.js   |  133 +
 .../@babel/runtime/helpers/applyDecs2311.js   |  124 +
 .../runtime/helpers/arrayLikeToArray.js       |    6 +
 .../@babel/runtime/helpers/arrayWithHoles.js  |    4 +
 .../runtime/helpers/arrayWithoutHoles.js      |    5 +
 .../runtime/helpers/assertClassBrand.js       |    5 +
 .../runtime/helpers/assertThisInitialized.js  |    5 +
 .../runtime/helpers/asyncGeneratorDelegate.js |   24 +
 .../@babel/runtime/helpers/asyncIterator.js   |   45 +
 .../runtime/helpers/asyncToGenerator.js       |   26 +
 .../runtime/helpers/awaitAsyncGenerator.js    |    5 +
 .../@babel/runtime/helpers/callSuper.js       |    7 +
 .../@babel/runtime/helpers/checkInRHS.js      |    6 +
 .../helpers/checkPrivateRedeclaration.js      |    4 +
 .../classApplyDescriptorDestructureSet.js     |   10 +
 .../helpers/classApplyDescriptorGet.js        |    4 +
 .../helpers/classApplyDescriptorSet.js        |    7 +
 .../@babel/runtime/helpers/classCallCheck.js  |    4 +
 .../helpers/classCheckPrivateStaticAccess.js  |    5 +
 .../classCheckPrivateStaticFieldDescriptor.js |    4 +
 .../helpers/classExtractFieldDescriptor.js    |    5 +
 .../runtime/helpers/classNameTDZError.js      |    4 +
 .../classPrivateFieldDestructureSet.js        |    7 +
 .../runtime/helpers/classPrivateFieldGet.js   |    7 +
 .../runtime/helpers/classPrivateFieldGet2.js  |    5 +
 .../helpers/classPrivateFieldInitSpec.js      |    5 +
 .../helpers/classPrivateFieldLooseBase.js     |    5 +
 .../helpers/classPrivateFieldLooseKey.js      |    5 +
 .../runtime/helpers/classPrivateFieldSet.js   |    7 +
 .../runtime/helpers/classPrivateFieldSet2.js  |    5 +
 .../runtime/helpers/classPrivateGetter.js     |    5 +
 .../runtime/helpers/classPrivateMethodGet.js  |    5 +
 .../helpers/classPrivateMethodInitSpec.js     |    5 +
 .../runtime/helpers/classPrivateMethodSet.js  |    4 +
 .../runtime/helpers/classPrivateSetter.js     |    5 +
 .../classStaticPrivateFieldDestructureSet.js  |    7 +
 .../helpers/classStaticPrivateFieldSpecGet.js |    7 +
 .../helpers/classStaticPrivateFieldSpecSet.js |    7 +
 .../helpers/classStaticPrivateMethodGet.js    |    5 +
 .../helpers/classStaticPrivateMethodSet.js    |    4 +
 .../@babel/runtime/helpers/construct.js       |   10 +
 .../@babel/runtime/helpers/createClass.js     |   13 +
 .../helpers/createForOfIteratorHelper.js      |   50 +
 .../helpers/createForOfIteratorHelperLoose.js |   19 +
 .../@babel/runtime/helpers/createSuper.js     |   16 +
 .../@babel/runtime/helpers/decorate.js        |  250 +
 .../@babel/runtime/helpers/defaults.js        |    9 +
 .../@babel/runtime/helpers/defineAccessor.js  |    8 +
 .../helpers/defineEnumerableProperties.js     |   12 +
 .../@babel/runtime/helpers/defineProperty.js  |   10 +
 .../@babel/runtime/helpers/dispose.js         |   28 +
 .../@babel/runtime/helpers/esm/AwaitValue.js  |    4 +
 .../runtime/helpers/esm/OverloadYield.js      |    4 +
 .../helpers/esm/applyDecoratedDescriptor.js   |    9 +
 .../@babel/runtime/helpers/esm/applyDecs.js   |  236 +
 .../runtime/helpers/esm/applyDecs2203.js      |  184 +
 .../runtime/helpers/esm/applyDecs2203R.js     |  191 +
 .../runtime/helpers/esm/applyDecs2301.js      |  222 +
 .../runtime/helpers/esm/applyDecs2305.js      |  133 +
 .../runtime/helpers/esm/applyDecs2311.js      |  124 +
 .../runtime/helpers/esm/arrayLikeToArray.js   |    6 +
 .../runtime/helpers/esm/arrayWithHoles.js     |    4 +
 .../runtime/helpers/esm/arrayWithoutHoles.js  |    5 +
 .../runtime/helpers/esm/assertClassBrand.js   |    5 +
 .../helpers/esm/assertThisInitialized.js      |    5 +
 .../helpers/esm/asyncGeneratorDelegate.js     |   24 +
 .../runtime/helpers/esm/asyncIterator.js      |   45 +
 .../runtime/helpers/esm/asyncToGenerator.js   |   26 +
 .../helpers/esm/awaitAsyncGenerator.js        |    5 +
 .../@babel/runtime/helpers/esm/callSuper.js   |    7 +
 .../@babel/runtime/helpers/esm/checkInRHS.js  |    6 +
 .../helpers/esm/checkPrivateRedeclaration.js  |    4 +
 .../esm/classApplyDescriptorDestructureSet.js |   10 +
 .../helpers/esm/classApplyDescriptorGet.js    |    4 +
 .../helpers/esm/classApplyDescriptorSet.js    |    7 +
 .../runtime/helpers/esm/classCallCheck.js     |    4 +
 .../esm/classCheckPrivateStaticAccess.js      |    5 +
 .../classCheckPrivateStaticFieldDescriptor.js |    4 +
 .../esm/classExtractFieldDescriptor.js        |    5 +
 .../runtime/helpers/esm/classNameTDZError.js  |    4 +
 .../esm/classPrivateFieldDestructureSet.js    |    7 +
 .../helpers/esm/classPrivateFieldGet.js       |    7 +
 .../helpers/esm/classPrivateFieldGet2.js      |    5 +
 .../helpers/esm/classPrivateFieldInitSpec.js  |    5 +
 .../helpers/esm/classPrivateFieldLooseBase.js |    5 +
 .../helpers/esm/classPrivateFieldLooseKey.js  |    5 +
 .../helpers/esm/classPrivateFieldSet.js       |    7 +
 .../helpers/esm/classPrivateFieldSet2.js      |    5 +
 .../runtime/helpers/esm/classPrivateGetter.js |    5 +
 .../helpers/esm/classPrivateMethodGet.js      |    5 +
 .../helpers/esm/classPrivateMethodInitSpec.js |    5 +
 .../helpers/esm/classPrivateMethodSet.js      |    4 +
 .../runtime/helpers/esm/classPrivateSetter.js |    5 +
 .../classStaticPrivateFieldDestructureSet.js  |    7 +
 .../esm/classStaticPrivateFieldSpecGet.js     |    7 +
 .../esm/classStaticPrivateFieldSpecSet.js     |    7 +
 .../esm/classStaticPrivateMethodGet.js        |    5 +
 .../esm/classStaticPrivateMethodSet.js        |    4 +
 .../@babel/runtime/helpers/esm/construct.js   |   10 +
 .../@babel/runtime/helpers/esm/createClass.js |   13 +
 .../helpers/esm/createForOfIteratorHelper.js  |   50 +
 .../esm/createForOfIteratorHelperLoose.js     |   19 +
 .../@babel/runtime/helpers/esm/createSuper.js |   16 +
 .../@babel/runtime/helpers/esm/decorate.js    |  250 +
 .../@babel/runtime/helpers/esm/defaults.js    |    9 +
 .../runtime/helpers/esm/defineAccessor.js     |    8 +
 .../helpers/esm/defineEnumerableProperties.js |   12 +
 .../runtime/helpers/esm/defineProperty.js     |   10 +
 .../@babel/runtime/helpers/esm/dispose.js     |   28 +
 .../@babel/runtime/helpers/esm/extends.js     |   10 +
 .../@babel/runtime/helpers/esm/get.js         |   11 +
 .../runtime/helpers/esm/getPrototypeOf.js     |    6 +
 .../@babel/runtime/helpers/esm/identity.js    |    4 +
 .../runtime/helpers/esm/importDeferProxy.js   |   27 +
 .../@babel/runtime/helpers/esm/inherits.js    |   14 +
 .../runtime/helpers/esm/inheritsLoose.js      |    5 +
 .../helpers/esm/initializerDefineProperty.js  |    9 +
 .../helpers/esm/initializerWarningHelper.js   |    4 +
 .../@babel/runtime/helpers/esm/instanceof.js  |    4 +
 .../helpers/esm/interopRequireDefault.js      |    6 +
 .../helpers/esm/interopRequireWildcard.js     |   27 +
 .../runtime/helpers/esm/isNativeFunction.js   |    8 +
 .../helpers/esm/isNativeReflectConstruct.js   |    9 +
 .../runtime/helpers/esm/iterableToArray.js    |    4 +
 .../helpers/esm/iterableToArrayLimit.js       |   28 +
 .../@babel/runtime/helpers/esm/jsx.js         |   22 +
 .../runtime/helpers/esm/maybeArrayLike.js     |    9 +
 .../runtime/helpers/esm/newArrowCheck.js      |    4 +
 .../runtime/helpers/esm/nonIterableRest.js    |    4 +
 .../runtime/helpers/esm/nonIterableSpread.js  |    4 +
 .../helpers/esm/nullishReceiverError.js       |    4 +
 .../helpers/esm/objectDestructuringEmpty.js   |    4 +
 .../runtime/helpers/esm/objectSpread.js       |   14 +
 .../runtime/helpers/esm/objectSpread2.js      |   23 +
 .../helpers/esm/objectWithoutProperties.js    |   13 +
 .../esm/objectWithoutPropertiesLoose.js       |   10 +
 .../@babel/runtime/helpers/esm/package.json   |    3 +
 .../helpers/esm/possibleConstructorReturn.js  |    8 +
 .../runtime/helpers/esm/readOnlyError.js      |    4 +
 .../runtime/helpers/esm/regeneratorRuntime.js |  304 +
 .../@babel/runtime/helpers/esm/set.js         |   22 +
 .../runtime/helpers/esm/setFunctionName.js    |   12 +
 .../runtime/helpers/esm/setPrototypeOf.js     |    6 +
 .../helpers/esm/skipFirstGeneratorNext.js     |    7 +
 .../runtime/helpers/esm/slicedToArray.js      |    8 +
 .../runtime/helpers/esm/superPropBase.js      |    6 +
 .../runtime/helpers/esm/superPropGet.js       |    9 +
 .../runtime/helpers/esm/superPropSet.js       |    6 +
 .../helpers/esm/taggedTemplateLiteral.js      |    8 +
 .../helpers/esm/taggedTemplateLiteralLoose.js |    4 +
 .../@babel/runtime/helpers/esm/tdz.js         |    4 +
 .../@babel/runtime/helpers/esm/temporalRef.js |    6 +
 .../runtime/helpers/esm/temporalUndefined.js  |    2 +
 .../@babel/runtime/helpers/esm/toArray.js     |    8 +
 .../runtime/helpers/esm/toConsumableArray.js  |    8 +
 .../@babel/runtime/helpers/esm/toPrimitive.js |   12 +
 .../runtime/helpers/esm/toPropertyKey.js      |    7 +
 .../@babel/runtime/helpers/esm/toSetter.js    |   10 +
 .../@babel/runtime/helpers/esm/typeof.js      |   10 +
 .../helpers/esm/unsupportedIterableToArray.js |    9 +
 .../@babel/runtime/helpers/esm/using.js       |   12 +
 .../@babel/runtime/helpers/esm/usingCtx.js    |   59 +
 .../runtime/helpers/esm/wrapAsyncGenerator.js |   69 +
 .../runtime/helpers/esm/wrapNativeSuper.js    |   27 +
 .../@babel/runtime/helpers/esm/wrapRegExp.js  |   51 +
 .../runtime/helpers/esm/writeOnlyError.js     |    4 +
 .../@babel/runtime/helpers/extends.js         |   10 +
 node_modules/@babel/runtime/helpers/get.js    |   11 +
 .../@babel/runtime/helpers/getPrototypeOf.js  |    6 +
 .../@babel/runtime/helpers/identity.js        |    4 +
 .../runtime/helpers/importDeferProxy.js       |   27 +
 .../@babel/runtime/helpers/inherits.js        |   14 +
 .../@babel/runtime/helpers/inheritsLoose.js   |    5 +
 .../helpers/initializerDefineProperty.js      |    9 +
 .../helpers/initializerWarningHelper.js       |    4 +
 .../@babel/runtime/helpers/instanceof.js      |    4 +
 .../runtime/helpers/interopRequireDefault.js  |    6 +
 .../runtime/helpers/interopRequireWildcard.js |   27 +
 .../runtime/helpers/isNativeFunction.js       |    8 +
 .../helpers/isNativeReflectConstruct.js       |    9 +
 .../@babel/runtime/helpers/iterableToArray.js |    4 +
 .../runtime/helpers/iterableToArrayLimit.js   |   28 +
 node_modules/@babel/runtime/helpers/jsx.js    |   22 +
 .../@babel/runtime/helpers/maybeArrayLike.js  |    9 +
 .../@babel/runtime/helpers/newArrowCheck.js   |    4 +
 .../@babel/runtime/helpers/nonIterableRest.js |    4 +
 .../runtime/helpers/nonIterableSpread.js      |    4 +
 .../runtime/helpers/nullishReceiverError.js   |    4 +
 .../helpers/objectDestructuringEmpty.js       |    4 +
 .../@babel/runtime/helpers/objectSpread.js    |   14 +
 .../@babel/runtime/helpers/objectSpread2.js   |   23 +
 .../helpers/objectWithoutProperties.js        |   13 +
 .../helpers/objectWithoutPropertiesLoose.js   |   10 +
 .../helpers/possibleConstructorReturn.js      |    8 +
 .../@babel/runtime/helpers/readOnlyError.js   |    4 +
 .../runtime/helpers/regeneratorRuntime.js     |  304 +
 node_modules/@babel/runtime/helpers/set.js    |   22 +
 .../@babel/runtime/helpers/setFunctionName.js |   12 +
 .../@babel/runtime/helpers/setPrototypeOf.js  |    6 +
 .../runtime/helpers/skipFirstGeneratorNext.js |    7 +
 .../@babel/runtime/helpers/slicedToArray.js   |    8 +
 .../@babel/runtime/helpers/superPropBase.js   |    6 +
 .../@babel/runtime/helpers/superPropGet.js    |    9 +
 .../@babel/runtime/helpers/superPropSet.js    |    6 +
 .../runtime/helpers/taggedTemplateLiteral.js  |    8 +
 .../helpers/taggedTemplateLiteralLoose.js     |    4 +
 node_modules/@babel/runtime/helpers/tdz.js    |    4 +
 .../@babel/runtime/helpers/temporalRef.js     |    6 +
 .../runtime/helpers/temporalUndefined.js      |    2 +
 .../@babel/runtime/helpers/toArray.js         |    8 +
 .../runtime/helpers/toConsumableArray.js      |    8 +
 .../@babel/runtime/helpers/toPrimitive.js     |   12 +
 .../@babel/runtime/helpers/toPropertyKey.js   |    7 +
 .../@babel/runtime/helpers/toSetter.js        |   10 +
 node_modules/@babel/runtime/helpers/typeof.js |   10 +
 .../helpers/unsupportedIterableToArray.js     |    9 +
 node_modules/@babel/runtime/helpers/using.js  |   12 +
 .../@babel/runtime/helpers/usingCtx.js        |   59 +
 .../runtime/helpers/wrapAsyncGenerator.js     |   69 +
 .../@babel/runtime/helpers/wrapNativeSuper.js |   27 +
 .../@babel/runtime/helpers/wrapRegExp.js      |   51 +
 .../@babel/runtime/helpers/writeOnlyError.js  |    4 +
 node_modules/@babel/runtime/package.json      | 1056 +++
 .../@babel/runtime/regenerator/index.js       |   15 +
 node_modules/@types/raf/LICENSE               |   21 +
 node_modules/@types/raf/README.md             |   26 +
 node_modules/@types/raf/index.d.ts            |    7 +
 node_modules/@types/raf/package.json          |   25 +
 node_modules/@types/trusted-types/LICENSE     |   21 +
 node_modules/@types/trusted-types/README.md   |   15 +
 node_modules/@types/trusted-types/index.d.ts  |   53 +
 .../@types/trusted-types/lib/index.d.ts       |   64 +
 .../@types/trusted-types/package.json         |   45 +
 node_modules/atob/LICENSE                     |  230 +
 node_modules/atob/LICENSE.DOCS                |  319 +
 node_modules/atob/README.md                   |   49 +
 node_modules/atob/bin/atob.js                 |    6 +
 node_modules/atob/bower.json                  |   24 +
 node_modules/atob/browser-atob.js             |   44 +
 node_modules/atob/node-atob.js                |    7 +
 node_modules/atob/package.json                |   24 +
 node_modules/atob/test.js                     |   18 +
 node_modules/base64-arraybuffer/CHANGELOG.md  |   28 +
 node_modules/base64-arraybuffer/LICENSE       |   22 +
 node_modules/base64-arraybuffer/README.md     |   27 +
 node_modules/base64-arraybuffer/package.json  |   54 +
 .../base64-arraybuffer/rollup.config.ts       |   40 +
 node_modules/btoa/LICENSE                     |  191 +
 node_modules/btoa/LICENSE.DOCS                |  319 +
 node_modules/btoa/README.md                   |   40 +
 node_modules/btoa/bin/btoa.js                 |    8 +
 node_modules/btoa/index.js                    |   17 +
 node_modules/btoa/package.json                |   23 +
 node_modules/btoa/test.js                     |   16 +
 node_modules/canvg/LICENSE                    |   21 +
 node_modules/canvg/README.md                  |  314 +
 node_modules/canvg/lib/BoundingBox.d.ts       |   21 +
 node_modules/canvg/lib/BoundingBox.d.ts.map   |    1 +
 node_modules/canvg/lib/Canvg.d.ts             |   98 +
 node_modules/canvg/lib/Canvg.d.ts.map         |    1 +
 node_modules/canvg/lib/Document/AElement.d.ts |   14 +
 .../canvg/lib/Document/AElement.d.ts.map      |    1 +
 .../lib/Document/AnimateColorElement.d.ts     |    6 +
 .../lib/Document/AnimateColorElement.d.ts.map |    1 +
 .../canvg/lib/Document/AnimateElement.d.ts    |   27 +
 .../lib/Document/AnimateElement.d.ts.map      |    1 +
 .../lib/Document/AnimateTransformElement.d.ts |    6 +
 .../Document/AnimateTransformElement.d.ts.map |    1 +
 .../canvg/lib/Document/CircleElement.d.ts     |    9 +
 .../canvg/lib/Document/CircleElement.d.ts.map |    1 +
 .../canvg/lib/Document/ClipPathElement.d.ts   |    8 +
 .../lib/Document/ClipPathElement.d.ts.map     |    1 +
 .../canvg/lib/Document/DefsElement.d.ts       |    6 +
 .../canvg/lib/Document/DefsElement.d.ts.map   |    1 +
 .../canvg/lib/Document/DescElement.d.ts       |    5 +
 .../canvg/lib/Document/DescElement.d.ts.map   |    1 +
 node_modules/canvg/lib/Document/Document.d.ts |  119 +
 .../canvg/lib/Document/Document.d.ts.map      |    1 +
 node_modules/canvg/lib/Document/Element.d.ts  |   33 +
 .../canvg/lib/Document/Element.d.ts.map       |    1 +
 .../canvg/lib/Document/EllipseElement.d.ts    |    9 +
 .../lib/Document/EllipseElement.d.ts.map      |    1 +
 .../lib/Document/FeColorMatrixElement.d.ts    |   11 +
 .../Document/FeColorMatrixElement.d.ts.map    |    1 +
 .../lib/Document/FeCompositeElement.d.ts      |    7 +
 .../lib/Document/FeCompositeElement.d.ts.map  |    1 +
 .../lib/Document/FeDropShadowElement.d.ts     |    9 +
 .../lib/Document/FeDropShadowElement.d.ts.map |    1 +
 .../lib/Document/FeGaussianBlurElement.d.ts   |   11 +
 .../Document/FeGaussianBlurElement.d.ts.map   |    1 +
 .../lib/Document/FeMorphologyElement.d.ts     |    7 +
 .../lib/Document/FeMorphologyElement.d.ts.map |    1 +
 .../canvg/lib/Document/FilterElement.d.ts     |   10 +
 .../canvg/lib/Document/FilterElement.d.ts.map |    1 +
 .../canvg/lib/Document/FontElement.d.ts       |   17 +
 .../canvg/lib/Document/FontElement.d.ts.map   |    1 +
 .../canvg/lib/Document/FontFaceElement.d.ts   |   10 +
 .../lib/Document/FontFaceElement.d.ts.map     |    1 +
 node_modules/canvg/lib/Document/GElement.d.ts |    8 +
 .../canvg/lib/Document/GElement.d.ts.map      |    1 +
 .../canvg/lib/Document/GlyphElement.d.ts      |   10 +
 .../canvg/lib/Document/GlyphElement.d.ts.map  |    1 +
 .../canvg/lib/Document/GradientElement.d.ts   |   17 +
 .../lib/Document/GradientElement.d.ts.map     |    1 +
 .../canvg/lib/Document/ImageElement.d.ts      |   16 +
 .../canvg/lib/Document/ImageElement.d.ts.map  |    1 +
 .../canvg/lib/Document/LineElement.d.ts       |   11 +
 .../canvg/lib/Document/LineElement.d.ts.map   |    1 +
 .../lib/Document/LinearGradientElement.d.ts   |   10 +
 .../Document/LinearGradientElement.d.ts.map   |    1 +
 .../canvg/lib/Document/MarkerElement.d.ts     |    8 +
 .../canvg/lib/Document/MarkerElement.d.ts.map |    1 +
 .../canvg/lib/Document/MaskElement.d.ts       |    9 +
 .../canvg/lib/Document/MaskElement.d.ts.map   |    1 +
 .../lib/Document/MissingGlyphElement.d.ts     |    6 +
 .../lib/Document/MissingGlyphElement.d.ts.map |    1 +
 .../canvg/lib/Document/PathElement.d.ts       |   75 +
 .../canvg/lib/Document/PathElement.d.ts.map   |    1 +
 .../canvg/lib/Document/PatternElement.d.ts    |    8 +
 .../lib/Document/PatternElement.d.ts.map      |    1 +
 .../canvg/lib/Document/PolygonElement.d.ts    |    7 +
 .../lib/Document/PolygonElement.d.ts.map      |    1 +
 .../canvg/lib/Document/PolylineElement.d.ts   |   13 +
 .../lib/Document/PolylineElement.d.ts.map     |    1 +
 .../lib/Document/RadialGradientElement.d.ts   |   10 +
 .../Document/RadialGradientElement.d.ts.map   |    1 +
 .../canvg/lib/Document/RectElement.d.ts       |    9 +
 .../canvg/lib/Document/RectElement.d.ts.map   |    1 +
 .../canvg/lib/Document/RenderedElement.d.ts   |    9 +
 .../lib/Document/RenderedElement.d.ts.map     |    1 +
 .../canvg/lib/Document/SVGElement.d.ts        |   16 +
 .../canvg/lib/Document/SVGElement.d.ts.map    |    1 +
 .../canvg/lib/Document/StopElement.d.ts       |    9 +
 .../canvg/lib/Document/StopElement.d.ts.map   |    1 +
 .../canvg/lib/Document/StyleElement.d.ts      |    9 +
 .../canvg/lib/Document/StyleElement.d.ts.map  |    1 +
 .../canvg/lib/Document/SymbolElement.d.ts     |    7 +
 .../canvg/lib/Document/SymbolElement.d.ts.map |    1 +
 .../canvg/lib/Document/TRefElement.d.ts       |    6 +
 .../canvg/lib/Document/TRefElement.d.ts.map   |    1 +
 .../canvg/lib/Document/TSpanElement.d.ts      |    9 +
 .../canvg/lib/Document/TSpanElement.d.ts.map  |    1 +
 .../canvg/lib/Document/TextElement.d.ts       |   44 +
 .../canvg/lib/Document/TextElement.d.ts.map   |    1 +
 node_modules/canvg/lib/Document/TextNode.d.ts |    5 +
 .../canvg/lib/Document/TextNode.d.ts.map      |    1 +
 .../canvg/lib/Document/TextPathElement.d.ts   |   73 +
 .../lib/Document/TextPathElement.d.ts.map     |    1 +
 .../canvg/lib/Document/TitleElement.d.ts      |    5 +
 .../canvg/lib/Document/TitleElement.d.ts.map  |    1 +
 .../canvg/lib/Document/UnknownElement.d.ts    |    6 +
 .../lib/Document/UnknownElement.d.ts.map      |    1 +
 .../canvg/lib/Document/UseElement.d.ts        |   15 +
 .../canvg/lib/Document/UseElement.d.ts.map    |    1 +
 node_modules/canvg/lib/Document/elements.d.ts |   93 +
 .../canvg/lib/Document/elements.d.ts.map      |    1 +
 node_modules/canvg/lib/Document/index.d.ts    |    4 +
 .../canvg/lib/Document/index.d.ts.map         |    1 +
 node_modules/canvg/lib/Font.d.ts              |   14 +
 node_modules/canvg/lib/Font.d.ts.map          |    1 +
 node_modules/canvg/lib/Mouse.d.ts             |   33 +
 node_modules/canvg/lib/Mouse.d.ts.map         |    1 +
 node_modules/canvg/lib/Parser.d.ts            |   20 +
 node_modules/canvg/lib/Parser.d.ts.map        |    1 +
 node_modules/canvg/lib/PathParser.d.ts        |   32 +
 node_modules/canvg/lib/PathParser.d.ts.map    |    1 +
 node_modules/canvg/lib/Point.d.ts             |   11 +
 node_modules/canvg/lib/Point.d.ts.map         |    1 +
 node_modules/canvg/lib/Property.d.ts          |   46 +
 node_modules/canvg/lib/Property.d.ts.map      |    1 +
 node_modules/canvg/lib/SVGFontLoader.d.ts     |    8 +
 node_modules/canvg/lib/SVGFontLoader.d.ts.map |    1 +
 node_modules/canvg/lib/Screen.d.ts            |  106 +
 node_modules/canvg/lib/Screen.d.ts.map        |    1 +
 node_modules/canvg/lib/Transform/Matrix.d.ts  |   16 +
 .../canvg/lib/Transform/Matrix.d.ts.map       |    1 +
 node_modules/canvg/lib/Transform/Rotate.d.ts  |   17 +
 .../canvg/lib/Transform/Rotate.d.ts.map       |    1 +
 node_modules/canvg/lib/Transform/Scale.d.ts   |   15 +
 .../canvg/lib/Transform/Scale.d.ts.map        |    1 +
 node_modules/canvg/lib/Transform/Skew.d.ts    |    9 +
 .../canvg/lib/Transform/Skew.d.ts.map         |    1 +
 node_modules/canvg/lib/Transform/SkewX.d.ts   |    8 +
 .../canvg/lib/Transform/SkewX.d.ts.map        |    1 +
 node_modules/canvg/lib/Transform/SkewY.d.ts   |    8 +
 .../canvg/lib/Transform/SkewY.d.ts.map        |    1 +
 .../canvg/lib/Transform/Transform.d.ts        |   28 +
 .../canvg/lib/Transform/Transform.d.ts.map    |    1 +
 .../canvg/lib/Transform/Translate.d.ts        |   12 +
 .../canvg/lib/Transform/Translate.d.ts.map    |    1 +
 node_modules/canvg/lib/Transform/index.d.ts   |    3 +
 .../canvg/lib/Transform/index.d.ts.map        |    1 +
 node_modules/canvg/lib/Transform/types.d.ts   |    9 +
 .../canvg/lib/Transform/types.d.ts.map        |    1 +
 node_modules/canvg/lib/ViewPort.d.ts          |   16 +
 node_modules/canvg/lib/ViewPort.d.ts.map      |    1 +
 node_modules/canvg/lib/index.babel.js         | 5271 +++++++++++
 node_modules/canvg/lib/index.cjs              | 8029 +++++++++++++++++
 node_modules/canvg/lib/index.d.ts             |   32 +
 node_modules/canvg/lib/index.d.ts.map         |    1 +
 node_modules/canvg/lib/index.es.js            | 6551 ++++++++++++++
 node_modules/canvg/lib/index.js               | 7966 ++++++++++++++++
 node_modules/canvg/lib/presets/index.d.ts     |    3 +
 node_modules/canvg/lib/presets/index.d.ts.map |    1 +
 node_modules/canvg/lib/presets/node.d.ts      |   45 +
 node_modules/canvg/lib/presets/node.d.ts.map  |    1 +
 node_modules/canvg/lib/presets/offscreen.d.ts |   23 +
 .../canvg/lib/presets/offscreen.d.ts.map      |    1 +
 node_modules/canvg/lib/presets/types.d.ts     |    8 +
 node_modules/canvg/lib/presets/types.d.ts.map |    1 +
 node_modules/canvg/lib/types.d.ts             |    2 +
 node_modules/canvg/lib/types.d.ts.map         |    1 +
 node_modules/canvg/lib/umd.js                 |   17 +
 node_modules/canvg/lib/umd.js.map             |    1 +
 node_modules/canvg/lib/util/debug.d.ts        |   33 +
 node_modules/canvg/lib/util/debug.d.ts.map    |    1 +
 node_modules/canvg/lib/util/index.d.ts        |    4 +
 node_modules/canvg/lib/util/index.d.ts.map    |    1 +
 node_modules/canvg/lib/util/math.d.ts         |   29 +
 node_modules/canvg/lib/util/math.d.ts.map     |    1 +
 node_modules/canvg/lib/util/string.d.ts       |   43 +
 node_modules/canvg/lib/util/string.d.ts.map   |    1 +
 node_modules/canvg/lib/util/styles.d.ts       |    7 +
 node_modules/canvg/lib/util/styles.d.ts.map   |    1 +
 .../node_modules/regenerator-runtime/LICENSE  |   21 +
 .../regenerator-runtime/README.md             |   31 +
 .../regenerator-runtime/package.json          |   19 +
 .../node_modules/regenerator-runtime/path.js  |   11 +
 .../regenerator-runtime/runtime.js            |  761 ++
 node_modules/canvg/package.json               |   60 +
 node_modules/core-js/LICENSE                  |   19 +
 node_modules/core-js/README.md                |   95 +
 node_modules/core-js/actual/README.md         |    1 +
 .../core-js/actual/aggregate-error.js         |    4 +
 .../actual/array-buffer/constructor.js        |    7 +
 .../core-js/actual/array-buffer/detached.js   |    5 +
 .../core-js/actual/array-buffer/index.js      |    7 +
 .../core-js/actual/array-buffer/is-view.js    |    4 +
 .../core-js/actual/array-buffer/slice.js      |    4 +
 .../array-buffer/transfer-to-fixed-length.js  |    5 +
 .../core-js/actual/array-buffer/transfer.js   |    5 +
 node_modules/core-js/actual/array/at.js       |    4 +
 node_modules/core-js/actual/array/concat.js   |    4 +
 .../core-js/actual/array/copy-within.js       |    4 +
 node_modules/core-js/actual/array/entries.js  |    4 +
 node_modules/core-js/actual/array/every.js    |    4 +
 node_modules/core-js/actual/array/fill.js     |    4 +
 node_modules/core-js/actual/array/filter.js   |    4 +
 .../core-js/actual/array/find-index.js        |    4 +
 .../core-js/actual/array/find-last-index.js   |    5 +
 .../core-js/actual/array/find-last.js         |    5 +
 node_modules/core-js/actual/array/find.js     |    4 +
 node_modules/core-js/actual/array/flat-map.js |    4 +
 node_modules/core-js/actual/array/flat.js     |    4 +
 node_modules/core-js/actual/array/for-each.js |    4 +
 .../core-js/actual/array/from-async.js        |    9 +
 node_modules/core-js/actual/array/from.js     |    4 +
 .../core-js/actual/array/group-by-to-map.js   |    7 +
 node_modules/core-js/actual/array/group-by.js |    5 +
 .../core-js/actual/array/group-to-map.js      |    7 +
 node_modules/core-js/actual/array/group.js    |    5 +
 node_modules/core-js/actual/array/includes.js |    4 +
 node_modules/core-js/actual/array/index-of.js |    4 +
 node_modules/core-js/actual/array/index.js    |   18 +
 node_modules/core-js/actual/array/is-array.js |    4 +
 node_modules/core-js/actual/array/iterator.js |    4 +
 node_modules/core-js/actual/array/join.js     |    4 +
 node_modules/core-js/actual/array/keys.js     |    4 +
 .../core-js/actual/array/last-index-of.js     |    4 +
 node_modules/core-js/actual/array/map.js      |    4 +
 node_modules/core-js/actual/array/of.js       |    4 +
 node_modules/core-js/actual/array/push.js     |    4 +
 .../core-js/actual/array/reduce-right.js      |    4 +
 node_modules/core-js/actual/array/reduce.js   |    4 +
 node_modules/core-js/actual/array/reverse.js  |    4 +
 node_modules/core-js/actual/array/slice.js    |    4 +
 node_modules/core-js/actual/array/some.js     |    4 +
 node_modules/core-js/actual/array/sort.js     |    4 +
 node_modules/core-js/actual/array/splice.js   |    4 +
 .../core-js/actual/array/to-reversed.js       |    6 +
 .../core-js/actual/array/to-sorted.js         |    6 +
 .../core-js/actual/array/to-spliced.js        |    6 +
 node_modules/core-js/actual/array/unshift.js  |    4 +
 node_modules/core-js/actual/array/values.js   |    4 +
 .../core-js/actual/array/virtual/at.js        |    4 +
 .../core-js/actual/array/virtual/concat.js    |    4 +
 .../actual/array/virtual/copy-within.js       |    4 +
 .../core-js/actual/array/virtual/entries.js   |    4 +
 .../core-js/actual/array/virtual/every.js     |    4 +
 .../core-js/actual/array/virtual/fill.js      |    4 +
 .../core-js/actual/array/virtual/filter.js    |    4 +
 .../actual/array/virtual/find-index.js        |    4 +
 .../actual/array/virtual/find-last-index.js   |    5 +
 .../core-js/actual/array/virtual/find-last.js |    5 +
 .../core-js/actual/array/virtual/find.js      |    4 +
 .../core-js/actual/array/virtual/flat-map.js  |    4 +
 .../core-js/actual/array/virtual/flat.js      |    4 +
 .../core-js/actual/array/virtual/for-each.js  |    4 +
 .../actual/array/virtual/group-by-to-map.js   |    7 +
 .../core-js/actual/array/virtual/group-by.js  |    5 +
 .../actual/array/virtual/group-to-map.js      |    7 +
 .../core-js/actual/array/virtual/group.js     |    5 +
 .../core-js/actual/array/virtual/includes.js  |    4 +
 .../core-js/actual/array/virtual/index-of.js  |    4 +
 .../core-js/actual/array/virtual/index.js     |   17 +
 .../core-js/actual/array/virtual/iterator.js  |    4 +
 .../core-js/actual/array/virtual/join.js      |    4 +
 .../core-js/actual/array/virtual/keys.js      |    4 +
 .../actual/array/virtual/last-index-of.js     |    4 +
 .../core-js/actual/array/virtual/map.js       |    4 +
 .../core-js/actual/array/virtual/push.js      |    4 +
 .../actual/array/virtual/reduce-right.js      |    4 +
 .../core-js/actual/array/virtual/reduce.js    |    4 +
 .../core-js/actual/array/virtual/reverse.js   |    4 +
 .../core-js/actual/array/virtual/slice.js     |    4 +
 .../core-js/actual/array/virtual/some.js      |    4 +
 .../core-js/actual/array/virtual/sort.js      |    4 +
 .../core-js/actual/array/virtual/splice.js    |    4 +
 .../actual/array/virtual/to-reversed.js       |    6 +
 .../core-js/actual/array/virtual/to-sorted.js |    6 +
 .../actual/array/virtual/to-spliced.js        |    6 +
 .../core-js/actual/array/virtual/unshift.js   |    4 +
 .../core-js/actual/array/virtual/values.js    |    4 +
 .../core-js/actual/array/virtual/with.js      |    6 +
 node_modules/core-js/actual/array/with.js     |    6 +
 .../async-disposable-stack/constructor.js     |   12 +
 .../actual/async-disposable-stack/index.js    |   12 +
 .../actual/async-iterator/async-dispose.js    |    4 +
 .../core-js/actual/async-iterator/drop.js     |    9 +
 .../core-js/actual/async-iterator/every.js    |    9 +
 .../core-js/actual/async-iterator/filter.js   |    9 +
 .../core-js/actual/async-iterator/find.js     |    9 +
 .../core-js/actual/async-iterator/flat-map.js |    9 +
 .../core-js/actual/async-iterator/for-each.js |    9 +
 .../core-js/actual/async-iterator/from.js     |   23 +
 .../core-js/actual/async-iterator/index.js    |   24 +
 .../core-js/actual/async-iterator/map.js      |    9 +
 .../core-js/actual/async-iterator/reduce.js   |    9 +
 .../core-js/actual/async-iterator/some.js     |    9 +
 .../core-js/actual/async-iterator/take.js     |    9 +
 .../core-js/actual/async-iterator/to-array.js |    9 +
 node_modules/core-js/actual/atob.js           |    4 +
 node_modules/core-js/actual/btoa.js           |    4 +
 .../core-js/actual/clear-immediate.js         |    4 +
 .../core-js/actual/data-view/get-float16.js   |    5 +
 .../core-js/actual/data-view/index.js         |    6 +
 .../core-js/actual/data-view/set-float16.js   |    5 +
 node_modules/core-js/actual/date/get-year.js  |    4 +
 node_modules/core-js/actual/date/index.js     |    4 +
 node_modules/core-js/actual/date/now.js       |    4 +
 node_modules/core-js/actual/date/set-year.js  |    4 +
 .../core-js/actual/date/to-gmt-string.js      |    4 +
 .../core-js/actual/date/to-iso-string.js      |    4 +
 node_modules/core-js/actual/date/to-json.js   |    4 +
 .../core-js/actual/date/to-primitive.js       |    4 +
 node_modules/core-js/actual/date/to-string.js |    4 +
 .../actual/disposable-stack/constructor.js    |   10 +
 .../core-js/actual/disposable-stack/index.js  |   10 +
 .../actual/dom-collections/for-each.js        |    4 +
 .../core-js/actual/dom-collections/index.js   |    4 +
 .../actual/dom-collections/iterator.js        |    4 +
 .../actual/dom-exception/constructor.js       |    4 +
 .../core-js/actual/dom-exception/index.js     |    4 +
 .../actual/dom-exception/to-string-tag.js     |    4 +
 .../core-js/actual/error/constructor.js       |    4 +
 node_modules/core-js/actual/error/index.js    |    6 +
 node_modules/core-js/actual/error/is-error.js |    6 +
 .../core-js/actual/error/to-string.js         |    4 +
 node_modules/core-js/actual/escape.js         |    4 +
 node_modules/core-js/actual/function/bind.js  |    4 +
 .../core-js/actual/function/has-instance.js   |    4 +
 node_modules/core-js/actual/function/index.js |    5 +
 .../core-js/actual/function/metadata.js       |    4 +
 node_modules/core-js/actual/function/name.js  |    4 +
 .../core-js/actual/function/virtual/bind.js   |    4 +
 .../core-js/actual/function/virtual/index.js  |    4 +
 .../core-js/actual/get-iterator-method.js     |    4 +
 node_modules/core-js/actual/get-iterator.js   |    4 +
 node_modules/core-js/actual/global-this.js    |    4 +
 node_modules/core-js/actual/index.js          |    5 +
 node_modules/core-js/actual/instance/at.js    |    4 +
 node_modules/core-js/actual/instance/bind.js  |    4 +
 .../core-js/actual/instance/code-point-at.js  |    4 +
 .../core-js/actual/instance/concat.js         |    4 +
 .../core-js/actual/instance/copy-within.js    |    4 +
 .../core-js/actual/instance/ends-with.js      |    4 +
 .../core-js/actual/instance/entries.js        |    4 +
 node_modules/core-js/actual/instance/every.js |    4 +
 node_modules/core-js/actual/instance/fill.js  |    4 +
 .../core-js/actual/instance/filter.js         |    4 +
 .../core-js/actual/instance/find-index.js     |    4 +
 .../actual/instance/find-last-index.js        |   10 +
 .../core-js/actual/instance/find-last.js      |   10 +
 node_modules/core-js/actual/instance/find.js  |    4 +
 node_modules/core-js/actual/instance/flags.js |    4 +
 .../core-js/actual/instance/flat-map.js       |    4 +
 node_modules/core-js/actual/instance/flat.js  |    4 +
 .../core-js/actual/instance/for-each.js       |    4 +
 .../actual/instance/group-by-to-map.js        |   10 +
 .../core-js/actual/instance/group-by.js       |   10 +
 .../core-js/actual/instance/group-to-map.js   |   10 +
 node_modules/core-js/actual/instance/group.js |   10 +
 .../core-js/actual/instance/includes.js       |    4 +
 .../core-js/actual/instance/index-of.js       |    4 +
 .../core-js/actual/instance/is-well-formed.js |    4 +
 node_modules/core-js/actual/instance/keys.js  |    4 +
 .../core-js/actual/instance/last-index-of.js  |    4 +
 node_modules/core-js/actual/instance/map.js   |    4 +
 .../core-js/actual/instance/match-all.js      |    4 +
 .../core-js/actual/instance/pad-end.js        |    4 +
 .../core-js/actual/instance/pad-start.js      |    4 +
 node_modules/core-js/actual/instance/push.js  |    4 +
 .../core-js/actual/instance/reduce-right.js   |    4 +
 .../core-js/actual/instance/reduce.js         |    4 +
 .../core-js/actual/instance/repeat.js         |    4 +
 .../core-js/actual/instance/replace-all.js    |    4 +
 .../core-js/actual/instance/reverse.js        |    4 +
 node_modules/core-js/actual/instance/slice.js |    4 +
 node_modules/core-js/actual/instance/some.js  |    4 +
 node_modules/core-js/actual/instance/sort.js  |    4 +
 .../core-js/actual/instance/splice.js         |    4 +
 .../core-js/actual/instance/starts-with.js    |    4 +
 .../core-js/actual/instance/to-reversed.js    |   10 +
 .../core-js/actual/instance/to-sorted.js      |   10 +
 .../core-js/actual/instance/to-spliced.js     |   10 +
 .../core-js/actual/instance/to-well-formed.js |    4 +
 .../core-js/actual/instance/trim-end.js       |    4 +
 .../core-js/actual/instance/trim-left.js      |    4 +
 .../core-js/actual/instance/trim-right.js     |    4 +
 .../core-js/actual/instance/trim-start.js     |    4 +
 node_modules/core-js/actual/instance/trim.js  |    4 +
 .../core-js/actual/instance/unshift.js        |    4 +
 .../core-js/actual/instance/values.js         |    4 +
 node_modules/core-js/actual/instance/with.js  |   10 +
 node_modules/core-js/actual/is-iterable.js    |    4 +
 .../core-js/actual/iterator/dispose.js        |    2 +
 node_modules/core-js/actual/iterator/drop.js  |    6 +
 node_modules/core-js/actual/iterator/every.js |    6 +
 .../core-js/actual/iterator/filter.js         |    6 +
 node_modules/core-js/actual/iterator/find.js  |    6 +
 .../core-js/actual/iterator/flat-map.js       |    6 +
 .../core-js/actual/iterator/for-each.js       |    6 +
 node_modules/core-js/actual/iterator/from.js  |   20 +
 node_modules/core-js/actual/iterator/index.js |   20 +
 node_modules/core-js/actual/iterator/map.js   |    6 +
 .../core-js/actual/iterator/reduce.js         |    6 +
 node_modules/core-js/actual/iterator/some.js  |    6 +
 node_modules/core-js/actual/iterator/take.js  |    6 +
 .../core-js/actual/iterator/to-array.js       |    6 +
 .../core-js/actual/iterator/to-async.js       |   11 +
 node_modules/core-js/actual/json/index.js     |   10 +
 .../core-js/actual/json/is-raw-json.js        |    5 +
 node_modules/core-js/actual/json/parse.js     |    6 +
 node_modules/core-js/actual/json/raw-json.js  |    7 +
 node_modules/core-js/actual/json/stringify.js |    4 +
 .../core-js/actual/json/to-string-tag.js      |    4 +
 node_modules/core-js/actual/map/group-by.js   |    5 +
 node_modules/core-js/actual/map/index.js      |    5 +
 node_modules/core-js/actual/math/acosh.js     |    4 +
 node_modules/core-js/actual/math/asinh.js     |    4 +
 node_modules/core-js/actual/math/atanh.js     |    4 +
 node_modules/core-js/actual/math/cbrt.js      |    4 +
 node_modules/core-js/actual/math/clz32.js     |    4 +
 node_modules/core-js/actual/math/cosh.js      |    4 +
 node_modules/core-js/actual/math/expm1.js     |    4 +
 node_modules/core-js/actual/math/f16round.js  |    5 +
 node_modules/core-js/actual/math/fround.js    |    4 +
 node_modules/core-js/actual/math/hypot.js     |    4 +
 node_modules/core-js/actual/math/imul.js      |    4 +
 node_modules/core-js/actual/math/index.js     |    7 +
 node_modules/core-js/actual/math/log10.js     |    4 +
 node_modules/core-js/actual/math/log1p.js     |    4 +
 node_modules/core-js/actual/math/log2.js      |    4 +
 node_modules/core-js/actual/math/sign.js      |    4 +
 node_modules/core-js/actual/math/sinh.js      |    4 +
 .../core-js/actual/math/sum-precise.js        |    6 +
 node_modules/core-js/actual/math/tanh.js      |    4 +
 .../core-js/actual/math/to-string-tag.js      |    4 +
 node_modules/core-js/actual/math/trunc.js     |    4 +
 .../core-js/actual/number/constructor.js      |    4 +
 node_modules/core-js/actual/number/epsilon.js |    4 +
 node_modules/core-js/actual/number/index.js   |    4 +
 .../core-js/actual/number/is-finite.js        |    4 +
 .../core-js/actual/number/is-integer.js       |    4 +
 node_modules/core-js/actual/number/is-nan.js  |    4 +
 .../core-js/actual/number/is-safe-integer.js  |    4 +
 .../core-js/actual/number/max-safe-integer.js |    4 +
 .../core-js/actual/number/min-safe-integer.js |    4 +
 .../core-js/actual/number/parse-float.js      |    4 +
 .../core-js/actual/number/parse-int.js        |    4 +
 .../core-js/actual/number/to-exponential.js   |    4 +
 .../core-js/actual/number/to-fixed.js         |    4 +
 .../core-js/actual/number/to-precision.js     |    4 +
 .../core-js/actual/number/virtual/index.js    |    4 +
 .../actual/number/virtual/to-exponential.js   |    4 +
 .../core-js/actual/number/virtual/to-fixed.js |    4 +
 .../actual/number/virtual/to-precision.js     |    4 +
 node_modules/core-js/actual/object/assign.js  |    4 +
 node_modules/core-js/actual/object/create.js  |    4 +
 .../core-js/actual/object/define-getter.js    |    4 +
 .../actual/object/define-properties.js        |    4 +
 .../core-js/actual/object/define-property.js  |    4 +
 .../core-js/actual/object/define-setter.js    |    4 +
 node_modules/core-js/actual/object/entries.js |    4 +
 node_modules/core-js/actual/object/freeze.js  |    4 +
 .../core-js/actual/object/from-entries.js     |    4 +
 .../object/get-own-property-descriptor.js     |    4 +
 .../object/get-own-property-descriptors.js    |    4 +
 .../actual/object/get-own-property-names.js   |    4 +
 .../actual/object/get-own-property-symbols.js |    4 +
 .../core-js/actual/object/get-prototype-of.js |    4 +
 .../core-js/actual/object/group-by.js         |    5 +
 node_modules/core-js/actual/object/has-own.js |    4 +
 node_modules/core-js/actual/object/index.js   |    5 +
 .../core-js/actual/object/is-extensible.js    |    4 +
 .../core-js/actual/object/is-frozen.js        |    4 +
 .../core-js/actual/object/is-sealed.js        |    4 +
 node_modules/core-js/actual/object/is.js      |    4 +
 node_modules/core-js/actual/object/keys.js    |    4 +
 .../core-js/actual/object/lookup-getter.js    |    4 +
 .../core-js/actual/object/lookup-setter.js    |    4 +
 .../actual/object/prevent-extensions.js       |    4 +
 node_modules/core-js/actual/object/proto.js   |    4 +
 node_modules/core-js/actual/object/seal.js    |    4 +
 .../core-js/actual/object/set-prototype-of.js |    4 +
 .../core-js/actual/object/to-string.js        |    4 +
 node_modules/core-js/actual/object/values.js  |    4 +
 node_modules/core-js/actual/parse-float.js    |    4 +
 node_modules/core-js/actual/parse-int.js      |    4 +
 .../core-js/actual/promise/all-settled.js     |    4 +
 node_modules/core-js/actual/promise/any.js    |    4 +
 .../core-js/actual/promise/finally.js         |    4 +
 node_modules/core-js/actual/promise/index.js  |    7 +
 node_modules/core-js/actual/promise/try.js    |    6 +
 .../core-js/actual/promise/with-resolvers.js  |    6 +
 .../core-js/actual/queue-microtask.js         |    4 +
 node_modules/core-js/actual/reflect/apply.js  |    4 +
 .../core-js/actual/reflect/construct.js       |    4 +
 .../core-js/actual/reflect/define-property.js |    4 +
 .../core-js/actual/reflect/delete-property.js |    4 +
 .../reflect/get-own-property-descriptor.js    |    4 +
 .../actual/reflect/get-prototype-of.js        |    4 +
 node_modules/core-js/actual/reflect/get.js    |    4 +
 node_modules/core-js/actual/reflect/has.js    |    4 +
 node_modules/core-js/actual/reflect/index.js  |    4 +
 .../core-js/actual/reflect/is-extensible.js   |    4 +
 .../core-js/actual/reflect/own-keys.js        |    4 +
 .../actual/reflect/prevent-extensions.js      |    4 +
 .../actual/reflect/set-prototype-of.js        |    4 +
 node_modules/core-js/actual/reflect/set.js    |    4 +
 .../core-js/actual/reflect/to-string-tag.js   |    4 +
 .../core-js/actual/regexp/constructor.js      |    4 +
 node_modules/core-js/actual/regexp/dot-all.js |    4 +
 node_modules/core-js/actual/regexp/escape.js  |    5 +
 node_modules/core-js/actual/regexp/flags.js   |    4 +
 node_modules/core-js/actual/regexp/index.js   |    5 +
 node_modules/core-js/actual/regexp/match.js   |    4 +
 node_modules/core-js/actual/regexp/replace.js |    4 +
 node_modules/core-js/actual/regexp/search.js  |    4 +
 node_modules/core-js/actual/regexp/split.js   |    4 +
 node_modules/core-js/actual/regexp/sticky.js  |    4 +
 node_modules/core-js/actual/regexp/test.js    |    4 +
 .../core-js/actual/regexp/to-string.js        |    4 +
 node_modules/core-js/actual/self.js           |    4 +
 node_modules/core-js/actual/set-immediate.js  |    4 +
 node_modules/core-js/actual/set-interval.js   |    4 +
 node_modules/core-js/actual/set-timeout.js    |    4 +
 node_modules/core-js/actual/set/difference.js |    5 +
 node_modules/core-js/actual/set/index.js      |   11 +
 .../core-js/actual/set/intersection.js        |    5 +
 .../core-js/actual/set/is-disjoint-from.js    |    5 +
 .../core-js/actual/set/is-subset-of.js        |    5 +
 .../core-js/actual/set/is-superset-of.js      |    5 +
 .../actual/set/symmetric-difference.js        |    5 +
 node_modules/core-js/actual/set/union.js      |    5 +
 node_modules/core-js/actual/string/anchor.js  |    4 +
 node_modules/core-js/actual/string/at.js      |    4 +
 node_modules/core-js/actual/string/big.js     |    4 +
 node_modules/core-js/actual/string/blink.js   |    4 +
 node_modules/core-js/actual/string/bold.js    |    4 +
 .../core-js/actual/string/code-point-at.js    |    4 +
 .../core-js/actual/string/ends-with.js        |    4 +
 node_modules/core-js/actual/string/fixed.js   |    4 +
 .../core-js/actual/string/fontcolor.js        |    4 +
 .../core-js/actual/string/fontsize.js         |    4 +
 .../core-js/actual/string/from-code-point.js  |    4 +
 .../core-js/actual/string/includes.js         |    4 +
 node_modules/core-js/actual/string/index.js   |    8 +
 .../core-js/actual/string/is-well-formed.js   |    7 +
 node_modules/core-js/actual/string/italics.js |    4 +
 .../core-js/actual/string/iterator.js         |    4 +
 node_modules/core-js/actual/string/link.js    |    4 +
 .../core-js/actual/string/match-all.js        |    4 +
 node_modules/core-js/actual/string/match.js   |    4 +
 node_modules/core-js/actual/string/pad-end.js |    4 +
 .../core-js/actual/string/pad-start.js        |    4 +
 node_modules/core-js/actual/string/raw.js     |    4 +
 node_modules/core-js/actual/string/repeat.js  |    4 +
 .../core-js/actual/string/replace-all.js      |    4 +
 node_modules/core-js/actual/string/replace.js |    4 +
 node_modules/core-js/actual/string/search.js  |    4 +
 node_modules/core-js/actual/string/small.js   |    4 +
 node_modules/core-js/actual/string/split.js   |    4 +
 .../core-js/actual/string/starts-with.js      |    4 +
 node_modules/core-js/actual/string/strike.js  |    4 +
 node_modules/core-js/actual/string/sub.js     |    4 +
 node_modules/core-js/actual/string/substr.js  |    4 +
 node_modules/core-js/actual/string/sup.js     |    4 +
 .../core-js/actual/string/to-well-formed.js   |    7 +
 .../core-js/actual/string/trim-end.js         |    4 +
 .../core-js/actual/string/trim-left.js        |    4 +
 .../core-js/actual/string/trim-right.js       |    4 +
 .../core-js/actual/string/trim-start.js       |    4 +
 node_modules/core-js/actual/string/trim.js    |    4 +
 .../core-js/actual/string/virtual/anchor.js   |    4 +
 .../core-js/actual/string/virtual/at.js       |    4 +
 .../core-js/actual/string/virtual/big.js      |    4 +
 .../core-js/actual/string/virtual/blink.js    |    4 +
 .../core-js/actual/string/virtual/bold.js     |    4 +
 .../actual/string/virtual/code-point-at.js    |    4 +
 .../actual/string/virtual/ends-with.js        |    4 +
 .../core-js/actual/string/virtual/fixed.js    |    4 +
 .../actual/string/virtual/fontcolor.js        |    4 +
 .../core-js/actual/string/virtual/fontsize.js |    4 +
 .../core-js/actual/string/virtual/includes.js |    4 +
 .../core-js/actual/string/virtual/index.js    |    8 +
 .../actual/string/virtual/is-well-formed.js   |    7 +
 .../core-js/actual/string/virtual/italics.js  |    4 +
 .../core-js/actual/string/virtual/iterator.js |    4 +
 .../core-js/actual/string/virtual/link.js     |    4 +
 .../actual/string/virtual/match-all.js        |    4 +
 .../core-js/actual/string/virtual/pad-end.js  |    4 +
 .../actual/string/virtual/pad-start.js        |    4 +
 .../core-js/actual/string/virtual/repeat.js   |    4 +
 .../actual/string/virtual/replace-all.js      |    4 +
 .../core-js/actual/string/virtual/small.js    |    4 +
 .../actual/string/virtual/starts-with.js      |    4 +
 .../core-js/actual/string/virtual/strike.js   |    4 +
 .../core-js/actual/string/virtual/sub.js      |    4 +
 .../core-js/actual/string/virtual/substr.js   |    4 +
 .../core-js/actual/string/virtual/sup.js      |    4 +
 .../actual/string/virtual/to-well-formed.js   |    7 +
 .../core-js/actual/string/virtual/trim-end.js |    4 +
 .../actual/string/virtual/trim-left.js        |    4 +
 .../actual/string/virtual/trim-right.js       |    4 +
 .../actual/string/virtual/trim-start.js       |    4 +
 .../core-js/actual/string/virtual/trim.js     |    4 +
 .../core-js/actual/structured-clone.js        |    4 +
 .../core-js/actual/suppressed-error.js        |    7 +
 .../core-js/actual/symbol/async-dispose.js    |    5 +
 .../core-js/actual/symbol/async-iterator.js   |    4 +
 .../core-js/actual/symbol/description.js      |    4 +
 node_modules/core-js/actual/symbol/dispose.js |    5 +
 node_modules/core-js/actual/symbol/for.js     |    4 +
 .../core-js/actual/symbol/has-instance.js     |    4 +
 node_modules/core-js/actual/symbol/index.js   |    9 +
 .../actual/symbol/is-concat-spreadable.js     |    4 +
 .../core-js/actual/symbol/iterator.js         |    4 +
 node_modules/core-js/actual/symbol/key-for.js |    4 +
 .../core-js/actual/symbol/match-all.js        |    4 +
 node_modules/core-js/actual/symbol/match.js   |    4 +
 .../core-js/actual/symbol/metadata.js         |    6 +
 node_modules/core-js/actual/symbol/replace.js |    4 +
 node_modules/core-js/actual/symbol/search.js  |    4 +
 node_modules/core-js/actual/symbol/species.js |    4 +
 node_modules/core-js/actual/symbol/split.js   |    4 +
 .../core-js/actual/symbol/to-primitive.js     |    4 +
 .../core-js/actual/symbol/to-string-tag.js    |    4 +
 .../core-js/actual/symbol/unscopables.js      |    4 +
 node_modules/core-js/actual/typed-array/at.js |    4 +
 .../core-js/actual/typed-array/copy-within.js |    4 +
 .../core-js/actual/typed-array/entries.js     |    4 +
 .../core-js/actual/typed-array/every.js       |    4 +
 .../core-js/actual/typed-array/fill.js        |    4 +
 .../core-js/actual/typed-array/filter.js      |    4 +
 .../core-js/actual/typed-array/find-index.js  |    4 +
 .../actual/typed-array/find-last-index.js     |    5 +
 .../core-js/actual/typed-array/find-last.js   |    5 +
 .../core-js/actual/typed-array/find.js        |    4 +
 .../actual/typed-array/float32-array.js       |    5 +
 .../actual/typed-array/float64-array.js       |    5 +
 .../core-js/actual/typed-array/for-each.js    |    4 +
 .../core-js/actual/typed-array/from-base64.js |    2 +
 .../core-js/actual/typed-array/from-hex.js    |    2 +
 .../core-js/actual/typed-array/from.js        |    4 +
 .../core-js/actual/typed-array/includes.js    |    4 +
 .../core-js/actual/typed-array/index-of.js    |    4 +
 .../core-js/actual/typed-array/index.js       |   17 +
 .../core-js/actual/typed-array/int16-array.js |    5 +
 .../core-js/actual/typed-array/int32-array.js |    5 +
 .../core-js/actual/typed-array/int8-array.js  |    5 +
 .../core-js/actual/typed-array/iterator.js    |    4 +
 .../core-js/actual/typed-array/join.js        |    4 +
 .../core-js/actual/typed-array/keys.js        |    4 +
 .../actual/typed-array/last-index-of.js       |    4 +
 .../core-js/actual/typed-array/map.js         |    4 +
 .../core-js/actual/typed-array/methods.js     |   17 +
 node_modules/core-js/actual/typed-array/of.js |    4 +
 .../actual/typed-array/reduce-right.js        |    4 +
 .../core-js/actual/typed-array/reduce.js      |    4 +
 .../core-js/actual/typed-array/reverse.js     |    4 +
 .../actual/typed-array/set-from-base64.js     |    2 +
 .../actual/typed-array/set-from-hex.js        |    2 +
 .../core-js/actual/typed-array/set.js         |    4 +
 .../core-js/actual/typed-array/slice.js       |    4 +
 .../core-js/actual/typed-array/some.js        |    4 +
 .../core-js/actual/typed-array/sort.js        |    4 +
 .../core-js/actual/typed-array/subarray.js    |    4 +
 .../core-js/actual/typed-array/to-base64.js   |    2 +
 .../core-js/actual/typed-array/to-hex.js      |    2 +
 .../actual/typed-array/to-locale-string.js    |    4 +
 .../core-js/actual/typed-array/to-reversed.js |    6 +
 .../core-js/actual/typed-array/to-sorted.js   |    6 +
 .../core-js/actual/typed-array/to-spliced.js  |    3 +
 .../core-js/actual/typed-array/to-string.js   |    4 +
 .../actual/typed-array/uint16-array.js        |    5 +
 .../actual/typed-array/uint32-array.js        |    5 +
 .../core-js/actual/typed-array/uint8-array.js |    5 +
 .../actual/typed-array/uint8-clamped-array.js |    5 +
 .../core-js/actual/typed-array/values.js      |    4 +
 .../core-js/actual/typed-array/with.js        |    6 +
 node_modules/core-js/actual/unescape.js       |    4 +
 .../core-js/actual/url-search-params/index.js |    4 +
 node_modules/core-js/actual/url/can-parse.js  |    4 +
 node_modules/core-js/actual/url/index.js      |    4 +
 node_modules/core-js/actual/url/parse.js      |    4 +
 node_modules/core-js/actual/url/to-json.js    |    4 +
 node_modules/core-js/actual/weak-map/index.js |    4 +
 node_modules/core-js/actual/weak-set/index.js |    4 +
 node_modules/core-js/configurator.js          |   28 +
 node_modules/core-js/es/README.md             |    1 +
 node_modules/core-js/es/aggregate-error.js    |    9 +
 .../core-js/es/array-buffer/constructor.js    |   10 +
 .../core-js/es/array-buffer/detached.js       |    4 +
 node_modules/core-js/es/array-buffer/index.js |   12 +
 .../core-js/es/array-buffer/is-view.js        |    5 +
 node_modules/core-js/es/array-buffer/slice.js |    2 +
 .../array-buffer/transfer-to-fixed-length.js  |    5 +
 .../core-js/es/array-buffer/transfer.js       |    5 +
 node_modules/core-js/es/array/at.js           |    5 +
 node_modules/core-js/es/array/concat.js       |    5 +
 node_modules/core-js/es/array/copy-within.js  |    5 +
 node_modules/core-js/es/array/entries.js      |    6 +
 node_modules/core-js/es/array/every.js        |    5 +
 node_modules/core-js/es/array/fill.js         |    5 +
 node_modules/core-js/es/array/filter.js       |    5 +
 node_modules/core-js/es/array/find-index.js   |    5 +
 .../core-js/es/array/find-last-index.js       |    5 +
 node_modules/core-js/es/array/find-last.js    |    5 +
 node_modules/core-js/es/array/find.js         |    5 +
 node_modules/core-js/es/array/flat-map.js     |    6 +
 node_modules/core-js/es/array/flat.js         |    6 +
 node_modules/core-js/es/array/for-each.js     |    5 +
 node_modules/core-js/es/array/from.js         |    6 +
 node_modules/core-js/es/array/includes.js     |    5 +
 node_modules/core-js/es/array/index-of.js     |    5 +
 node_modules/core-js/es/array/index.js        |   44 +
 node_modules/core-js/es/array/is-array.js     |    5 +
 node_modules/core-js/es/array/iterator.js     |    6 +
 node_modules/core-js/es/array/join.js         |    5 +
 node_modules/core-js/es/array/keys.js         |    6 +
 .../core-js/es/array/last-index-of.js         |    5 +
 node_modules/core-js/es/array/map.js          |    5 +
 node_modules/core-js/es/array/of.js           |    5 +
 node_modules/core-js/es/array/push.js         |    5 +
 node_modules/core-js/es/array/reduce-right.js |    5 +
 node_modules/core-js/es/array/reduce.js       |    5 +
 node_modules/core-js/es/array/reverse.js      |    5 +
 node_modules/core-js/es/array/slice.js        |    5 +
 node_modules/core-js/es/array/some.js         |    5 +
 node_modules/core-js/es/array/sort.js         |    5 +
 node_modules/core-js/es/array/splice.js       |    5 +
 node_modules/core-js/es/array/to-reversed.js  |    5 +
 node_modules/core-js/es/array/to-sorted.js    |    6 +
 node_modules/core-js/es/array/to-spliced.js   |    5 +
 node_modules/core-js/es/array/unshift.js      |    5 +
 node_modules/core-js/es/array/values.js       |    6 +
 node_modules/core-js/es/array/virtual/at.js   |    5 +
 .../core-js/es/array/virtual/concat.js        |    5 +
 .../core-js/es/array/virtual/copy-within.js   |    5 +
 .../core-js/es/array/virtual/entries.js       |    6 +
 .../core-js/es/array/virtual/every.js         |    5 +
 node_modules/core-js/es/array/virtual/fill.js |    5 +
 .../core-js/es/array/virtual/filter.js        |    5 +
 .../core-js/es/array/virtual/find-index.js    |    5 +
 .../es/array/virtual/find-last-index.js       |    5 +
 .../core-js/es/array/virtual/find-last.js     |    5 +
 node_modules/core-js/es/array/virtual/find.js |    5 +
 .../core-js/es/array/virtual/flat-map.js      |    6 +
 node_modules/core-js/es/array/virtual/flat.js |    6 +
 .../core-js/es/array/virtual/for-each.js      |    5 +
 .../core-js/es/array/virtual/includes.js      |    5 +
 .../core-js/es/array/virtual/index-of.js      |    5 +
 .../core-js/es/array/virtual/index.js         |   40 +
 .../core-js/es/array/virtual/iterator.js      |    6 +
 node_modules/core-js/es/array/virtual/join.js |    5 +
 node_modules/core-js/es/array/virtual/keys.js |    6 +
 .../core-js/es/array/virtual/last-index-of.js |    5 +
 node_modules/core-js/es/array/virtual/map.js  |    5 +
 node_modules/core-js/es/array/virtual/push.js |    5 +
 .../core-js/es/array/virtual/reduce-right.js  |    5 +
 .../core-js/es/array/virtual/reduce.js        |    5 +
 .../core-js/es/array/virtual/reverse.js       |    5 +
 .../core-js/es/array/virtual/slice.js         |    5 +
 node_modules/core-js/es/array/virtual/some.js |    5 +
 node_modules/core-js/es/array/virtual/sort.js |    5 +
 .../core-js/es/array/virtual/splice.js        |    5 +
 .../core-js/es/array/virtual/to-reversed.js   |    5 +
 .../core-js/es/array/virtual/to-sorted.js     |    6 +
 .../core-js/es/array/virtual/to-spliced.js    |    5 +
 .../core-js/es/array/virtual/unshift.js       |    5 +
 .../core-js/es/array/virtual/values.js        |    6 +
 node_modules/core-js/es/array/virtual/with.js |    5 +
 node_modules/core-js/es/array/with.js         |    5 +
 .../core-js/es/data-view/get-float16.js       |    2 +
 node_modules/core-js/es/data-view/index.js    |   10 +
 .../core-js/es/data-view/set-float16.js       |    2 +
 node_modules/core-js/es/date/get-year.js      |    5 +
 node_modules/core-js/es/date/index.js         |   12 +
 node_modules/core-js/es/date/now.js           |    5 +
 node_modules/core-js/es/date/set-year.js      |    5 +
 node_modules/core-js/es/date/to-gmt-string.js |    5 +
 node_modules/core-js/es/date/to-iso-string.js |    6 +
 node_modules/core-js/es/date/to-json.js       |    5 +
 node_modules/core-js/es/date/to-primitive.js  |    6 +
 node_modules/core-js/es/date/to-string.js     |    5 +
 node_modules/core-js/es/error/constructor.js  |    5 +
 node_modules/core-js/es/error/index.js        |    6 +
 node_modules/core-js/es/error/to-string.js    |    5 +
 node_modules/core-js/es/escape.js             |    5 +
 node_modules/core-js/es/function/bind.js      |    5 +
 .../core-js/es/function/has-instance.js       |    5 +
 node_modules/core-js/es/function/index.js     |    7 +
 node_modules/core-js/es/function/name.js      |    2 +
 .../core-js/es/function/virtual/bind.js       |    5 +
 .../core-js/es/function/virtual/index.js      |    5 +
 .../core-js/es/get-iterator-method.js         |    6 +
 node_modules/core-js/es/get-iterator.js       |    6 +
 node_modules/core-js/es/global-this.js        |    4 +
 node_modules/core-js/es/index.js              |  276 +
 node_modules/core-js/es/instance/at.js        |   15 +
 node_modules/core-js/es/instance/bind.js      |   10 +
 .../core-js/es/instance/code-point-at.js      |   11 +
 node_modules/core-js/es/instance/concat.js    |   10 +
 .../core-js/es/instance/copy-within.js        |   10 +
 node_modules/core-js/es/instance/ends-with.js |   11 +
 node_modules/core-js/es/instance/entries.js   |   10 +
 node_modules/core-js/es/instance/every.js     |   10 +
 node_modules/core-js/es/instance/fill.js      |   10 +
 node_modules/core-js/es/instance/filter.js    |   10 +
 .../core-js/es/instance/find-index.js         |   10 +
 .../core-js/es/instance/find-last-index.js    |   10 +
 node_modules/core-js/es/instance/find-last.js |   10 +
 node_modules/core-js/es/instance/find.js      |   10 +
 node_modules/core-js/es/instance/flags.js     |    9 +
 node_modules/core-js/es/instance/flat-map.js  |   10 +
 node_modules/core-js/es/instance/flat.js      |   10 +
 node_modules/core-js/es/instance/for-each.js  |   10 +
 node_modules/core-js/es/instance/includes.js  |   15 +
 node_modules/core-js/es/instance/index-of.js  |   10 +
 .../core-js/es/instance/is-well-formed.js     |   11 +
 node_modules/core-js/es/instance/keys.js      |   10 +
 .../core-js/es/instance/last-index-of.js      |   10 +
 node_modules/core-js/es/instance/map.js       |   10 +
 node_modules/core-js/es/instance/match-all.js |   11 +
 node_modules/core-js/es/instance/pad-end.js   |   11 +
 node_modules/core-js/es/instance/pad-start.js |   11 +
 node_modules/core-js/es/instance/push.js      |   10 +
 .../core-js/es/instance/reduce-right.js       |   10 +
 node_modules/core-js/es/instance/reduce.js    |   10 +
 node_modules/core-js/es/instance/repeat.js    |   11 +
 .../core-js/es/instance/replace-all.js        |   11 +
 node_modules/core-js/es/instance/reverse.js   |   10 +
 node_modules/core-js/es/instance/slice.js     |   10 +
 node_modules/core-js/es/instance/some.js      |   10 +
 node_modules/core-js/es/instance/sort.js      |   10 +
 node_modules/core-js/es/instance/splice.js    |   10 +
 .../core-js/es/instance/starts-with.js        |   11 +
 .../core-js/es/instance/to-reversed.js        |   10 +
 node_modules/core-js/es/instance/to-sorted.js |   10 +
 .../core-js/es/instance/to-spliced.js         |   10 +
 .../core-js/es/instance/to-well-formed.js     |   11 +
 node_modules/core-js/es/instance/trim-end.js  |   11 +
 node_modules/core-js/es/instance/trim-left.js |   11 +
 .../core-js/es/instance/trim-right.js         |   11 +
 .../core-js/es/instance/trim-start.js         |   11 +
 node_modules/core-js/es/instance/trim.js      |   11 +
 node_modules/core-js/es/instance/unshift.js   |   10 +
 node_modules/core-js/es/instance/values.js    |   10 +
 node_modules/core-js/es/instance/with.js      |   10 +
 node_modules/core-js/es/is-iterable.js        |    6 +
 node_modules/core-js/es/iterator/drop.js      |    8 +
 node_modules/core-js/es/iterator/every.js     |    8 +
 node_modules/core-js/es/iterator/filter.js    |    8 +
 node_modules/core-js/es/iterator/find.js      |    8 +
 node_modules/core-js/es/iterator/flat-map.js  |    8 +
 node_modules/core-js/es/iterator/for-each.js  |    8 +
 node_modules/core-js/es/iterator/from.js      |   21 +
 node_modules/core-js/es/iterator/index.js     |   21 +
 node_modules/core-js/es/iterator/map.js       |    8 +
 node_modules/core-js/es/iterator/reduce.js    |    8 +
 node_modules/core-js/es/iterator/some.js      |    8 +
 node_modules/core-js/es/iterator/take.js      |    8 +
 node_modules/core-js/es/iterator/to-array.js  |    8 +
 node_modules/core-js/es/json/index.js         |    8 +
 node_modules/core-js/es/json/stringify.js     |   13 +
 node_modules/core-js/es/json/to-string-tag.js |    4 +
 node_modules/core-js/es/map/group-by.js       |    7 +
 node_modules/core-js/es/map/index.js          |    9 +
 node_modules/core-js/es/math/acosh.js         |    5 +
 node_modules/core-js/es/math/asinh.js         |    5 +
 node_modules/core-js/es/math/atanh.js         |    5 +
 node_modules/core-js/es/math/cbrt.js          |    5 +
 node_modules/core-js/es/math/clz32.js         |    5 +
 node_modules/core-js/es/math/cosh.js          |    5 +
 node_modules/core-js/es/math/expm1.js         |    5 +
 node_modules/core-js/es/math/f16round.js      |    5 +
 node_modules/core-js/es/math/fround.js        |    5 +
 node_modules/core-js/es/math/hypot.js         |    5 +
 node_modules/core-js/es/math/imul.js          |    5 +
 node_modules/core-js/es/math/index.js         |   23 +
 node_modules/core-js/es/math/log10.js         |    5 +
 node_modules/core-js/es/math/log1p.js         |    5 +
 node_modules/core-js/es/math/log2.js          |    5 +
 node_modules/core-js/es/math/sign.js          |    5 +
 node_modules/core-js/es/math/sinh.js          |    5 +
 node_modules/core-js/es/math/tanh.js          |    5 +
 node_modules/core-js/es/math/to-string-tag.js |    4 +
 node_modules/core-js/es/math/trunc.js         |    5 +
 node_modules/core-js/es/number/constructor.js |    5 +
 node_modules/core-js/es/number/epsilon.js     |    4 +
 node_modules/core-js/es/number/index.js       |   17 +
 node_modules/core-js/es/number/is-finite.js   |    5 +
 node_modules/core-js/es/number/is-integer.js  |    5 +
 node_modules/core-js/es/number/is-nan.js      |    5 +
 .../core-js/es/number/is-safe-integer.js      |    5 +
 .../core-js/es/number/max-safe-integer.js     |    4 +
 .../core-js/es/number/min-safe-integer.js     |    4 +
 node_modules/core-js/es/number/parse-float.js |    5 +
 node_modules/core-js/es/number/parse-int.js   |    5 +
 .../core-js/es/number/to-exponential.js       |    5 +
 node_modules/core-js/es/number/to-fixed.js    |    5 +
 .../core-js/es/number/to-precision.js         |    5 +
 .../core-js/es/number/virtual/index.js        |    7 +
 .../es/number/virtual/to-exponential.js       |    5 +
 .../core-js/es/number/virtual/to-fixed.js     |    5 +
 .../core-js/es/number/virtual/to-precision.js |    5 +
 node_modules/core-js/es/object/assign.js      |    5 +
 node_modules/core-js/es/object/create.js      |    9 +
 .../core-js/es/object/define-getter.js        |    5 +
 .../core-js/es/object/define-properties.js    |   11 +
 .../core-js/es/object/define-property.js      |   11 +
 .../core-js/es/object/define-setter.js        |    5 +
 node_modules/core-js/es/object/entries.js     |    5 +
 node_modules/core-js/es/object/freeze.js      |    5 +
 .../core-js/es/object/from-entries.js         |    6 +
 .../es/object/get-own-property-descriptor.js  |   11 +
 .../es/object/get-own-property-descriptors.js |    5 +
 .../es/object/get-own-property-names.js       |    9 +
 .../es/object/get-own-property-symbols.js     |    5 +
 .../core-js/es/object/get-prototype-of.js     |    5 +
 node_modules/core-js/es/object/group-by.js    |    7 +
 node_modules/core-js/es/object/has-own.js     |    5 +
 node_modules/core-js/es/object/index.js       |   36 +
 .../core-js/es/object/is-extensible.js        |    5 +
 node_modules/core-js/es/object/is-frozen.js   |    5 +
 node_modules/core-js/es/object/is-sealed.js   |    5 +
 node_modules/core-js/es/object/is.js          |    5 +
 node_modules/core-js/es/object/keys.js        |    5 +
 .../core-js/es/object/lookup-getter.js        |    5 +
 .../core-js/es/object/lookup-setter.js        |    5 +
 .../core-js/es/object/prevent-extensions.js   |    5 +
 node_modules/core-js/es/object/proto.js       |    2 +
 node_modules/core-js/es/object/seal.js        |    5 +
 .../core-js/es/object/set-prototype-of.js     |    5 +
 node_modules/core-js/es/object/to-string.js   |   10 +
 node_modules/core-js/es/object/values.js      |    5 +
 node_modules/core-js/es/parse-float.js        |    5 +
 node_modules/core-js/es/parse-int.js          |    5 +
 .../core-js/es/promise/all-settled.js         |   16 +
 node_modules/core-js/es/promise/any.js        |   17 +
 node_modules/core-js/es/promise/finally.js    |    7 +
 node_modules/core-js/es/promise/index.js      |   14 +
 node_modules/core-js/es/promise/try.js        |   15 +
 .../core-js/es/promise/with-resolvers.js      |   13 +
 node_modules/core-js/es/reflect/apply.js      |    5 +
 node_modules/core-js/es/reflect/construct.js  |    5 +
 .../core-js/es/reflect/define-property.js     |    5 +
 .../core-js/es/reflect/delete-property.js     |    5 +
 .../es/reflect/get-own-property-descriptor.js |    5 +
 .../core-js/es/reflect/get-prototype-of.js    |    5 +
 node_modules/core-js/es/reflect/get.js        |    5 +
 node_modules/core-js/es/reflect/has.js        |    5 +
 node_modules/core-js/es/reflect/index.js      |   19 +
 .../core-js/es/reflect/is-extensible.js       |    5 +
 node_modules/core-js/es/reflect/own-keys.js   |    5 +
 .../core-js/es/reflect/prevent-extensions.js  |    5 +
 .../core-js/es/reflect/set-prototype-of.js    |    5 +
 node_modules/core-js/es/reflect/set.js        |    5 +
 .../core-js/es/reflect/to-string-tag.js       |    5 +
 node_modules/core-js/es/regexp/constructor.js |    7 +
 node_modules/core-js/es/regexp/dot-all.js     |    8 +
 node_modules/core-js/es/regexp/escape.js      |    5 +
 node_modules/core-js/es/regexp/flags.js       |    5 +
 node_modules/core-js/es/regexp/index.js       |   13 +
 node_modules/core-js/es/regexp/match.js       |   11 +
 node_modules/core-js/es/regexp/replace.js     |   11 +
 node_modules/core-js/es/regexp/search.js      |   11 +
 node_modules/core-js/es/regexp/split.js       |   11 +
 node_modules/core-js/es/regexp/sticky.js      |    8 +
 node_modules/core-js/es/regexp/test.js        |    6 +
 node_modules/core-js/es/regexp/to-string.js   |    5 +
 node_modules/core-js/es/set/difference.js     |    6 +
 node_modules/core-js/es/set/index.js          |   15 +
 node_modules/core-js/es/set/intersection.js   |    6 +
 .../core-js/es/set/is-disjoint-from.js        |    6 +
 node_modules/core-js/es/set/is-subset-of.js   |    6 +
 node_modules/core-js/es/set/is-superset-of.js |    6 +
 .../core-js/es/set/symmetric-difference.js    |    6 +
 node_modules/core-js/es/set/union.js          |    6 +
 node_modules/core-js/es/string/anchor.js      |    5 +
 node_modules/core-js/es/string/at.js          |    5 +
 node_modules/core-js/es/string/big.js         |    5 +
 node_modules/core-js/es/string/blink.js       |    5 +
 node_modules/core-js/es/string/bold.js        |    5 +
 .../core-js/es/string/code-point-at.js        |    5 +
 node_modules/core-js/es/string/ends-with.js   |    5 +
 node_modules/core-js/es/string/fixed.js       |    5 +
 node_modules/core-js/es/string/fontcolor.js   |    5 +
 node_modules/core-js/es/string/fontsize.js    |    5 +
 .../core-js/es/string/from-code-point.js      |    5 +
 node_modules/core-js/es/string/includes.js    |    5 +
 node_modules/core-js/es/string/index.js       |   42 +
 .../core-js/es/string/is-well-formed.js       |    4 +
 node_modules/core-js/es/string/italics.js     |    5 +
 node_modules/core-js/es/string/iterator.js    |    7 +
 node_modules/core-js/es/string/link.js        |    5 +
 node_modules/core-js/es/string/match-all.js   |    7 +
 node_modules/core-js/es/string/match.js       |    6 +
 node_modules/core-js/es/string/pad-end.js     |    5 +
 node_modules/core-js/es/string/pad-start.js   |    5 +
 node_modules/core-js/es/string/raw.js         |    5 +
 node_modules/core-js/es/string/repeat.js      |    5 +
 node_modules/core-js/es/string/replace-all.js |    7 +
 node_modules/core-js/es/string/replace.js     |    6 +
 node_modules/core-js/es/string/search.js      |    6 +
 node_modules/core-js/es/string/small.js       |    5 +
 node_modules/core-js/es/string/split.js       |    6 +
 node_modules/core-js/es/string/starts-with.js |    5 +
 node_modules/core-js/es/string/strike.js      |    5 +
 node_modules/core-js/es/string/sub.js         |    5 +
 node_modules/core-js/es/string/substr.js      |    5 +
 node_modules/core-js/es/string/sup.js         |    5 +
 .../core-js/es/string/to-well-formed.js       |    4 +
 node_modules/core-js/es/string/trim-end.js    |    5 +
 node_modules/core-js/es/string/trim-left.js   |    5 +
 node_modules/core-js/es/string/trim-right.js  |    5 +
 node_modules/core-js/es/string/trim-start.js  |    5 +
 node_modules/core-js/es/string/trim.js        |    5 +
 .../core-js/es/string/virtual/anchor.js       |    5 +
 node_modules/core-js/es/string/virtual/at.js  |    5 +
 node_modules/core-js/es/string/virtual/big.js |    5 +
 .../core-js/es/string/virtual/blink.js        |    5 +
 .../core-js/es/string/virtual/bold.js         |    5 +
 .../es/string/virtual/code-point-at.js        |    5 +
 .../core-js/es/string/virtual/ends-with.js    |    5 +
 .../core-js/es/string/virtual/fixed.js        |    5 +
 .../core-js/es/string/virtual/fontcolor.js    |    5 +
 .../core-js/es/string/virtual/fontsize.js     |    5 +
 .../core-js/es/string/virtual/includes.js     |    5 +
 .../core-js/es/string/virtual/index.js        |   38 +
 .../es/string/virtual/is-well-formed.js       |    5 +
 .../core-js/es/string/virtual/italics.js      |    5 +
 .../core-js/es/string/virtual/iterator.js     |    6 +
 .../core-js/es/string/virtual/link.js         |    5 +
 .../core-js/es/string/virtual/match-all.js    |    7 +
 .../core-js/es/string/virtual/pad-end.js      |    5 +
 .../core-js/es/string/virtual/pad-start.js    |    5 +
 .../core-js/es/string/virtual/repeat.js       |    5 +
 .../core-js/es/string/virtual/replace-all.js  |    7 +
 .../core-js/es/string/virtual/small.js        |    5 +
 .../core-js/es/string/virtual/starts-with.js  |    5 +
 .../core-js/es/string/virtual/strike.js       |    5 +
 node_modules/core-js/es/string/virtual/sub.js |    5 +
 .../core-js/es/string/virtual/substr.js       |    5 +
 node_modules/core-js/es/string/virtual/sup.js |    5 +
 .../es/string/virtual/to-well-formed.js       |    5 +
 .../core-js/es/string/virtual/trim-end.js     |    5 +
 .../core-js/es/string/virtual/trim-left.js    |    5 +
 .../core-js/es/string/virtual/trim-right.js   |    5 +
 .../core-js/es/string/virtual/trim-start.js   |    5 +
 .../core-js/es/string/virtual/trim.js         |    5 +
 .../core-js/es/symbol/async-iterator.js       |    5 +
 node_modules/core-js/es/symbol/description.js |    2 +
 node_modules/core-js/es/symbol/for.js         |    5 +
 .../core-js/es/symbol/has-instance.js         |    6 +
 node_modules/core-js/es/symbol/index.js       |   24 +
 .../core-js/es/symbol/is-concat-spreadable.js |    6 +
 node_modules/core-js/es/symbol/iterator.js    |    8 +
 node_modules/core-js/es/symbol/key-for.js     |    5 +
 node_modules/core-js/es/symbol/match-all.js   |    8 +
 node_modules/core-js/es/symbol/match.js       |    7 +
 node_modules/core-js/es/symbol/replace.js     |    7 +
 node_modules/core-js/es/symbol/search.js      |    7 +
 node_modules/core-js/es/symbol/species.js     |    5 +
 node_modules/core-js/es/symbol/split.js       |    7 +
 .../core-js/es/symbol/to-primitive.js         |    6 +
 .../core-js/es/symbol/to-string-tag.js        |    9 +
 node_modules/core-js/es/symbol/unscopables.js |    5 +
 node_modules/core-js/es/typed-array/at.js     |    2 +
 .../core-js/es/typed-array/copy-within.js     |    2 +
 .../core-js/es/typed-array/entries.js         |    3 +
 node_modules/core-js/es/typed-array/every.js  |    2 +
 node_modules/core-js/es/typed-array/fill.js   |    2 +
 node_modules/core-js/es/typed-array/filter.js |    2 +
 .../core-js/es/typed-array/find-index.js      |    2 +
 .../core-js/es/typed-array/find-last-index.js |    2 +
 .../core-js/es/typed-array/find-last.js       |    2 +
 node_modules/core-js/es/typed-array/find.js   |    2 +
 .../core-js/es/typed-array/float32-array.js   |    8 +
 .../core-js/es/typed-array/float64-array.js   |    8 +
 .../core-js/es/typed-array/for-each.js        |    2 +
 node_modules/core-js/es/typed-array/from.js   |    2 +
 .../core-js/es/typed-array/includes.js        |    2 +
 .../core-js/es/typed-array/index-of.js        |    2 +
 node_modules/core-js/es/typed-array/index.js  |   13 +
 .../core-js/es/typed-array/int16-array.js     |    8 +
 .../core-js/es/typed-array/int32-array.js     |    8 +
 .../core-js/es/typed-array/int8-array.js      |    8 +
 .../core-js/es/typed-array/iterator.js        |    3 +
 node_modules/core-js/es/typed-array/join.js   |    2 +
 node_modules/core-js/es/typed-array/keys.js   |    3 +
 .../core-js/es/typed-array/last-index-of.js   |    2 +
 node_modules/core-js/es/typed-array/map.js    |    2 +
 .../core-js/es/typed-array/methods.js         |   34 +
 node_modules/core-js/es/typed-array/of.js     |    2 +
 .../core-js/es/typed-array/reduce-right.js    |    2 +
 node_modules/core-js/es/typed-array/reduce.js |    2 +
 .../core-js/es/typed-array/reverse.js         |    2 +
 node_modules/core-js/es/typed-array/set.js    |    2 +
 node_modules/core-js/es/typed-array/slice.js  |    2 +
 node_modules/core-js/es/typed-array/some.js   |    2 +
 node_modules/core-js/es/typed-array/sort.js   |    2 +
 .../core-js/es/typed-array/subarray.js        |    2 +
 .../es/typed-array/to-locale-string.js        |    2 +
 .../core-js/es/typed-array/to-reversed.js     |    2 +
 .../core-js/es/typed-array/to-sorted.js       |    3 +
 .../core-js/es/typed-array/to-string.js       |    2 +
 .../core-js/es/typed-array/uint16-array.js    |    8 +
 .../core-js/es/typed-array/uint32-array.js    |    8 +
 .../core-js/es/typed-array/uint8-array.js     |    8 +
 .../es/typed-array/uint8-clamped-array.js     |    8 +
 node_modules/core-js/es/typed-array/values.js |    3 +
 node_modules/core-js/es/typed-array/with.js   |    2 +
 node_modules/core-js/es/unescape.js           |    5 +
 node_modules/core-js/es/weak-map/index.js     |    7 +
 node_modules/core-js/es/weak-set/index.js     |    7 +
 .../core-js/features/aggregate-error.js       |    2 +
 .../features/array-buffer/constructor.js      |    2 +
 .../core-js/features/array-buffer/detached.js |    2 +
 .../core-js/features/array-buffer/index.js    |    2 +
 .../core-js/features/array-buffer/is-view.js  |    2 +
 .../core-js/features/array-buffer/slice.js    |    2 +
 .../array-buffer/transfer-to-fixed-length.js  |    2 +
 .../core-js/features/array-buffer/transfer.js |    2 +
 node_modules/core-js/features/array/at.js     |    2 +
 node_modules/core-js/features/array/concat.js |    2 +
 .../core-js/features/array/copy-within.js     |    2 +
 .../core-js/features/array/entries.js         |    2 +
 node_modules/core-js/features/array/every.js  |    2 +
 node_modules/core-js/features/array/fill.js   |    2 +
 .../core-js/features/array/filter-out.js      |    2 +
 .../core-js/features/array/filter-reject.js   |    2 +
 node_modules/core-js/features/array/filter.js |    2 +
 .../core-js/features/array/find-index.js      |    2 +
 .../core-js/features/array/find-last-index.js |    2 +
 .../core-js/features/array/find-last.js       |    2 +
 node_modules/core-js/features/array/find.js   |    2 +
 .../core-js/features/array/flat-map.js        |    2 +
 node_modules/core-js/features/array/flat.js   |    2 +
 .../core-js/features/array/for-each.js        |    2 +
 .../core-js/features/array/from-async.js      |    2 +
 node_modules/core-js/features/array/from.js   |    2 +
 .../core-js/features/array/group-by-to-map.js |    2 +
 .../core-js/features/array/group-by.js        |    2 +
 .../core-js/features/array/group-to-map.js    |    2 +
 node_modules/core-js/features/array/group.js  |    2 +
 .../core-js/features/array/includes.js        |    2 +
 .../core-js/features/array/index-of.js        |    2 +
 node_modules/core-js/features/array/index.js  |    2 +
 .../core-js/features/array/is-array.js        |    2 +
 .../features/array/is-template-object.js      |    2 +
 .../core-js/features/array/iterator.js        |    2 +
 node_modules/core-js/features/array/join.js   |    2 +
 node_modules/core-js/features/array/keys.js   |    2 +
 .../core-js/features/array/last-index-of.js   |    2 +
 .../core-js/features/array/last-index.js      |    2 +
 .../core-js/features/array/last-item.js       |    2 +
 node_modules/core-js/features/array/map.js    |    2 +
 node_modules/core-js/features/array/of.js     |    2 +
 node_modules/core-js/features/array/push.js   |    2 +
 .../core-js/features/array/reduce-right.js    |    2 +
 node_modules/core-js/features/array/reduce.js |    2 +
 .../core-js/features/array/reverse.js         |    2 +
 node_modules/core-js/features/array/slice.js  |    2 +
 node_modules/core-js/features/array/some.js   |    2 +
 node_modules/core-js/features/array/sort.js   |    2 +
 node_modules/core-js/features/array/splice.js |    2 +
 .../core-js/features/array/to-reversed.js     |    2 +
 .../core-js/features/array/to-sorted.js       |    2 +
 .../core-js/features/array/to-spliced.js      |    2 +
 .../core-js/features/array/unique-by.js       |    2 +
 .../core-js/features/array/unshift.js         |    2 +
 node_modules/core-js/features/array/values.js |    2 +
 .../core-js/features/array/virtual/at.js      |    2 +
 .../core-js/features/array/virtual/concat.js  |    2 +
 .../features/array/virtual/copy-within.js     |    2 +
 .../core-js/features/array/virtual/entries.js |    2 +
 .../core-js/features/array/virtual/every.js   |    2 +
 .../core-js/features/array/virtual/fill.js    |    2 +
 .../features/array/virtual/filter-out.js      |    2 +
 .../features/array/virtual/filter-reject.js   |    2 +
 .../core-js/features/array/virtual/filter.js  |    2 +
 .../features/array/virtual/find-index.js      |    2 +
 .../features/array/virtual/find-last-index.js |    2 +
 .../features/array/virtual/find-last.js       |    2 +
 .../core-js/features/array/virtual/find.js    |    2 +
 .../features/array/virtual/flat-map.js        |    2 +
 .../core-js/features/array/virtual/flat.js    |    2 +
 .../features/array/virtual/for-each.js        |    2 +
 .../features/array/virtual/group-by-to-map.js |    2 +
 .../features/array/virtual/group-by.js        |    2 +
 .../features/array/virtual/group-to-map.js    |    2 +
 .../core-js/features/array/virtual/group.js   |    2 +
 .../features/array/virtual/includes.js        |    2 +
 .../features/array/virtual/index-of.js        |    2 +
 .../core-js/features/array/virtual/index.js   |    2 +
 .../features/array/virtual/iterator.js        |    2 +
 .../core-js/features/array/virtual/join.js    |    2 +
 .../core-js/features/array/virtual/keys.js    |    2 +
 .../features/array/virtual/last-index-of.js   |    2 +
 .../core-js/features/array/virtual/map.js     |    2 +
 .../core-js/features/array/virtual/push.js    |    2 +
 .../features/array/virtual/reduce-right.js    |    2 +
 .../core-js/features/array/virtual/reduce.js  |    2 +
 .../core-js/features/array/virtual/reverse.js |    2 +
 .../core-js/features/array/virtual/slice.js   |    2 +
 .../core-js/features/array/virtual/some.js    |    2 +
 .../core-js/features/array/virtual/sort.js    |    2 +
 .../core-js/features/array/virtual/splice.js  |    2 +
 .../features/array/virtual/to-reversed.js     |    2 +
 .../features/array/virtual/to-sorted.js       |    2 +
 .../features/array/virtual/to-spliced.js      |    2 +
 .../features/array/virtual/unique-by.js       |    2 +
 .../core-js/features/array/virtual/unshift.js |    2 +
 .../core-js/features/array/virtual/values.js  |    2 +
 .../core-js/features/array/virtual/with.js    |    2 +
 node_modules/core-js/features/array/with.js   |    2 +
 .../async-disposable-stack/constructor.js     |    2 +
 .../features/async-disposable-stack/index.js  |    2 +
 .../async-iterator/as-indexed-pairs.js        |    2 +
 .../features/async-iterator/async-dispose.js  |    2 +
 .../core-js/features/async-iterator/drop.js   |    2 +
 .../core-js/features/async-iterator/every.js  |    2 +
 .../core-js/features/async-iterator/filter.js |    2 +
 .../core-js/features/async-iterator/find.js   |    2 +
 .../features/async-iterator/flat-map.js       |    2 +
 .../features/async-iterator/for-each.js       |    2 +
 .../core-js/features/async-iterator/from.js   |    2 +
 .../core-js/features/async-iterator/index.js  |    2 +
 .../features/async-iterator/indexed.js        |    2 +
 .../core-js/features/async-iterator/map.js    |    2 +
 .../core-js/features/async-iterator/reduce.js |    2 +
 .../core-js/features/async-iterator/some.js   |    2 +
 .../core-js/features/async-iterator/take.js   |    2 +
 .../features/async-iterator/to-array.js       |    2 +
 node_modules/core-js/features/atob.js         |    2 +
 node_modules/core-js/features/bigint/index.js |    2 +
 node_modules/core-js/features/bigint/range.js |    2 +
 node_modules/core-js/features/btoa.js         |    2 +
 .../core-js/features/clear-immediate.js       |    2 +
 .../core-js/features/composite-key.js         |    2 +
 .../core-js/features/composite-symbol.js      |    2 +
 .../core-js/features/data-view/get-float16.js |    2 +
 .../features/data-view/get-uint8-clamped.js   |    2 +
 .../core-js/features/data-view/index.js       |    2 +
 .../core-js/features/data-view/set-float16.js |    2 +
 .../features/data-view/set-uint8-clamped.js   |    2 +
 .../core-js/features/date/get-year.js         |    2 +
 node_modules/core-js/features/date/index.js   |    2 +
 node_modules/core-js/features/date/now.js     |    2 +
 .../core-js/features/date/set-year.js         |    2 +
 .../core-js/features/date/to-gmt-string.js    |    2 +
 .../core-js/features/date/to-iso-string.js    |    2 +
 node_modules/core-js/features/date/to-json.js |    2 +
 .../core-js/features/date/to-primitive.js     |    2 +
 .../core-js/features/date/to-string.js        |    2 +
 .../features/disposable-stack/constructor.js  |    2 +
 .../features/disposable-stack/index.js        |    2 +
 .../features/dom-collections/for-each.js      |    2 +
 .../core-js/features/dom-collections/index.js |    2 +
 .../features/dom-collections/iterator.js      |    2 +
 .../features/dom-exception/constructor.js     |    2 +
 .../core-js/features/dom-exception/index.js   |    2 +
 .../features/dom-exception/to-string-tag.js   |    2 +
 .../core-js/features/error/constructor.js     |    2 +
 node_modules/core-js/features/error/index.js  |    2 +
 .../core-js/features/error/is-error.js        |    2 +
 .../core-js/features/error/to-string.js       |    2 +
 node_modules/core-js/features/escape.js       |    2 +
 .../core-js/features/function/bind.js         |    2 +
 .../core-js/features/function/demethodize.js  |    2 +
 .../core-js/features/function/has-instance.js |    2 +
 .../core-js/features/function/index.js        |    2 +
 .../core-js/features/function/is-callable.js  |    2 +
 .../features/function/is-constructor.js       |    2 +
 .../core-js/features/function/metadata.js     |    2 +
 .../core-js/features/function/name.js         |    2 +
 .../core-js/features/function/un-this.js      |    2 +
 .../core-js/features/function/virtual/bind.js |    2 +
 .../features/function/virtual/demethodize.js  |    2 +
 .../features/function/virtual/index.js        |    2 +
 .../features/function/virtual/un-this.js      |    2 +
 .../core-js/features/get-iterator-method.js   |    2 +
 node_modules/core-js/features/get-iterator.js |    2 +
 node_modules/core-js/features/global-this.js  |    2 +
 node_modules/core-js/features/index.js        |    2 +
 node_modules/core-js/features/instance/at.js  |    2 +
 .../core-js/features/instance/bind.js         |    2 +
 .../features/instance/code-point-at.js        |    2 +
 .../core-js/features/instance/code-points.js  |    2 +
 .../core-js/features/instance/concat.js       |    2 +
 .../core-js/features/instance/copy-within.js  |    2 +
 .../core-js/features/instance/demethodize.js  |    2 +
 .../core-js/features/instance/ends-with.js    |    2 +
 .../core-js/features/instance/entries.js      |    2 +
 .../core-js/features/instance/every.js        |    2 +
 .../core-js/features/instance/fill.js         |    2 +
 .../core-js/features/instance/filter-out.js   |    2 +
 .../features/instance/filter-reject.js        |    2 +
 .../core-js/features/instance/filter.js       |    2 +
 .../core-js/features/instance/find-index.js   |    2 +
 .../features/instance/find-last-index.js      |    2 +
 .../core-js/features/instance/find-last.js    |    2 +
 .../core-js/features/instance/find.js         |    2 +
 .../core-js/features/instance/flags.js        |    2 +
 .../core-js/features/instance/flat-map.js     |    2 +
 .../core-js/features/instance/flat.js         |    2 +
 .../core-js/features/instance/for-each.js     |    2 +
 .../features/instance/group-by-to-map.js      |    2 +
 .../core-js/features/instance/group-by.js     |    2 +
 .../core-js/features/instance/group-to-map.js |    2 +
 .../core-js/features/instance/group.js        |    2 +
 .../core-js/features/instance/includes.js     |    2 +
 .../core-js/features/instance/index-of.js     |    2 +
 .../features/instance/is-well-formed.js       |    2 +
 .../core-js/features/instance/keys.js         |    2 +
 .../features/instance/last-index-of.js        |    2 +
 node_modules/core-js/features/instance/map.js |    2 +
 .../core-js/features/instance/match-all.js    |    2 +
 .../core-js/features/instance/pad-end.js      |    2 +
 .../core-js/features/instance/pad-start.js    |    2 +
 .../core-js/features/instance/push.js         |    2 +
 .../core-js/features/instance/reduce-right.js |    2 +
 .../core-js/features/instance/reduce.js       |    2 +
 .../core-js/features/instance/repeat.js       |    2 +
 .../core-js/features/instance/replace-all.js  |    2 +
 .../core-js/features/instance/reverse.js      |    2 +
 .../core-js/features/instance/slice.js        |    2 +
 .../core-js/features/instance/some.js         |    2 +
 .../core-js/features/instance/sort.js         |    2 +
 .../core-js/features/instance/splice.js       |    2 +
 .../core-js/features/instance/starts-with.js  |    2 +
 .../core-js/features/instance/to-reversed.js  |    2 +
 .../core-js/features/instance/to-sorted.js    |    2 +
 .../core-js/features/instance/to-spliced.js   |    2 +
 .../features/instance/to-well-formed.js       |    2 +
 .../core-js/features/instance/trim-end.js     |    2 +
 .../core-js/features/instance/trim-left.js    |    2 +
 .../core-js/features/instance/trim-right.js   |    2 +
 .../core-js/features/instance/trim-start.js   |    2 +
 .../core-js/features/instance/trim.js         |    2 +
 .../core-js/features/instance/un-this.js      |    2 +
 .../core-js/features/instance/unique-by.js    |    2 +
 .../core-js/features/instance/unshift.js      |    2 +
 .../core-js/features/instance/values.js       |    2 +
 .../core-js/features/instance/with.js         |    2 +
 node_modules/core-js/features/is-iterable.js  |    2 +
 .../features/iterator/as-indexed-pairs.js     |    2 +
 .../core-js/features/iterator/concat.js       |    2 +
 .../core-js/features/iterator/dispose.js      |    2 +
 .../core-js/features/iterator/drop.js         |    2 +
 .../core-js/features/iterator/every.js        |    2 +
 .../core-js/features/iterator/filter.js       |    2 +
 .../core-js/features/iterator/find.js         |    2 +
 .../core-js/features/iterator/flat-map.js     |    2 +
 .../core-js/features/iterator/for-each.js     |    2 +
 .../core-js/features/iterator/from.js         |    2 +
 .../core-js/features/iterator/index.js        |    2 +
 .../core-js/features/iterator/indexed.js      |    2 +
 node_modules/core-js/features/iterator/map.js |    2 +
 .../core-js/features/iterator/range.js        |    2 +
 .../core-js/features/iterator/reduce.js       |    2 +
 .../core-js/features/iterator/some.js         |    2 +
 .../core-js/features/iterator/take.js         |    2 +
 .../core-js/features/iterator/to-array.js     |    2 +
 .../core-js/features/iterator/to-async.js     |    2 +
 node_modules/core-js/features/json/index.js   |    2 +
 .../core-js/features/json/is-raw-json.js      |    2 +
 node_modules/core-js/features/json/parse.js   |    2 +
 .../core-js/features/json/raw-json.js         |    2 +
 .../core-js/features/json/stringify.js        |    2 +
 .../core-js/features/json/to-string-tag.js    |    2 +
 .../core-js/features/map/delete-all.js        |    2 +
 node_modules/core-js/features/map/emplace.js  |    2 +
 node_modules/core-js/features/map/every.js    |    2 +
 node_modules/core-js/features/map/filter.js   |    2 +
 node_modules/core-js/features/map/find-key.js |    2 +
 node_modules/core-js/features/map/find.js     |    2 +
 node_modules/core-js/features/map/from.js     |    2 +
 .../features/map/get-or-insert-computed.js    |    2 +
 .../core-js/features/map/get-or-insert.js     |    2 +
 node_modules/core-js/features/map/group-by.js |    2 +
 node_modules/core-js/features/map/includes.js |    2 +
 node_modules/core-js/features/map/index.js    |    2 +
 node_modules/core-js/features/map/key-by.js   |    2 +
 node_modules/core-js/features/map/key-of.js   |    2 +
 node_modules/core-js/features/map/map-keys.js |    2 +
 .../core-js/features/map/map-values.js        |    2 +
 node_modules/core-js/features/map/merge.js    |    2 +
 node_modules/core-js/features/map/of.js       |    2 +
 node_modules/core-js/features/map/reduce.js   |    2 +
 node_modules/core-js/features/map/some.js     |    2 +
 .../core-js/features/map/update-or-insert.js  |    2 +
 node_modules/core-js/features/map/update.js   |    2 +
 node_modules/core-js/features/map/upsert.js   |    2 +
 node_modules/core-js/features/math/acosh.js   |    2 +
 node_modules/core-js/features/math/asinh.js   |    2 +
 node_modules/core-js/features/math/atanh.js   |    2 +
 node_modules/core-js/features/math/cbrt.js    |    2 +
 node_modules/core-js/features/math/clamp.js   |    2 +
 node_modules/core-js/features/math/clz32.js   |    2 +
 node_modules/core-js/features/math/cosh.js    |    2 +
 .../core-js/features/math/deg-per-rad.js      |    2 +
 node_modules/core-js/features/math/degrees.js |    2 +
 node_modules/core-js/features/math/expm1.js   |    2 +
 .../core-js/features/math/f16round.js         |    2 +
 node_modules/core-js/features/math/fround.js  |    2 +
 node_modules/core-js/features/math/fscale.js  |    2 +
 node_modules/core-js/features/math/hypot.js   |    2 +
 node_modules/core-js/features/math/iaddh.js   |    2 +
 node_modules/core-js/features/math/imul.js    |    2 +
 node_modules/core-js/features/math/imulh.js   |    2 +
 node_modules/core-js/features/math/index.js   |    2 +
 node_modules/core-js/features/math/isubh.js   |    2 +
 node_modules/core-js/features/math/log10.js   |    2 +
 node_modules/core-js/features/math/log1p.js   |    2 +
 node_modules/core-js/features/math/log2.js    |    2 +
 .../core-js/features/math/rad-per-deg.js      |    2 +
 node_modules/core-js/features/math/radians.js |    2 +
 node_modules/core-js/features/math/scale.js   |    2 +
 .../core-js/features/math/seeded-prng.js      |    2 +
 node_modules/core-js/features/math/sign.js    |    2 +
 node_modules/core-js/features/math/signbit.js |    2 +
 node_modules/core-js/features/math/sinh.js    |    2 +
 .../core-js/features/math/sum-precise.js      |    2 +
 node_modules/core-js/features/math/tanh.js    |    2 +
 .../core-js/features/math/to-string-tag.js    |    2 +
 node_modules/core-js/features/math/trunc.js   |    2 +
 node_modules/core-js/features/math/umulh.js   |    2 +
 .../core-js/features/number/constructor.js    |    2 +
 .../core-js/features/number/epsilon.js        |    2 +
 .../core-js/features/number/from-string.js    |    2 +
 node_modules/core-js/features/number/index.js |    2 +
 .../core-js/features/number/is-finite.js      |    2 +
 .../core-js/features/number/is-integer.js     |    2 +
 .../core-js/features/number/is-nan.js         |    2 +
 .../features/number/is-safe-integer.js        |    2 +
 .../features/number/max-safe-integer.js       |    2 +
 .../features/number/min-safe-integer.js       |    2 +
 .../core-js/features/number/parse-float.js    |    2 +
 .../core-js/features/number/parse-int.js      |    2 +
 node_modules/core-js/features/number/range.js |    2 +
 .../core-js/features/number/to-exponential.js |    2 +
 .../core-js/features/number/to-fixed.js       |    2 +
 .../core-js/features/number/to-precision.js   |    2 +
 .../core-js/features/number/virtual/index.js  |    2 +
 .../features/number/virtual/to-exponential.js |    2 +
 .../features/number/virtual/to-fixed.js       |    2 +
 .../features/number/virtual/to-precision.js   |    2 +
 .../core-js/features/object/assign.js         |    2 +
 .../core-js/features/object/create.js         |    2 +
 .../core-js/features/object/define-getter.js  |    2 +
 .../features/object/define-properties.js      |    2 +
 .../features/object/define-property.js        |    2 +
 .../core-js/features/object/define-setter.js  |    2 +
 .../core-js/features/object/entries.js        |    2 +
 .../core-js/features/object/freeze.js         |    2 +
 .../core-js/features/object/from-entries.js   |    2 +
 .../object/get-own-property-descriptor.js     |    2 +
 .../object/get-own-property-descriptors.js    |    2 +
 .../features/object/get-own-property-names.js |    2 +
 .../object/get-own-property-symbols.js        |    2 +
 .../features/object/get-prototype-of.js       |    2 +
 .../core-js/features/object/group-by.js       |    2 +
 .../core-js/features/object/has-own.js        |    2 +
 node_modules/core-js/features/object/index.js |    2 +
 .../core-js/features/object/is-extensible.js  |    2 +
 .../core-js/features/object/is-frozen.js      |    2 +
 .../core-js/features/object/is-sealed.js      |    2 +
 node_modules/core-js/features/object/is.js    |    2 +
 .../features/object/iterate-entries.js        |    2 +
 .../core-js/features/object/iterate-keys.js   |    2 +
 .../core-js/features/object/iterate-values.js |    2 +
 node_modules/core-js/features/object/keys.js  |    2 +
 .../core-js/features/object/lookup-getter.js  |    2 +
 .../core-js/features/object/lookup-setter.js  |    2 +
 .../features/object/prevent-extensions.js     |    2 +
 node_modules/core-js/features/object/proto.js |    2 +
 node_modules/core-js/features/object/seal.js  |    2 +
 .../features/object/set-prototype-of.js       |    2 +
 .../core-js/features/object/to-string.js      |    2 +
 .../core-js/features/object/values.js         |    2 +
 .../core-js/features/observable/index.js      |    2 +
 node_modules/core-js/features/parse-float.js  |    2 +
 node_modules/core-js/features/parse-int.js    |    2 +
 .../core-js/features/promise/all-settled.js   |    2 +
 node_modules/core-js/features/promise/any.js  |    2 +
 .../core-js/features/promise/finally.js       |    2 +
 .../core-js/features/promise/index.js         |    2 +
 node_modules/core-js/features/promise/try.js  |    2 +
 .../features/promise/with-resolvers.js        |    2 +
 .../core-js/features/queue-microtask.js       |    2 +
 .../core-js/features/reflect/apply.js         |    2 +
 .../core-js/features/reflect/construct.js     |    2 +
 .../features/reflect/define-metadata.js       |    2 +
 .../features/reflect/define-property.js       |    2 +
 .../features/reflect/delete-metadata.js       |    2 +
 .../features/reflect/delete-property.js       |    2 +
 .../features/reflect/get-metadata-keys.js     |    2 +
 .../core-js/features/reflect/get-metadata.js  |    2 +
 .../features/reflect/get-own-metadata-keys.js |    2 +
 .../features/reflect/get-own-metadata.js      |    2 +
 .../reflect/get-own-property-descriptor.js    |    2 +
 .../features/reflect/get-prototype-of.js      |    2 +
 node_modules/core-js/features/reflect/get.js  |    2 +
 .../core-js/features/reflect/has-metadata.js  |    2 +
 .../features/reflect/has-own-metadata.js      |    2 +
 node_modules/core-js/features/reflect/has.js  |    2 +
 .../core-js/features/reflect/index.js         |    2 +
 .../core-js/features/reflect/is-extensible.js |    2 +
 .../core-js/features/reflect/metadata.js      |    2 +
 .../core-js/features/reflect/own-keys.js      |    2 +
 .../features/reflect/prevent-extensions.js    |    2 +
 .../features/reflect/set-prototype-of.js      |    2 +
 node_modules/core-js/features/reflect/set.js  |    2 +
 .../core-js/features/reflect/to-string-tag.js |    2 +
 .../core-js/features/regexp/constructor.js    |    2 +
 .../core-js/features/regexp/dot-all.js        |    2 +
 .../core-js/features/regexp/escape.js         |    2 +
 node_modules/core-js/features/regexp/flags.js |    2 +
 node_modules/core-js/features/regexp/index.js |    2 +
 node_modules/core-js/features/regexp/match.js |    2 +
 .../core-js/features/regexp/replace.js        |    2 +
 .../core-js/features/regexp/search.js         |    2 +
 node_modules/core-js/features/regexp/split.js |    2 +
 .../core-js/features/regexp/sticky.js         |    2 +
 node_modules/core-js/features/regexp/test.js  |    2 +
 .../core-js/features/regexp/to-string.js      |    2 +
 node_modules/core-js/features/self.js         |    2 +
 .../core-js/features/set-immediate.js         |    2 +
 node_modules/core-js/features/set-interval.js |    2 +
 node_modules/core-js/features/set-timeout.js  |    2 +
 node_modules/core-js/features/set/add-all.js  |    2 +
 .../core-js/features/set/delete-all.js        |    2 +
 .../core-js/features/set/difference.js        |    2 +
 node_modules/core-js/features/set/every.js    |    2 +
 node_modules/core-js/features/set/filter.js   |    2 +
 node_modules/core-js/features/set/find.js     |    2 +
 node_modules/core-js/features/set/from.js     |    2 +
 node_modules/core-js/features/set/index.js    |    2 +
 .../core-js/features/set/intersection.js      |    2 +
 .../core-js/features/set/is-disjoint-from.js  |    2 +
 .../core-js/features/set/is-subset-of.js      |    2 +
 .../core-js/features/set/is-superset-of.js    |    2 +
 node_modules/core-js/features/set/join.js     |    2 +
 node_modules/core-js/features/set/map.js      |    2 +
 node_modules/core-js/features/set/of.js       |    2 +
 node_modules/core-js/features/set/reduce.js   |    2 +
 node_modules/core-js/features/set/some.js     |    2 +
 .../features/set/symmetric-difference.js      |    2 +
 node_modules/core-js/features/set/union.js    |    2 +
 .../core-js/features/string/anchor.js         |    2 +
 node_modules/core-js/features/string/at.js    |    2 +
 node_modules/core-js/features/string/big.js   |    2 +
 node_modules/core-js/features/string/blink.js |    2 +
 node_modules/core-js/features/string/bold.js  |    2 +
 .../core-js/features/string/code-point-at.js  |    2 +
 .../core-js/features/string/code-points.js    |    2 +
 .../core-js/features/string/cooked.js         |    2 +
 .../core-js/features/string/dedent.js         |    2 +
 .../core-js/features/string/ends-with.js      |    2 +
 node_modules/core-js/features/string/fixed.js |    2 +
 .../core-js/features/string/fontcolor.js      |    2 +
 .../core-js/features/string/fontsize.js       |    2 +
 .../features/string/from-code-point.js        |    2 +
 .../core-js/features/string/includes.js       |    2 +
 node_modules/core-js/features/string/index.js |    2 +
 .../core-js/features/string/is-well-formed.js |    2 +
 .../core-js/features/string/italics.js        |    2 +
 .../core-js/features/string/iterator.js       |    2 +
 node_modules/core-js/features/string/link.js  |    2 +
 .../core-js/features/string/match-all.js      |    2 +
 node_modules/core-js/features/string/match.js |    2 +
 .../core-js/features/string/pad-end.js        |    2 +
 .../core-js/features/string/pad-start.js      |    2 +
 node_modules/core-js/features/string/raw.js   |    2 +
 .../core-js/features/string/repeat.js         |    2 +
 .../core-js/features/string/replace-all.js    |    2 +
 .../core-js/features/string/replace.js        |    2 +
 .../core-js/features/string/search.js         |    2 +
 node_modules/core-js/features/string/small.js |    2 +
 node_modules/core-js/features/string/split.js |    2 +
 .../core-js/features/string/starts-with.js    |    2 +
 .../core-js/features/string/strike.js         |    2 +
 node_modules/core-js/features/string/sub.js   |    2 +
 .../core-js/features/string/substr.js         |    2 +
 node_modules/core-js/features/string/sup.js   |    2 +
 .../core-js/features/string/to-well-formed.js |    2 +
 .../core-js/features/string/trim-end.js       |    2 +
 .../core-js/features/string/trim-left.js      |    2 +
 .../core-js/features/string/trim-right.js     |    2 +
 .../core-js/features/string/trim-start.js     |    2 +
 node_modules/core-js/features/string/trim.js  |    2 +
 .../core-js/features/string/virtual/anchor.js |    2 +
 .../core-js/features/string/virtual/at.js     |    2 +
 .../core-js/features/string/virtual/big.js    |    2 +
 .../core-js/features/string/virtual/blink.js  |    2 +
 .../core-js/features/string/virtual/bold.js   |    2 +
 .../features/string/virtual/code-point-at.js  |    2 +
 .../features/string/virtual/code-points.js    |    2 +
 .../features/string/virtual/ends-with.js      |    2 +
 .../core-js/features/string/virtual/fixed.js  |    2 +
 .../features/string/virtual/fontcolor.js      |    2 +
 .../features/string/virtual/fontsize.js       |    2 +
 .../features/string/virtual/includes.js       |    2 +
 .../core-js/features/string/virtual/index.js  |    2 +
 .../features/string/virtual/is-well-formed.js |    2 +
 .../features/string/virtual/italics.js        |    2 +
 .../features/string/virtual/iterator.js       |    2 +
 .../core-js/features/string/virtual/link.js   |    2 +
 .../features/string/virtual/match-all.js      |    2 +
 .../features/string/virtual/pad-end.js        |    2 +
 .../features/string/virtual/pad-start.js      |    2 +
 .../core-js/features/string/virtual/repeat.js |    2 +
 .../features/string/virtual/replace-all.js    |    2 +
 .../core-js/features/string/virtual/small.js  |    2 +
 .../features/string/virtual/starts-with.js    |    2 +
 .../core-js/features/string/virtual/strike.js |    2 +
 .../core-js/features/string/virtual/sub.js    |    2 +
 .../core-js/features/string/virtual/substr.js |    2 +
 .../core-js/features/string/virtual/sup.js    |    2 +
 .../features/string/virtual/to-well-formed.js |    2 +
 .../features/string/virtual/trim-end.js       |    2 +
 .../features/string/virtual/trim-left.js      |    2 +
 .../features/string/virtual/trim-right.js     |    2 +
 .../features/string/virtual/trim-start.js     |    2 +
 .../core-js/features/string/virtual/trim.js   |    2 +
 .../core-js/features/structured-clone.js      |    2 +
 .../core-js/features/suppressed-error.js      |    2 +
 .../core-js/features/symbol/async-dispose.js  |    2 +
 .../core-js/features/symbol/async-iterator.js |    2 +
 .../core-js/features/symbol/custom-matcher.js |    2 +
 .../core-js/features/symbol/description.js    |    2 +
 .../core-js/features/symbol/dispose.js        |    2 +
 node_modules/core-js/features/symbol/for.js   |    2 +
 .../core-js/features/symbol/has-instance.js   |    2 +
 node_modules/core-js/features/symbol/index.js |    2 +
 .../features/symbol/is-concat-spreadable.js   |    2 +
 .../features/symbol/is-registered-symbol.js   |    2 +
 .../core-js/features/symbol/is-registered.js  |    2 +
 .../features/symbol/is-well-known-symbol.js   |    2 +
 .../core-js/features/symbol/is-well-known.js  |    2 +
 .../core-js/features/symbol/iterator.js       |    2 +
 .../core-js/features/symbol/key-for.js        |    2 +
 .../core-js/features/symbol/match-all.js      |    2 +
 node_modules/core-js/features/symbol/match.js |    2 +
 .../core-js/features/symbol/matcher.js        |    2 +
 .../core-js/features/symbol/metadata-key.js   |    2 +
 .../core-js/features/symbol/metadata.js       |    2 +
 .../core-js/features/symbol/observable.js     |    2 +
 .../core-js/features/symbol/pattern-match.js  |    2 +
 .../core-js/features/symbol/replace-all.js    |    2 +
 .../core-js/features/symbol/replace.js        |    2 +
 .../core-js/features/symbol/search.js         |    2 +
 .../core-js/features/symbol/species.js        |    2 +
 node_modules/core-js/features/symbol/split.js |    2 +
 .../core-js/features/symbol/to-primitive.js   |    2 +
 .../core-js/features/symbol/to-string-tag.js  |    2 +
 .../core-js/features/symbol/unscopables.js    |    2 +
 .../core-js/features/typed-array/at.js        |    2 +
 .../features/typed-array/copy-within.js       |    2 +
 .../core-js/features/typed-array/entries.js   |    2 +
 .../core-js/features/typed-array/every.js     |    2 +
 .../core-js/features/typed-array/fill.js      |    2 +
 .../features/typed-array/filter-out.js        |    2 +
 .../features/typed-array/filter-reject.js     |    2 +
 .../core-js/features/typed-array/filter.js    |    2 +
 .../features/typed-array/find-index.js        |    2 +
 .../features/typed-array/find-last-index.js   |    2 +
 .../core-js/features/typed-array/find-last.js |    2 +
 .../core-js/features/typed-array/find.js      |    2 +
 .../features/typed-array/float32-array.js     |    2 +
 .../features/typed-array/float64-array.js     |    2 +
 .../core-js/features/typed-array/for-each.js  |    2 +
 .../features/typed-array/from-async.js        |    2 +
 .../features/typed-array/from-base64.js       |    2 +
 .../core-js/features/typed-array/from-hex.js  |    2 +
 .../core-js/features/typed-array/from.js      |    2 +
 .../core-js/features/typed-array/group-by.js  |    2 +
 .../core-js/features/typed-array/includes.js  |    2 +
 .../core-js/features/typed-array/index-of.js  |    2 +
 .../core-js/features/typed-array/index.js     |    2 +
 .../features/typed-array/int16-array.js       |    2 +
 .../features/typed-array/int32-array.js       |    2 +
 .../features/typed-array/int8-array.js        |    2 +
 .../core-js/features/typed-array/iterator.js  |    2 +
 .../core-js/features/typed-array/join.js      |    2 +
 .../core-js/features/typed-array/keys.js      |    2 +
 .../features/typed-array/last-index-of.js     |    2 +
 .../core-js/features/typed-array/map.js       |    2 +
 .../core-js/features/typed-array/methods.js   |    2 +
 .../core-js/features/typed-array/of.js        |    2 +
 .../features/typed-array/reduce-right.js      |    2 +
 .../core-js/features/typed-array/reduce.js    |    2 +
 .../core-js/features/typed-array/reverse.js   |    2 +
 .../features/typed-array/set-from-base64.js   |    2 +
 .../features/typed-array/set-from-hex.js      |    2 +
 .../core-js/features/typed-array/set.js       |    2 +
 .../core-js/features/typed-array/slice.js     |    2 +
 .../core-js/features/typed-array/some.js      |    2 +
 .../core-js/features/typed-array/sort.js      |    2 +
 .../core-js/features/typed-array/subarray.js  |    2 +
 .../core-js/features/typed-array/to-base64.js |    2 +
 .../core-js/features/typed-array/to-hex.js    |    2 +
 .../features/typed-array/to-locale-string.js  |    2 +
 .../features/typed-array/to-reversed.js       |    2 +
 .../core-js/features/typed-array/to-sorted.js |    2 +
 .../features/typed-array/to-spliced.js        |    2 +
 .../core-js/features/typed-array/to-string.js |    2 +
 .../features/typed-array/uint16-array.js      |    2 +
 .../features/typed-array/uint32-array.js      |    2 +
 .../features/typed-array/uint8-array.js       |    2 +
 .../typed-array/uint8-clamped-array.js        |    2 +
 .../core-js/features/typed-array/unique-by.js |    2 +
 .../core-js/features/typed-array/values.js    |    2 +
 .../core-js/features/typed-array/with.js      |    2 +
 node_modules/core-js/features/unescape.js     |    2 +
 .../features/url-search-params/index.js       |    2 +
 .../core-js/features/url/can-parse.js         |    2 +
 node_modules/core-js/features/url/index.js    |    2 +
 node_modules/core-js/features/url/parse.js    |    2 +
 node_modules/core-js/features/url/to-json.js  |    2 +
 .../core-js/features/weak-map/delete-all.js   |    2 +
 .../core-js/features/weak-map/emplace.js      |    2 +
 .../core-js/features/weak-map/from.js         |    2 +
 .../weak-map/get-or-insert-computed.js        |    2 +
 .../features/weak-map/get-or-insert.js        |    2 +
 .../core-js/features/weak-map/index.js        |    2 +
 node_modules/core-js/features/weak-map/of.js  |    2 +
 .../core-js/features/weak-map/upsert.js       |    2 +
 .../core-js/features/weak-set/add-all.js      |    2 +
 .../core-js/features/weak-set/delete-all.js   |    2 +
 .../core-js/features/weak-set/from.js         |    2 +
 .../core-js/features/weak-set/index.js        |    2 +
 node_modules/core-js/features/weak-set/of.js  |    2 +
 node_modules/core-js/full/README.md           |    1 +
 node_modules/core-js/full/aggregate-error.js  |    7 +
 .../core-js/full/array-buffer/constructor.js  |    4 +
 .../core-js/full/array-buffer/detached.js     |    4 +
 .../core-js/full/array-buffer/index.js        |    4 +
 .../core-js/full/array-buffer/is-view.js      |    4 +
 .../core-js/full/array-buffer/slice.js        |    4 +
 .../array-buffer/transfer-to-fixed-length.js  |    4 +
 .../core-js/full/array-buffer/transfer.js     |    4 +
 node_modules/core-js/full/array/at.js         |    7 +
 node_modules/core-js/full/array/concat.js     |    4 +
 .../core-js/full/array/copy-within.js         |    4 +
 node_modules/core-js/full/array/entries.js    |    4 +
 node_modules/core-js/full/array/every.js      |    4 +
 node_modules/core-js/full/array/fill.js       |    4 +
 node_modules/core-js/full/array/filter-out.js |    6 +
 .../core-js/full/array/filter-reject.js       |    5 +
 node_modules/core-js/full/array/filter.js     |    4 +
 node_modules/core-js/full/array/find-index.js |    4 +
 .../core-js/full/array/find-last-index.js     |    4 +
 node_modules/core-js/full/array/find-last.js  |    4 +
 node_modules/core-js/full/array/find.js       |    4 +
 node_modules/core-js/full/array/flat-map.js   |    4 +
 node_modules/core-js/full/array/flat.js       |    4 +
 node_modules/core-js/full/array/for-each.js   |    4 +
 node_modules/core-js/full/array/from-async.js |    4 +
 node_modules/core-js/full/array/from.js       |    4 +
 .../core-js/full/array/group-by-to-map.js     |    4 +
 node_modules/core-js/full/array/group-by.js   |    4 +
 .../core-js/full/array/group-to-map.js        |    4 +
 node_modules/core-js/full/array/group.js      |    4 +
 node_modules/core-js/full/array/includes.js   |    4 +
 node_modules/core-js/full/array/index-of.js   |    4 +
 node_modules/core-js/full/array/index.js      |   14 +
 node_modules/core-js/full/array/is-array.js   |    4 +
 .../core-js/full/array/is-template-object.js  |    5 +
 node_modules/core-js/full/array/iterator.js   |    4 +
 node_modules/core-js/full/array/join.js       |    4 +
 node_modules/core-js/full/array/keys.js       |    4 +
 .../core-js/full/array/last-index-of.js       |    4 +
 node_modules/core-js/full/array/last-index.js |    2 +
 node_modules/core-js/full/array/last-item.js  |    2 +
 node_modules/core-js/full/array/map.js        |    4 +
 node_modules/core-js/full/array/of.js         |    4 +
 node_modules/core-js/full/array/push.js       |    4 +
 .../core-js/full/array/reduce-right.js        |    4 +
 node_modules/core-js/full/array/reduce.js     |    4 +
 node_modules/core-js/full/array/reverse.js    |    4 +
 node_modules/core-js/full/array/slice.js      |    4 +
 node_modules/core-js/full/array/some.js       |    4 +
 node_modules/core-js/full/array/sort.js       |    4 +
 node_modules/core-js/full/array/splice.js     |    4 +
 .../core-js/full/array/to-reversed.js         |    4 +
 node_modules/core-js/full/array/to-sorted.js  |    4 +
 node_modules/core-js/full/array/to-spliced.js |    4 +
 node_modules/core-js/full/array/unique-by.js  |    6 +
 node_modules/core-js/full/array/unshift.js    |    4 +
 node_modules/core-js/full/array/values.js     |    4 +
 node_modules/core-js/full/array/virtual/at.js |    7 +
 .../core-js/full/array/virtual/concat.js      |    4 +
 .../core-js/full/array/virtual/copy-within.js |    4 +
 .../core-js/full/array/virtual/entries.js     |    4 +
 .../core-js/full/array/virtual/every.js       |    4 +
 .../core-js/full/array/virtual/fill.js        |    4 +
 .../core-js/full/array/virtual/filter-out.js  |    6 +
 .../full/array/virtual/filter-reject.js       |    5 +
 .../core-js/full/array/virtual/filter.js      |    4 +
 .../core-js/full/array/virtual/find-index.js  |    4 +
 .../full/array/virtual/find-last-index.js     |    4 +
 .../core-js/full/array/virtual/find-last.js   |    4 +
 .../core-js/full/array/virtual/find.js        |    4 +
 .../core-js/full/array/virtual/flat-map.js    |    4 +
 .../core-js/full/array/virtual/flat.js        |    4 +
 .../core-js/full/array/virtual/for-each.js    |    4 +
 .../full/array/virtual/group-by-to-map.js     |    4 +
 .../core-js/full/array/virtual/group-by.js    |    4 +
 .../full/array/virtual/group-to-map.js        |    4 +
 .../core-js/full/array/virtual/group.js       |    4 +
 .../core-js/full/array/virtual/includes.js    |    4 +
 .../core-js/full/array/virtual/index-of.js    |    4 +
 .../core-js/full/array/virtual/index.js       |   10 +
 .../core-js/full/array/virtual/iterator.js    |    4 +
 .../core-js/full/array/virtual/join.js        |    4 +
 .../core-js/full/array/virtual/keys.js        |    4 +
 .../full/array/virtual/last-index-of.js       |    4 +
 .../core-js/full/array/virtual/map.js         |    4 +
 .../core-js/full/array/virtual/push.js        |    4 +
 .../full/array/virtual/reduce-right.js        |    4 +
 .../core-js/full/array/virtual/reduce.js      |    4 +
 .../core-js/full/array/virtual/reverse.js     |    4 +
 .../core-js/full/array/virtual/slice.js       |    4 +
 .../core-js/full/array/virtual/some.js        |    4 +
 .../core-js/full/array/virtual/sort.js        |    4 +
 .../core-js/full/array/virtual/splice.js      |    4 +
 .../core-js/full/array/virtual/to-reversed.js |    4 +
 .../core-js/full/array/virtual/to-sorted.js   |    4 +
 .../core-js/full/array/virtual/to-spliced.js  |    4 +
 .../core-js/full/array/virtual/unique-by.js   |    6 +
 .../core-js/full/array/virtual/unshift.js     |    4 +
 .../core-js/full/array/virtual/values.js      |    4 +
 .../core-js/full/array/virtual/with.js        |    4 +
 node_modules/core-js/full/array/with.js       |    4 +
 .../async-disposable-stack/constructor.js     |    4 +
 .../full/async-disposable-stack/index.js      |    4 +
 .../full/async-iterator/as-indexed-pairs.js   |    9 +
 .../full/async-iterator/async-dispose.js      |    4 +
 .../core-js/full/async-iterator/drop.js       |    4 +
 .../core-js/full/async-iterator/every.js      |    4 +
 .../core-js/full/async-iterator/filter.js     |    4 +
 .../core-js/full/async-iterator/find.js       |    4 +
 .../core-js/full/async-iterator/flat-map.js   |    4 +
 .../core-js/full/async-iterator/for-each.js   |    4 +
 .../core-js/full/async-iterator/from.js       |    4 +
 .../core-js/full/async-iterator/index.js      |    7 +
 .../core-js/full/async-iterator/indexed.js    |   10 +
 .../core-js/full/async-iterator/map.js        |    4 +
 .../core-js/full/async-iterator/reduce.js     |    4 +
 .../core-js/full/async-iterator/some.js       |    4 +
 .../core-js/full/async-iterator/take.js       |    4 +
 .../core-js/full/async-iterator/to-array.js   |    4 +
 node_modules/core-js/full/atob.js             |    4 +
 node_modules/core-js/full/bigint/index.js     |    6 +
 node_modules/core-js/full/bigint/range.js     |    6 +
 node_modules/core-js/full/btoa.js             |    4 +
 node_modules/core-js/full/clear-immediate.js  |    4 +
 node_modules/core-js/full/composite-key.js    |    5 +
 node_modules/core-js/full/composite-symbol.js |    6 +
 .../core-js/full/data-view/get-float16.js     |    4 +
 .../full/data-view/get-uint8-clamped.js       |    2 +
 node_modules/core-js/full/data-view/index.js  |    6 +
 .../core-js/full/data-view/set-float16.js     |    4 +
 .../full/data-view/set-uint8-clamped.js       |    2 +
 node_modules/core-js/full/date/get-year.js    |    4 +
 node_modules/core-js/full/date/index.js       |    4 +
 node_modules/core-js/full/date/now.js         |    4 +
 node_modules/core-js/full/date/set-year.js    |    4 +
 .../core-js/full/date/to-gmt-string.js        |    4 +
 .../core-js/full/date/to-iso-string.js        |    4 +
 node_modules/core-js/full/date/to-json.js     |    4 +
 .../core-js/full/date/to-primitive.js         |    4 +
 node_modules/core-js/full/date/to-string.js   |    4 +
 .../full/disposable-stack/constructor.js      |    4 +
 .../core-js/full/disposable-stack/index.js    |    4 +
 .../core-js/full/dom-collections/for-each.js  |    4 +
 .../core-js/full/dom-collections/index.js     |    4 +
 .../core-js/full/dom-collections/iterator.js  |    4 +
 .../core-js/full/dom-exception/constructor.js |    4 +
 .../core-js/full/dom-exception/index.js       |    4 +
 .../full/dom-exception/to-string-tag.js       |    4 +
 .../core-js/full/error/constructor.js         |    4 +
 node_modules/core-js/full/error/index.js      |    4 +
 node_modules/core-js/full/error/is-error.js   |    4 +
 node_modules/core-js/full/error/to-string.js  |    4 +
 node_modules/core-js/full/escape.js           |    4 +
 node_modules/core-js/full/function/bind.js    |    4 +
 .../core-js/full/function/demethodize.js      |    5 +
 .../core-js/full/function/has-instance.js     |    4 +
 node_modules/core-js/full/function/index.js   |    9 +
 .../core-js/full/function/is-callable.js      |    5 +
 .../core-js/full/function/is-constructor.js   |    5 +
 .../core-js/full/function/metadata.js         |    4 +
 node_modules/core-js/full/function/name.js    |    4 +
 node_modules/core-js/full/function/un-this.js |    5 +
 .../core-js/full/function/virtual/bind.js     |    4 +
 .../full/function/virtual/demethodize.js      |    5 +
 .../core-js/full/function/virtual/index.js    |    7 +
 .../core-js/full/function/virtual/un-this.js  |    5 +
 .../core-js/full/get-iterator-method.js       |    4 +
 node_modules/core-js/full/get-iterator.js     |    4 +
 node_modules/core-js/full/global-this.js      |    7 +
 node_modules/core-js/full/index.js            |  507 ++
 node_modules/core-js/full/instance/at.js      |   15 +
 node_modules/core-js/full/instance/bind.js    |    4 +
 .../core-js/full/instance/code-point-at.js    |    4 +
 .../core-js/full/instance/code-points.js      |   11 +
 node_modules/core-js/full/instance/concat.js  |    4 +
 .../core-js/full/instance/copy-within.js      |    4 +
 .../core-js/full/instance/demethodize.js      |   10 +
 .../core-js/full/instance/ends-with.js        |    4 +
 node_modules/core-js/full/instance/entries.js |    4 +
 node_modules/core-js/full/instance/every.js   |    4 +
 node_modules/core-js/full/instance/fill.js    |    4 +
 .../core-js/full/instance/filter-out.js       |   11 +
 .../core-js/full/instance/filter-reject.js    |   10 +
 node_modules/core-js/full/instance/filter.js  |    4 +
 .../core-js/full/instance/find-index.js       |    4 +
 .../core-js/full/instance/find-last-index.js  |    4 +
 .../core-js/full/instance/find-last.js        |    4 +
 node_modules/core-js/full/instance/find.js    |    4 +
 node_modules/core-js/full/instance/flags.js   |    4 +
 .../core-js/full/instance/flat-map.js         |    4 +
 node_modules/core-js/full/instance/flat.js    |    4 +
 .../core-js/full/instance/for-each.js         |    4 +
 .../core-js/full/instance/group-by-to-map.js  |    4 +
 .../core-js/full/instance/group-by.js         |    4 +
 .../core-js/full/instance/group-to-map.js     |    4 +
 node_modules/core-js/full/instance/group.js   |    4 +
 .../core-js/full/instance/includes.js         |    4 +
 .../core-js/full/instance/index-of.js         |    4 +
 .../core-js/full/instance/is-well-formed.js   |    4 +
 node_modules/core-js/full/instance/keys.js    |    4 +
 .../core-js/full/instance/last-index-of.js    |    4 +
 node_modules/core-js/full/instance/map.js     |    4 +
 .../core-js/full/instance/match-all.js        |    7 +
 node_modules/core-js/full/instance/pad-end.js |    4 +
 .../core-js/full/instance/pad-start.js        |    4 +
 node_modules/core-js/full/instance/push.js    |    4 +
 .../core-js/full/instance/reduce-right.js     |    4 +
 node_modules/core-js/full/instance/reduce.js  |    4 +
 node_modules/core-js/full/instance/repeat.js  |    4 +
 .../core-js/full/instance/replace-all.js      |    7 +
 node_modules/core-js/full/instance/reverse.js |    4 +
 node_modules/core-js/full/instance/slice.js   |    4 +
 node_modules/core-js/full/instance/some.js    |    4 +
 node_modules/core-js/full/instance/sort.js    |    4 +
 node_modules/core-js/full/instance/splice.js  |    4 +
 .../core-js/full/instance/starts-with.js      |    4 +
 .../core-js/full/instance/to-reversed.js      |    4 +
 .../core-js/full/instance/to-sorted.js        |    4 +
 .../core-js/full/instance/to-spliced.js       |    4 +
 .../core-js/full/instance/to-well-formed.js   |    4 +
 .../core-js/full/instance/trim-end.js         |    4 +
 .../core-js/full/instance/trim-left.js        |    4 +
 .../core-js/full/instance/trim-right.js       |    4 +
 .../core-js/full/instance/trim-start.js       |    4 +
 node_modules/core-js/full/instance/trim.js    |    4 +
 node_modules/core-js/full/instance/un-this.js |   10 +
 .../core-js/full/instance/unique-by.js        |   10 +
 node_modules/core-js/full/instance/unshift.js |    4 +
 node_modules/core-js/full/instance/values.js  |    4 +
 node_modules/core-js/full/instance/with.js    |    4 +
 node_modules/core-js/full/is-iterable.js      |    4 +
 .../core-js/full/iterator/as-indexed-pairs.js |    9 +
 node_modules/core-js/full/iterator/concat.js  |   20 +
 node_modules/core-js/full/iterator/dispose.js |    4 +
 node_modules/core-js/full/iterator/drop.js    |    4 +
 node_modules/core-js/full/iterator/every.js   |    4 +
 node_modules/core-js/full/iterator/filter.js  |    4 +
 node_modules/core-js/full/iterator/find.js    |    4 +
 .../core-js/full/iterator/flat-map.js         |    4 +
 .../core-js/full/iterator/for-each.js         |    4 +
 node_modules/core-js/full/iterator/from.js    |    4 +
 node_modules/core-js/full/iterator/index.js   |    9 +
 node_modules/core-js/full/iterator/indexed.js |   10 +
 node_modules/core-js/full/iterator/map.js     |    4 +
 node_modules/core-js/full/iterator/range.js   |    7 +
 node_modules/core-js/full/iterator/reduce.js  |    4 +
 node_modules/core-js/full/iterator/some.js    |    4 +
 node_modules/core-js/full/iterator/take.js    |    4 +
 .../core-js/full/iterator/to-array.js         |    4 +
 .../core-js/full/iterator/to-async.js         |    4 +
 node_modules/core-js/full/json/index.js       |    4 +
 node_modules/core-js/full/json/is-raw-json.js |    4 +
 node_modules/core-js/full/json/parse.js       |    4 +
 node_modules/core-js/full/json/raw-json.js    |    4 +
 node_modules/core-js/full/json/stringify.js   |    4 +
 .../core-js/full/json/to-string-tag.js        |    4 +
 node_modules/core-js/full/map/delete-all.js   |    6 +
 node_modules/core-js/full/map/emplace.js      |    6 +
 node_modules/core-js/full/map/every.js        |    6 +
 node_modules/core-js/full/map/filter.js       |    6 +
 node_modules/core-js/full/map/find-key.js     |    6 +
 node_modules/core-js/full/map/find.js         |    6 +
 node_modules/core-js/full/map/from.js         |   26 +
 .../full/map/get-or-insert-computed.js        |    6 +
 .../core-js/full/map/get-or-insert.js         |    6 +
 node_modules/core-js/full/map/group-by.js     |   20 +
 node_modules/core-js/full/map/includes.js     |    6 +
 node_modules/core-js/full/map/index.js        |   27 +
 node_modules/core-js/full/map/key-by.js       |   30 +
 node_modules/core-js/full/map/key-of.js       |    6 +
 node_modules/core-js/full/map/map-keys.js     |    6 +
 node_modules/core-js/full/map/map-values.js   |    6 +
 node_modules/core-js/full/map/merge.js        |    6 +
 node_modules/core-js/full/map/of.js           |   24 +
 node_modules/core-js/full/map/reduce.js       |    6 +
 node_modules/core-js/full/map/some.js         |    6 +
 .../core-js/full/map/update-or-insert.js      |    7 +
 node_modules/core-js/full/map/update.js       |    6 +
 node_modules/core-js/full/map/upsert.js       |    6 +
 node_modules/core-js/full/math/acosh.js       |    4 +
 node_modules/core-js/full/math/asinh.js       |    4 +
 node_modules/core-js/full/math/atanh.js       |    4 +
 node_modules/core-js/full/math/cbrt.js        |    4 +
 node_modules/core-js/full/math/clamp.js       |    5 +
 node_modules/core-js/full/math/clz32.js       |    4 +
 node_modules/core-js/full/math/cosh.js        |    4 +
 node_modules/core-js/full/math/deg-per-rad.js |    4 +
 node_modules/core-js/full/math/degrees.js     |    5 +
 node_modules/core-js/full/math/expm1.js       |    4 +
 node_modules/core-js/full/math/f16round.js    |    4 +
 node_modules/core-js/full/math/fround.js      |    4 +
 node_modules/core-js/full/math/fscale.js      |    5 +
 node_modules/core-js/full/math/hypot.js       |    4 +
 node_modules/core-js/full/math/iaddh.js       |    5 +
 node_modules/core-js/full/math/imul.js        |    4 +
 node_modules/core-js/full/math/imulh.js       |    5 +
 node_modules/core-js/full/math/index.js       |   18 +
 node_modules/core-js/full/math/isubh.js       |    5 +
 node_modules/core-js/full/math/log10.js       |    4 +
 node_modules/core-js/full/math/log1p.js       |    4 +
 node_modules/core-js/full/math/log2.js        |    4 +
 node_modules/core-js/full/math/rad-per-deg.js |    4 +
 node_modules/core-js/full/math/radians.js     |    5 +
 node_modules/core-js/full/math/scale.js       |    5 +
 node_modules/core-js/full/math/seeded-prng.js |    5 +
 node_modules/core-js/full/math/sign.js        |    4 +
 node_modules/core-js/full/math/signbit.js     |    5 +
 node_modules/core-js/full/math/sinh.js        |    4 +
 node_modules/core-js/full/math/sum-precise.js |    4 +
 node_modules/core-js/full/math/tanh.js        |    4 +
 .../core-js/full/math/to-string-tag.js        |    4 +
 node_modules/core-js/full/math/trunc.js       |    4 +
 node_modules/core-js/full/math/umulh.js       |    5 +
 .../core-js/full/number/constructor.js        |    4 +
 node_modules/core-js/full/number/epsilon.js   |    4 +
 .../core-js/full/number/from-string.js        |    5 +
 node_modules/core-js/full/number/index.js     |    8 +
 node_modules/core-js/full/number/is-finite.js |    4 +
 .../core-js/full/number/is-integer.js         |    4 +
 node_modules/core-js/full/number/is-nan.js    |    4 +
 .../core-js/full/number/is-safe-integer.js    |    4 +
 .../core-js/full/number/max-safe-integer.js   |    4 +
 .../core-js/full/number/min-safe-integer.js   |    4 +
 .../core-js/full/number/parse-float.js        |    4 +
 node_modules/core-js/full/number/parse-int.js |    4 +
 node_modules/core-js/full/number/range.js     |    6 +
 .../core-js/full/number/to-exponential.js     |    4 +
 node_modules/core-js/full/number/to-fixed.js  |    4 +
 .../core-js/full/number/to-precision.js       |    4 +
 .../core-js/full/number/virtual/index.js      |    4 +
 .../full/number/virtual/to-exponential.js     |    4 +
 .../core-js/full/number/virtual/to-fixed.js   |    4 +
 .../full/number/virtual/to-precision.js       |    4 +
 node_modules/core-js/full/object/assign.js    |    4 +
 node_modules/core-js/full/object/create.js    |    4 +
 .../core-js/full/object/define-getter.js      |    4 +
 .../core-js/full/object/define-properties.js  |    4 +
 .../core-js/full/object/define-property.js    |    4 +
 .../core-js/full/object/define-setter.js      |    4 +
 node_modules/core-js/full/object/entries.js   |    4 +
 node_modules/core-js/full/object/freeze.js    |    4 +
 .../core-js/full/object/from-entries.js       |    4 +
 .../object/get-own-property-descriptor.js     |    4 +
 .../object/get-own-property-descriptors.js    |    4 +
 .../full/object/get-own-property-names.js     |    4 +
 .../full/object/get-own-property-symbols.js   |    4 +
 .../core-js/full/object/get-prototype-of.js   |    4 +
 node_modules/core-js/full/object/group-by.js  |    4 +
 node_modules/core-js/full/object/has-own.js   |    7 +
 node_modules/core-js/full/object/index.js     |    9 +
 .../core-js/full/object/is-extensible.js      |    4 +
 node_modules/core-js/full/object/is-frozen.js |    4 +
 node_modules/core-js/full/object/is-sealed.js |    4 +
 node_modules/core-js/full/object/is.js        |    4 +
 .../core-js/full/object/iterate-entries.js    |    5 +
 .../core-js/full/object/iterate-keys.js       |    5 +
 .../core-js/full/object/iterate-values.js     |    5 +
 node_modules/core-js/full/object/keys.js      |    4 +
 .../core-js/full/object/lookup-getter.js      |    4 +
 .../core-js/full/object/lookup-setter.js      |    4 +
 .../core-js/full/object/prevent-extensions.js |    4 +
 node_modules/core-js/full/object/proto.js     |    4 +
 node_modules/core-js/full/object/seal.js      |    4 +
 .../core-js/full/object/set-prototype-of.js   |    4 +
 node_modules/core-js/full/object/to-string.js |    4 +
 node_modules/core-js/full/object/values.js    |    4 +
 node_modules/core-js/full/observable/index.js |    9 +
 node_modules/core-js/full/parse-float.js      |    4 +
 node_modules/core-js/full/parse-int.js        |    4 +
 .../core-js/full/promise/all-settled.js       |    7 +
 node_modules/core-js/full/promise/any.js      |    8 +
 node_modules/core-js/full/promise/finally.js  |    4 +
 node_modules/core-js/full/promise/index.js    |    8 +
 node_modules/core-js/full/promise/try.js      |    4 +
 .../core-js/full/promise/with-resolvers.js    |    4 +
 node_modules/core-js/full/queue-microtask.js  |    4 +
 node_modules/core-js/full/reflect/apply.js    |    4 +
 .../core-js/full/reflect/construct.js         |    4 +
 .../core-js/full/reflect/define-metadata.js   |    5 +
 .../core-js/full/reflect/define-property.js   |    4 +
 .../core-js/full/reflect/delete-metadata.js   |    5 +
 .../core-js/full/reflect/delete-property.js   |    4 +
 .../core-js/full/reflect/get-metadata-keys.js |    5 +
 .../core-js/full/reflect/get-metadata.js      |    5 +
 .../full/reflect/get-own-metadata-keys.js     |    5 +
 .../core-js/full/reflect/get-own-metadata.js  |    5 +
 .../reflect/get-own-property-descriptor.js    |    4 +
 .../core-js/full/reflect/get-prototype-of.js  |    4 +
 node_modules/core-js/full/reflect/get.js      |    4 +
 .../core-js/full/reflect/has-metadata.js      |    5 +
 .../core-js/full/reflect/has-own-metadata.js  |    5 +
 node_modules/core-js/full/reflect/has.js      |    4 +
 node_modules/core-js/full/reflect/index.js    |   13 +
 .../core-js/full/reflect/is-extensible.js     |    4 +
 node_modules/core-js/full/reflect/metadata.js |    5 +
 node_modules/core-js/full/reflect/own-keys.js |    4 +
 .../full/reflect/prevent-extensions.js        |    4 +
 .../core-js/full/reflect/set-prototype-of.js  |    4 +
 node_modules/core-js/full/reflect/set.js      |    4 +
 .../core-js/full/reflect/to-string-tag.js     |    4 +
 .../core-js/full/regexp/constructor.js        |    4 +
 node_modules/core-js/full/regexp/dot-all.js   |    4 +
 node_modules/core-js/full/regexp/escape.js    |    4 +
 node_modules/core-js/full/regexp/flags.js     |    4 +
 node_modules/core-js/full/regexp/index.js     |    4 +
 node_modules/core-js/full/regexp/match.js     |    4 +
 node_modules/core-js/full/regexp/replace.js   |    4 +
 node_modules/core-js/full/regexp/search.js    |    4 +
 node_modules/core-js/full/regexp/split.js     |    4 +
 node_modules/core-js/full/regexp/sticky.js    |    4 +
 node_modules/core-js/full/regexp/test.js      |    4 +
 node_modules/core-js/full/regexp/to-string.js |    4 +
 node_modules/core-js/full/self.js             |    4 +
 node_modules/core-js/full/set-immediate.js    |    4 +
 node_modules/core-js/full/set-interval.js     |    4 +
 node_modules/core-js/full/set-timeout.js      |    4 +
 node_modules/core-js/full/set/add-all.js      |    6 +
 node_modules/core-js/full/set/delete-all.js   |    6 +
 node_modules/core-js/full/set/difference.js   |    9 +
 node_modules/core-js/full/set/every.js        |    6 +
 node_modules/core-js/full/set/filter.js       |    6 +
 node_modules/core-js/full/set/find.js         |    6 +
 node_modules/core-js/full/set/from.js         |   26 +
 node_modules/core-js/full/set/index.js        |   22 +
 node_modules/core-js/full/set/intersection.js |    9 +
 .../core-js/full/set/is-disjoint-from.js      |    9 +
 node_modules/core-js/full/set/is-subset-of.js |    9 +
 .../core-js/full/set/is-superset-of.js        |    9 +
 node_modules/core-js/full/set/join.js         |    6 +
 node_modules/core-js/full/set/map.js          |    6 +
 node_modules/core-js/full/set/of.js           |   24 +
 node_modules/core-js/full/set/reduce.js       |    6 +
 node_modules/core-js/full/set/some.js         |    6 +
 .../core-js/full/set/symmetric-difference.js  |    9 +
 node_modules/core-js/full/set/union.js        |    9 +
 node_modules/core-js/full/string/anchor.js    |    4 +
 node_modules/core-js/full/string/at.js        |    6 +
 node_modules/core-js/full/string/big.js       |    4 +
 node_modules/core-js/full/string/blink.js     |    4 +
 node_modules/core-js/full/string/bold.js      |    4 +
 .../core-js/full/string/code-point-at.js      |    4 +
 .../core-js/full/string/code-points.js        |    5 +
 node_modules/core-js/full/string/cooked.js    |    5 +
 node_modules/core-js/full/string/dedent.js    |    7 +
 node_modules/core-js/full/string/ends-with.js |    4 +
 node_modules/core-js/full/string/fixed.js     |    4 +
 node_modules/core-js/full/string/fontcolor.js |    4 +
 node_modules/core-js/full/string/fontsize.js  |    4 +
 .../core-js/full/string/from-code-point.js    |    4 +
 node_modules/core-js/full/string/includes.js  |    4 +
 node_modules/core-js/full/string/index.js     |   12 +
 .../core-js/full/string/is-well-formed.js     |    4 +
 node_modules/core-js/full/string/italics.js   |    4 +
 node_modules/core-js/full/string/iterator.js  |    4 +
 node_modules/core-js/full/string/link.js      |    4 +
 node_modules/core-js/full/string/match-all.js |    7 +
 node_modules/core-js/full/string/match.js     |    4 +
 node_modules/core-js/full/string/pad-end.js   |    4 +
 node_modules/core-js/full/string/pad-start.js |    4 +
 node_modules/core-js/full/string/raw.js       |    4 +
 node_modules/core-js/full/string/repeat.js    |    4 +
 .../core-js/full/string/replace-all.js        |    7 +
 node_modules/core-js/full/string/replace.js   |    4 +
 node_modules/core-js/full/string/search.js    |    4 +
 node_modules/core-js/full/string/small.js     |    4 +
 node_modules/core-js/full/string/split.js     |    4 +
 .../core-js/full/string/starts-with.js        |    4 +
 node_modules/core-js/full/string/strike.js    |    4 +
 node_modules/core-js/full/string/sub.js       |    4 +
 node_modules/core-js/full/string/substr.js    |    4 +
 node_modules/core-js/full/string/sup.js       |    4 +
 .../core-js/full/string/to-well-formed.js     |    4 +
 node_modules/core-js/full/string/trim-end.js  |    4 +
 node_modules/core-js/full/string/trim-left.js |    4 +
 .../core-js/full/string/trim-right.js         |    4 +
 .../core-js/full/string/trim-start.js         |    4 +
 node_modules/core-js/full/string/trim.js      |    4 +
 .../core-js/full/string/virtual/anchor.js     |    4 +
 .../core-js/full/string/virtual/at.js         |    7 +
 .../core-js/full/string/virtual/big.js        |    4 +
 .../core-js/full/string/virtual/blink.js      |    4 +
 .../core-js/full/string/virtual/bold.js       |    4 +
 .../full/string/virtual/code-point-at.js      |    4 +
 .../full/string/virtual/code-points.js        |    6 +
 .../core-js/full/string/virtual/ends-with.js  |    4 +
 .../core-js/full/string/virtual/fixed.js      |    4 +
 .../core-js/full/string/virtual/fontcolor.js  |    4 +
 .../core-js/full/string/virtual/fontsize.js   |    4 +
 .../core-js/full/string/virtual/includes.js   |    4 +
 .../core-js/full/string/virtual/index.js      |   10 +
 .../full/string/virtual/is-well-formed.js     |    4 +
 .../core-js/full/string/virtual/italics.js    |    4 +
 .../core-js/full/string/virtual/iterator.js   |    4 +
 .../core-js/full/string/virtual/link.js       |    4 +
 .../core-js/full/string/virtual/match-all.js  |    7 +
 .../core-js/full/string/virtual/pad-end.js    |    4 +
 .../core-js/full/string/virtual/pad-start.js  |    4 +
 .../core-js/full/string/virtual/repeat.js     |    4 +
 .../full/string/virtual/replace-all.js        |    7 +
 .../core-js/full/string/virtual/small.js      |    4 +
 .../full/string/virtual/starts-with.js        |    4 +
 .../core-js/full/string/virtual/strike.js     |    4 +
 .../core-js/full/string/virtual/sub.js        |    4 +
 .../core-js/full/string/virtual/substr.js     |    4 +
 .../core-js/full/string/virtual/sup.js        |    4 +
 .../full/string/virtual/to-well-formed.js     |    4 +
 .../core-js/full/string/virtual/trim-end.js   |    4 +
 .../core-js/full/string/virtual/trim-left.js  |    4 +
 .../core-js/full/string/virtual/trim-right.js |    4 +
 .../core-js/full/string/virtual/trim-start.js |    4 +
 .../core-js/full/string/virtual/trim.js       |    4 +
 node_modules/core-js/full/structured-clone.js |    4 +
 node_modules/core-js/full/suppressed-error.js |    4 +
 .../core-js/full/symbol/async-dispose.js      |    4 +
 .../core-js/full/symbol/async-iterator.js     |    4 +
 .../core-js/full/symbol/custom-matcher.js     |    5 +
 .../core-js/full/symbol/description.js        |    2 +
 node_modules/core-js/full/symbol/dispose.js   |    4 +
 node_modules/core-js/full/symbol/for.js       |    4 +
 .../core-js/full/symbol/has-instance.js       |    4 +
 node_modules/core-js/full/symbol/index.js     |   15 +
 .../full/symbol/is-concat-spreadable.js       |    4 +
 .../full/symbol/is-registered-symbol.js       |    6 +
 .../core-js/full/symbol/is-registered.js      |    6 +
 .../full/symbol/is-well-known-symbol.js       |    6 +
 .../core-js/full/symbol/is-well-known.js      |    6 +
 node_modules/core-js/full/symbol/iterator.js  |    4 +
 node_modules/core-js/full/symbol/key-for.js   |    4 +
 node_modules/core-js/full/symbol/match-all.js |    4 +
 node_modules/core-js/full/symbol/match.js     |    4 +
 node_modules/core-js/full/symbol/matcher.js   |    5 +
 .../core-js/full/symbol/metadata-key.js       |    5 +
 node_modules/core-js/full/symbol/metadata.js  |    4 +
 .../core-js/full/symbol/observable.js         |    5 +
 .../core-js/full/symbol/pattern-match.js      |    6 +
 .../core-js/full/symbol/replace-all.js        |    6 +
 node_modules/core-js/full/symbol/replace.js   |    4 +
 node_modules/core-js/full/symbol/search.js    |    4 +
 node_modules/core-js/full/symbol/species.js   |    4 +
 node_modules/core-js/full/symbol/split.js     |    4 +
 .../core-js/full/symbol/to-primitive.js       |    4 +
 .../core-js/full/symbol/to-string-tag.js      |    4 +
 .../core-js/full/symbol/unscopables.js        |    4 +
 node_modules/core-js/full/typed-array/at.js   |    7 +
 .../core-js/full/typed-array/copy-within.js   |    4 +
 .../core-js/full/typed-array/entries.js       |    4 +
 .../core-js/full/typed-array/every.js         |    4 +
 node_modules/core-js/full/typed-array/fill.js |    4 +
 .../core-js/full/typed-array/filter-out.js    |    3 +
 .../core-js/full/typed-array/filter-reject.js |    2 +
 .../core-js/full/typed-array/filter.js        |    4 +
 .../core-js/full/typed-array/find-index.js    |    4 +
 .../full/typed-array/find-last-index.js       |    4 +
 .../core-js/full/typed-array/find-last.js     |    4 +
 node_modules/core-js/full/typed-array/find.js |    4 +
 .../core-js/full/typed-array/float32-array.js |    5 +
 .../core-js/full/typed-array/float64-array.js |    5 +
 .../core-js/full/typed-array/for-each.js      |    4 +
 .../core-js/full/typed-array/from-async.js    |    2 +
 .../core-js/full/typed-array/from-base64.js   |    4 +
 .../core-js/full/typed-array/from-hex.js      |    4 +
 node_modules/core-js/full/typed-array/from.js |    4 +
 .../core-js/full/typed-array/group-by.js      |    2 +
 .../core-js/full/typed-array/includes.js      |    4 +
 .../core-js/full/typed-array/index-of.js      |    4 +
 .../core-js/full/typed-array/index.js         |   14 +
 .../core-js/full/typed-array/int16-array.js   |    5 +
 .../core-js/full/typed-array/int32-array.js   |    5 +
 .../core-js/full/typed-array/int8-array.js    |    5 +
 .../core-js/full/typed-array/iterator.js      |    4 +
 node_modules/core-js/full/typed-array/join.js |    4 +
 node_modules/core-js/full/typed-array/keys.js |    4 +
 .../core-js/full/typed-array/last-index-of.js |    4 +
 node_modules/core-js/full/typed-array/map.js  |    4 +
 .../core-js/full/typed-array/methods.js       |   14 +
 node_modules/core-js/full/typed-array/of.js   |    4 +
 .../core-js/full/typed-array/reduce-right.js  |    4 +
 .../core-js/full/typed-array/reduce.js        |    4 +
 .../core-js/full/typed-array/reverse.js       |    4 +
 .../full/typed-array/set-from-base64.js       |    4 +
 .../core-js/full/typed-array/set-from-hex.js  |    4 +
 node_modules/core-js/full/typed-array/set.js  |    4 +
 .../core-js/full/typed-array/slice.js         |    4 +
 node_modules/core-js/full/typed-array/some.js |    4 +
 node_modules/core-js/full/typed-array/sort.js |    4 +
 .../core-js/full/typed-array/subarray.js      |    4 +
 .../core-js/full/typed-array/to-base64.js     |    4 +
 .../core-js/full/typed-array/to-hex.js        |    4 +
 .../full/typed-array/to-locale-string.js      |    4 +
 .../core-js/full/typed-array/to-reversed.js   |    4 +
 .../core-js/full/typed-array/to-sorted.js     |    4 +
 .../core-js/full/typed-array/to-spliced.js    |    5 +
 .../core-js/full/typed-array/to-string.js     |    4 +
 .../core-js/full/typed-array/uint16-array.js  |    5 +
 .../core-js/full/typed-array/uint32-array.js  |    5 +
 .../core-js/full/typed-array/uint8-array.js   |    5 +
 .../full/typed-array/uint8-clamped-array.js   |    5 +
 .../core-js/full/typed-array/unique-by.js     |    3 +
 .../core-js/full/typed-array/values.js        |    4 +
 node_modules/core-js/full/typed-array/with.js |    4 +
 node_modules/core-js/full/unescape.js         |    4 +
 .../core-js/full/url-search-params/index.js   |    4 +
 node_modules/core-js/full/url/can-parse.js    |    4 +
 node_modules/core-js/full/url/index.js        |    4 +
 node_modules/core-js/full/url/parse.js        |    4 +
 node_modules/core-js/full/url/to-json.js      |    4 +
 .../core-js/full/weak-map/delete-all.js       |    6 +
 node_modules/core-js/full/weak-map/emplace.js |    6 +
 node_modules/core-js/full/weak-map/from.js    |   14 +
 .../full/weak-map/get-or-insert-computed.js   |    6 +
 .../core-js/full/weak-map/get-or-insert.js    |    6 +
 node_modules/core-js/full/weak-map/index.js   |   13 +
 node_modules/core-js/full/weak-map/of.js      |   12 +
 node_modules/core-js/full/weak-map/upsert.js  |    6 +
 node_modules/core-js/full/weak-set/add-all.js |    6 +
 .../core-js/full/weak-set/delete-all.js       |    6 +
 node_modules/core-js/full/weak-set/from.js    |   12 +
 node_modules/core-js/full/weak-set/index.js   |    9 +
 node_modules/core-js/full/weak-set/of.js      |   10 +
 node_modules/core-js/index.js                 |    2 +
 node_modules/core-js/internals/README.md      |    1 +
 node_modules/core-js/internals/a-callable.js  |   11 +
 .../core-js/internals/a-constructor.js        |   11 +
 node_modules/core-js/internals/a-data-view.js |    9 +
 node_modules/core-js/internals/a-map.js       |    8 +
 node_modules/core-js/internals/a-number.js    |    7 +
 .../core-js/internals/a-possible-prototype.js |   10 +
 node_modules/core-js/internals/a-set.js       |    8 +
 node_modules/core-js/internals/a-string.js    |    7 +
 node_modules/core-js/internals/a-weak-map.js  |    8 +
 node_modules/core-js/internals/a-weak-set.js  |    8 +
 .../internals/add-disposable-resource.js      |   62 +
 .../core-js/internals/add-to-unscopables.js   |   21 +
 .../core-js/internals/advance-string-index.js |    8 +
 node_modules/core-js/internals/an-instance.js |    9 +
 .../internals/an-object-or-undefined.js       |   10 +
 node_modules/core-js/internals/an-object.js   |   11 +
 .../core-js/internals/an-uint8-array.js       |   11 +
 .../internals/array-buffer-basic-detection.js |    3 +
 .../internals/array-buffer-byte-length.js     |   15 +
 .../internals/array-buffer-is-detached.js     |   17 +
 .../internals/array-buffer-non-extensible.js  |   11 +
 .../internals/array-buffer-not-detached.js    |    9 +
 .../internals/array-buffer-transfer.js        |   45 +
 .../internals/array-buffer-view-core.js       |  193 +
 .../core-js/internals/array-buffer.js         |  260 +
 .../core-js/internals/array-copy-within.js    |   31 +
 node_modules/core-js/internals/array-fill.js  |   17 +
 .../core-js/internals/array-for-each.js       |   12 +
 .../core-js/internals/array-from-async.js     |   51 +
 .../array-from-constructor-and-list.js        |   10 +
 node_modules/core-js/internals/array-from.js  |   46 +
 .../core-js/internals/array-group-to-map.js   |   31 +
 node_modules/core-js/internals/array-group.js |   37 +
 .../core-js/internals/array-includes.js       |   34 +
 .../internals/array-iteration-from-last.js    |   35 +
 .../core-js/internals/array-iteration.js      |   74 +
 .../core-js/internals/array-last-index-of.js  |   28 +
 .../array-method-has-species-support.js       |   20 +
 .../internals/array-method-is-strict.js       |   10 +
 .../core-js/internals/array-reduce.js         |   46 +
 .../core-js/internals/array-set-length.js     |   27 +
 node_modules/core-js/internals/array-slice.js |    4 +
 node_modules/core-js/internals/array-sort.js  |   42 +
 .../internals/array-species-constructor.js    |   23 +
 .../core-js/internals/array-species-create.js |    8 +
 .../core-js/internals/array-to-reversed.js    |   12 +
 .../core-js/internals/array-unique-by.js      |   35 +
 node_modules/core-js/internals/array-with.js  |   18 +
 .../internals/async-from-sync-iterator.js     |   49 +
 .../core-js/internals/async-iterator-close.js |   19 +
 .../internals/async-iterator-create-proxy.js  |  105 +
 .../internals/async-iterator-indexed.js       |   13 +
 .../internals/async-iterator-iteration.js     |   90 +
 .../core-js/internals/async-iterator-map.js   |   57 +
 .../internals/async-iterator-prototype.js     |   38 +
 .../core-js/internals/async-iterator-wrap.js  |    7 +
 node_modules/core-js/internals/base64-map.js  |   19 +
 .../call-with-safe-iteration-closing.js       |   12 +
 node_modules/core-js/internals/caller.js      |    8 +
 .../check-correctness-of-iteration.js         |   41 +
 node_modules/core-js/internals/classof-raw.js |    9 +
 node_modules/core-js/internals/classof.js     |   30 +
 .../core-js/internals/collection-from.js      |   24 +
 .../core-js/internals/collection-of.js        |   15 +
 .../core-js/internals/collection-strong.js    |  206 +
 .../core-js/internals/collection-weak.js      |  131 +
 node_modules/core-js/internals/collection.js  |  106 +
 .../core-js/internals/composite-key.js        |   50 +
 .../internals/copy-constructor-properties.js  |   17 +
 .../internals/correct-is-regexp-logic.js      |   16 +
 .../internals/correct-prototype-getter.js     |    9 +
 node_modules/core-js/internals/create-html.js |   16 +
 .../internals/create-iter-result-object.js    |    6 +
 .../create-non-enumerable-property.js         |   11 +
 .../internals/create-property-descriptor.js   |    9 +
 .../core-js/internals/create-property.js      |    9 +
 .../core-js/internals/date-to-iso-string.js   |   41 +
 .../core-js/internals/date-to-primitive.js    |   14 +
 .../internals/define-built-in-accessor.js     |    9 +
 .../core-js/internals/define-built-in.js      |   28 +
 .../core-js/internals/define-built-ins.js     |    7 +
 .../internals/define-global-property.js       |   13 +
 .../internals/delete-property-or-throw.js     |    8 +
 node_modules/core-js/internals/descriptors.js |    8 +
 .../core-js/internals/detach-transferable.js  |   37 +
 .../internals/document-create-element.js      |   11 +
 .../internals/does-not-exceed-safe-integer.js |    8 +
 .../internals/dom-exception-constants.js      |   28 +
 .../core-js/internals/dom-iterables.js        |   36 +
 .../internals/dom-token-list-prototype.js     |    8 +
 .../core-js/internals/entry-unbind.js         |    7 +
 .../core-js/internals/entry-virtual.js        |    6 +
 .../core-js/internals/enum-bug-keys.js        |   11 +
 .../internals/environment-ff-version.js       |    6 +
 .../internals/environment-is-ie-or-edge.js    |    4 +
 .../internals/environment-is-ios-pebble.js    |    4 +
 .../core-js/internals/environment-is-ios.js   |    5 +
 .../core-js/internals/environment-is-node.js  |    4 +
 .../internals/environment-is-webos-webkit.js  |    4 +
 .../internals/environment-user-agent.js       |    7 +
 .../internals/environment-v8-version.js       |   28 +
 .../internals/environment-webkit-version.js   |    6 +
 node_modules/core-js/internals/environment.js |   21 +
 .../core-js/internals/error-stack-clear.js    |   16 +
 .../core-js/internals/error-stack-install.js  |   14 +
 .../internals/error-stack-installable.js      |   11 +
 .../core-js/internals/error-to-string.js      |   29 +
 node_modules/core-js/internals/export.js      |   55 +
 node_modules/core-js/internals/fails.js       |    8 +
 .../fix-regexp-well-known-symbol-logic.js     |   76 +
 .../core-js/internals/flatten-into-array.js   |   34 +
 node_modules/core-js/internals/freezing.js    |    7 +
 .../core-js/internals/function-apply.js       |   11 +
 .../internals/function-bind-context.js        |   14 +
 .../core-js/internals/function-bind-native.js |    9 +
 .../core-js/internals/function-bind.js        |   36 +
 .../core-js/internals/function-call.js        |    8 +
 .../core-js/internals/function-demethodize.js |    7 +
 .../core-js/internals/function-name.js        |   18 +
 .../function-uncurry-this-accessor.js         |   10 +
 .../internals/function-uncurry-this-clause.js |   10 +
 .../internals/function-uncurry-this.js        |   13 +
 .../core-js/internals/get-alphabet-option.js  |    8 +
 .../get-async-iterator-flattenable.js         |   30 +
 .../core-js/internals/get-async-iterator.js   |   15 +
 .../internals/get-built-in-node-module.js     |   15 +
 .../get-built-in-prototype-method.js          |    8 +
 .../core-js/internals/get-built-in.js         |   11 +
 .../core-js/internals/get-iterator-direct.js  |   10 +
 .../internals/get-iterator-flattenable.js     |   11 +
 .../core-js/internals/get-iterator-method.js  |   14 +
 .../core-js/internals/get-iterator.js         |   14 +
 .../internals/get-json-replacer-function.js   |   30 +
 node_modules/core-js/internals/get-method.js  |   10 +
 .../core-js/internals/get-set-record.js       |   40 +
 .../core-js/internals/get-substitution.js     |   46 +
 node_modules/core-js/internals/global-this.js |   16 +
 .../core-js/internals/has-own-property.js     |   12 +
 node_modules/core-js/internals/hidden-keys.js |    2 +
 .../core-js/internals/host-report-errors.js   |    7 +
 node_modules/core-js/internals/html.js        |    4 +
 .../core-js/internals/ie8-dom-define.js       |   12 +
 node_modules/core-js/internals/ieee754.js     |  103 +
 .../core-js/internals/indexed-object.js       |   16 +
 .../core-js/internals/inherit-if-required.js  |   19 +
 .../core-js/internals/inspect-source.js       |   15 +
 .../core-js/internals/install-error-cause.js  |   11 +
 .../core-js/internals/internal-metadata.js    |   90 +
 .../core-js/internals/internal-state.js       |   71 +
 .../internals/is-array-iterator-method.js     |   11 +
 node_modules/core-js/internals/is-array.js    |    9 +
 .../core-js/internals/is-big-int-array.js     |    7 +
 node_modules/core-js/internals/is-callable.js |   12 +
 .../core-js/internals/is-constructor.js       |   52 +
 .../core-js/internals/is-data-descriptor.js   |    6 +
 node_modules/core-js/internals/is-forced.js   |   23 +
 .../core-js/internals/is-integral-number.js   |   11 +
 node_modules/core-js/internals/is-iterable.js |   17 +
 .../core-js/internals/is-null-or-undefined.js |    6 +
 node_modules/core-js/internals/is-object.js   |    6 +
 .../internals/is-possible-prototype.js        |    6 +
 node_modules/core-js/internals/is-pure.js     |    2 +
 node_modules/core-js/internals/is-raw-json.js |    9 +
 node_modules/core-js/internals/is-regexp.js   |   13 +
 node_modules/core-js/internals/is-symbol.js   |   14 +
 .../core-js/internals/iterate-simple.js       |   12 +
 node_modules/core-js/internals/iterate.js     |   69 +
 .../core-js/internals/iterator-close.js       |   24 +
 .../internals/iterator-create-constructor.js  |   16 +
 .../internals/iterator-create-proxy.js        |   78 +
 .../core-js/internals/iterator-define.js      |  102 +
 .../core-js/internals/iterator-indexed.js     |   13 +
 .../core-js/internals/iterator-map.js         |   24 +
 .../core-js/internals/iterators-core.js       |   49 +
 node_modules/core-js/internals/iterators.js   |    2 +
 .../core-js/internals/length-of-array-like.js |    8 +
 .../core-js/internals/make-built-in.js        |   55 +
 node_modules/core-js/internals/map-helpers.js |   15 +
 node_modules/core-js/internals/map-iterate.js |   16 +
 node_modules/core-js/internals/map-upsert.js  |   31 +
 node_modules/core-js/internals/math-expm1.js  |   17 +
 .../core-js/internals/math-float-round.js     |   19 +
 node_modules/core-js/internals/math-fround.js |   13 +
 node_modules/core-js/internals/math-log10.js  |    8 +
 node_modules/core-js/internals/math-log1p.js  |   10 +
 node_modules/core-js/internals/math-log2.js   |   10 +
 .../internals/math-round-ties-to-even.js      |    7 +
 node_modules/core-js/internals/math-scale.js  |   14 +
 node_modules/core-js/internals/math-sign.js   |    9 +
 node_modules/core-js/internals/math-trunc.js  |   11 +
 node_modules/core-js/internals/microtask.js   |   79 +
 .../core-js/internals/native-raw-json.js      |   11 +
 .../internals/new-promise-capability.js       |   21 +
 .../internals/normalize-string-argument.js    |    6 +
 node_modules/core-js/internals/not-a-nan.js   |    8 +
 .../core-js/internals/not-a-regexp.js         |   10 +
 .../core-js/internals/number-is-finite.js     |   11 +
 .../core-js/internals/number-parse-float.js   |   23 +
 .../core-js/internals/number-parse-int.js     |   23 +
 .../internals/numeric-range-iterator.js       |  106 +
 .../core-js/internals/object-assign.js        |   58 +
 .../core-js/internals/object-create.js        |   85 +
 .../internals/object-define-properties.js     |   21 +
 .../internals/object-define-property.js       |   44 +
 .../object-get-own-property-descriptor.js     |   23 +
 .../object-get-own-property-names-external.js |   24 +
 .../object-get-own-property-names.js          |   12 +
 .../object-get-own-property-symbols.js        |    3 +
 .../internals/object-get-prototype-of.js      |   22 +
 .../core-js/internals/object-is-extensible.js |   17 +
 .../internals/object-is-prototype-of.js       |    4 +
 .../core-js/internals/object-iterator.js      |   38 +
 .../core-js/internals/object-keys-internal.js |   21 +
 node_modules/core-js/internals/object-keys.js |   10 +
 .../object-property-is-enumerable.js          |   14 +
 .../object-prototype-accessors-forced.js      |   18 +
 .../internals/object-set-prototype-of.js      |   29 +
 .../core-js/internals/object-to-array.js      |   49 +
 .../core-js/internals/object-to-string.js     |    9 +
 .../internals/ordinary-to-primitive.js        |   16 +
 node_modules/core-js/internals/own-keys.js    |   15 +
 .../core-js/internals/parse-json-string.js    |   56 +
 node_modules/core-js/internals/path.js        |    4 +
 node_modules/core-js/internals/perform.js     |    8 +
 .../promise-constructor-detection.js          |   47 +
 .../internals/promise-native-constructor.js   |    4 +
 .../core-js/internals/promise-resolve.js      |   13 +
 .../promise-statics-incorrect-iteration.js    |    8 +
 .../core-js/internals/proxy-accessor.js       |   10 +
 node_modules/core-js/internals/queue.js       |   25 +
 .../core-js/internals/reflect-metadata.js     |   62 +
 .../core-js/internals/regexp-exec-abstract.js |   21 +
 node_modules/core-js/internals/regexp-exec.js |  117 +
 .../core-js/internals/regexp-flags.js         |   18 +
 .../core-js/internals/regexp-get-flags.js     |   13 +
 .../internals/regexp-sticky-helpers.js        |   31 +
 .../internals/regexp-unsupported-dot-all.js   |   11 +
 .../internals/regexp-unsupported-ncg.js       |   12 +
 .../internals/require-object-coercible.js     |   11 +
 .../core-js/internals/safe-get-built-in.js    |   13 +
 .../core-js/internals/same-value-zero.js      |    7 +
 node_modules/core-js/internals/same-value.js  |    8 +
 .../core-js/internals/schedulers-fix.js       |   31 +
 node_modules/core-js/internals/set-clone.js   |   14 +
 .../core-js/internals/set-difference.js       |   26 +
 node_modules/core-js/internals/set-helpers.js |   14 +
 .../core-js/internals/set-intersection.js     |   31 +
 .../core-js/internals/set-is-disjoint-from.js |   22 +
 .../core-js/internals/set-is-subset-of.js     |   16 +
 .../core-js/internals/set-is-superset-of.js   |   19 +
 node_modules/core-js/internals/set-iterate.js |   14 +
 .../internals/set-method-accept-set-like.js   |   58 +
 node_modules/core-js/internals/set-size.js    |    7 +
 node_modules/core-js/internals/set-species.js |   18 +
 .../internals/set-symmetric-difference.js     |   23 +
 .../core-js/internals/set-to-string-tag.js    |   13 +
 node_modules/core-js/internals/set-union.js   |   18 +
 node_modules/core-js/internals/shared-key.js  |    9 +
 .../core-js/internals/shared-store.js         |   15 +
 node_modules/core-js/internals/shared.js      |    6 +
 .../core-js/internals/species-constructor.js  |   15 +
 .../core-js/internals/string-cooked.js        |   27 +
 .../core-js/internals/string-html-forced.js   |   11 +
 .../core-js/internals/string-multibyte.js     |   37 +
 .../internals/string-pad-webkit-bug.js        |    5 +
 node_modules/core-js/internals/string-pad.js  |   36 +
 .../core-js/internals/string-parse.js         |  119 +
 .../internals/string-punycode-to-ascii.js     |  181 +
 .../core-js/internals/string-repeat.js        |   17 +
 .../core-js/internals/string-trim-end.js      |   11 +
 .../core-js/internals/string-trim-forced.js   |   16 +
 .../core-js/internals/string-trim-start.js    |   11 +
 node_modules/core-js/internals/string-trim.js |   31 +
 .../structured-clone-proper-transfer.js       |   16 +
 .../internals/symbol-constructor-detection.js |   19 +
 .../internals/symbol-define-to-primitive.js   |   21 +
 .../core-js/internals/symbol-is-registered.js |   17 +
 .../core-js/internals/symbol-is-well-known.js |   35 +
 .../internals/symbol-registry-detection.js    |    5 +
 node_modules/core-js/internals/task.js        |  117 +
 .../core-js/internals/this-number-value.js    |    6 +
 .../core-js/internals/to-absolute-index.js    |   13 +
 node_modules/core-js/internals/to-big-int.js  |   13 +
 node_modules/core-js/internals/to-index.js    |   15 +
 .../core-js/internals/to-indexed-object.js    |    8 +
 .../internals/to-integer-or-infinity.js       |   10 +
 node_modules/core-js/internals/to-length.js   |   11 +
 node_modules/core-js/internals/to-object.js   |   10 +
 node_modules/core-js/internals/to-offset.js   |   10 +
 .../core-js/internals/to-positive-integer.js  |   10 +
 .../core-js/internals/to-primitive.js         |   26 +
 .../core-js/internals/to-property-key.js      |   10 +
 node_modules/core-js/internals/to-set-like.js |   20 +
 .../internals/to-string-tag-support.js        |    9 +
 node_modules/core-js/internals/to-string.js   |    9 +
 .../core-js/internals/to-uint8-clamped.js     |    7 +
 .../core-js/internals/try-to-string.js        |   10 +
 .../internals/typed-array-constructor.js      |  236 +
 ...ped-array-constructors-require-wrappers.js |   23 +
 .../typed-array-from-same-type-and-list.js    |    7 +
 .../core-js/internals/typed-array-from.js     |   42 +
 node_modules/core-js/internals/uid.js         |   10 +
 .../core-js/internals/uint8-from-base64.js    |  156 +
 .../core-js/internals/uint8-from-hex.js       |   26 +
 .../internals/url-constructor-detection.js    |   42 +
 .../core-js/internals/use-symbol-as-uid.js    |    7 +
 .../internals/v8-prototype-define-bug.js      |   13 +
 .../internals/validate-arguments-length.js    |    7 +
 .../internals/weak-map-basic-detection.js     |    7 +
 .../core-js/internals/weak-map-helpers.js     |   14 +
 .../core-js/internals/weak-set-helpers.js     |   13 +
 .../internals/well-known-symbol-define.js     |   12 +
 .../internals/well-known-symbol-wrapped.js    |    4 +
 .../core-js/internals/well-known-symbol.js    |   19 +
 node_modules/core-js/internals/whitespaces.js |    4 +
 .../wrap-error-constructor-with-cause.js      |   65 +
 node_modules/core-js/modules/README.md        |    1 +
 .../modules/es.aggregate-error.cause.js       |   23 +
 .../modules/es.aggregate-error.constructor.js |   51 +
 .../core-js/modules/es.aggregate-error.js     |    3 +
 .../modules/es.array-buffer.constructor.js    |   17 +
 .../modules/es.array-buffer.detached.js       |   17 +
 .../modules/es.array-buffer.is-view.js        |   11 +
 .../core-js/modules/es.array-buffer.slice.js  |   39 +
 ...s.array-buffer.transfer-to-fixed-length.js |   11 +
 .../modules/es.array-buffer.transfer.js       |   11 +
 node_modules/core-js/modules/es.array.at.js   |   20 +
 .../core-js/modules/es.array.concat.js        |   58 +
 .../core-js/modules/es.array.copy-within.js   |   13 +
 .../core-js/modules/es.array.every.js         |   14 +
 node_modules/core-js/modules/es.array.fill.js |   13 +
 .../core-js/modules/es.array.filter.js        |   15 +
 .../core-js/modules/es.array.find-index.js    |   22 +
 .../modules/es.array.find-last-index.js       |   14 +
 .../core-js/modules/es.array.find-last.js     |   14 +
 node_modules/core-js/modules/es.array.find.js |   22 +
 .../core-js/modules/es.array.flat-map.js      |   21 +
 node_modules/core-js/modules/es.array.flat.js |   20 +
 .../core-js/modules/es.array.for-each.js      |   10 +
 node_modules/core-js/modules/es.array.from.js |   15 +
 .../core-js/modules/es.array.includes.js      |   22 +
 .../core-js/modules/es.array.index-of.js      |   23 +
 .../core-js/modules/es.array.is-array.js      |    9 +
 .../core-js/modules/es.array.iterator.js      |   62 +
 node_modules/core-js/modules/es.array.join.js |   19 +
 .../core-js/modules/es.array.last-index-of.js |   10 +
 node_modules/core-js/modules/es.array.map.js  |   15 +
 node_modules/core-js/modules/es.array.of.js   |   27 +
 node_modules/core-js/modules/es.array.push.js |   42 +
 .../core-js/modules/es.array.reduce-right.js  |   19 +
 .../core-js/modules/es.array.reduce.js        |   20 +
 .../core-js/modules/es.array.reverse.js       |   19 +
 .../core-js/modules/es.array.slice.js         |   49 +
 node_modules/core-js/modules/es.array.some.js |   14 +
 node_modules/core-js/modules/es.array.sort.js |  106 +
 .../core-js/modules/es.array.species.js       |    6 +
 .../core-js/modules/es.array.splice.js        |   67 +
 .../core-js/modules/es.array.to-reversed.js   |   17 +
 .../core-js/modules/es.array.to-sorted.js     |   24 +
 .../core-js/modules/es.array.to-spliced.js    |   44 +
 .../modules/es.array.unscopables.flat-map.js  |    7 +
 .../modules/es.array.unscopables.flat.js      |    7 +
 .../core-js/modules/es.array.unshift.js       |   45 +
 node_modules/core-js/modules/es.array.with.js |   14 +
 .../modules/es.data-view.constructor.js       |   10 +
 .../modules/es.data-view.get-float16.js       |   31 +
 node_modules/core-js/modules/es.data-view.js  |    3 +
 .../modules/es.data-view.set-float16.js       |   54 +
 .../core-js/modules/es.date.get-year.js       |   20 +
 node_modules/core-js/modules/es.date.now.js   |   15 +
 .../core-js/modules/es.date.set-year.js       |   20 +
 .../core-js/modules/es.date.to-gmt-string.js  |    8 +
 .../core-js/modules/es.date.to-iso-string.js  |   10 +
 .../core-js/modules/es.date.to-json.js        |   21 +
 .../core-js/modules/es.date.to-primitive.js   |   14 +
 .../core-js/modules/es.date.to-string.js      |   20 +
 .../core-js/modules/es.error.cause.js         |   58 +
 .../core-js/modules/es.error.to-string.js     |   11 +
 node_modules/core-js/modules/es.escape.js     |   43 +
 .../core-js/modules/es.function.bind.js       |   11 +
 .../modules/es.function.has-instance.js       |   20 +
 .../core-js/modules/es.function.name.js       |   26 +
 .../core-js/modules/es.global-this.js         |    9 +
 .../modules/es.iterator.constructor.js        |   65 +
 .../core-js/modules/es.iterator.drop.js       |   36 +
 .../core-js/modules/es.iterator.every.js      |   20 +
 .../core-js/modules/es.iterator.filter.js     |   35 +
 .../core-js/modules/es.iterator.find.js       |   20 +
 .../core-js/modules/es.iterator.flat-map.js   |   45 +
 .../core-js/modules/es.iterator.for-each.js   |   20 +
 .../core-js/modules/es.iterator.from.js       |   24 +
 .../core-js/modules/es.iterator.map.js        |   10 +
 .../core-js/modules/es.iterator.reduce.js     |   32 +
 .../core-js/modules/es.iterator.some.js       |   20 +
 .../core-js/modules/es.iterator.take.js       |   33 +
 .../core-js/modules/es.iterator.to-array.js   |   17 +
 .../core-js/modules/es.json.stringify.js      |   73 +
 .../core-js/modules/es.json.to-string-tag.js  |    7 +
 .../core-js/modules/es.map.constructor.js     |    9 +
 .../core-js/modules/es.map.group-by.js        |   38 +
 node_modules/core-js/modules/es.map.js        |    3 +
 node_modules/core-js/modules/es.math.acosh.js |   26 +
 node_modules/core-js/modules/es.math.asinh.js |   21 +
 node_modules/core-js/modules/es.math.atanh.js |   18 +
 node_modules/core-js/modules/es.math.cbrt.js  |   15 +
 node_modules/core-js/modules/es.math.clz32.js |   15 +
 node_modules/core-js/modules/es.math.cosh.js  |   19 +
 node_modules/core-js/modules/es.math.expm1.js |    8 +
 .../core-js/modules/es.math.f16round.js       |   15 +
 .../core-js/modules/es.math.fround.js         |    7 +
 node_modules/core-js/modules/es.math.hypot.js |   36 +
 node_modules/core-js/modules/es.math.imul.js  |   24 +
 node_modules/core-js/modules/es.math.log10.js |    9 +
 node_modules/core-js/modules/es.math.log1p.js |    7 +
 node_modules/core-js/modules/es.math.log2.js  |    9 +
 node_modules/core-js/modules/es.math.sign.js  |    9 +
 node_modules/core-js/modules/es.math.sinh.js  |   23 +
 node_modules/core-js/modules/es.math.tanh.js  |   16 +
 .../core-js/modules/es.math.to-string-tag.js  |    6 +
 node_modules/core-js/modules/es.math.trunc.js |    9 +
 .../core-js/modules/es.number.constructor.js  |  115 +
 .../core-js/modules/es.number.epsilon.js      |    8 +
 .../core-js/modules/es.number.is-finite.js    |    7 +
 .../core-js/modules/es.number.is-integer.js   |    9 +
 .../core-js/modules/es.number.is-nan.js       |   11 +
 .../modules/es.number.is-safe-integer.js      |   13 +
 .../modules/es.number.max-safe-integer.js     |    8 +
 .../modules/es.number.min-safe-integer.js     |    8 +
 .../core-js/modules/es.number.parse-float.js  |   10 +
 .../core-js/modules/es.number.parse-int.js    |   10 +
 .../modules/es.number.to-exponential.js       |   98 +
 .../core-js/modules/es.number.to-fixed.js     |  131 +
 .../core-js/modules/es.number.to-precision.js |   25 +
 .../core-js/modules/es.object.assign.js       |   10 +
 .../core-js/modules/es.object.create.js       |   11 +
 .../modules/es.object.define-getter.js        |   17 +
 .../modules/es.object.define-properties.js    |   11 +
 .../modules/es.object.define-property.js      |   11 +
 .../modules/es.object.define-setter.js        |   17 +
 .../core-js/modules/es.object.entries.js      |   11 +
 .../core-js/modules/es.object.freeze.js       |   18 +
 .../core-js/modules/es.object.from-entries.js |   16 +
 .../es.object.get-own-property-descriptor.js  |   16 +
 .../es.object.get-own-property-descriptors.js |   25 +
 .../es.object.get-own-property-names.js       |   13 +
 .../es.object.get-own-property-symbols.js     |   19 +
 .../modules/es.object.get-prototype-of.js     |   17 +
 .../core-js/modules/es.object.group-by.js     |   39 +
 .../core-js/modules/es.object.has-own.js      |    9 +
 .../modules/es.object.is-extensible.js        |   10 +
 .../core-js/modules/es.object.is-frozen.js    |   21 +
 .../core-js/modules/es.object.is-sealed.js    |   21 +
 node_modules/core-js/modules/es.object.is.js  |    9 +
 .../core-js/modules/es.object.keys.js         |   15 +
 .../modules/es.object.lookup-getter.js        |   23 +
 .../modules/es.object.lookup-setter.js        |   23 +
 .../modules/es.object.prevent-extensions.js   |   18 +
 .../core-js/modules/es.object.proto.js        |   31 +
 .../core-js/modules/es.object.seal.js         |   18 +
 .../modules/es.object.set-prototype-of.js     |    9 +
 .../core-js/modules/es.object.to-string.js    |   10 +
 .../core-js/modules/es.object.values.js       |   11 +
 .../core-js/modules/es.parse-float.js         |    9 +
 node_modules/core-js/modules/es.parse-int.js  |    9 +
 .../core-js/modules/es.promise.all-settled.js |   44 +
 .../core-js/modules/es.promise.all.js         |   39 +
 .../core-js/modules/es.promise.any.js         |   48 +
 .../core-js/modules/es.promise.catch.js       |   26 +
 .../core-js/modules/es.promise.constructor.js |  290 +
 .../core-js/modules/es.promise.finally.js     |   43 +
 node_modules/core-js/modules/es.promise.js    |    8 +
 .../core-js/modules/es.promise.race.js        |   26 +
 .../core-js/modules/es.promise.reject.js      |   15 +
 .../core-js/modules/es.promise.resolve.js     |   18 +
 .../core-js/modules/es.promise.try.js         |   33 +
 .../modules/es.promise.with-resolvers.js      |   16 +
 .../core-js/modules/es.reflect.apply.js       |   20 +
 .../core-js/modules/es.reflect.construct.js   |   57 +
 .../modules/es.reflect.define-property.js     |   29 +
 .../modules/es.reflect.delete-property.js     |   13 +
 .../es.reflect.get-own-property-descriptor.js |   13 +
 .../modules/es.reflect.get-prototype-of.js    |   13 +
 .../core-js/modules/es.reflect.get.js         |   25 +
 .../core-js/modules/es.reflect.has.js         |   10 +
 .../modules/es.reflect.is-extensible.js       |   13 +
 .../core-js/modules/es.reflect.own-keys.js    |    9 +
 .../modules/es.reflect.prevent-extensions.js  |   20 +
 .../modules/es.reflect.set-prototype-of.js    |   20 +
 .../core-js/modules/es.reflect.set.js         |   50 +
 .../modules/es.reflect.to-string-tag.js       |   10 +
 .../core-js/modules/es.regexp.constructor.js  |  197 +
 .../core-js/modules/es.regexp.dot-all.js      |   26 +
 .../core-js/modules/es.regexp.escape.js       |   70 +
 .../core-js/modules/es.regexp.exec.js         |    9 +
 .../core-js/modules/es.regexp.flags.js        |   56 +
 .../core-js/modules/es.regexp.sticky.js       |   26 +
 .../core-js/modules/es.regexp.test.js         |   35 +
 .../core-js/modules/es.regexp.to-string.js    |   26 +
 .../core-js/modules/es.set.constructor.js     |    9 +
 .../core-js/modules/es.set.difference.v2.js   |   14 +
 .../core-js/modules/es.set.intersection.v2.js |   18 +
 .../modules/es.set.is-disjoint-from.v2.js     |   14 +
 .../core-js/modules/es.set.is-subset-of.v2.js |   14 +
 .../modules/es.set.is-superset-of.v2.js       |   14 +
 node_modules/core-js/modules/es.set.js        |    3 +
 .../modules/es.set.symmetric-difference.v2.js |   10 +
 .../core-js/modules/es.set.union.v2.js        |   10 +
 .../core-js/modules/es.string.anchor.js       |   12 +
 .../modules/es.string.at-alternative.js       |   26 +
 node_modules/core-js/modules/es.string.big.js |   12 +
 .../core-js/modules/es.string.blink.js        |   12 +
 .../core-js/modules/es.string.bold.js         |   12 +
 .../modules/es.string.code-point-at.js        |   11 +
 .../core-js/modules/es.string.ends-with.js    |   34 +
 .../core-js/modules/es.string.fixed.js        |   12 +
 .../core-js/modules/es.string.fontcolor.js    |   12 +
 .../core-js/modules/es.string.fontsize.js     |   12 +
 .../modules/es.string.from-code-point.js      |   32 +
 .../core-js/modules/es.string.includes.js     |   21 +
 .../modules/es.string.is-well-formed.js       |   23 +
 .../core-js/modules/es.string.italics.js      |   12 +
 .../core-js/modules/es.string.iterator.js     |   31 +
 .../core-js/modules/es.string.link.js         |   12 +
 .../core-js/modules/es.string.match-all.js    |  102 +
 .../core-js/modules/es.string.match.js        |   48 +
 .../core-js/modules/es.string.pad-end.js      |   12 +
 .../core-js/modules/es.string.pad-start.js    |   12 +
 node_modules/core-js/modules/es.string.raw.js |   28 +
 .../core-js/modules/es.string.repeat.js       |    9 +
 .../core-js/modules/es.string.replace-all.js  |   61 +
 .../core-js/modules/es.string.replace.js      |  142 +
 .../core-js/modules/es.string.search.js       |   38 +
 .../core-js/modules/es.string.small.js        |   12 +
 .../core-js/modules/es.string.split.js        |  111 +
 .../core-js/modules/es.string.starts-with.js  |   32 +
 .../core-js/modules/es.string.strike.js       |   12 +
 node_modules/core-js/modules/es.string.sub.js |   12 +
 .../core-js/modules/es.string.substr.js       |   30 +
 node_modules/core-js/modules/es.string.sup.js |   12 +
 .../modules/es.string.to-well-formed.js       |   43 +
 .../core-js/modules/es.string.trim-end.js     |   12 +
 .../core-js/modules/es.string.trim-left.js    |   10 +
 .../core-js/modules/es.string.trim-right.js   |   10 +
 .../core-js/modules/es.string.trim-start.js   |   12 +
 .../core-js/modules/es.string.trim.js         |   12 +
 .../modules/es.symbol.async-iterator.js       |    6 +
 .../core-js/modules/es.symbol.constructor.js  |  263 +
 .../core-js/modules/es.symbol.description.js  |   60 +
 node_modules/core-js/modules/es.symbol.for.js |   23 +
 .../core-js/modules/es.symbol.has-instance.js |    6 +
 .../modules/es.symbol.is-concat-spreadable.js |    6 +
 .../core-js/modules/es.symbol.iterator.js     |    6 +
 node_modules/core-js/modules/es.symbol.js     |    7 +
 .../core-js/modules/es.symbol.key-for.js      |   18 +
 .../core-js/modules/es.symbol.match-all.js    |    6 +
 .../core-js/modules/es.symbol.match.js        |    6 +
 .../core-js/modules/es.symbol.replace.js      |    6 +
 .../core-js/modules/es.symbol.search.js       |    6 +
 .../core-js/modules/es.symbol.species.js      |    6 +
 .../core-js/modules/es.symbol.split.js        |    6 +
 .../core-js/modules/es.symbol.to-primitive.js |   11 +
 .../modules/es.symbol.to-string-tag.js        |   12 +
 .../core-js/modules/es.symbol.unscopables.js  |    6 +
 .../core-js/modules/es.typed-array.at.js      |   17 +
 .../modules/es.typed-array.copy-within.js     |   14 +
 .../core-js/modules/es.typed-array.every.js   |   12 +
 .../core-js/modules/es.typed-array.fill.js    |   29 +
 .../core-js/modules/es.typed-array.filter.js  |   14 +
 .../modules/es.typed-array.find-index.js      |   12 +
 .../modules/es.typed-array.find-last-index.js |   12 +
 .../modules/es.typed-array.find-last.js       |   12 +
 .../core-js/modules/es.typed-array.find.js    |   12 +
 .../modules/es.typed-array.float32-array.js   |   10 +
 .../modules/es.typed-array.float64-array.js   |   10 +
 .../modules/es.typed-array.for-each.js        |   12 +
 .../core-js/modules/es.typed-array.from.js    |    8 +
 .../modules/es.typed-array.includes.js        |   12 +
 .../modules/es.typed-array.index-of.js        |   12 +
 .../modules/es.typed-array.int16-array.js     |   10 +
 .../modules/es.typed-array.int32-array.js     |   10 +
 .../modules/es.typed-array.int8-array.js      |   10 +
 .../modules/es.typed-array.iterator.js        |   46 +
 .../core-js/modules/es.typed-array.join.js    |   13 +
 .../modules/es.typed-array.last-index-of.js   |   14 +
 .../core-js/modules/es.typed-array.map.js     |   15 +
 .../core-js/modules/es.typed-array.of.js      |   16 +
 .../modules/es.typed-array.reduce-right.js    |   13 +
 .../core-js/modules/es.typed-array.reduce.js  |   13 +
 .../core-js/modules/es.typed-array.reverse.js |   21 +
 .../core-js/modules/es.typed-array.set.js     |   44 +
 .../core-js/modules/es.typed-array.slice.js   |   25 +
 .../core-js/modules/es.typed-array.some.js    |   12 +
 .../core-js/modules/es.typed-array.sort.js    |   70 +
 .../modules/es.typed-array.subarray.js        |   22 +
 .../es.typed-array.to-locale-string.js        |   32 +
 .../modules/es.typed-array.to-reversed.js     |   13 +
 .../modules/es.typed-array.to-sorted.js       |   19 +
 .../modules/es.typed-array.to-string.js       |   22 +
 .../modules/es.typed-array.uint16-array.js    |   10 +
 .../modules/es.typed-array.uint32-array.js    |   10 +
 .../modules/es.typed-array.uint8-array.js     |   10 +
 .../es.typed-array.uint8-clamped-array.js     |   10 +
 .../core-js/modules/es.typed-array.with.js    |   30 +
 node_modules/core-js/modules/es.unescape.js   |   45 +
 .../modules/es.weak-map.constructor.js        |  106 +
 node_modules/core-js/modules/es.weak-map.js   |    3 +
 .../modules/es.weak-set.constructor.js        |    9 +
 node_modules/core-js/modules/es.weak-set.js   |    3 +
 .../core-js/modules/esnext.aggregate-error.js |    3 +
 .../modules/esnext.array-buffer.detached.js   |    3 +
 ...t.array-buffer.transfer-to-fixed-length.js |    3 +
 .../modules/esnext.array-buffer.transfer.js   |    3 +
 .../core-js/modules/esnext.array.at.js        |    3 +
 .../modules/esnext.array.filter-out.js        |   15 +
 .../modules/esnext.array.filter-reject.js     |   14 +
 .../modules/esnext.array.find-last-index.js   |    3 +
 .../core-js/modules/esnext.array.find-last.js |    3 +
 .../modules/esnext.array.from-async.js        |   22 +
 .../modules/esnext.array.group-by-to-map.js   |   16 +
 .../core-js/modules/esnext.array.group-by.js  |   18 +
 .../modules/esnext.array.group-to-map.js      |   13 +
 .../core-js/modules/esnext.array.group.js     |   15 +
 .../esnext.array.is-template-object.js        |   29 +
 .../modules/esnext.array.last-index.js        |   22 +
 .../core-js/modules/esnext.array.last-item.js |   27 +
 .../modules/esnext.array.to-reversed.js       |    3 +
 .../core-js/modules/esnext.array.to-sorted.js |    3 +
 .../modules/esnext.array.to-spliced.js        |    3 +
 .../core-js/modules/esnext.array.unique-by.js |   12 +
 .../core-js/modules/esnext.array.with.js      |    3 +
 ...next.async-disposable-stack.constructor.js |  135 +
 .../esnext.async-iterator.as-indexed-pairs.js |   10 +
 .../esnext.async-iterator.async-dispose.js    |   26 +
 .../esnext.async-iterator.constructor.js      |   34 +
 .../modules/esnext.async-iterator.drop.js     |   51 +
 .../modules/esnext.async-iterator.every.js    |   11 +
 .../modules/esnext.async-iterator.filter.js   |   67 +
 .../modules/esnext.async-iterator.find.js     |   11 +
 .../modules/esnext.async-iterator.flat-map.js |   88 +
 .../modules/esnext.async-iterator.for-each.js |   11 +
 .../modules/esnext.async-iterator.from.js     |   19 +
 .../modules/esnext.async-iterator.indexed.js  |   10 +
 .../modules/esnext.async-iterator.map.js      |   11 +
 .../modules/esnext.async-iterator.reduce.js   |   65 +
 .../modules/esnext.async-iterator.some.js     |   11 +
 .../modules/esnext.async-iterator.take.js     |   48 +
 .../modules/esnext.async-iterator.to-array.js |   11 +
 .../core-js/modules/esnext.bigint.range.js    |   15 +
 .../core-js/modules/esnext.composite-key.js   |   20 +
 .../modules/esnext.composite-symbol.js        |   13 +
 .../modules/esnext.data-view.get-float16.js   |    3 +
 .../esnext.data-view.get-uint8-clamped.js     |   14 +
 .../modules/esnext.data-view.set-float16.js   |    3 +
 .../esnext.data-view.set-uint8-clamped.js     |   19 +
 .../esnext.disposable-stack.constructor.js    |  114 +
 .../core-js/modules/esnext.error.is-error.js  |   36 +
 .../modules/esnext.function.demethodize.js    |    9 +
 .../modules/esnext.function.is-callable.js    |   30 +
 .../modules/esnext.function.is-constructor.js |    9 +
 .../modules/esnext.function.metadata.js       |   14 +
 .../modules/esnext.function.un-this.js        |   10 +
 .../core-js/modules/esnext.global-this.js     |    3 +
 .../esnext.iterator.as-indexed-pairs.js       |   10 +
 .../core-js/modules/esnext.iterator.concat.js |   57 +
 .../modules/esnext.iterator.constructor.js    |    3 +
 .../modules/esnext.iterator.dispose.js        |   17 +
 .../core-js/modules/esnext.iterator.drop.js   |    3 +
 .../core-js/modules/esnext.iterator.every.js  |    3 +
 .../core-js/modules/esnext.iterator.filter.js |    3 +
 .../core-js/modules/esnext.iterator.find.js   |    3 +
 .../modules/esnext.iterator.flat-map.js       |    3 +
 .../modules/esnext.iterator.for-each.js       |    3 +
 .../core-js/modules/esnext.iterator.from.js   |    3 +
 .../modules/esnext.iterator.indexed.js        |   10 +
 .../core-js/modules/esnext.iterator.map.js    |    3 +
 .../core-js/modules/esnext.iterator.range.js  |   16 +
 .../core-js/modules/esnext.iterator.reduce.js |    3 +
 .../core-js/modules/esnext.iterator.some.js   |    3 +
 .../core-js/modules/esnext.iterator.take.js   |    3 +
 .../modules/esnext.iterator.to-array.js       |    3 +
 .../modules/esnext.iterator.to-async.js       |   15 +
 .../modules/esnext.json.is-raw-json.js        |   11 +
 .../core-js/modules/esnext.json.parse.js      |  251 +
 .../core-js/modules/esnext.json.raw-json.js   |   86 +
 .../core-js/modules/esnext.map.delete-all.js  |   18 +
 .../core-js/modules/esnext.map.emplace.js     |   27 +
 .../core-js/modules/esnext.map.every.js       |   17 +
 .../core-js/modules/esnext.map.filter.js      |   23 +
 .../core-js/modules/esnext.map.find-key.js    |   18 +
 .../core-js/modules/esnext.map.find.js        |   18 +
 .../core-js/modules/esnext.map.from.js        |   10 +
 .../esnext.map.get-or-insert-computed.js      |   24 +
 .../modules/esnext.map.get-or-insert.js       |   18 +
 .../core-js/modules/esnext.map.group-by.js    |    3 +
 .../core-js/modules/esnext.map.includes.js    |   15 +
 .../core-js/modules/esnext.map.key-by.js      |   22 +
 .../core-js/modules/esnext.map.key-of.js      |   15 +
 .../core-js/modules/esnext.map.map-keys.js    |   23 +
 .../core-js/modules/esnext.map.map-values.js  |   23 +
 .../core-js/modules/esnext.map.merge.js       |   22 +
 node_modules/core-js/modules/esnext.map.of.js |   10 +
 .../core-js/modules/esnext.map.reduce.js      |   28 +
 .../core-js/modules/esnext.map.some.js        |   17 +
 .../modules/esnext.map.update-or-insert.js    |   10 +
 .../core-js/modules/esnext.map.update.js      |   27 +
 .../core-js/modules/esnext.map.upsert.js      |   10 +
 .../core-js/modules/esnext.math.clamp.js      |   21 +
 .../modules/esnext.math.deg-per-rad.js        |    8 +
 .../core-js/modules/esnext.math.degrees.js    |   12 +
 .../core-js/modules/esnext.math.f16round.js   |    3 +
 .../core-js/modules/esnext.math.fscale.js     |   13 +
 .../core-js/modules/esnext.math.iaddh.js      |   14 +
 .../core-js/modules/esnext.math.imulh.js      |   19 +
 .../core-js/modules/esnext.math.isubh.js      |   14 +
 .../modules/esnext.math.rad-per-deg.js        |    8 +
 .../core-js/modules/esnext.math.radians.js    |   12 +
 .../core-js/modules/esnext.math.scale.js      |    9 +
 .../modules/esnext.math.seeded-prng.js        |   36 +
 .../core-js/modules/esnext.math.signbit.js    |   12 +
 .../modules/esnext.math.sum-precise.js        |  151 +
 .../core-js/modules/esnext.math.umulh.js      |   19 +
 .../modules/esnext.number.from-string.js      |   41 +
 .../core-js/modules/esnext.number.range.js    |   12 +
 .../core-js/modules/esnext.object.group-by.js |    3 +
 .../core-js/modules/esnext.object.has-own.js  |    3 +
 .../modules/esnext.object.iterate-entries.js  |   12 +
 .../modules/esnext.object.iterate-keys.js     |   12 +
 .../modules/esnext.object.iterate-values.js   |   12 +
 .../modules/esnext.observable.constructor.js  |  187 +
 .../core-js/modules/esnext.observable.from.js |   35 +
 .../core-js/modules/esnext.observable.js      |    5 +
 .../core-js/modules/esnext.observable.of.js   |   24 +
 .../modules/esnext.promise.all-settled.js     |    3 +
 .../core-js/modules/esnext.promise.any.js     |    3 +
 .../core-js/modules/esnext.promise.try.js     |    3 +
 .../modules/esnext.promise.with-resolvers.js  |    3 +
 .../modules/esnext.reflect.define-metadata.js |   17 +
 .../modules/esnext.reflect.delete-metadata.js |   22 +
 .../esnext.reflect.get-metadata-keys.js       |   30 +
 .../modules/esnext.reflect.get-metadata.js    |   26 +
 .../esnext.reflect.get-own-metadata-keys.js   |   17 +
 .../esnext.reflect.get-own-metadata.js        |   17 +
 .../modules/esnext.reflect.has-metadata.js    |   25 +
 .../esnext.reflect.has-own-metadata.js        |   17 +
 .../modules/esnext.reflect.metadata.js        |   17 +
 .../core-js/modules/esnext.regexp.escape.js   |    3 +
 .../core-js/modules/esnext.set.add-all.js     |   15 +
 .../core-js/modules/esnext.set.delete-all.js  |   18 +
 .../core-js/modules/esnext.set.difference.js  |   14 +
 .../modules/esnext.set.difference.v2.js       |    3 +
 .../core-js/modules/esnext.set.every.js       |   17 +
 .../core-js/modules/esnext.set.filter.js      |   23 +
 .../core-js/modules/esnext.set.find.js        |   18 +
 .../core-js/modules/esnext.set.from.js        |   10 +
 .../modules/esnext.set.intersection.js        |   14 +
 .../modules/esnext.set.intersection.v2.js     |    3 +
 .../modules/esnext.set.is-disjoint-from.js    |   14 +
 .../modules/esnext.set.is-disjoint-from.v2.js |    3 +
 .../modules/esnext.set.is-subset-of.js        |   14 +
 .../modules/esnext.set.is-subset-of.v2.js     |    3 +
 .../modules/esnext.set.is-superset-of.js      |   14 +
 .../modules/esnext.set.is-superset-of.v2.js   |    3 +
 .../core-js/modules/esnext.set.join.js        |   23 +
 .../core-js/modules/esnext.set.map.js         |   23 +
 node_modules/core-js/modules/esnext.set.of.js |   10 +
 .../core-js/modules/esnext.set.reduce.js      |   28 +
 .../core-js/modules/esnext.set.some.js        |   17 +
 .../esnext.set.symmetric-difference.js        |   14 +
 .../esnext.set.symmetric-difference.v2.js     |    3 +
 .../core-js/modules/esnext.set.union.js       |   14 +
 .../core-js/modules/esnext.set.union.v2.js    |    3 +
 .../modules/esnext.string.at-alternative.js   |    3 +
 .../core-js/modules/esnext.string.at.js       |   19 +
 .../modules/esnext.string.code-points.js      |   40 +
 .../core-js/modules/esnext.string.cooked.js   |    9 +
 .../core-js/modules/esnext.string.dedent.js   |  153 +
 .../modules/esnext.string.is-well-formed.js   |    3 +
 .../modules/esnext.string.match-all.js        |    3 +
 .../modules/esnext.string.replace-all.js      |    3 +
 .../modules/esnext.string.to-well-formed.js   |    3 +
 .../esnext.suppressed-error.constructor.js    |   64 +
 .../modules/esnext.symbol.async-dispose.js    |   21 +
 .../modules/esnext.symbol.custom-matcher.js   |    6 +
 .../core-js/modules/esnext.symbol.dispose.js  |   21 +
 .../esnext.symbol.is-registered-symbol.js     |    9 +
 .../modules/esnext.symbol.is-registered.js    |    9 +
 .../esnext.symbol.is-well-known-symbol.js     |   10 +
 .../modules/esnext.symbol.is-well-known.js    |   10 +
 .../core-js/modules/esnext.symbol.matcher.js  |    6 +
 .../modules/esnext.symbol.metadata-key.js     |    7 +
 .../core-js/modules/esnext.symbol.metadata.js |    6 +
 .../modules/esnext.symbol.observable.js       |    6 +
 .../modules/esnext.symbol.pattern-match.js    |    7 +
 .../modules/esnext.symbol.replace-all.js      |    5 +
 .../core-js/modules/esnext.typed-array.at.js  |    3 +
 .../modules/esnext.typed-array.filter-out.js  |   15 +
 .../esnext.typed-array.filter-reject.js       |   14 +
 .../esnext.typed-array.find-last-index.js     |    3 +
 .../modules/esnext.typed-array.find-last.js   |    3 +
 .../modules/esnext.typed-array.from-async.js  |   25 +
 .../modules/esnext.typed-array.group-by.js    |   15 +
 .../modules/esnext.typed-array.to-reversed.js |    3 +
 .../modules/esnext.typed-array.to-sorted.js   |    3 +
 .../modules/esnext.typed-array.to-spliced.js  |   52 +
 .../modules/esnext.typed-array.unique-by.js   |   17 +
 .../modules/esnext.typed-array.with.js        |    3 +
 .../modules/esnext.uint8-array.from-base64.js |   16 +
 .../modules/esnext.uint8-array.from-hex.js    |   13 +
 .../esnext.uint8-array.set-from-base64.js     |   19 +
 .../esnext.uint8-array.set-from-hex.js        |   19 +
 .../modules/esnext.uint8-array.to-base64.js   |   49 +
 .../modules/esnext.uint8-array.to-hex.js      |   23 +
 .../modules/esnext.weak-map.delete-all.js     |   18 +
 .../modules/esnext.weak-map.emplace.js        |   27 +
 .../core-js/modules/esnext.weak-map.from.js   |   10 +
 .../esnext.weak-map.get-or-insert-computed.js |   23 +
 .../modules/esnext.weak-map.get-or-insert.js  |   18 +
 .../core-js/modules/esnext.weak-map.of.js     |   10 +
 .../core-js/modules/esnext.weak-map.upsert.js |   10 +
 .../modules/esnext.weak-set.add-all.js        |   15 +
 .../modules/esnext.weak-set.delete-all.js     |   18 +
 .../core-js/modules/esnext.weak-set.from.js   |   10 +
 .../core-js/modules/esnext.weak-set.of.js     |   10 +
 node_modules/core-js/modules/web.atob.js      |   67 +
 node_modules/core-js/modules/web.btoa.js      |   51 +
 .../core-js/modules/web.clear-immediate.js    |   10 +
 .../modules/web.dom-collections.for-each.js   |   23 +
 .../modules/web.dom-collections.iterator.js   |   37 +
 .../modules/web.dom-exception.constructor.js  |  145 +
 .../modules/web.dom-exception.stack.js        |   68 +
 .../web.dom-exception.to-string-tag.js        |    8 +
 node_modules/core-js/modules/web.immediate.js |    4 +
 .../core-js/modules/web.queue-microtask.js    |   25 +
 node_modules/core-js/modules/web.self.js      |   41 +
 .../core-js/modules/web.set-immediate.js      |   14 +
 .../core-js/modules/web.set-interval.js       |   12 +
 .../core-js/modules/web.set-timeout.js        |   12 +
 .../core-js/modules/web.structured-clone.js   |  535 ++
 node_modules/core-js/modules/web.timers.js    |    4 +
 .../web.url-search-params.constructor.js      |  511 ++
 .../modules/web.url-search-params.delete.js   |   49 +
 .../modules/web.url-search-params.has.js      |   28 +
 .../core-js/modules/web.url-search-params.js  |    3 +
 .../modules/web.url-search-params.size.js     |   21 +
 .../core-js/modules/web.url.can-parse.js      |   36 +
 .../core-js/modules/web.url.constructor.js    | 1050 +++
 node_modules/core-js/modules/web.url.js       |    3 +
 node_modules/core-js/modules/web.url.parse.js |   23 +
 .../core-js/modules/web.url.to-json.js        |   11 +
 node_modules/core-js/package.json             |   73 +
 node_modules/core-js/postinstall.js           |   62 +
 .../accessible-object-hasownproperty.js       |    3 +
 .../core-js/proposals/array-buffer-base64.js  |    8 +
 .../proposals/array-buffer-transfer.js        |    5 +
 .../proposals/array-filtering-stage-1.js      |    4 +
 .../core-js/proposals/array-filtering.js      |    8 +
 .../core-js/proposals/array-find-from-last.js |    6 +
 .../core-js/proposals/array-flat-map.js       |    6 +
 .../proposals/array-from-async-stage-2.js     |    3 +
 .../core-js/proposals/array-from-async.js     |    5 +
 .../proposals/array-grouping-stage-3-2.js     |    4 +
 .../proposals/array-grouping-stage-3.js       |    5 +
 .../core-js/proposals/array-grouping-v2.js    |    4 +
 .../core-js/proposals/array-grouping.js       |    6 +
 .../core-js/proposals/array-includes.js       |    4 +
 .../proposals/array-is-template-object.js     |    3 +
 node_modules/core-js/proposals/array-last.js  |    4 +
 .../core-js/proposals/array-unique.js         |    5 +
 .../async-explicit-resource-management.js     |    7 +
 .../core-js/proposals/async-iteration.js      |    3 +
 .../proposals/async-iterator-helpers.js       |   16 +
 .../proposals/change-array-by-copy-stage-4.js |    9 +
 .../core-js/proposals/change-array-by-copy.js |   11 +
 .../core-js/proposals/collection-methods.js   |   29 +
 .../core-js/proposals/collection-of-from.js   |   10 +
 .../data-view-get-set-uint8-clamped.js        |    4 +
 .../proposals/decorator-metadata-v2.js        |    4 +
 .../core-js/proposals/decorator-metadata.js   |    4 +
 node_modules/core-js/proposals/decorators.js  |    4 +
 .../proposals/efficient-64-bit-arithmetic.js  |    7 +
 node_modules/core-js/proposals/error-cause.js |    4 +
 .../proposals/explicit-resource-management.js |    9 +
 node_modules/core-js/proposals/extractors.js  |    3 +
 node_modules/core-js/proposals/float16.js     |    5 +
 .../core-js/proposals/function-demethodize.js |    3 +
 .../function-is-callable-is-constructor.js    |    4 +
 .../core-js/proposals/function-un-this.js     |    4 +
 node_modules/core-js/proposals/global-this.js |    6 +
 node_modules/core-js/proposals/index.js       |    3 +
 node_modules/core-js/proposals/is-error.js    |    3 +
 .../proposals/iterator-helpers-stage-3-2.js   |   15 +
 .../proposals/iterator-helpers-stage-3.js     |   29 +
 .../core-js/proposals/iterator-helpers.js     |    8 +
 .../core-js/proposals/iterator-range.js       |    4 +
 .../core-js/proposals/iterator-sequencing.js  |    3 +
 .../proposals/json-parse-with-source.js       |    5 +
 .../core-js/proposals/keys-composition.js     |    4 +
 .../core-js/proposals/map-update-or-insert.js |    4 +
 .../core-js/proposals/map-upsert-stage-2.js   |    4 +
 .../core-js/proposals/map-upsert-v4.js        |    6 +
 node_modules/core-js/proposals/map-upsert.js  |   10 +
 node_modules/core-js/proposals/math-clamp.js  |    3 +
 .../core-js/proposals/math-extensions.js      |    9 +
 .../core-js/proposals/math-signbit.js         |    3 +
 node_modules/core-js/proposals/math-sum.js    |    3 +
 .../core-js/proposals/number-from-string.js   |    3 +
 .../core-js/proposals/number-range.js         |    4 +
 .../core-js/proposals/object-from-entries.js  |    3 +
 .../object-getownpropertydescriptors.js       |    3 +
 .../core-js/proposals/object-iteration.js     |    6 +
 .../proposals/object-values-entries.js        |    4 +
 node_modules/core-js/proposals/observable.js  |    4 +
 .../core-js/proposals/pattern-matching-v2.js  |    3 +
 .../core-js/proposals/pattern-matching.js     |    5 +
 .../core-js/proposals/promise-all-settled.js  |    3 +
 node_modules/core-js/proposals/promise-any.js |    4 +
 .../core-js/proposals/promise-finally.js      |    3 +
 node_modules/core-js/proposals/promise-try.js |    3 +
 .../proposals/promise-with-resolvers.js       |    3 +
 .../core-js/proposals/reflect-metadata.js     |   11 +
 .../core-js/proposals/regexp-dotall-flag.js   |    6 +
 .../core-js/proposals/regexp-escaping.js      |    3 +
 .../core-js/proposals/regexp-named-groups.js  |    5 +
 .../proposals/relative-indexing-method.js     |    5 +
 .../core-js/proposals/seeded-random.js        |    3 +
 .../core-js/proposals/set-methods-v2.js       |    9 +
 node_modules/core-js/proposals/set-methods.js |   17 +
 node_modules/core-js/proposals/string-at.js   |    3 +
 .../core-js/proposals/string-code-points.js   |    3 +
 .../core-js/proposals/string-cooked.js        |    3 +
 .../core-js/proposals/string-dedent.js        |    3 +
 .../proposals/string-left-right-trim.js       |    4 +
 .../core-js/proposals/string-match-all.js     |    3 +
 .../core-js/proposals/string-padding.js       |    4 +
 .../proposals/string-replace-all-stage-4.js   |    3 +
 .../core-js/proposals/string-replace-all.js   |    5 +
 .../core-js/proposals/symbol-description.js   |    3 +
 .../core-js/proposals/symbol-predicates-v2.js |    4 +
 .../core-js/proposals/symbol-predicates.js    |    4 +
 node_modules/core-js/proposals/url.js         |    3 +
 .../core-js/proposals/using-statement.js      |    5 +
 .../proposals/well-formed-stringify.js        |    3 +
 .../proposals/well-formed-unicode-strings.js  |    4 +
 node_modules/core-js/stable/README.md         |    1 +
 .../core-js/stable/aggregate-error.js         |    8 +
 .../stable/array-buffer/constructor.js        |    4 +
 .../core-js/stable/array-buffer/detached.js   |    4 +
 .../core-js/stable/array-buffer/index.js      |    4 +
 .../core-js/stable/array-buffer/is-view.js    |    4 +
 .../core-js/stable/array-buffer/slice.js      |    4 +
 .../array-buffer/transfer-to-fixed-length.js  |    4 +
 .../core-js/stable/array-buffer/transfer.js   |    4 +
 node_modules/core-js/stable/array/at.js       |    4 +
 node_modules/core-js/stable/array/concat.js   |    4 +
 .../core-js/stable/array/copy-within.js       |    4 +
 node_modules/core-js/stable/array/entries.js  |    4 +
 node_modules/core-js/stable/array/every.js    |    4 +
 node_modules/core-js/stable/array/fill.js     |    4 +
 node_modules/core-js/stable/array/filter.js   |    4 +
 .../core-js/stable/array/find-index.js        |    4 +
 .../core-js/stable/array/find-last-index.js   |    2 +
 .../core-js/stable/array/find-last.js         |    2 +
 node_modules/core-js/stable/array/find.js     |    4 +
 node_modules/core-js/stable/array/flat-map.js |    4 +
 node_modules/core-js/stable/array/flat.js     |    4 +
 node_modules/core-js/stable/array/for-each.js |    4 +
 node_modules/core-js/stable/array/from.js     |    4 +
 node_modules/core-js/stable/array/includes.js |    4 +
 node_modules/core-js/stable/array/index-of.js |    4 +
 node_modules/core-js/stable/array/index.js    |    4 +
 node_modules/core-js/stable/array/is-array.js |    4 +
 node_modules/core-js/stable/array/iterator.js |    4 +
 node_modules/core-js/stable/array/join.js     |    4 +
 node_modules/core-js/stable/array/keys.js     |    4 +
 .../core-js/stable/array/last-index-of.js     |    4 +
 node_modules/core-js/stable/array/map.js      |    4 +
 node_modules/core-js/stable/array/of.js       |    4 +
 node_modules/core-js/stable/array/push.js     |    4 +
 .../core-js/stable/array/reduce-right.js      |    4 +
 node_modules/core-js/stable/array/reduce.js   |    4 +
 node_modules/core-js/stable/array/reverse.js  |    4 +
 node_modules/core-js/stable/array/slice.js    |    4 +
 node_modules/core-js/stable/array/some.js     |    4 +
 node_modules/core-js/stable/array/sort.js     |    4 +
 node_modules/core-js/stable/array/splice.js   |    4 +
 .../core-js/stable/array/to-reversed.js       |    4 +
 .../core-js/stable/array/to-sorted.js         |    4 +
 .../core-js/stable/array/to-spliced.js        |    4 +
 node_modules/core-js/stable/array/unshift.js  |    4 +
 node_modules/core-js/stable/array/values.js   |    4 +
 .../core-js/stable/array/virtual/at.js        |    4 +
 .../core-js/stable/array/virtual/concat.js    |    4 +
 .../stable/array/virtual/copy-within.js       |    4 +
 .../core-js/stable/array/virtual/entries.js   |    4 +
 .../core-js/stable/array/virtual/every.js     |    4 +
 .../core-js/stable/array/virtual/fill.js      |    4 +
 .../core-js/stable/array/virtual/filter.js    |    4 +
 .../stable/array/virtual/find-index.js        |    4 +
 .../stable/array/virtual/find-last-index.js   |    2 +
 .../core-js/stable/array/virtual/find-last.js |    2 +
 .../core-js/stable/array/virtual/find.js      |    4 +
 .../core-js/stable/array/virtual/flat-map.js  |    4 +
 .../core-js/stable/array/virtual/flat.js      |    4 +
 .../core-js/stable/array/virtual/for-each.js  |    4 +
 .../core-js/stable/array/virtual/includes.js  |    4 +
 .../core-js/stable/array/virtual/index-of.js  |    4 +
 .../core-js/stable/array/virtual/index.js     |    4 +
 .../core-js/stable/array/virtual/iterator.js  |    4 +
 .../core-js/stable/array/virtual/join.js      |    4 +
 .../core-js/stable/array/virtual/keys.js      |    4 +
 .../stable/array/virtual/last-index-of.js     |    4 +
 .../core-js/stable/array/virtual/map.js       |    4 +
 .../core-js/stable/array/virtual/push.js      |    4 +
 .../stable/array/virtual/reduce-right.js      |    4 +
 .../core-js/stable/array/virtual/reduce.js    |    4 +
 .../core-js/stable/array/virtual/reverse.js   |    4 +
 .../core-js/stable/array/virtual/slice.js     |    4 +
 .../core-js/stable/array/virtual/some.js      |    4 +
 .../core-js/stable/array/virtual/sort.js      |    4 +
 .../core-js/stable/array/virtual/splice.js    |    4 +
 .../stable/array/virtual/to-reversed.js       |    4 +
 .../core-js/stable/array/virtual/to-sorted.js |    4 +
 .../stable/array/virtual/to-spliced.js        |    4 +
 .../core-js/stable/array/virtual/unshift.js   |    4 +
 .../core-js/stable/array/virtual/values.js    |    4 +
 .../core-js/stable/array/virtual/with.js      |    4 +
 node_modules/core-js/stable/array/with.js     |    4 +
 node_modules/core-js/stable/atob.js           |   10 +
 node_modules/core-js/stable/btoa.js           |   10 +
 .../core-js/stable/clear-immediate.js         |    5 +
 .../core-js/stable/data-view/get-float16.js   |    4 +
 .../core-js/stable/data-view/index.js         |    4 +
 .../core-js/stable/data-view/set-float16.js   |    4 +
 node_modules/core-js/stable/date/get-year.js  |    4 +
 node_modules/core-js/stable/date/index.js     |    4 +
 node_modules/core-js/stable/date/now.js       |    4 +
 node_modules/core-js/stable/date/set-year.js  |    4 +
 .../core-js/stable/date/to-gmt-string.js      |    4 +
 .../core-js/stable/date/to-iso-string.js      |    4 +
 node_modules/core-js/stable/date/to-json.js   |    4 +
 .../core-js/stable/date/to-primitive.js       |    4 +
 node_modules/core-js/stable/date/to-string.js |    4 +
 .../stable/dom-collections/for-each.js        |    6 +
 .../core-js/stable/dom-collections/index.js   |   14 +
 .../stable/dom-collections/iterator.js        |    6 +
 .../stable/dom-exception/constructor.js       |    7 +
 .../core-js/stable/dom-exception/index.js     |    8 +
 .../stable/dom-exception/to-string-tag.js     |    4 +
 .../core-js/stable/error/constructor.js       |    4 +
 node_modules/core-js/stable/error/index.js    |    4 +
 .../core-js/stable/error/to-string.js         |    4 +
 node_modules/core-js/stable/escape.js         |    4 +
 node_modules/core-js/stable/function/bind.js  |    4 +
 .../core-js/stable/function/has-instance.js   |    4 +
 node_modules/core-js/stable/function/index.js |    4 +
 node_modules/core-js/stable/function/name.js  |    4 +
 .../core-js/stable/function/virtual/bind.js   |    4 +
 .../core-js/stable/function/virtual/index.js  |    4 +
 .../core-js/stable/get-iterator-method.js     |    5 +
 node_modules/core-js/stable/get-iterator.js   |    5 +
 node_modules/core-js/stable/global-this.js    |    4 +
 node_modules/core-js/stable/index.js          |  296 +
 node_modules/core-js/stable/instance/at.js    |    4 +
 node_modules/core-js/stable/instance/bind.js  |    4 +
 .../core-js/stable/instance/code-point-at.js  |    4 +
 .../core-js/stable/instance/concat.js         |    4 +
 .../core-js/stable/instance/copy-within.js    |    4 +
 .../core-js/stable/instance/ends-with.js      |    4 +
 .../core-js/stable/instance/entries.js        |   19 +
 node_modules/core-js/stable/instance/every.js |    4 +
 node_modules/core-js/stable/instance/fill.js  |    4 +
 .../core-js/stable/instance/filter.js         |    4 +
 .../core-js/stable/instance/find-index.js     |    4 +
 .../stable/instance/find-last-index.js        |    4 +
 .../core-js/stable/instance/find-last.js      |    4 +
 node_modules/core-js/stable/instance/find.js  |    4 +
 node_modules/core-js/stable/instance/flags.js |    4 +
 .../core-js/stable/instance/flat-map.js       |    4 +
 node_modules/core-js/stable/instance/flat.js  |    4 +
 .../core-js/stable/instance/for-each.js       |   19 +
 .../core-js/stable/instance/includes.js       |    4 +
 .../core-js/stable/instance/index-of.js       |    4 +
 .../core-js/stable/instance/is-well-formed.js |    4 +
 node_modules/core-js/stable/instance/keys.js  |   19 +
 .../core-js/stable/instance/last-index-of.js  |    4 +
 node_modules/core-js/stable/instance/map.js   |    4 +
 .../core-js/stable/instance/match-all.js      |    4 +
 .../core-js/stable/instance/pad-end.js        |    4 +
 .../core-js/stable/instance/pad-start.js      |    4 +
 node_modules/core-js/stable/instance/push.js  |    4 +
 .../core-js/stable/instance/reduce-right.js   |    4 +
 .../core-js/stable/instance/reduce.js         |    4 +
 .../core-js/stable/instance/repeat.js         |    4 +
 .../core-js/stable/instance/replace-all.js    |    4 +
 .../core-js/stable/instance/reverse.js        |    4 +
 node_modules/core-js/stable/instance/slice.js |    4 +
 node_modules/core-js/stable/instance/some.js  |    4 +
 node_modules/core-js/stable/instance/sort.js  |    4 +
 .../core-js/stable/instance/splice.js         |    4 +
 .../core-js/stable/instance/starts-with.js    |    4 +
 .../core-js/stable/instance/to-reversed.js    |    4 +
 .../core-js/stable/instance/to-sorted.js      |    4 +
 .../core-js/stable/instance/to-spliced.js     |    4 +
 .../core-js/stable/instance/to-well-formed.js |    4 +
 .../core-js/stable/instance/trim-end.js       |    4 +
 .../core-js/stable/instance/trim-left.js      |    4 +
 .../core-js/stable/instance/trim-right.js     |    4 +
 .../core-js/stable/instance/trim-start.js     |    4 +
 node_modules/core-js/stable/instance/trim.js  |    4 +
 .../core-js/stable/instance/unshift.js        |    4 +
 .../core-js/stable/instance/values.js         |   19 +
 node_modules/core-js/stable/instance/with.js  |    4 +
 node_modules/core-js/stable/is-iterable.js    |    5 +
 node_modules/core-js/stable/iterator/drop.js  |    4 +
 node_modules/core-js/stable/iterator/every.js |    4 +
 .../core-js/stable/iterator/filter.js         |    4 +
 node_modules/core-js/stable/iterator/find.js  |    4 +
 .../core-js/stable/iterator/flat-map.js       |    4 +
 .../core-js/stable/iterator/for-each.js       |    4 +
 node_modules/core-js/stable/iterator/from.js  |    5 +
 node_modules/core-js/stable/iterator/index.js |    5 +
 node_modules/core-js/stable/iterator/map.js   |    4 +
 .../core-js/stable/iterator/reduce.js         |    4 +
 node_modules/core-js/stable/iterator/some.js  |    4 +
 node_modules/core-js/stable/iterator/take.js  |    4 +
 .../core-js/stable/iterator/to-array.js       |    4 +
 node_modules/core-js/stable/json/index.js     |    4 +
 node_modules/core-js/stable/json/stringify.js |    4 +
 .../core-js/stable/json/to-string-tag.js      |    4 +
 node_modules/core-js/stable/map/group-by.js   |    4 +
 node_modules/core-js/stable/map/index.js      |    5 +
 node_modules/core-js/stable/math/acosh.js     |    4 +
 node_modules/core-js/stable/math/asinh.js     |    4 +
 node_modules/core-js/stable/math/atanh.js     |    4 +
 node_modules/core-js/stable/math/cbrt.js      |    4 +
 node_modules/core-js/stable/math/clz32.js     |    4 +
 node_modules/core-js/stable/math/cosh.js      |    4 +
 node_modules/core-js/stable/math/expm1.js     |    4 +
 node_modules/core-js/stable/math/f16round.js  |    4 +
 node_modules/core-js/stable/math/fround.js    |    4 +
 node_modules/core-js/stable/math/hypot.js     |    4 +
 node_modules/core-js/stable/math/imul.js      |    4 +
 node_modules/core-js/stable/math/index.js     |    4 +
 node_modules/core-js/stable/math/log10.js     |    4 +
 node_modules/core-js/stable/math/log1p.js     |    4 +
 node_modules/core-js/stable/math/log2.js      |    4 +
 node_modules/core-js/stable/math/sign.js      |    4 +
 node_modules/core-js/stable/math/sinh.js      |    4 +
 node_modules/core-js/stable/math/tanh.js      |    4 +
 .../core-js/stable/math/to-string-tag.js      |    4 +
 node_modules/core-js/stable/math/trunc.js     |    4 +
 .../core-js/stable/number/constructor.js      |    4 +
 node_modules/core-js/stable/number/epsilon.js |    4 +
 node_modules/core-js/stable/number/index.js   |    4 +
 .../core-js/stable/number/is-finite.js        |    4 +
 .../core-js/stable/number/is-integer.js       |    4 +
 node_modules/core-js/stable/number/is-nan.js  |    4 +
 .../core-js/stable/number/is-safe-integer.js  |    4 +
 .../core-js/stable/number/max-safe-integer.js |    4 +
 .../core-js/stable/number/min-safe-integer.js |    4 +
 .../core-js/stable/number/parse-float.js      |    4 +
 .../core-js/stable/number/parse-int.js        |    4 +
 .../core-js/stable/number/to-exponential.js   |    4 +
 .../core-js/stable/number/to-fixed.js         |    4 +
 .../core-js/stable/number/to-precision.js     |    4 +
 .../core-js/stable/number/virtual/index.js    |    4 +
 .../stable/number/virtual/to-exponential.js   |    4 +
 .../core-js/stable/number/virtual/to-fixed.js |    4 +
 .../stable/number/virtual/to-precision.js     |    4 +
 node_modules/core-js/stable/object/assign.js  |    4 +
 node_modules/core-js/stable/object/create.js  |    4 +
 .../core-js/stable/object/define-getter.js    |    4 +
 .../stable/object/define-properties.js        |    4 +
 .../core-js/stable/object/define-property.js  |    4 +
 .../core-js/stable/object/define-setter.js    |    4 +
 node_modules/core-js/stable/object/entries.js |    4 +
 node_modules/core-js/stable/object/freeze.js  |    4 +
 .../core-js/stable/object/from-entries.js     |    5 +
 .../object/get-own-property-descriptor.js     |    4 +
 .../object/get-own-property-descriptors.js    |    4 +
 .../stable/object/get-own-property-names.js   |    4 +
 .../stable/object/get-own-property-symbols.js |    4 +
 .../core-js/stable/object/get-prototype-of.js |    4 +
 .../core-js/stable/object/group-by.js         |    4 +
 node_modules/core-js/stable/object/has-own.js |    4 +
 node_modules/core-js/stable/object/index.js   |    5 +
 .../core-js/stable/object/is-extensible.js    |    4 +
 .../core-js/stable/object/is-frozen.js        |    4 +
 .../core-js/stable/object/is-sealed.js        |    4 +
 node_modules/core-js/stable/object/is.js      |    4 +
 node_modules/core-js/stable/object/keys.js    |    4 +
 .../core-js/stable/object/lookup-getter.js    |    4 +
 .../core-js/stable/object/lookup-setter.js    |    4 +
 .../stable/object/prevent-extensions.js       |    4 +
 node_modules/core-js/stable/object/proto.js   |    4 +
 node_modules/core-js/stable/object/seal.js    |    4 +
 .../core-js/stable/object/set-prototype-of.js |    4 +
 .../core-js/stable/object/to-string.js        |    4 +
 node_modules/core-js/stable/object/values.js  |    4 +
 node_modules/core-js/stable/parse-float.js    |    4 +
 node_modules/core-js/stable/parse-int.js      |    4 +
 .../core-js/stable/promise/all-settled.js     |    5 +
 node_modules/core-js/stable/promise/any.js    |    5 +
 .../core-js/stable/promise/finally.js         |    4 +
 node_modules/core-js/stable/promise/index.js  |    5 +
 node_modules/core-js/stable/promise/try.js    |    4 +
 .../core-js/stable/promise/with-resolvers.js  |    4 +
 .../core-js/stable/queue-microtask.js         |    4 +
 node_modules/core-js/stable/reflect/apply.js  |    4 +
 .../core-js/stable/reflect/construct.js       |    4 +
 .../core-js/stable/reflect/define-property.js |    4 +
 .../core-js/stable/reflect/delete-property.js |    4 +
 .../reflect/get-own-property-descriptor.js    |    4 +
 .../stable/reflect/get-prototype-of.js        |    4 +
 node_modules/core-js/stable/reflect/get.js    |    4 +
 node_modules/core-js/stable/reflect/has.js    |    4 +
 node_modules/core-js/stable/reflect/index.js  |    4 +
 .../core-js/stable/reflect/is-extensible.js   |    4 +
 .../core-js/stable/reflect/own-keys.js        |    4 +
 .../stable/reflect/prevent-extensions.js      |    4 +
 .../stable/reflect/set-prototype-of.js        |    4 +
 node_modules/core-js/stable/reflect/set.js    |    4 +
 .../core-js/stable/reflect/to-string-tag.js   |    4 +
 .../core-js/stable/regexp/constructor.js      |    4 +
 node_modules/core-js/stable/regexp/dot-all.js |    4 +
 node_modules/core-js/stable/regexp/escape.js  |    4 +
 node_modules/core-js/stable/regexp/flags.js   |    4 +
 node_modules/core-js/stable/regexp/index.js   |    4 +
 node_modules/core-js/stable/regexp/match.js   |    4 +
 node_modules/core-js/stable/regexp/replace.js |    4 +
 node_modules/core-js/stable/regexp/search.js  |    4 +
 node_modules/core-js/stable/regexp/split.js   |    4 +
 node_modules/core-js/stable/regexp/sticky.js  |    4 +
 node_modules/core-js/stable/regexp/test.js    |    4 +
 .../core-js/stable/regexp/to-string.js        |    4 +
 node_modules/core-js/stable/self.js           |    5 +
 node_modules/core-js/stable/set-immediate.js  |    5 +
 node_modules/core-js/stable/set-interval.js   |    5 +
 node_modules/core-js/stable/set-timeout.js    |    5 +
 node_modules/core-js/stable/set/difference.js |    4 +
 node_modules/core-js/stable/set/index.js      |    5 +
 .../core-js/stable/set/intersection.js        |    4 +
 .../core-js/stable/set/is-disjoint-from.js    |    4 +
 .../core-js/stable/set/is-subset-of.js        |    4 +
 .../core-js/stable/set/is-superset-of.js      |    4 +
 .../stable/set/symmetric-difference.js        |    4 +
 node_modules/core-js/stable/set/union.js      |    4 +
 node_modules/core-js/stable/string/anchor.js  |    4 +
 node_modules/core-js/stable/string/at.js      |    4 +
 node_modules/core-js/stable/string/big.js     |    4 +
 node_modules/core-js/stable/string/blink.js   |    4 +
 node_modules/core-js/stable/string/bold.js    |    4 +
 .../core-js/stable/string/code-point-at.js    |    4 +
 .../core-js/stable/string/ends-with.js        |    4 +
 node_modules/core-js/stable/string/fixed.js   |    4 +
 .../core-js/stable/string/fontcolor.js        |    4 +
 .../core-js/stable/string/fontsize.js         |    4 +
 .../core-js/stable/string/from-code-point.js  |    4 +
 .../core-js/stable/string/includes.js         |    4 +
 node_modules/core-js/stable/string/index.js   |    4 +
 .../core-js/stable/string/is-well-formed.js   |    4 +
 node_modules/core-js/stable/string/italics.js |    4 +
 .../core-js/stable/string/iterator.js         |    4 +
 node_modules/core-js/stable/string/link.js    |    4 +
 .../core-js/stable/string/match-all.js        |    4 +
 node_modules/core-js/stable/string/match.js   |    4 +
 node_modules/core-js/stable/string/pad-end.js |    4 +
 .../core-js/stable/string/pad-start.js        |    4 +
 node_modules/core-js/stable/string/raw.js     |    4 +
 node_modules/core-js/stable/string/repeat.js  |    4 +
 .../core-js/stable/string/replace-all.js      |    4 +
 node_modules/core-js/stable/string/replace.js |    4 +
 node_modules/core-js/stable/string/search.js  |    4 +
 node_modules/core-js/stable/string/small.js   |    4 +
 node_modules/core-js/stable/string/split.js   |    4 +
 .../core-js/stable/string/starts-with.js      |    4 +
 node_modules/core-js/stable/string/strike.js  |    4 +
 node_modules/core-js/stable/string/sub.js     |    4 +
 node_modules/core-js/stable/string/substr.js  |    4 +
 node_modules/core-js/stable/string/sup.js     |    4 +
 .../core-js/stable/string/to-well-formed.js   |    4 +
 .../core-js/stable/string/trim-end.js         |    4 +
 .../core-js/stable/string/trim-left.js        |    4 +
 .../core-js/stable/string/trim-right.js       |    4 +
 .../core-js/stable/string/trim-start.js       |    4 +
 node_modules/core-js/stable/string/trim.js    |    4 +
 .../core-js/stable/string/virtual/anchor.js   |    4 +
 .../core-js/stable/string/virtual/at.js       |    4 +
 .../core-js/stable/string/virtual/big.js      |    4 +
 .../core-js/stable/string/virtual/blink.js    |    4 +
 .../core-js/stable/string/virtual/bold.js     |    4 +
 .../stable/string/virtual/code-point-at.js    |    4 +
 .../stable/string/virtual/ends-with.js        |    4 +
 .../core-js/stable/string/virtual/fixed.js    |    4 +
 .../stable/string/virtual/fontcolor.js        |    4 +
 .../core-js/stable/string/virtual/fontsize.js |    4 +
 .../core-js/stable/string/virtual/includes.js |    4 +
 .../core-js/stable/string/virtual/index.js    |    4 +
 .../stable/string/virtual/is-well-formed.js   |    4 +
 .../core-js/stable/string/virtual/italics.js  |    4 +
 .../core-js/stable/string/virtual/iterator.js |    4 +
 .../core-js/stable/string/virtual/link.js     |    4 +
 .../stable/string/virtual/match-all.js        |    4 +
 .../core-js/stable/string/virtual/pad-end.js  |    4 +
 .../stable/string/virtual/pad-start.js        |    4 +
 .../core-js/stable/string/virtual/repeat.js   |    4 +
 .../stable/string/virtual/replace-all.js      |    4 +
 .../core-js/stable/string/virtual/small.js    |    4 +
 .../stable/string/virtual/starts-with.js      |    4 +
 .../core-js/stable/string/virtual/strike.js   |    4 +
 .../core-js/stable/string/virtual/sub.js      |    4 +
 .../core-js/stable/string/virtual/substr.js   |    4 +
 .../core-js/stable/string/virtual/sup.js      |    4 +
 .../stable/string/virtual/to-well-formed.js   |    4 +
 .../core-js/stable/string/virtual/trim-end.js |    4 +
 .../stable/string/virtual/trim-left.js        |    4 +
 .../stable/string/virtual/trim-right.js       |    4 +
 .../stable/string/virtual/trim-start.js       |    4 +
 .../core-js/stable/string/virtual/trim.js     |    4 +
 .../core-js/stable/structured-clone.js        |   14 +
 .../core-js/stable/symbol/async-iterator.js   |    4 +
 .../core-js/stable/symbol/description.js      |    4 +
 node_modules/core-js/stable/symbol/for.js     |    4 +
 .../core-js/stable/symbol/has-instance.js     |    4 +
 node_modules/core-js/stable/symbol/index.js   |    5 +
 .../stable/symbol/is-concat-spreadable.js     |    4 +
 .../core-js/stable/symbol/iterator.js         |    5 +
 node_modules/core-js/stable/symbol/key-for.js |    4 +
 .../core-js/stable/symbol/match-all.js        |    4 +
 node_modules/core-js/stable/symbol/match.js   |    4 +
 node_modules/core-js/stable/symbol/replace.js |    4 +
 node_modules/core-js/stable/symbol/search.js  |    4 +
 node_modules/core-js/stable/symbol/species.js |    4 +
 node_modules/core-js/stable/symbol/split.js   |    4 +
 .../core-js/stable/symbol/to-primitive.js     |    4 +
 .../core-js/stable/symbol/to-string-tag.js    |    4 +
 .../core-js/stable/symbol/unscopables.js      |    4 +
 node_modules/core-js/stable/typed-array/at.js |    4 +
 .../core-js/stable/typed-array/copy-within.js |    4 +
 .../core-js/stable/typed-array/entries.js     |    4 +
 .../core-js/stable/typed-array/every.js       |    4 +
 .../core-js/stable/typed-array/fill.js        |    4 +
 .../core-js/stable/typed-array/filter.js      |    4 +
 .../core-js/stable/typed-array/find-index.js  |    4 +
 .../stable/typed-array/find-last-index.js     |    2 +
 .../core-js/stable/typed-array/find-last.js   |    2 +
 .../core-js/stable/typed-array/find.js        |    4 +
 .../stable/typed-array/float32-array.js       |    5 +
 .../stable/typed-array/float64-array.js       |    5 +
 .../core-js/stable/typed-array/for-each.js    |    4 +
 .../core-js/stable/typed-array/from.js        |    4 +
 .../core-js/stable/typed-array/includes.js    |    4 +
 .../core-js/stable/typed-array/index-of.js    |    4 +
 .../core-js/stable/typed-array/index.js       |    4 +
 .../core-js/stable/typed-array/int16-array.js |    5 +
 .../core-js/stable/typed-array/int32-array.js |    5 +
 .../core-js/stable/typed-array/int8-array.js  |    5 +
 .../core-js/stable/typed-array/iterator.js    |    4 +
 .../core-js/stable/typed-array/join.js        |    4 +
 .../core-js/stable/typed-array/keys.js        |    4 +
 .../stable/typed-array/last-index-of.js       |    4 +
 .../core-js/stable/typed-array/map.js         |    4 +
 .../core-js/stable/typed-array/methods.js     |    4 +
 node_modules/core-js/stable/typed-array/of.js |    4 +
 .../stable/typed-array/reduce-right.js        |    4 +
 .../core-js/stable/typed-array/reduce.js      |    4 +
 .../core-js/stable/typed-array/reverse.js     |    4 +
 .../core-js/stable/typed-array/set.js         |    4 +
 .../core-js/stable/typed-array/slice.js       |    4 +
 .../core-js/stable/typed-array/some.js        |    4 +
 .../core-js/stable/typed-array/sort.js        |    4 +
 .../core-js/stable/typed-array/subarray.js    |    4 +
 .../stable/typed-array/to-locale-string.js    |    4 +
 .../core-js/stable/typed-array/to-reversed.js |    4 +
 .../core-js/stable/typed-array/to-sorted.js   |    4 +
 .../core-js/stable/typed-array/to-string.js   |    4 +
 .../stable/typed-array/uint16-array.js        |    5 +
 .../stable/typed-array/uint32-array.js        |    5 +
 .../core-js/stable/typed-array/uint8-array.js |    5 +
 .../stable/typed-array/uint8-clamped-array.js |    5 +
 .../core-js/stable/typed-array/values.js      |    4 +
 .../core-js/stable/typed-array/with.js        |    4 +
 node_modules/core-js/stable/unescape.js       |    4 +
 .../core-js/stable/url-search-params/index.js |    5 +
 node_modules/core-js/stable/url/can-parse.js  |    6 +
 node_modules/core-js/stable/url/index.js      |    4 +
 node_modules/core-js/stable/url/parse.js      |    6 +
 node_modules/core-js/stable/url/to-json.js    |    2 +
 node_modules/core-js/stable/weak-map/index.js |    5 +
 node_modules/core-js/stable/weak-set/index.js |    5 +
 node_modules/core-js/stage/0.js               |   13 +
 node_modules/core-js/stage/1.js               |   28 +
 node_modules/core-js/stage/2.7.js             |    6 +
 node_modules/core-js/stage/2.js               |   22 +
 node_modules/core-js/stage/3.js               |   17 +
 node_modules/core-js/stage/4.js               |   25 +
 node_modules/core-js/stage/README.md          |    1 +
 node_modules/core-js/stage/index.js           |    4 +
 node_modules/core-js/stage/pre.js             |    6 +
 node_modules/core-js/web/README.md            |    1 +
 node_modules/core-js/web/dom-collections.js   |    6 +
 node_modules/core-js/web/dom-exception.js     |    8 +
 node_modules/core-js/web/immediate.js         |    5 +
 node_modules/core-js/web/index.js             |   24 +
 node_modules/core-js/web/queue-microtask.js   |    5 +
 node_modules/core-js/web/structured-clone.js  |    9 +
 node_modules/core-js/web/timers.js            |    5 +
 node_modules/core-js/web/url-search-params.js |    8 +
 node_modules/core-js/web/url.js               |    9 +
 node_modules/css-line-break/CHANGELOG.md      |   58 +
 node_modules/css-line-break/LICENSE           |   22 +
 node_modules/css-line-break/README.md         |   66 +
 node_modules/css-line-break/package.json      |   61 +
 node_modules/css-line-break/rollup.config.ts  |   40 +
 node_modules/dompurify/LICENSE                |  568 ++
 node_modules/dompurify/README.md              |  436 +
 node_modules/dompurify/package.json           |  168 +
 node_modules/fflate/CHANGELOG.md              |  115 +
 node_modules/fflate/LICENSE                   |   21 +
 node_modules/fflate/README.md                 |  558 ++
 node_modules/fflate/esm/browser.d.ts          | 1501 +++
 node_modules/fflate/esm/browser.js            | 2665 ++++++
 node_modules/fflate/esm/index.d.mts           | 1501 +++
 node_modules/fflate/esm/index.mjs             | 2679 ++++++
 node_modules/fflate/lib/browser.cjs           | 2688 ++++++
 node_modules/fflate/lib/browser.d.cts         | 1501 +++
 node_modules/fflate/lib/index.cjs             | 2668 ++++++
 node_modules/fflate/lib/index.d.ts            | 1501 +++
 node_modules/fflate/lib/node-worker.cjs       |   32 +
 node_modules/fflate/lib/node.cjs              | 2700 ++++++
 node_modules/fflate/lib/node.d.cts            | 1501 +++
 node_modules/fflate/lib/worker.cjs            |   20 +
 node_modules/fflate/package.json              |  127 +
 node_modules/fflate/umd/index.js              |    1 +
 node_modules/html2canvas/CHANGELOG.md         |  566 ++
 node_modules/html2canvas/LICENSE              |   22 +
 node_modules/html2canvas/README.md            |   73 +
 node_modules/html2canvas/package.json         |  124 +
 node_modules/html2canvas/tsconfig.json        |   21 +
 node_modules/jspdf/LICENSE                    |   22 +
 node_modules/jspdf/README.md                  |  286 +
 node_modules/jspdf/package.json               |  115 +
 node_modules/jspdf/types/index.d.ts           | 1461 +++
 node_modules/performance-now/.npmignore       |    1 +
 node_modules/performance-now/.tm_properties   |    7 +
 node_modules/performance-now/.travis.yml      |    6 +
 node_modules/performance-now/README.md        |   30 +
 .../performance-now/lib/performance-now.js    |   36 +
 .../lib/performance-now.js.map                |   10 +
 node_modules/performance-now/license.txt      |    7 +
 node_modules/performance-now/package.json     |   35 +
 node_modules/performance-now/src/index.d.ts   |    8 +
 .../src/performance-now.coffee                |   17 +
 node_modules/performance-now/test/mocha.opts  |    3 +
 .../test/performance-now.coffee               |   43 +
 .../performance-now/test/scripts.coffee       |   27 +
 .../test/scripts/delayed-call.coffee          |   11 +
 .../test/scripts/delayed-require.coffee       |   12 +
 .../test/scripts/difference.coffee            |    6 +
 .../test/scripts/initial-value.coffee         |   10 +
 node_modules/raf/LICENSE                      |    7 +
 node_modules/raf/README.md                    |   83 +
 node_modules/raf/index.js                     |   75 +
 node_modules/raf/package.json                 |   48 +
 node_modules/raf/polyfill.js                  |    1 +
 node_modules/raf/test.js                      |   62 +
 node_modules/raf/window.js                    |    5 +
 node_modules/regenerator-runtime/LICENSE      |   21 +
 node_modules/regenerator-runtime/README.md    |   31 +
 node_modules/regenerator-runtime/package.json |   19 +
 node_modules/regenerator-runtime/path.js      |   11 +
 node_modules/regenerator-runtime/runtime.js   |  761 ++
 node_modules/rgbcolor/FEEL-FREE.md            |    5 +
 node_modules/rgbcolor/LICENSE.md              |   26 +
 node_modules/rgbcolor/README.md               |   20 +
 node_modules/rgbcolor/index.js                |  302 +
 node_modules/rgbcolor/package.json            |   14 +
 node_modules/stackblur-canvas/.editorconfig   |   12 +
 node_modules/stackblur-canvas/.eslintignore   |    5 +
 node_modules/stackblur-canvas/.eslintrc.js    |   69 +
 node_modules/stackblur-canvas/CHANGES.md      |  112 +
 node_modules/stackblur-canvas/LICENSE-MIT.txt |   22 +
 node_modules/stackblur-canvas/README.md       |  147 +
 node_modules/stackblur-canvas/index.d.ts      |   52 +
 node_modules/stackblur-canvas/package.json    |   71 +
 .../stackblur-canvas/src/stackblur.js         |  710 ++
 node_modules/svg-pathdata/CHANGELOG.md        |  248 +
 node_modules/svg-pathdata/LICENSE             |   20 +
 node_modules/svg-pathdata/README.md           |  162 +
 node_modules/svg-pathdata/index.d.ts          |    2 +
 node_modules/svg-pathdata/karma.conf.js       |   69 +
 node_modules/svg-pathdata/lib/SVGPathData.cjs |   16 +
 .../svg-pathdata/lib/SVGPathData.cjs.map      |    1 +
 .../svg-pathdata/lib/SVGPathData.d.ts         |   43 +
 .../svg-pathdata/lib/SVGPathData.module.js    |   16 +
 .../lib/SVGPathData.module.js.map             |    1 +
 .../svg-pathdata/lib/SVGPathDataEncoder.d.ts  |    2 +
 .../svg-pathdata/lib/SVGPathDataParser.d.ts   |   19 +
 .../lib/SVGPathDataTransformer.d.ts           |   28 +
 .../svg-pathdata/lib/TransformableSVG.d.ts    |   21 +
 node_modules/svg-pathdata/lib/mathUtils.d.ts  |   28 +
 node_modules/svg-pathdata/lib/types.d.ts      |   75 +
 node_modules/svg-pathdata/package.json        |   95 +
 node_modules/svg-pathdata/src/SVGPathData.ts  |   90 +
 .../svg-pathdata/src/SVGPathDataEncoder.ts    |   62 +
 .../svg-pathdata/src/SVGPathDataParser.ts     |  290 +
 .../src/SVGPathDataTransformer.ts             |  620 ++
 .../svg-pathdata/src/TransformableSVG.ts      |   74 +
 node_modules/svg-pathdata/src/mathUtils.ts    |  200 +
 node_modules/svg-pathdata/src/types.ts        |   41 +
 node_modules/svg-pathdata/tsconfig.json       |   67 +
 node_modules/svg-pathdata/tslint.json         |   19 +
 node_modules/text-segmentation/CHANGELOG.md   |   43 +
 node_modules/text-segmentation/LICENSE        |   22 +
 node_modules/text-segmentation/README.md      |   27 +
 node_modules/text-segmentation/package.json   |   55 +
 .../text-segmentation/rollup.config.ts        |   40 +
 node_modules/utrie/CHANGELOG.md               |   32 +
 node_modules/utrie/LICENSE                    |   22 +
 node_modules/utrie/package.json               |   53 +
 node_modules/utrie/rollup.config.ts           |   40 +
 package-lock.json                             |  207 +-
 package.json                                  |    4 +-
 ventaboletos/public/search.jpg                |  Bin 0 -> 1249 bytes
 .../src/components/vistas/Reporte.jsx         |   37 +-
 ventaboletos/src/pages/index.js               |    7 +
 4140 files changed, 107212 insertions(+), 7 deletions(-)
 create mode 100644 node_modules/.bin/atob
 create mode 100644 node_modules/.bin/atob.cmd
 create mode 100644 node_modules/.bin/atob.ps1
 create mode 100644 node_modules/.bin/btoa
 create mode 100644 node_modules/.bin/btoa.cmd
 create mode 100644 node_modules/.bin/btoa.ps1
 create mode 100644 node_modules/@babel/runtime/LICENSE
 create mode 100644 node_modules/@babel/runtime/README.md
 create mode 100644 node_modules/@babel/runtime/helpers/AwaitValue.js
 create mode 100644 node_modules/@babel/runtime/helpers/OverloadYield.js
 create mode 100644 node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js
 create mode 100644 node_modules/@babel/runtime/helpers/applyDecs.js
 create mode 100644 node_modules/@babel/runtime/helpers/applyDecs2203.js
 create mode 100644 node_modules/@babel/runtime/helpers/applyDecs2203R.js
 create mode 100644 node_modules/@babel/runtime/helpers/applyDecs2301.js
 create mode 100644 node_modules/@babel/runtime/helpers/applyDecs2305.js
 create mode 100644 node_modules/@babel/runtime/helpers/applyDecs2311.js
 create mode 100644 node_modules/@babel/runtime/helpers/arrayLikeToArray.js
 create mode 100644 node_modules/@babel/runtime/helpers/arrayWithHoles.js
 create mode 100644 node_modules/@babel/runtime/helpers/arrayWithoutHoles.js
 create mode 100644 node_modules/@babel/runtime/helpers/assertClassBrand.js
 create mode 100644 node_modules/@babel/runtime/helpers/assertThisInitialized.js
 create mode 100644 node_modules/@babel/runtime/helpers/asyncGeneratorDelegate.js
 create mode 100644 node_modules/@babel/runtime/helpers/asyncIterator.js
 create mode 100644 node_modules/@babel/runtime/helpers/asyncToGenerator.js
 create mode 100644 node_modules/@babel/runtime/helpers/awaitAsyncGenerator.js
 create mode 100644 node_modules/@babel/runtime/helpers/callSuper.js
 create mode 100644 node_modules/@babel/runtime/helpers/checkInRHS.js
 create mode 100644 node_modules/@babel/runtime/helpers/checkPrivateRedeclaration.js
 create mode 100644 node_modules/@babel/runtime/helpers/classApplyDescriptorDestructureSet.js
 create mode 100644 node_modules/@babel/runtime/helpers/classApplyDescriptorGet.js
 create mode 100644 node_modules/@babel/runtime/helpers/classApplyDescriptorSet.js
 create mode 100644 node_modules/@babel/runtime/helpers/classCallCheck.js
 create mode 100644 node_modules/@babel/runtime/helpers/classCheckPrivateStaticAccess.js
 create mode 100644 node_modules/@babel/runtime/helpers/classCheckPrivateStaticFieldDescriptor.js
 create mode 100644 node_modules/@babel/runtime/helpers/classExtractFieldDescriptor.js
 create mode 100644 node_modules/@babel/runtime/helpers/classNameTDZError.js
 create mode 100644 node_modules/@babel/runtime/helpers/classPrivateFieldDestructureSet.js
 create mode 100644 node_modules/@babel/runtime/helpers/classPrivateFieldGet.js
 create mode 100644 node_modules/@babel/runtime/helpers/classPrivateFieldGet2.js
 create mode 100644 node_modules/@babel/runtime/helpers/classPrivateFieldInitSpec.js
 create mode 100644 node_modules/@babel/runtime/helpers/classPrivateFieldLooseBase.js
 create mode 100644 node_modules/@babel/runtime/helpers/classPrivateFieldLooseKey.js
 create mode 100644 node_modules/@babel/runtime/helpers/classPrivateFieldSet.js
 create mode 100644 node_modules/@babel/runtime/helpers/classPrivateFieldSet2.js
 create mode 100644 node_modules/@babel/runtime/helpers/classPrivateGetter.js
 create mode 100644 node_modules/@babel/runtime/helpers/classPrivateMethodGet.js
 create mode 100644 node_modules/@babel/runtime/helpers/classPrivateMethodInitSpec.js
 create mode 100644 node_modules/@babel/runtime/helpers/classPrivateMethodSet.js
 create mode 100644 node_modules/@babel/runtime/helpers/classPrivateSetter.js
 create mode 100644 node_modules/@babel/runtime/helpers/classStaticPrivateFieldDestructureSet.js
 create mode 100644 node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecGet.js
 create mode 100644 node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecSet.js
 create mode 100644 node_modules/@babel/runtime/helpers/classStaticPrivateMethodGet.js
 create mode 100644 node_modules/@babel/runtime/helpers/classStaticPrivateMethodSet.js
 create mode 100644 node_modules/@babel/runtime/helpers/construct.js
 create mode 100644 node_modules/@babel/runtime/helpers/createClass.js
 create mode 100644 node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js
 create mode 100644 node_modules/@babel/runtime/helpers/createForOfIteratorHelperLoose.js
 create mode 100644 node_modules/@babel/runtime/helpers/createSuper.js
 create mode 100644 node_modules/@babel/runtime/helpers/decorate.js
 create mode 100644 node_modules/@babel/runtime/helpers/defaults.js
 create mode 100644 node_modules/@babel/runtime/helpers/defineAccessor.js
 create mode 100644 node_modules/@babel/runtime/helpers/defineEnumerableProperties.js
 create mode 100644 node_modules/@babel/runtime/helpers/defineProperty.js
 create mode 100644 node_modules/@babel/runtime/helpers/dispose.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/AwaitValue.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/OverloadYield.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/applyDecoratedDescriptor.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/applyDecs.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/applyDecs2203.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/applyDecs2203R.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/applyDecs2301.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/applyDecs2305.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/applyDecs2311.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/assertClassBrand.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/asyncGeneratorDelegate.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/asyncIterator.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/awaitAsyncGenerator.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/callSuper.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/checkInRHS.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/checkPrivateRedeclaration.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/classApplyDescriptorDestructureSet.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/classApplyDescriptorGet.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/classApplyDescriptorSet.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/classCallCheck.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticAccess.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticFieldDescriptor.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/classExtractFieldDescriptor.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/classNameTDZError.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/classPrivateFieldDestructureSet.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet2.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/classPrivateFieldInitSpec.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseBase.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseKey.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet2.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/classPrivateGetter.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/classPrivateMethodGet.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/classPrivateMethodInitSpec.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/classPrivateMethodSet.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/classPrivateSetter.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldDestructureSet.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecGet.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecSet.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodGet.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodSet.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/construct.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/createClass.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelperLoose.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/createSuper.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/decorate.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/defaults.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/defineAccessor.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/defineEnumerableProperties.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/defineProperty.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/dispose.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/extends.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/get.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/identity.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/importDeferProxy.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/inherits.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/inheritsLoose.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/initializerDefineProperty.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/initializerWarningHelper.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/instanceof.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/interopRequireDefault.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/interopRequireWildcard.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/isNativeFunction.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/iterableToArray.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/jsx.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/maybeArrayLike.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/newArrowCheck.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/nonIterableRest.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/nullishReceiverError.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/objectSpread.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/objectSpread2.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/package.json
 create mode 100644 node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/readOnlyError.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/set.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/setFunctionName.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/skipFirstGeneratorNext.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/slicedToArray.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/superPropBase.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/superPropGet.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/superPropSet.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteralLoose.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/tdz.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/temporalRef.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/temporalUndefined.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/toArray.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/toConsumableArray.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/toPrimitive.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/toPropertyKey.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/toSetter.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/typeof.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/using.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/usingCtx.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/wrapAsyncGenerator.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/wrapRegExp.js
 create mode 100644 node_modules/@babel/runtime/helpers/esm/writeOnlyError.js
 create mode 100644 node_modules/@babel/runtime/helpers/extends.js
 create mode 100644 node_modules/@babel/runtime/helpers/get.js
 create mode 100644 node_modules/@babel/runtime/helpers/getPrototypeOf.js
 create mode 100644 node_modules/@babel/runtime/helpers/identity.js
 create mode 100644 node_modules/@babel/runtime/helpers/importDeferProxy.js
 create mode 100644 node_modules/@babel/runtime/helpers/inherits.js
 create mode 100644 node_modules/@babel/runtime/helpers/inheritsLoose.js
 create mode 100644 node_modules/@babel/runtime/helpers/initializerDefineProperty.js
 create mode 100644 node_modules/@babel/runtime/helpers/initializerWarningHelper.js
 create mode 100644 node_modules/@babel/runtime/helpers/instanceof.js
 create mode 100644 node_modules/@babel/runtime/helpers/interopRequireDefault.js
 create mode 100644 node_modules/@babel/runtime/helpers/interopRequireWildcard.js
 create mode 100644 node_modules/@babel/runtime/helpers/isNativeFunction.js
 create mode 100644 node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js
 create mode 100644 node_modules/@babel/runtime/helpers/iterableToArray.js
 create mode 100644 node_modules/@babel/runtime/helpers/iterableToArrayLimit.js
 create mode 100644 node_modules/@babel/runtime/helpers/jsx.js
 create mode 100644 node_modules/@babel/runtime/helpers/maybeArrayLike.js
 create mode 100644 node_modules/@babel/runtime/helpers/newArrowCheck.js
 create mode 100644 node_modules/@babel/runtime/helpers/nonIterableRest.js
 create mode 100644 node_modules/@babel/runtime/helpers/nonIterableSpread.js
 create mode 100644 node_modules/@babel/runtime/helpers/nullishReceiverError.js
 create mode 100644 node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js
 create mode 100644 node_modules/@babel/runtime/helpers/objectSpread.js
 create mode 100644 node_modules/@babel/runtime/helpers/objectSpread2.js
 create mode 100644 node_modules/@babel/runtime/helpers/objectWithoutProperties.js
 create mode 100644 node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js
 create mode 100644 node_modules/@babel/runtime/helpers/possibleConstructorReturn.js
 create mode 100644 node_modules/@babel/runtime/helpers/readOnlyError.js
 create mode 100644 node_modules/@babel/runtime/helpers/regeneratorRuntime.js
 create mode 100644 node_modules/@babel/runtime/helpers/set.js
 create mode 100644 node_modules/@babel/runtime/helpers/setFunctionName.js
 create mode 100644 node_modules/@babel/runtime/helpers/setPrototypeOf.js
 create mode 100644 node_modules/@babel/runtime/helpers/skipFirstGeneratorNext.js
 create mode 100644 node_modules/@babel/runtime/helpers/slicedToArray.js
 create mode 100644 node_modules/@babel/runtime/helpers/superPropBase.js
 create mode 100644 node_modules/@babel/runtime/helpers/superPropGet.js
 create mode 100644 node_modules/@babel/runtime/helpers/superPropSet.js
 create mode 100644 node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js
 create mode 100644 node_modules/@babel/runtime/helpers/taggedTemplateLiteralLoose.js
 create mode 100644 node_modules/@babel/runtime/helpers/tdz.js
 create mode 100644 node_modules/@babel/runtime/helpers/temporalRef.js
 create mode 100644 node_modules/@babel/runtime/helpers/temporalUndefined.js
 create mode 100644 node_modules/@babel/runtime/helpers/toArray.js
 create mode 100644 node_modules/@babel/runtime/helpers/toConsumableArray.js
 create mode 100644 node_modules/@babel/runtime/helpers/toPrimitive.js
 create mode 100644 node_modules/@babel/runtime/helpers/toPropertyKey.js
 create mode 100644 node_modules/@babel/runtime/helpers/toSetter.js
 create mode 100644 node_modules/@babel/runtime/helpers/typeof.js
 create mode 100644 node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js
 create mode 100644 node_modules/@babel/runtime/helpers/using.js
 create mode 100644 node_modules/@babel/runtime/helpers/usingCtx.js
 create mode 100644 node_modules/@babel/runtime/helpers/wrapAsyncGenerator.js
 create mode 100644 node_modules/@babel/runtime/helpers/wrapNativeSuper.js
 create mode 100644 node_modules/@babel/runtime/helpers/wrapRegExp.js
 create mode 100644 node_modules/@babel/runtime/helpers/writeOnlyError.js
 create mode 100644 node_modules/@babel/runtime/package.json
 create mode 100644 node_modules/@babel/runtime/regenerator/index.js
 create mode 100644 node_modules/@types/raf/LICENSE
 create mode 100644 node_modules/@types/raf/README.md
 create mode 100644 node_modules/@types/raf/index.d.ts
 create mode 100644 node_modules/@types/raf/package.json
 create mode 100644 node_modules/@types/trusted-types/LICENSE
 create mode 100644 node_modules/@types/trusted-types/README.md
 create mode 100644 node_modules/@types/trusted-types/index.d.ts
 create mode 100644 node_modules/@types/trusted-types/lib/index.d.ts
 create mode 100644 node_modules/@types/trusted-types/package.json
 create mode 100644 node_modules/atob/LICENSE
 create mode 100644 node_modules/atob/LICENSE.DOCS
 create mode 100644 node_modules/atob/README.md
 create mode 100644 node_modules/atob/bin/atob.js
 create mode 100644 node_modules/atob/bower.json
 create mode 100644 node_modules/atob/browser-atob.js
 create mode 100644 node_modules/atob/node-atob.js
 create mode 100644 node_modules/atob/package.json
 create mode 100644 node_modules/atob/test.js
 create mode 100644 node_modules/base64-arraybuffer/CHANGELOG.md
 create mode 100644 node_modules/base64-arraybuffer/LICENSE
 create mode 100644 node_modules/base64-arraybuffer/README.md
 create mode 100644 node_modules/base64-arraybuffer/package.json
 create mode 100644 node_modules/base64-arraybuffer/rollup.config.ts
 create mode 100644 node_modules/btoa/LICENSE
 create mode 100644 node_modules/btoa/LICENSE.DOCS
 create mode 100644 node_modules/btoa/README.md
 create mode 100644 node_modules/btoa/bin/btoa.js
 create mode 100644 node_modules/btoa/index.js
 create mode 100644 node_modules/btoa/package.json
 create mode 100644 node_modules/btoa/test.js
 create mode 100644 node_modules/canvg/LICENSE
 create mode 100644 node_modules/canvg/README.md
 create mode 100644 node_modules/canvg/lib/BoundingBox.d.ts
 create mode 100644 node_modules/canvg/lib/BoundingBox.d.ts.map
 create mode 100644 node_modules/canvg/lib/Canvg.d.ts
 create mode 100644 node_modules/canvg/lib/Canvg.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/AElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/AElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/AnimateColorElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/AnimateColorElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/AnimateElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/AnimateElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/AnimateTransformElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/AnimateTransformElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/CircleElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/CircleElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/ClipPathElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/ClipPathElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/DefsElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/DefsElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/DescElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/DescElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/Document.d.ts
 create mode 100644 node_modules/canvg/lib/Document/Document.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/Element.d.ts
 create mode 100644 node_modules/canvg/lib/Document/Element.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/EllipseElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/EllipseElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/FeColorMatrixElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/FeColorMatrixElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/FeCompositeElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/FeCompositeElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/FeDropShadowElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/FeDropShadowElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/FeGaussianBlurElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/FeGaussianBlurElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/FeMorphologyElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/FeMorphologyElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/FilterElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/FilterElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/FontElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/FontElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/FontFaceElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/FontFaceElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/GElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/GElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/GlyphElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/GlyphElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/GradientElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/GradientElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/ImageElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/ImageElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/LineElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/LineElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/LinearGradientElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/LinearGradientElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/MarkerElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/MarkerElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/MaskElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/MaskElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/MissingGlyphElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/MissingGlyphElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/PathElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/PathElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/PatternElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/PatternElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/PolygonElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/PolygonElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/PolylineElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/PolylineElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/RadialGradientElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/RadialGradientElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/RectElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/RectElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/RenderedElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/RenderedElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/SVGElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/SVGElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/StopElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/StopElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/StyleElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/StyleElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/SymbolElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/SymbolElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/TRefElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/TRefElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/TSpanElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/TSpanElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/TextElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/TextElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/TextNode.d.ts
 create mode 100644 node_modules/canvg/lib/Document/TextNode.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/TextPathElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/TextPathElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/TitleElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/TitleElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/UnknownElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/UnknownElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/UseElement.d.ts
 create mode 100644 node_modules/canvg/lib/Document/UseElement.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/elements.d.ts
 create mode 100644 node_modules/canvg/lib/Document/elements.d.ts.map
 create mode 100644 node_modules/canvg/lib/Document/index.d.ts
 create mode 100644 node_modules/canvg/lib/Document/index.d.ts.map
 create mode 100644 node_modules/canvg/lib/Font.d.ts
 create mode 100644 node_modules/canvg/lib/Font.d.ts.map
 create mode 100644 node_modules/canvg/lib/Mouse.d.ts
 create mode 100644 node_modules/canvg/lib/Mouse.d.ts.map
 create mode 100644 node_modules/canvg/lib/Parser.d.ts
 create mode 100644 node_modules/canvg/lib/Parser.d.ts.map
 create mode 100644 node_modules/canvg/lib/PathParser.d.ts
 create mode 100644 node_modules/canvg/lib/PathParser.d.ts.map
 create mode 100644 node_modules/canvg/lib/Point.d.ts
 create mode 100644 node_modules/canvg/lib/Point.d.ts.map
 create mode 100644 node_modules/canvg/lib/Property.d.ts
 create mode 100644 node_modules/canvg/lib/Property.d.ts.map
 create mode 100644 node_modules/canvg/lib/SVGFontLoader.d.ts
 create mode 100644 node_modules/canvg/lib/SVGFontLoader.d.ts.map
 create mode 100644 node_modules/canvg/lib/Screen.d.ts
 create mode 100644 node_modules/canvg/lib/Screen.d.ts.map
 create mode 100644 node_modules/canvg/lib/Transform/Matrix.d.ts
 create mode 100644 node_modules/canvg/lib/Transform/Matrix.d.ts.map
 create mode 100644 node_modules/canvg/lib/Transform/Rotate.d.ts
 create mode 100644 node_modules/canvg/lib/Transform/Rotate.d.ts.map
 create mode 100644 node_modules/canvg/lib/Transform/Scale.d.ts
 create mode 100644 node_modules/canvg/lib/Transform/Scale.d.ts.map
 create mode 100644 node_modules/canvg/lib/Transform/Skew.d.ts
 create mode 100644 node_modules/canvg/lib/Transform/Skew.d.ts.map
 create mode 100644 node_modules/canvg/lib/Transform/SkewX.d.ts
 create mode 100644 node_modules/canvg/lib/Transform/SkewX.d.ts.map
 create mode 100644 node_modules/canvg/lib/Transform/SkewY.d.ts
 create mode 100644 node_modules/canvg/lib/Transform/SkewY.d.ts.map
 create mode 100644 node_modules/canvg/lib/Transform/Transform.d.ts
 create mode 100644 node_modules/canvg/lib/Transform/Transform.d.ts.map
 create mode 100644 node_modules/canvg/lib/Transform/Translate.d.ts
 create mode 100644 node_modules/canvg/lib/Transform/Translate.d.ts.map
 create mode 100644 node_modules/canvg/lib/Transform/index.d.ts
 create mode 100644 node_modules/canvg/lib/Transform/index.d.ts.map
 create mode 100644 node_modules/canvg/lib/Transform/types.d.ts
 create mode 100644 node_modules/canvg/lib/Transform/types.d.ts.map
 create mode 100644 node_modules/canvg/lib/ViewPort.d.ts
 create mode 100644 node_modules/canvg/lib/ViewPort.d.ts.map
 create mode 100644 node_modules/canvg/lib/index.babel.js
 create mode 100644 node_modules/canvg/lib/index.cjs
 create mode 100644 node_modules/canvg/lib/index.d.ts
 create mode 100644 node_modules/canvg/lib/index.d.ts.map
 create mode 100644 node_modules/canvg/lib/index.es.js
 create mode 100644 node_modules/canvg/lib/index.js
 create mode 100644 node_modules/canvg/lib/presets/index.d.ts
 create mode 100644 node_modules/canvg/lib/presets/index.d.ts.map
 create mode 100644 node_modules/canvg/lib/presets/node.d.ts
 create mode 100644 node_modules/canvg/lib/presets/node.d.ts.map
 create mode 100644 node_modules/canvg/lib/presets/offscreen.d.ts
 create mode 100644 node_modules/canvg/lib/presets/offscreen.d.ts.map
 create mode 100644 node_modules/canvg/lib/presets/types.d.ts
 create mode 100644 node_modules/canvg/lib/presets/types.d.ts.map
 create mode 100644 node_modules/canvg/lib/types.d.ts
 create mode 100644 node_modules/canvg/lib/types.d.ts.map
 create mode 100644 node_modules/canvg/lib/umd.js
 create mode 100644 node_modules/canvg/lib/umd.js.map
 create mode 100644 node_modules/canvg/lib/util/debug.d.ts
 create mode 100644 node_modules/canvg/lib/util/debug.d.ts.map
 create mode 100644 node_modules/canvg/lib/util/index.d.ts
 create mode 100644 node_modules/canvg/lib/util/index.d.ts.map
 create mode 100644 node_modules/canvg/lib/util/math.d.ts
 create mode 100644 node_modules/canvg/lib/util/math.d.ts.map
 create mode 100644 node_modules/canvg/lib/util/string.d.ts
 create mode 100644 node_modules/canvg/lib/util/string.d.ts.map
 create mode 100644 node_modules/canvg/lib/util/styles.d.ts
 create mode 100644 node_modules/canvg/lib/util/styles.d.ts.map
 create mode 100644 node_modules/canvg/node_modules/regenerator-runtime/LICENSE
 create mode 100644 node_modules/canvg/node_modules/regenerator-runtime/README.md
 create mode 100644 node_modules/canvg/node_modules/regenerator-runtime/package.json
 create mode 100644 node_modules/canvg/node_modules/regenerator-runtime/path.js
 create mode 100644 node_modules/canvg/node_modules/regenerator-runtime/runtime.js
 create mode 100644 node_modules/canvg/package.json
 create mode 100644 node_modules/core-js/LICENSE
 create mode 100644 node_modules/core-js/README.md
 create mode 100644 node_modules/core-js/actual/README.md
 create mode 100644 node_modules/core-js/actual/aggregate-error.js
 create mode 100644 node_modules/core-js/actual/array-buffer/constructor.js
 create mode 100644 node_modules/core-js/actual/array-buffer/detached.js
 create mode 100644 node_modules/core-js/actual/array-buffer/index.js
 create mode 100644 node_modules/core-js/actual/array-buffer/is-view.js
 create mode 100644 node_modules/core-js/actual/array-buffer/slice.js
 create mode 100644 node_modules/core-js/actual/array-buffer/transfer-to-fixed-length.js
 create mode 100644 node_modules/core-js/actual/array-buffer/transfer.js
 create mode 100644 node_modules/core-js/actual/array/at.js
 create mode 100644 node_modules/core-js/actual/array/concat.js
 create mode 100644 node_modules/core-js/actual/array/copy-within.js
 create mode 100644 node_modules/core-js/actual/array/entries.js
 create mode 100644 node_modules/core-js/actual/array/every.js
 create mode 100644 node_modules/core-js/actual/array/fill.js
 create mode 100644 node_modules/core-js/actual/array/filter.js
 create mode 100644 node_modules/core-js/actual/array/find-index.js
 create mode 100644 node_modules/core-js/actual/array/find-last-index.js
 create mode 100644 node_modules/core-js/actual/array/find-last.js
 create mode 100644 node_modules/core-js/actual/array/find.js
 create mode 100644 node_modules/core-js/actual/array/flat-map.js
 create mode 100644 node_modules/core-js/actual/array/flat.js
 create mode 100644 node_modules/core-js/actual/array/for-each.js
 create mode 100644 node_modules/core-js/actual/array/from-async.js
 create mode 100644 node_modules/core-js/actual/array/from.js
 create mode 100644 node_modules/core-js/actual/array/group-by-to-map.js
 create mode 100644 node_modules/core-js/actual/array/group-by.js
 create mode 100644 node_modules/core-js/actual/array/group-to-map.js
 create mode 100644 node_modules/core-js/actual/array/group.js
 create mode 100644 node_modules/core-js/actual/array/includes.js
 create mode 100644 node_modules/core-js/actual/array/index-of.js
 create mode 100644 node_modules/core-js/actual/array/index.js
 create mode 100644 node_modules/core-js/actual/array/is-array.js
 create mode 100644 node_modules/core-js/actual/array/iterator.js
 create mode 100644 node_modules/core-js/actual/array/join.js
 create mode 100644 node_modules/core-js/actual/array/keys.js
 create mode 100644 node_modules/core-js/actual/array/last-index-of.js
 create mode 100644 node_modules/core-js/actual/array/map.js
 create mode 100644 node_modules/core-js/actual/array/of.js
 create mode 100644 node_modules/core-js/actual/array/push.js
 create mode 100644 node_modules/core-js/actual/array/reduce-right.js
 create mode 100644 node_modules/core-js/actual/array/reduce.js
 create mode 100644 node_modules/core-js/actual/array/reverse.js
 create mode 100644 node_modules/core-js/actual/array/slice.js
 create mode 100644 node_modules/core-js/actual/array/some.js
 create mode 100644 node_modules/core-js/actual/array/sort.js
 create mode 100644 node_modules/core-js/actual/array/splice.js
 create mode 100644 node_modules/core-js/actual/array/to-reversed.js
 create mode 100644 node_modules/core-js/actual/array/to-sorted.js
 create mode 100644 node_modules/core-js/actual/array/to-spliced.js
 create mode 100644 node_modules/core-js/actual/array/unshift.js
 create mode 100644 node_modules/core-js/actual/array/values.js
 create mode 100644 node_modules/core-js/actual/array/virtual/at.js
 create mode 100644 node_modules/core-js/actual/array/virtual/concat.js
 create mode 100644 node_modules/core-js/actual/array/virtual/copy-within.js
 create mode 100644 node_modules/core-js/actual/array/virtual/entries.js
 create mode 100644 node_modules/core-js/actual/array/virtual/every.js
 create mode 100644 node_modules/core-js/actual/array/virtual/fill.js
 create mode 100644 node_modules/core-js/actual/array/virtual/filter.js
 create mode 100644 node_modules/core-js/actual/array/virtual/find-index.js
 create mode 100644 node_modules/core-js/actual/array/virtual/find-last-index.js
 create mode 100644 node_modules/core-js/actual/array/virtual/find-last.js
 create mode 100644 node_modules/core-js/actual/array/virtual/find.js
 create mode 100644 node_modules/core-js/actual/array/virtual/flat-map.js
 create mode 100644 node_modules/core-js/actual/array/virtual/flat.js
 create mode 100644 node_modules/core-js/actual/array/virtual/for-each.js
 create mode 100644 node_modules/core-js/actual/array/virtual/group-by-to-map.js
 create mode 100644 node_modules/core-js/actual/array/virtual/group-by.js
 create mode 100644 node_modules/core-js/actual/array/virtual/group-to-map.js
 create mode 100644 node_modules/core-js/actual/array/virtual/group.js
 create mode 100644 node_modules/core-js/actual/array/virtual/includes.js
 create mode 100644 node_modules/core-js/actual/array/virtual/index-of.js
 create mode 100644 node_modules/core-js/actual/array/virtual/index.js
 create mode 100644 node_modules/core-js/actual/array/virtual/iterator.js
 create mode 100644 node_modules/core-js/actual/array/virtual/join.js
 create mode 100644 node_modules/core-js/actual/array/virtual/keys.js
 create mode 100644 node_modules/core-js/actual/array/virtual/last-index-of.js
 create mode 100644 node_modules/core-js/actual/array/virtual/map.js
 create mode 100644 node_modules/core-js/actual/array/virtual/push.js
 create mode 100644 node_modules/core-js/actual/array/virtual/reduce-right.js
 create mode 100644 node_modules/core-js/actual/array/virtual/reduce.js
 create mode 100644 node_modules/core-js/actual/array/virtual/reverse.js
 create mode 100644 node_modules/core-js/actual/array/virtual/slice.js
 create mode 100644 node_modules/core-js/actual/array/virtual/some.js
 create mode 100644 node_modules/core-js/actual/array/virtual/sort.js
 create mode 100644 node_modules/core-js/actual/array/virtual/splice.js
 create mode 100644 node_modules/core-js/actual/array/virtual/to-reversed.js
 create mode 100644 node_modules/core-js/actual/array/virtual/to-sorted.js
 create mode 100644 node_modules/core-js/actual/array/virtual/to-spliced.js
 create mode 100644 node_modules/core-js/actual/array/virtual/unshift.js
 create mode 100644 node_modules/core-js/actual/array/virtual/values.js
 create mode 100644 node_modules/core-js/actual/array/virtual/with.js
 create mode 100644 node_modules/core-js/actual/array/with.js
 create mode 100644 node_modules/core-js/actual/async-disposable-stack/constructor.js
 create mode 100644 node_modules/core-js/actual/async-disposable-stack/index.js
 create mode 100644 node_modules/core-js/actual/async-iterator/async-dispose.js
 create mode 100644 node_modules/core-js/actual/async-iterator/drop.js
 create mode 100644 node_modules/core-js/actual/async-iterator/every.js
 create mode 100644 node_modules/core-js/actual/async-iterator/filter.js
 create mode 100644 node_modules/core-js/actual/async-iterator/find.js
 create mode 100644 node_modules/core-js/actual/async-iterator/flat-map.js
 create mode 100644 node_modules/core-js/actual/async-iterator/for-each.js
 create mode 100644 node_modules/core-js/actual/async-iterator/from.js
 create mode 100644 node_modules/core-js/actual/async-iterator/index.js
 create mode 100644 node_modules/core-js/actual/async-iterator/map.js
 create mode 100644 node_modules/core-js/actual/async-iterator/reduce.js
 create mode 100644 node_modules/core-js/actual/async-iterator/some.js
 create mode 100644 node_modules/core-js/actual/async-iterator/take.js
 create mode 100644 node_modules/core-js/actual/async-iterator/to-array.js
 create mode 100644 node_modules/core-js/actual/atob.js
 create mode 100644 node_modules/core-js/actual/btoa.js
 create mode 100644 node_modules/core-js/actual/clear-immediate.js
 create mode 100644 node_modules/core-js/actual/data-view/get-float16.js
 create mode 100644 node_modules/core-js/actual/data-view/index.js
 create mode 100644 node_modules/core-js/actual/data-view/set-float16.js
 create mode 100644 node_modules/core-js/actual/date/get-year.js
 create mode 100644 node_modules/core-js/actual/date/index.js
 create mode 100644 node_modules/core-js/actual/date/now.js
 create mode 100644 node_modules/core-js/actual/date/set-year.js
 create mode 100644 node_modules/core-js/actual/date/to-gmt-string.js
 create mode 100644 node_modules/core-js/actual/date/to-iso-string.js
 create mode 100644 node_modules/core-js/actual/date/to-json.js
 create mode 100644 node_modules/core-js/actual/date/to-primitive.js
 create mode 100644 node_modules/core-js/actual/date/to-string.js
 create mode 100644 node_modules/core-js/actual/disposable-stack/constructor.js
 create mode 100644 node_modules/core-js/actual/disposable-stack/index.js
 create mode 100644 node_modules/core-js/actual/dom-collections/for-each.js
 create mode 100644 node_modules/core-js/actual/dom-collections/index.js
 create mode 100644 node_modules/core-js/actual/dom-collections/iterator.js
 create mode 100644 node_modules/core-js/actual/dom-exception/constructor.js
 create mode 100644 node_modules/core-js/actual/dom-exception/index.js
 create mode 100644 node_modules/core-js/actual/dom-exception/to-string-tag.js
 create mode 100644 node_modules/core-js/actual/error/constructor.js
 create mode 100644 node_modules/core-js/actual/error/index.js
 create mode 100644 node_modules/core-js/actual/error/is-error.js
 create mode 100644 node_modules/core-js/actual/error/to-string.js
 create mode 100644 node_modules/core-js/actual/escape.js
 create mode 100644 node_modules/core-js/actual/function/bind.js
 create mode 100644 node_modules/core-js/actual/function/has-instance.js
 create mode 100644 node_modules/core-js/actual/function/index.js
 create mode 100644 node_modules/core-js/actual/function/metadata.js
 create mode 100644 node_modules/core-js/actual/function/name.js
 create mode 100644 node_modules/core-js/actual/function/virtual/bind.js
 create mode 100644 node_modules/core-js/actual/function/virtual/index.js
 create mode 100644 node_modules/core-js/actual/get-iterator-method.js
 create mode 100644 node_modules/core-js/actual/get-iterator.js
 create mode 100644 node_modules/core-js/actual/global-this.js
 create mode 100644 node_modules/core-js/actual/index.js
 create mode 100644 node_modules/core-js/actual/instance/at.js
 create mode 100644 node_modules/core-js/actual/instance/bind.js
 create mode 100644 node_modules/core-js/actual/instance/code-point-at.js
 create mode 100644 node_modules/core-js/actual/instance/concat.js
 create mode 100644 node_modules/core-js/actual/instance/copy-within.js
 create mode 100644 node_modules/core-js/actual/instance/ends-with.js
 create mode 100644 node_modules/core-js/actual/instance/entries.js
 create mode 100644 node_modules/core-js/actual/instance/every.js
 create mode 100644 node_modules/core-js/actual/instance/fill.js
 create mode 100644 node_modules/core-js/actual/instance/filter.js
 create mode 100644 node_modules/core-js/actual/instance/find-index.js
 create mode 100644 node_modules/core-js/actual/instance/find-last-index.js
 create mode 100644 node_modules/core-js/actual/instance/find-last.js
 create mode 100644 node_modules/core-js/actual/instance/find.js
 create mode 100644 node_modules/core-js/actual/instance/flags.js
 create mode 100644 node_modules/core-js/actual/instance/flat-map.js
 create mode 100644 node_modules/core-js/actual/instance/flat.js
 create mode 100644 node_modules/core-js/actual/instance/for-each.js
 create mode 100644 node_modules/core-js/actual/instance/group-by-to-map.js
 create mode 100644 node_modules/core-js/actual/instance/group-by.js
 create mode 100644 node_modules/core-js/actual/instance/group-to-map.js
 create mode 100644 node_modules/core-js/actual/instance/group.js
 create mode 100644 node_modules/core-js/actual/instance/includes.js
 create mode 100644 node_modules/core-js/actual/instance/index-of.js
 create mode 100644 node_modules/core-js/actual/instance/is-well-formed.js
 create mode 100644 node_modules/core-js/actual/instance/keys.js
 create mode 100644 node_modules/core-js/actual/instance/last-index-of.js
 create mode 100644 node_modules/core-js/actual/instance/map.js
 create mode 100644 node_modules/core-js/actual/instance/match-all.js
 create mode 100644 node_modules/core-js/actual/instance/pad-end.js
 create mode 100644 node_modules/core-js/actual/instance/pad-start.js
 create mode 100644 node_modules/core-js/actual/instance/push.js
 create mode 100644 node_modules/core-js/actual/instance/reduce-right.js
 create mode 100644 node_modules/core-js/actual/instance/reduce.js
 create mode 100644 node_modules/core-js/actual/instance/repeat.js
 create mode 100644 node_modules/core-js/actual/instance/replace-all.js
 create mode 100644 node_modules/core-js/actual/instance/reverse.js
 create mode 100644 node_modules/core-js/actual/instance/slice.js
 create mode 100644 node_modules/core-js/actual/instance/some.js
 create mode 100644 node_modules/core-js/actual/instance/sort.js
 create mode 100644 node_modules/core-js/actual/instance/splice.js
 create mode 100644 node_modules/core-js/actual/instance/starts-with.js
 create mode 100644 node_modules/core-js/actual/instance/to-reversed.js
 create mode 100644 node_modules/core-js/actual/instance/to-sorted.js
 create mode 100644 node_modules/core-js/actual/instance/to-spliced.js
 create mode 100644 node_modules/core-js/actual/instance/to-well-formed.js
 create mode 100644 node_modules/core-js/actual/instance/trim-end.js
 create mode 100644 node_modules/core-js/actual/instance/trim-left.js
 create mode 100644 node_modules/core-js/actual/instance/trim-right.js
 create mode 100644 node_modules/core-js/actual/instance/trim-start.js
 create mode 100644 node_modules/core-js/actual/instance/trim.js
 create mode 100644 node_modules/core-js/actual/instance/unshift.js
 create mode 100644 node_modules/core-js/actual/instance/values.js
 create mode 100644 node_modules/core-js/actual/instance/with.js
 create mode 100644 node_modules/core-js/actual/is-iterable.js
 create mode 100644 node_modules/core-js/actual/iterator/dispose.js
 create mode 100644 node_modules/core-js/actual/iterator/drop.js
 create mode 100644 node_modules/core-js/actual/iterator/every.js
 create mode 100644 node_modules/core-js/actual/iterator/filter.js
 create mode 100644 node_modules/core-js/actual/iterator/find.js
 create mode 100644 node_modules/core-js/actual/iterator/flat-map.js
 create mode 100644 node_modules/core-js/actual/iterator/for-each.js
 create mode 100644 node_modules/core-js/actual/iterator/from.js
 create mode 100644 node_modules/core-js/actual/iterator/index.js
 create mode 100644 node_modules/core-js/actual/iterator/map.js
 create mode 100644 node_modules/core-js/actual/iterator/reduce.js
 create mode 100644 node_modules/core-js/actual/iterator/some.js
 create mode 100644 node_modules/core-js/actual/iterator/take.js
 create mode 100644 node_modules/core-js/actual/iterator/to-array.js
 create mode 100644 node_modules/core-js/actual/iterator/to-async.js
 create mode 100644 node_modules/core-js/actual/json/index.js
 create mode 100644 node_modules/core-js/actual/json/is-raw-json.js
 create mode 100644 node_modules/core-js/actual/json/parse.js
 create mode 100644 node_modules/core-js/actual/json/raw-json.js
 create mode 100644 node_modules/core-js/actual/json/stringify.js
 create mode 100644 node_modules/core-js/actual/json/to-string-tag.js
 create mode 100644 node_modules/core-js/actual/map/group-by.js
 create mode 100644 node_modules/core-js/actual/map/index.js
 create mode 100644 node_modules/core-js/actual/math/acosh.js
 create mode 100644 node_modules/core-js/actual/math/asinh.js
 create mode 100644 node_modules/core-js/actual/math/atanh.js
 create mode 100644 node_modules/core-js/actual/math/cbrt.js
 create mode 100644 node_modules/core-js/actual/math/clz32.js
 create mode 100644 node_modules/core-js/actual/math/cosh.js
 create mode 100644 node_modules/core-js/actual/math/expm1.js
 create mode 100644 node_modules/core-js/actual/math/f16round.js
 create mode 100644 node_modules/core-js/actual/math/fround.js
 create mode 100644 node_modules/core-js/actual/math/hypot.js
 create mode 100644 node_modules/core-js/actual/math/imul.js
 create mode 100644 node_modules/core-js/actual/math/index.js
 create mode 100644 node_modules/core-js/actual/math/log10.js
 create mode 100644 node_modules/core-js/actual/math/log1p.js
 create mode 100644 node_modules/core-js/actual/math/log2.js
 create mode 100644 node_modules/core-js/actual/math/sign.js
 create mode 100644 node_modules/core-js/actual/math/sinh.js
 create mode 100644 node_modules/core-js/actual/math/sum-precise.js
 create mode 100644 node_modules/core-js/actual/math/tanh.js
 create mode 100644 node_modules/core-js/actual/math/to-string-tag.js
 create mode 100644 node_modules/core-js/actual/math/trunc.js
 create mode 100644 node_modules/core-js/actual/number/constructor.js
 create mode 100644 node_modules/core-js/actual/number/epsilon.js
 create mode 100644 node_modules/core-js/actual/number/index.js
 create mode 100644 node_modules/core-js/actual/number/is-finite.js
 create mode 100644 node_modules/core-js/actual/number/is-integer.js
 create mode 100644 node_modules/core-js/actual/number/is-nan.js
 create mode 100644 node_modules/core-js/actual/number/is-safe-integer.js
 create mode 100644 node_modules/core-js/actual/number/max-safe-integer.js
 create mode 100644 node_modules/core-js/actual/number/min-safe-integer.js
 create mode 100644 node_modules/core-js/actual/number/parse-float.js
 create mode 100644 node_modules/core-js/actual/number/parse-int.js
 create mode 100644 node_modules/core-js/actual/number/to-exponential.js
 create mode 100644 node_modules/core-js/actual/number/to-fixed.js
 create mode 100644 node_modules/core-js/actual/number/to-precision.js
 create mode 100644 node_modules/core-js/actual/number/virtual/index.js
 create mode 100644 node_modules/core-js/actual/number/virtual/to-exponential.js
 create mode 100644 node_modules/core-js/actual/number/virtual/to-fixed.js
 create mode 100644 node_modules/core-js/actual/number/virtual/to-precision.js
 create mode 100644 node_modules/core-js/actual/object/assign.js
 create mode 100644 node_modules/core-js/actual/object/create.js
 create mode 100644 node_modules/core-js/actual/object/define-getter.js
 create mode 100644 node_modules/core-js/actual/object/define-properties.js
 create mode 100644 node_modules/core-js/actual/object/define-property.js
 create mode 100644 node_modules/core-js/actual/object/define-setter.js
 create mode 100644 node_modules/core-js/actual/object/entries.js
 create mode 100644 node_modules/core-js/actual/object/freeze.js
 create mode 100644 node_modules/core-js/actual/object/from-entries.js
 create mode 100644 node_modules/core-js/actual/object/get-own-property-descriptor.js
 create mode 100644 node_modules/core-js/actual/object/get-own-property-descriptors.js
 create mode 100644 node_modules/core-js/actual/object/get-own-property-names.js
 create mode 100644 node_modules/core-js/actual/object/get-own-property-symbols.js
 create mode 100644 node_modules/core-js/actual/object/get-prototype-of.js
 create mode 100644 node_modules/core-js/actual/object/group-by.js
 create mode 100644 node_modules/core-js/actual/object/has-own.js
 create mode 100644 node_modules/core-js/actual/object/index.js
 create mode 100644 node_modules/core-js/actual/object/is-extensible.js
 create mode 100644 node_modules/core-js/actual/object/is-frozen.js
 create mode 100644 node_modules/core-js/actual/object/is-sealed.js
 create mode 100644 node_modules/core-js/actual/object/is.js
 create mode 100644 node_modules/core-js/actual/object/keys.js
 create mode 100644 node_modules/core-js/actual/object/lookup-getter.js
 create mode 100644 node_modules/core-js/actual/object/lookup-setter.js
 create mode 100644 node_modules/core-js/actual/object/prevent-extensions.js
 create mode 100644 node_modules/core-js/actual/object/proto.js
 create mode 100644 node_modules/core-js/actual/object/seal.js
 create mode 100644 node_modules/core-js/actual/object/set-prototype-of.js
 create mode 100644 node_modules/core-js/actual/object/to-string.js
 create mode 100644 node_modules/core-js/actual/object/values.js
 create mode 100644 node_modules/core-js/actual/parse-float.js
 create mode 100644 node_modules/core-js/actual/parse-int.js
 create mode 100644 node_modules/core-js/actual/promise/all-settled.js
 create mode 100644 node_modules/core-js/actual/promise/any.js
 create mode 100644 node_modules/core-js/actual/promise/finally.js
 create mode 100644 node_modules/core-js/actual/promise/index.js
 create mode 100644 node_modules/core-js/actual/promise/try.js
 create mode 100644 node_modules/core-js/actual/promise/with-resolvers.js
 create mode 100644 node_modules/core-js/actual/queue-microtask.js
 create mode 100644 node_modules/core-js/actual/reflect/apply.js
 create mode 100644 node_modules/core-js/actual/reflect/construct.js
 create mode 100644 node_modules/core-js/actual/reflect/define-property.js
 create mode 100644 node_modules/core-js/actual/reflect/delete-property.js
 create mode 100644 node_modules/core-js/actual/reflect/get-own-property-descriptor.js
 create mode 100644 node_modules/core-js/actual/reflect/get-prototype-of.js
 create mode 100644 node_modules/core-js/actual/reflect/get.js
 create mode 100644 node_modules/core-js/actual/reflect/has.js
 create mode 100644 node_modules/core-js/actual/reflect/index.js
 create mode 100644 node_modules/core-js/actual/reflect/is-extensible.js
 create mode 100644 node_modules/core-js/actual/reflect/own-keys.js
 create mode 100644 node_modules/core-js/actual/reflect/prevent-extensions.js
 create mode 100644 node_modules/core-js/actual/reflect/set-prototype-of.js
 create mode 100644 node_modules/core-js/actual/reflect/set.js
 create mode 100644 node_modules/core-js/actual/reflect/to-string-tag.js
 create mode 100644 node_modules/core-js/actual/regexp/constructor.js
 create mode 100644 node_modules/core-js/actual/regexp/dot-all.js
 create mode 100644 node_modules/core-js/actual/regexp/escape.js
 create mode 100644 node_modules/core-js/actual/regexp/flags.js
 create mode 100644 node_modules/core-js/actual/regexp/index.js
 create mode 100644 node_modules/core-js/actual/regexp/match.js
 create mode 100644 node_modules/core-js/actual/regexp/replace.js
 create mode 100644 node_modules/core-js/actual/regexp/search.js
 create mode 100644 node_modules/core-js/actual/regexp/split.js
 create mode 100644 node_modules/core-js/actual/regexp/sticky.js
 create mode 100644 node_modules/core-js/actual/regexp/test.js
 create mode 100644 node_modules/core-js/actual/regexp/to-string.js
 create mode 100644 node_modules/core-js/actual/self.js
 create mode 100644 node_modules/core-js/actual/set-immediate.js
 create mode 100644 node_modules/core-js/actual/set-interval.js
 create mode 100644 node_modules/core-js/actual/set-timeout.js
 create mode 100644 node_modules/core-js/actual/set/difference.js
 create mode 100644 node_modules/core-js/actual/set/index.js
 create mode 100644 node_modules/core-js/actual/set/intersection.js
 create mode 100644 node_modules/core-js/actual/set/is-disjoint-from.js
 create mode 100644 node_modules/core-js/actual/set/is-subset-of.js
 create mode 100644 node_modules/core-js/actual/set/is-superset-of.js
 create mode 100644 node_modules/core-js/actual/set/symmetric-difference.js
 create mode 100644 node_modules/core-js/actual/set/union.js
 create mode 100644 node_modules/core-js/actual/string/anchor.js
 create mode 100644 node_modules/core-js/actual/string/at.js
 create mode 100644 node_modules/core-js/actual/string/big.js
 create mode 100644 node_modules/core-js/actual/string/blink.js
 create mode 100644 node_modules/core-js/actual/string/bold.js
 create mode 100644 node_modules/core-js/actual/string/code-point-at.js
 create mode 100644 node_modules/core-js/actual/string/ends-with.js
 create mode 100644 node_modules/core-js/actual/string/fixed.js
 create mode 100644 node_modules/core-js/actual/string/fontcolor.js
 create mode 100644 node_modules/core-js/actual/string/fontsize.js
 create mode 100644 node_modules/core-js/actual/string/from-code-point.js
 create mode 100644 node_modules/core-js/actual/string/includes.js
 create mode 100644 node_modules/core-js/actual/string/index.js
 create mode 100644 node_modules/core-js/actual/string/is-well-formed.js
 create mode 100644 node_modules/core-js/actual/string/italics.js
 create mode 100644 node_modules/core-js/actual/string/iterator.js
 create mode 100644 node_modules/core-js/actual/string/link.js
 create mode 100644 node_modules/core-js/actual/string/match-all.js
 create mode 100644 node_modules/core-js/actual/string/match.js
 create mode 100644 node_modules/core-js/actual/string/pad-end.js
 create mode 100644 node_modules/core-js/actual/string/pad-start.js
 create mode 100644 node_modules/core-js/actual/string/raw.js
 create mode 100644 node_modules/core-js/actual/string/repeat.js
 create mode 100644 node_modules/core-js/actual/string/replace-all.js
 create mode 100644 node_modules/core-js/actual/string/replace.js
 create mode 100644 node_modules/core-js/actual/string/search.js
 create mode 100644 node_modules/core-js/actual/string/small.js
 create mode 100644 node_modules/core-js/actual/string/split.js
 create mode 100644 node_modules/core-js/actual/string/starts-with.js
 create mode 100644 node_modules/core-js/actual/string/strike.js
 create mode 100644 node_modules/core-js/actual/string/sub.js
 create mode 100644 node_modules/core-js/actual/string/substr.js
 create mode 100644 node_modules/core-js/actual/string/sup.js
 create mode 100644 node_modules/core-js/actual/string/to-well-formed.js
 create mode 100644 node_modules/core-js/actual/string/trim-end.js
 create mode 100644 node_modules/core-js/actual/string/trim-left.js
 create mode 100644 node_modules/core-js/actual/string/trim-right.js
 create mode 100644 node_modules/core-js/actual/string/trim-start.js
 create mode 100644 node_modules/core-js/actual/string/trim.js
 create mode 100644 node_modules/core-js/actual/string/virtual/anchor.js
 create mode 100644 node_modules/core-js/actual/string/virtual/at.js
 create mode 100644 node_modules/core-js/actual/string/virtual/big.js
 create mode 100644 node_modules/core-js/actual/string/virtual/blink.js
 create mode 100644 node_modules/core-js/actual/string/virtual/bold.js
 create mode 100644 node_modules/core-js/actual/string/virtual/code-point-at.js
 create mode 100644 node_modules/core-js/actual/string/virtual/ends-with.js
 create mode 100644 node_modules/core-js/actual/string/virtual/fixed.js
 create mode 100644 node_modules/core-js/actual/string/virtual/fontcolor.js
 create mode 100644 node_modules/core-js/actual/string/virtual/fontsize.js
 create mode 100644 node_modules/core-js/actual/string/virtual/includes.js
 create mode 100644 node_modules/core-js/actual/string/virtual/index.js
 create mode 100644 node_modules/core-js/actual/string/virtual/is-well-formed.js
 create mode 100644 node_modules/core-js/actual/string/virtual/italics.js
 create mode 100644 node_modules/core-js/actual/string/virtual/iterator.js
 create mode 100644 node_modules/core-js/actual/string/virtual/link.js
 create mode 100644 node_modules/core-js/actual/string/virtual/match-all.js
 create mode 100644 node_modules/core-js/actual/string/virtual/pad-end.js
 create mode 100644 node_modules/core-js/actual/string/virtual/pad-start.js
 create mode 100644 node_modules/core-js/actual/string/virtual/repeat.js
 create mode 100644 node_modules/core-js/actual/string/virtual/replace-all.js
 create mode 100644 node_modules/core-js/actual/string/virtual/small.js
 create mode 100644 node_modules/core-js/actual/string/virtual/starts-with.js
 create mode 100644 node_modules/core-js/actual/string/virtual/strike.js
 create mode 100644 node_modules/core-js/actual/string/virtual/sub.js
 create mode 100644 node_modules/core-js/actual/string/virtual/substr.js
 create mode 100644 node_modules/core-js/actual/string/virtual/sup.js
 create mode 100644 node_modules/core-js/actual/string/virtual/to-well-formed.js
 create mode 100644 node_modules/core-js/actual/string/virtual/trim-end.js
 create mode 100644 node_modules/core-js/actual/string/virtual/trim-left.js
 create mode 100644 node_modules/core-js/actual/string/virtual/trim-right.js
 create mode 100644 node_modules/core-js/actual/string/virtual/trim-start.js
 create mode 100644 node_modules/core-js/actual/string/virtual/trim.js
 create mode 100644 node_modules/core-js/actual/structured-clone.js
 create mode 100644 node_modules/core-js/actual/suppressed-error.js
 create mode 100644 node_modules/core-js/actual/symbol/async-dispose.js
 create mode 100644 node_modules/core-js/actual/symbol/async-iterator.js
 create mode 100644 node_modules/core-js/actual/symbol/description.js
 create mode 100644 node_modules/core-js/actual/symbol/dispose.js
 create mode 100644 node_modules/core-js/actual/symbol/for.js
 create mode 100644 node_modules/core-js/actual/symbol/has-instance.js
 create mode 100644 node_modules/core-js/actual/symbol/index.js
 create mode 100644 node_modules/core-js/actual/symbol/is-concat-spreadable.js
 create mode 100644 node_modules/core-js/actual/symbol/iterator.js
 create mode 100644 node_modules/core-js/actual/symbol/key-for.js
 create mode 100644 node_modules/core-js/actual/symbol/match-all.js
 create mode 100644 node_modules/core-js/actual/symbol/match.js
 create mode 100644 node_modules/core-js/actual/symbol/metadata.js
 create mode 100644 node_modules/core-js/actual/symbol/replace.js
 create mode 100644 node_modules/core-js/actual/symbol/search.js
 create mode 100644 node_modules/core-js/actual/symbol/species.js
 create mode 100644 node_modules/core-js/actual/symbol/split.js
 create mode 100644 node_modules/core-js/actual/symbol/to-primitive.js
 create mode 100644 node_modules/core-js/actual/symbol/to-string-tag.js
 create mode 100644 node_modules/core-js/actual/symbol/unscopables.js
 create mode 100644 node_modules/core-js/actual/typed-array/at.js
 create mode 100644 node_modules/core-js/actual/typed-array/copy-within.js
 create mode 100644 node_modules/core-js/actual/typed-array/entries.js
 create mode 100644 node_modules/core-js/actual/typed-array/every.js
 create mode 100644 node_modules/core-js/actual/typed-array/fill.js
 create mode 100644 node_modules/core-js/actual/typed-array/filter.js
 create mode 100644 node_modules/core-js/actual/typed-array/find-index.js
 create mode 100644 node_modules/core-js/actual/typed-array/find-last-index.js
 create mode 100644 node_modules/core-js/actual/typed-array/find-last.js
 create mode 100644 node_modules/core-js/actual/typed-array/find.js
 create mode 100644 node_modules/core-js/actual/typed-array/float32-array.js
 create mode 100644 node_modules/core-js/actual/typed-array/float64-array.js
 create mode 100644 node_modules/core-js/actual/typed-array/for-each.js
 create mode 100644 node_modules/core-js/actual/typed-array/from-base64.js
 create mode 100644 node_modules/core-js/actual/typed-array/from-hex.js
 create mode 100644 node_modules/core-js/actual/typed-array/from.js
 create mode 100644 node_modules/core-js/actual/typed-array/includes.js
 create mode 100644 node_modules/core-js/actual/typed-array/index-of.js
 create mode 100644 node_modules/core-js/actual/typed-array/index.js
 create mode 100644 node_modules/core-js/actual/typed-array/int16-array.js
 create mode 100644 node_modules/core-js/actual/typed-array/int32-array.js
 create mode 100644 node_modules/core-js/actual/typed-array/int8-array.js
 create mode 100644 node_modules/core-js/actual/typed-array/iterator.js
 create mode 100644 node_modules/core-js/actual/typed-array/join.js
 create mode 100644 node_modules/core-js/actual/typed-array/keys.js
 create mode 100644 node_modules/core-js/actual/typed-array/last-index-of.js
 create mode 100644 node_modules/core-js/actual/typed-array/map.js
 create mode 100644 node_modules/core-js/actual/typed-array/methods.js
 create mode 100644 node_modules/core-js/actual/typed-array/of.js
 create mode 100644 node_modules/core-js/actual/typed-array/reduce-right.js
 create mode 100644 node_modules/core-js/actual/typed-array/reduce.js
 create mode 100644 node_modules/core-js/actual/typed-array/reverse.js
 create mode 100644 node_modules/core-js/actual/typed-array/set-from-base64.js
 create mode 100644 node_modules/core-js/actual/typed-array/set-from-hex.js
 create mode 100644 node_modules/core-js/actual/typed-array/set.js
 create mode 100644 node_modules/core-js/actual/typed-array/slice.js
 create mode 100644 node_modules/core-js/actual/typed-array/some.js
 create mode 100644 node_modules/core-js/actual/typed-array/sort.js
 create mode 100644 node_modules/core-js/actual/typed-array/subarray.js
 create mode 100644 node_modules/core-js/actual/typed-array/to-base64.js
 create mode 100644 node_modules/core-js/actual/typed-array/to-hex.js
 create mode 100644 node_modules/core-js/actual/typed-array/to-locale-string.js
 create mode 100644 node_modules/core-js/actual/typed-array/to-reversed.js
 create mode 100644 node_modules/core-js/actual/typed-array/to-sorted.js
 create mode 100644 node_modules/core-js/actual/typed-array/to-spliced.js
 create mode 100644 node_modules/core-js/actual/typed-array/to-string.js
 create mode 100644 node_modules/core-js/actual/typed-array/uint16-array.js
 create mode 100644 node_modules/core-js/actual/typed-array/uint32-array.js
 create mode 100644 node_modules/core-js/actual/typed-array/uint8-array.js
 create mode 100644 node_modules/core-js/actual/typed-array/uint8-clamped-array.js
 create mode 100644 node_modules/core-js/actual/typed-array/values.js
 create mode 100644 node_modules/core-js/actual/typed-array/with.js
 create mode 100644 node_modules/core-js/actual/unescape.js
 create mode 100644 node_modules/core-js/actual/url-search-params/index.js
 create mode 100644 node_modules/core-js/actual/url/can-parse.js
 create mode 100644 node_modules/core-js/actual/url/index.js
 create mode 100644 node_modules/core-js/actual/url/parse.js
 create mode 100644 node_modules/core-js/actual/url/to-json.js
 create mode 100644 node_modules/core-js/actual/weak-map/index.js
 create mode 100644 node_modules/core-js/actual/weak-set/index.js
 create mode 100644 node_modules/core-js/configurator.js
 create mode 100644 node_modules/core-js/es/README.md
 create mode 100644 node_modules/core-js/es/aggregate-error.js
 create mode 100644 node_modules/core-js/es/array-buffer/constructor.js
 create mode 100644 node_modules/core-js/es/array-buffer/detached.js
 create mode 100644 node_modules/core-js/es/array-buffer/index.js
 create mode 100644 node_modules/core-js/es/array-buffer/is-view.js
 create mode 100644 node_modules/core-js/es/array-buffer/slice.js
 create mode 100644 node_modules/core-js/es/array-buffer/transfer-to-fixed-length.js
 create mode 100644 node_modules/core-js/es/array-buffer/transfer.js
 create mode 100644 node_modules/core-js/es/array/at.js
 create mode 100644 node_modules/core-js/es/array/concat.js
 create mode 100644 node_modules/core-js/es/array/copy-within.js
 create mode 100644 node_modules/core-js/es/array/entries.js
 create mode 100644 node_modules/core-js/es/array/every.js
 create mode 100644 node_modules/core-js/es/array/fill.js
 create mode 100644 node_modules/core-js/es/array/filter.js
 create mode 100644 node_modules/core-js/es/array/find-index.js
 create mode 100644 node_modules/core-js/es/array/find-last-index.js
 create mode 100644 node_modules/core-js/es/array/find-last.js
 create mode 100644 node_modules/core-js/es/array/find.js
 create mode 100644 node_modules/core-js/es/array/flat-map.js
 create mode 100644 node_modules/core-js/es/array/flat.js
 create mode 100644 node_modules/core-js/es/array/for-each.js
 create mode 100644 node_modules/core-js/es/array/from.js
 create mode 100644 node_modules/core-js/es/array/includes.js
 create mode 100644 node_modules/core-js/es/array/index-of.js
 create mode 100644 node_modules/core-js/es/array/index.js
 create mode 100644 node_modules/core-js/es/array/is-array.js
 create mode 100644 node_modules/core-js/es/array/iterator.js
 create mode 100644 node_modules/core-js/es/array/join.js
 create mode 100644 node_modules/core-js/es/array/keys.js
 create mode 100644 node_modules/core-js/es/array/last-index-of.js
 create mode 100644 node_modules/core-js/es/array/map.js
 create mode 100644 node_modules/core-js/es/array/of.js
 create mode 100644 node_modules/core-js/es/array/push.js
 create mode 100644 node_modules/core-js/es/array/reduce-right.js
 create mode 100644 node_modules/core-js/es/array/reduce.js
 create mode 100644 node_modules/core-js/es/array/reverse.js
 create mode 100644 node_modules/core-js/es/array/slice.js
 create mode 100644 node_modules/core-js/es/array/some.js
 create mode 100644 node_modules/core-js/es/array/sort.js
 create mode 100644 node_modules/core-js/es/array/splice.js
 create mode 100644 node_modules/core-js/es/array/to-reversed.js
 create mode 100644 node_modules/core-js/es/array/to-sorted.js
 create mode 100644 node_modules/core-js/es/array/to-spliced.js
 create mode 100644 node_modules/core-js/es/array/unshift.js
 create mode 100644 node_modules/core-js/es/array/values.js
 create mode 100644 node_modules/core-js/es/array/virtual/at.js
 create mode 100644 node_modules/core-js/es/array/virtual/concat.js
 create mode 100644 node_modules/core-js/es/array/virtual/copy-within.js
 create mode 100644 node_modules/core-js/es/array/virtual/entries.js
 create mode 100644 node_modules/core-js/es/array/virtual/every.js
 create mode 100644 node_modules/core-js/es/array/virtual/fill.js
 create mode 100644 node_modules/core-js/es/array/virtual/filter.js
 create mode 100644 node_modules/core-js/es/array/virtual/find-index.js
 create mode 100644 node_modules/core-js/es/array/virtual/find-last-index.js
 create mode 100644 node_modules/core-js/es/array/virtual/find-last.js
 create mode 100644 node_modules/core-js/es/array/virtual/find.js
 create mode 100644 node_modules/core-js/es/array/virtual/flat-map.js
 create mode 100644 node_modules/core-js/es/array/virtual/flat.js
 create mode 100644 node_modules/core-js/es/array/virtual/for-each.js
 create mode 100644 node_modules/core-js/es/array/virtual/includes.js
 create mode 100644 node_modules/core-js/es/array/virtual/index-of.js
 create mode 100644 node_modules/core-js/es/array/virtual/index.js
 create mode 100644 node_modules/core-js/es/array/virtual/iterator.js
 create mode 100644 node_modules/core-js/es/array/virtual/join.js
 create mode 100644 node_modules/core-js/es/array/virtual/keys.js
 create mode 100644 node_modules/core-js/es/array/virtual/last-index-of.js
 create mode 100644 node_modules/core-js/es/array/virtual/map.js
 create mode 100644 node_modules/core-js/es/array/virtual/push.js
 create mode 100644 node_modules/core-js/es/array/virtual/reduce-right.js
 create mode 100644 node_modules/core-js/es/array/virtual/reduce.js
 create mode 100644 node_modules/core-js/es/array/virtual/reverse.js
 create mode 100644 node_modules/core-js/es/array/virtual/slice.js
 create mode 100644 node_modules/core-js/es/array/virtual/some.js
 create mode 100644 node_modules/core-js/es/array/virtual/sort.js
 create mode 100644 node_modules/core-js/es/array/virtual/splice.js
 create mode 100644 node_modules/core-js/es/array/virtual/to-reversed.js
 create mode 100644 node_modules/core-js/es/array/virtual/to-sorted.js
 create mode 100644 node_modules/core-js/es/array/virtual/to-spliced.js
 create mode 100644 node_modules/core-js/es/array/virtual/unshift.js
 create mode 100644 node_modules/core-js/es/array/virtual/values.js
 create mode 100644 node_modules/core-js/es/array/virtual/with.js
 create mode 100644 node_modules/core-js/es/array/with.js
 create mode 100644 node_modules/core-js/es/data-view/get-float16.js
 create mode 100644 node_modules/core-js/es/data-view/index.js
 create mode 100644 node_modules/core-js/es/data-view/set-float16.js
 create mode 100644 node_modules/core-js/es/date/get-year.js
 create mode 100644 node_modules/core-js/es/date/index.js
 create mode 100644 node_modules/core-js/es/date/now.js
 create mode 100644 node_modules/core-js/es/date/set-year.js
 create mode 100644 node_modules/core-js/es/date/to-gmt-string.js
 create mode 100644 node_modules/core-js/es/date/to-iso-string.js
 create mode 100644 node_modules/core-js/es/date/to-json.js
 create mode 100644 node_modules/core-js/es/date/to-primitive.js
 create mode 100644 node_modules/core-js/es/date/to-string.js
 create mode 100644 node_modules/core-js/es/error/constructor.js
 create mode 100644 node_modules/core-js/es/error/index.js
 create mode 100644 node_modules/core-js/es/error/to-string.js
 create mode 100644 node_modules/core-js/es/escape.js
 create mode 100644 node_modules/core-js/es/function/bind.js
 create mode 100644 node_modules/core-js/es/function/has-instance.js
 create mode 100644 node_modules/core-js/es/function/index.js
 create mode 100644 node_modules/core-js/es/function/name.js
 create mode 100644 node_modules/core-js/es/function/virtual/bind.js
 create mode 100644 node_modules/core-js/es/function/virtual/index.js
 create mode 100644 node_modules/core-js/es/get-iterator-method.js
 create mode 100644 node_modules/core-js/es/get-iterator.js
 create mode 100644 node_modules/core-js/es/global-this.js
 create mode 100644 node_modules/core-js/es/index.js
 create mode 100644 node_modules/core-js/es/instance/at.js
 create mode 100644 node_modules/core-js/es/instance/bind.js
 create mode 100644 node_modules/core-js/es/instance/code-point-at.js
 create mode 100644 node_modules/core-js/es/instance/concat.js
 create mode 100644 node_modules/core-js/es/instance/copy-within.js
 create mode 100644 node_modules/core-js/es/instance/ends-with.js
 create mode 100644 node_modules/core-js/es/instance/entries.js
 create mode 100644 node_modules/core-js/es/instance/every.js
 create mode 100644 node_modules/core-js/es/instance/fill.js
 create mode 100644 node_modules/core-js/es/instance/filter.js
 create mode 100644 node_modules/core-js/es/instance/find-index.js
 create mode 100644 node_modules/core-js/es/instance/find-last-index.js
 create mode 100644 node_modules/core-js/es/instance/find-last.js
 create mode 100644 node_modules/core-js/es/instance/find.js
 create mode 100644 node_modules/core-js/es/instance/flags.js
 create mode 100644 node_modules/core-js/es/instance/flat-map.js
 create mode 100644 node_modules/core-js/es/instance/flat.js
 create mode 100644 node_modules/core-js/es/instance/for-each.js
 create mode 100644 node_modules/core-js/es/instance/includes.js
 create mode 100644 node_modules/core-js/es/instance/index-of.js
 create mode 100644 node_modules/core-js/es/instance/is-well-formed.js
 create mode 100644 node_modules/core-js/es/instance/keys.js
 create mode 100644 node_modules/core-js/es/instance/last-index-of.js
 create mode 100644 node_modules/core-js/es/instance/map.js
 create mode 100644 node_modules/core-js/es/instance/match-all.js
 create mode 100644 node_modules/core-js/es/instance/pad-end.js
 create mode 100644 node_modules/core-js/es/instance/pad-start.js
 create mode 100644 node_modules/core-js/es/instance/push.js
 create mode 100644 node_modules/core-js/es/instance/reduce-right.js
 create mode 100644 node_modules/core-js/es/instance/reduce.js
 create mode 100644 node_modules/core-js/es/instance/repeat.js
 create mode 100644 node_modules/core-js/es/instance/replace-all.js
 create mode 100644 node_modules/core-js/es/instance/reverse.js
 create mode 100644 node_modules/core-js/es/instance/slice.js
 create mode 100644 node_modules/core-js/es/instance/some.js
 create mode 100644 node_modules/core-js/es/instance/sort.js
 create mode 100644 node_modules/core-js/es/instance/splice.js
 create mode 100644 node_modules/core-js/es/instance/starts-with.js
 create mode 100644 node_modules/core-js/es/instance/to-reversed.js
 create mode 100644 node_modules/core-js/es/instance/to-sorted.js
 create mode 100644 node_modules/core-js/es/instance/to-spliced.js
 create mode 100644 node_modules/core-js/es/instance/to-well-formed.js
 create mode 100644 node_modules/core-js/es/instance/trim-end.js
 create mode 100644 node_modules/core-js/es/instance/trim-left.js
 create mode 100644 node_modules/core-js/es/instance/trim-right.js
 create mode 100644 node_modules/core-js/es/instance/trim-start.js
 create mode 100644 node_modules/core-js/es/instance/trim.js
 create mode 100644 node_modules/core-js/es/instance/unshift.js
 create mode 100644 node_modules/core-js/es/instance/values.js
 create mode 100644 node_modules/core-js/es/instance/with.js
 create mode 100644 node_modules/core-js/es/is-iterable.js
 create mode 100644 node_modules/core-js/es/iterator/drop.js
 create mode 100644 node_modules/core-js/es/iterator/every.js
 create mode 100644 node_modules/core-js/es/iterator/filter.js
 create mode 100644 node_modules/core-js/es/iterator/find.js
 create mode 100644 node_modules/core-js/es/iterator/flat-map.js
 create mode 100644 node_modules/core-js/es/iterator/for-each.js
 create mode 100644 node_modules/core-js/es/iterator/from.js
 create mode 100644 node_modules/core-js/es/iterator/index.js
 create mode 100644 node_modules/core-js/es/iterator/map.js
 create mode 100644 node_modules/core-js/es/iterator/reduce.js
 create mode 100644 node_modules/core-js/es/iterator/some.js
 create mode 100644 node_modules/core-js/es/iterator/take.js
 create mode 100644 node_modules/core-js/es/iterator/to-array.js
 create mode 100644 node_modules/core-js/es/json/index.js
 create mode 100644 node_modules/core-js/es/json/stringify.js
 create mode 100644 node_modules/core-js/es/json/to-string-tag.js
 create mode 100644 node_modules/core-js/es/map/group-by.js
 create mode 100644 node_modules/core-js/es/map/index.js
 create mode 100644 node_modules/core-js/es/math/acosh.js
 create mode 100644 node_modules/core-js/es/math/asinh.js
 create mode 100644 node_modules/core-js/es/math/atanh.js
 create mode 100644 node_modules/core-js/es/math/cbrt.js
 create mode 100644 node_modules/core-js/es/math/clz32.js
 create mode 100644 node_modules/core-js/es/math/cosh.js
 create mode 100644 node_modules/core-js/es/math/expm1.js
 create mode 100644 node_modules/core-js/es/math/f16round.js
 create mode 100644 node_modules/core-js/es/math/fround.js
 create mode 100644 node_modules/core-js/es/math/hypot.js
 create mode 100644 node_modules/core-js/es/math/imul.js
 create mode 100644 node_modules/core-js/es/math/index.js
 create mode 100644 node_modules/core-js/es/math/log10.js
 create mode 100644 node_modules/core-js/es/math/log1p.js
 create mode 100644 node_modules/core-js/es/math/log2.js
 create mode 100644 node_modules/core-js/es/math/sign.js
 create mode 100644 node_modules/core-js/es/math/sinh.js
 create mode 100644 node_modules/core-js/es/math/tanh.js
 create mode 100644 node_modules/core-js/es/math/to-string-tag.js
 create mode 100644 node_modules/core-js/es/math/trunc.js
 create mode 100644 node_modules/core-js/es/number/constructor.js
 create mode 100644 node_modules/core-js/es/number/epsilon.js
 create mode 100644 node_modules/core-js/es/number/index.js
 create mode 100644 node_modules/core-js/es/number/is-finite.js
 create mode 100644 node_modules/core-js/es/number/is-integer.js
 create mode 100644 node_modules/core-js/es/number/is-nan.js
 create mode 100644 node_modules/core-js/es/number/is-safe-integer.js
 create mode 100644 node_modules/core-js/es/number/max-safe-integer.js
 create mode 100644 node_modules/core-js/es/number/min-safe-integer.js
 create mode 100644 node_modules/core-js/es/number/parse-float.js
 create mode 100644 node_modules/core-js/es/number/parse-int.js
 create mode 100644 node_modules/core-js/es/number/to-exponential.js
 create mode 100644 node_modules/core-js/es/number/to-fixed.js
 create mode 100644 node_modules/core-js/es/number/to-precision.js
 create mode 100644 node_modules/core-js/es/number/virtual/index.js
 create mode 100644 node_modules/core-js/es/number/virtual/to-exponential.js
 create mode 100644 node_modules/core-js/es/number/virtual/to-fixed.js
 create mode 100644 node_modules/core-js/es/number/virtual/to-precision.js
 create mode 100644 node_modules/core-js/es/object/assign.js
 create mode 100644 node_modules/core-js/es/object/create.js
 create mode 100644 node_modules/core-js/es/object/define-getter.js
 create mode 100644 node_modules/core-js/es/object/define-properties.js
 create mode 100644 node_modules/core-js/es/object/define-property.js
 create mode 100644 node_modules/core-js/es/object/define-setter.js
 create mode 100644 node_modules/core-js/es/object/entries.js
 create mode 100644 node_modules/core-js/es/object/freeze.js
 create mode 100644 node_modules/core-js/es/object/from-entries.js
 create mode 100644 node_modules/core-js/es/object/get-own-property-descriptor.js
 create mode 100644 node_modules/core-js/es/object/get-own-property-descriptors.js
 create mode 100644 node_modules/core-js/es/object/get-own-property-names.js
 create mode 100644 node_modules/core-js/es/object/get-own-property-symbols.js
 create mode 100644 node_modules/core-js/es/object/get-prototype-of.js
 create mode 100644 node_modules/core-js/es/object/group-by.js
 create mode 100644 node_modules/core-js/es/object/has-own.js
 create mode 100644 node_modules/core-js/es/object/index.js
 create mode 100644 node_modules/core-js/es/object/is-extensible.js
 create mode 100644 node_modules/core-js/es/object/is-frozen.js
 create mode 100644 node_modules/core-js/es/object/is-sealed.js
 create mode 100644 node_modules/core-js/es/object/is.js
 create mode 100644 node_modules/core-js/es/object/keys.js
 create mode 100644 node_modules/core-js/es/object/lookup-getter.js
 create mode 100644 node_modules/core-js/es/object/lookup-setter.js
 create mode 100644 node_modules/core-js/es/object/prevent-extensions.js
 create mode 100644 node_modules/core-js/es/object/proto.js
 create mode 100644 node_modules/core-js/es/object/seal.js
 create mode 100644 node_modules/core-js/es/object/set-prototype-of.js
 create mode 100644 node_modules/core-js/es/object/to-string.js
 create mode 100644 node_modules/core-js/es/object/values.js
 create mode 100644 node_modules/core-js/es/parse-float.js
 create mode 100644 node_modules/core-js/es/parse-int.js
 create mode 100644 node_modules/core-js/es/promise/all-settled.js
 create mode 100644 node_modules/core-js/es/promise/any.js
 create mode 100644 node_modules/core-js/es/promise/finally.js
 create mode 100644 node_modules/core-js/es/promise/index.js
 create mode 100644 node_modules/core-js/es/promise/try.js
 create mode 100644 node_modules/core-js/es/promise/with-resolvers.js
 create mode 100644 node_modules/core-js/es/reflect/apply.js
 create mode 100644 node_modules/core-js/es/reflect/construct.js
 create mode 100644 node_modules/core-js/es/reflect/define-property.js
 create mode 100644 node_modules/core-js/es/reflect/delete-property.js
 create mode 100644 node_modules/core-js/es/reflect/get-own-property-descriptor.js
 create mode 100644 node_modules/core-js/es/reflect/get-prototype-of.js
 create mode 100644 node_modules/core-js/es/reflect/get.js
 create mode 100644 node_modules/core-js/es/reflect/has.js
 create mode 100644 node_modules/core-js/es/reflect/index.js
 create mode 100644 node_modules/core-js/es/reflect/is-extensible.js
 create mode 100644 node_modules/core-js/es/reflect/own-keys.js
 create mode 100644 node_modules/core-js/es/reflect/prevent-extensions.js
 create mode 100644 node_modules/core-js/es/reflect/set-prototype-of.js
 create mode 100644 node_modules/core-js/es/reflect/set.js
 create mode 100644 node_modules/core-js/es/reflect/to-string-tag.js
 create mode 100644 node_modules/core-js/es/regexp/constructor.js
 create mode 100644 node_modules/core-js/es/regexp/dot-all.js
 create mode 100644 node_modules/core-js/es/regexp/escape.js
 create mode 100644 node_modules/core-js/es/regexp/flags.js
 create mode 100644 node_modules/core-js/es/regexp/index.js
 create mode 100644 node_modules/core-js/es/regexp/match.js
 create mode 100644 node_modules/core-js/es/regexp/replace.js
 create mode 100644 node_modules/core-js/es/regexp/search.js
 create mode 100644 node_modules/core-js/es/regexp/split.js
 create mode 100644 node_modules/core-js/es/regexp/sticky.js
 create mode 100644 node_modules/core-js/es/regexp/test.js
 create mode 100644 node_modules/core-js/es/regexp/to-string.js
 create mode 100644 node_modules/core-js/es/set/difference.js
 create mode 100644 node_modules/core-js/es/set/index.js
 create mode 100644 node_modules/core-js/es/set/intersection.js
 create mode 100644 node_modules/core-js/es/set/is-disjoint-from.js
 create mode 100644 node_modules/core-js/es/set/is-subset-of.js
 create mode 100644 node_modules/core-js/es/set/is-superset-of.js
 create mode 100644 node_modules/core-js/es/set/symmetric-difference.js
 create mode 100644 node_modules/core-js/es/set/union.js
 create mode 100644 node_modules/core-js/es/string/anchor.js
 create mode 100644 node_modules/core-js/es/string/at.js
 create mode 100644 node_modules/core-js/es/string/big.js
 create mode 100644 node_modules/core-js/es/string/blink.js
 create mode 100644 node_modules/core-js/es/string/bold.js
 create mode 100644 node_modules/core-js/es/string/code-point-at.js
 create mode 100644 node_modules/core-js/es/string/ends-with.js
 create mode 100644 node_modules/core-js/es/string/fixed.js
 create mode 100644 node_modules/core-js/es/string/fontcolor.js
 create mode 100644 node_modules/core-js/es/string/fontsize.js
 create mode 100644 node_modules/core-js/es/string/from-code-point.js
 create mode 100644 node_modules/core-js/es/string/includes.js
 create mode 100644 node_modules/core-js/es/string/index.js
 create mode 100644 node_modules/core-js/es/string/is-well-formed.js
 create mode 100644 node_modules/core-js/es/string/italics.js
 create mode 100644 node_modules/core-js/es/string/iterator.js
 create mode 100644 node_modules/core-js/es/string/link.js
 create mode 100644 node_modules/core-js/es/string/match-all.js
 create mode 100644 node_modules/core-js/es/string/match.js
 create mode 100644 node_modules/core-js/es/string/pad-end.js
 create mode 100644 node_modules/core-js/es/string/pad-start.js
 create mode 100644 node_modules/core-js/es/string/raw.js
 create mode 100644 node_modules/core-js/es/string/repeat.js
 create mode 100644 node_modules/core-js/es/string/replace-all.js
 create mode 100644 node_modules/core-js/es/string/replace.js
 create mode 100644 node_modules/core-js/es/string/search.js
 create mode 100644 node_modules/core-js/es/string/small.js
 create mode 100644 node_modules/core-js/es/string/split.js
 create mode 100644 node_modules/core-js/es/string/starts-with.js
 create mode 100644 node_modules/core-js/es/string/strike.js
 create mode 100644 node_modules/core-js/es/string/sub.js
 create mode 100644 node_modules/core-js/es/string/substr.js
 create mode 100644 node_modules/core-js/es/string/sup.js
 create mode 100644 node_modules/core-js/es/string/to-well-formed.js
 create mode 100644 node_modules/core-js/es/string/trim-end.js
 create mode 100644 node_modules/core-js/es/string/trim-left.js
 create mode 100644 node_modules/core-js/es/string/trim-right.js
 create mode 100644 node_modules/core-js/es/string/trim-start.js
 create mode 100644 node_modules/core-js/es/string/trim.js
 create mode 100644 node_modules/core-js/es/string/virtual/anchor.js
 create mode 100644 node_modules/core-js/es/string/virtual/at.js
 create mode 100644 node_modules/core-js/es/string/virtual/big.js
 create mode 100644 node_modules/core-js/es/string/virtual/blink.js
 create mode 100644 node_modules/core-js/es/string/virtual/bold.js
 create mode 100644 node_modules/core-js/es/string/virtual/code-point-at.js
 create mode 100644 node_modules/core-js/es/string/virtual/ends-with.js
 create mode 100644 node_modules/core-js/es/string/virtual/fixed.js
 create mode 100644 node_modules/core-js/es/string/virtual/fontcolor.js
 create mode 100644 node_modules/core-js/es/string/virtual/fontsize.js
 create mode 100644 node_modules/core-js/es/string/virtual/includes.js
 create mode 100644 node_modules/core-js/es/string/virtual/index.js
 create mode 100644 node_modules/core-js/es/string/virtual/is-well-formed.js
 create mode 100644 node_modules/core-js/es/string/virtual/italics.js
 create mode 100644 node_modules/core-js/es/string/virtual/iterator.js
 create mode 100644 node_modules/core-js/es/string/virtual/link.js
 create mode 100644 node_modules/core-js/es/string/virtual/match-all.js
 create mode 100644 node_modules/core-js/es/string/virtual/pad-end.js
 create mode 100644 node_modules/core-js/es/string/virtual/pad-start.js
 create mode 100644 node_modules/core-js/es/string/virtual/repeat.js
 create mode 100644 node_modules/core-js/es/string/virtual/replace-all.js
 create mode 100644 node_modules/core-js/es/string/virtual/small.js
 create mode 100644 node_modules/core-js/es/string/virtual/starts-with.js
 create mode 100644 node_modules/core-js/es/string/virtual/strike.js
 create mode 100644 node_modules/core-js/es/string/virtual/sub.js
 create mode 100644 node_modules/core-js/es/string/virtual/substr.js
 create mode 100644 node_modules/core-js/es/string/virtual/sup.js
 create mode 100644 node_modules/core-js/es/string/virtual/to-well-formed.js
 create mode 100644 node_modules/core-js/es/string/virtual/trim-end.js
 create mode 100644 node_modules/core-js/es/string/virtual/trim-left.js
 create mode 100644 node_modules/core-js/es/string/virtual/trim-right.js
 create mode 100644 node_modules/core-js/es/string/virtual/trim-start.js
 create mode 100644 node_modules/core-js/es/string/virtual/trim.js
 create mode 100644 node_modules/core-js/es/symbol/async-iterator.js
 create mode 100644 node_modules/core-js/es/symbol/description.js
 create mode 100644 node_modules/core-js/es/symbol/for.js
 create mode 100644 node_modules/core-js/es/symbol/has-instance.js
 create mode 100644 node_modules/core-js/es/symbol/index.js
 create mode 100644 node_modules/core-js/es/symbol/is-concat-spreadable.js
 create mode 100644 node_modules/core-js/es/symbol/iterator.js
 create mode 100644 node_modules/core-js/es/symbol/key-for.js
 create mode 100644 node_modules/core-js/es/symbol/match-all.js
 create mode 100644 node_modules/core-js/es/symbol/match.js
 create mode 100644 node_modules/core-js/es/symbol/replace.js
 create mode 100644 node_modules/core-js/es/symbol/search.js
 create mode 100644 node_modules/core-js/es/symbol/species.js
 create mode 100644 node_modules/core-js/es/symbol/split.js
 create mode 100644 node_modules/core-js/es/symbol/to-primitive.js
 create mode 100644 node_modules/core-js/es/symbol/to-string-tag.js
 create mode 100644 node_modules/core-js/es/symbol/unscopables.js
 create mode 100644 node_modules/core-js/es/typed-array/at.js
 create mode 100644 node_modules/core-js/es/typed-array/copy-within.js
 create mode 100644 node_modules/core-js/es/typed-array/entries.js
 create mode 100644 node_modules/core-js/es/typed-array/every.js
 create mode 100644 node_modules/core-js/es/typed-array/fill.js
 create mode 100644 node_modules/core-js/es/typed-array/filter.js
 create mode 100644 node_modules/core-js/es/typed-array/find-index.js
 create mode 100644 node_modules/core-js/es/typed-array/find-last-index.js
 create mode 100644 node_modules/core-js/es/typed-array/find-last.js
 create mode 100644 node_modules/core-js/es/typed-array/find.js
 create mode 100644 node_modules/core-js/es/typed-array/float32-array.js
 create mode 100644 node_modules/core-js/es/typed-array/float64-array.js
 create mode 100644 node_modules/core-js/es/typed-array/for-each.js
 create mode 100644 node_modules/core-js/es/typed-array/from.js
 create mode 100644 node_modules/core-js/es/typed-array/includes.js
 create mode 100644 node_modules/core-js/es/typed-array/index-of.js
 create mode 100644 node_modules/core-js/es/typed-array/index.js
 create mode 100644 node_modules/core-js/es/typed-array/int16-array.js
 create mode 100644 node_modules/core-js/es/typed-array/int32-array.js
 create mode 100644 node_modules/core-js/es/typed-array/int8-array.js
 create mode 100644 node_modules/core-js/es/typed-array/iterator.js
 create mode 100644 node_modules/core-js/es/typed-array/join.js
 create mode 100644 node_modules/core-js/es/typed-array/keys.js
 create mode 100644 node_modules/core-js/es/typed-array/last-index-of.js
 create mode 100644 node_modules/core-js/es/typed-array/map.js
 create mode 100644 node_modules/core-js/es/typed-array/methods.js
 create mode 100644 node_modules/core-js/es/typed-array/of.js
 create mode 100644 node_modules/core-js/es/typed-array/reduce-right.js
 create mode 100644 node_modules/core-js/es/typed-array/reduce.js
 create mode 100644 node_modules/core-js/es/typed-array/reverse.js
 create mode 100644 node_modules/core-js/es/typed-array/set.js
 create mode 100644 node_modules/core-js/es/typed-array/slice.js
 create mode 100644 node_modules/core-js/es/typed-array/some.js
 create mode 100644 node_modules/core-js/es/typed-array/sort.js
 create mode 100644 node_modules/core-js/es/typed-array/subarray.js
 create mode 100644 node_modules/core-js/es/typed-array/to-locale-string.js
 create mode 100644 node_modules/core-js/es/typed-array/to-reversed.js
 create mode 100644 node_modules/core-js/es/typed-array/to-sorted.js
 create mode 100644 node_modules/core-js/es/typed-array/to-string.js
 create mode 100644 node_modules/core-js/es/typed-array/uint16-array.js
 create mode 100644 node_modules/core-js/es/typed-array/uint32-array.js
 create mode 100644 node_modules/core-js/es/typed-array/uint8-array.js
 create mode 100644 node_modules/core-js/es/typed-array/uint8-clamped-array.js
 create mode 100644 node_modules/core-js/es/typed-array/values.js
 create mode 100644 node_modules/core-js/es/typed-array/with.js
 create mode 100644 node_modules/core-js/es/unescape.js
 create mode 100644 node_modules/core-js/es/weak-map/index.js
 create mode 100644 node_modules/core-js/es/weak-set/index.js
 create mode 100644 node_modules/core-js/features/aggregate-error.js
 create mode 100644 node_modules/core-js/features/array-buffer/constructor.js
 create mode 100644 node_modules/core-js/features/array-buffer/detached.js
 create mode 100644 node_modules/core-js/features/array-buffer/index.js
 create mode 100644 node_modules/core-js/features/array-buffer/is-view.js
 create mode 100644 node_modules/core-js/features/array-buffer/slice.js
 create mode 100644 node_modules/core-js/features/array-buffer/transfer-to-fixed-length.js
 create mode 100644 node_modules/core-js/features/array-buffer/transfer.js
 create mode 100644 node_modules/core-js/features/array/at.js
 create mode 100644 node_modules/core-js/features/array/concat.js
 create mode 100644 node_modules/core-js/features/array/copy-within.js
 create mode 100644 node_modules/core-js/features/array/entries.js
 create mode 100644 node_modules/core-js/features/array/every.js
 create mode 100644 node_modules/core-js/features/array/fill.js
 create mode 100644 node_modules/core-js/features/array/filter-out.js
 create mode 100644 node_modules/core-js/features/array/filter-reject.js
 create mode 100644 node_modules/core-js/features/array/filter.js
 create mode 100644 node_modules/core-js/features/array/find-index.js
 create mode 100644 node_modules/core-js/features/array/find-last-index.js
 create mode 100644 node_modules/core-js/features/array/find-last.js
 create mode 100644 node_modules/core-js/features/array/find.js
 create mode 100644 node_modules/core-js/features/array/flat-map.js
 create mode 100644 node_modules/core-js/features/array/flat.js
 create mode 100644 node_modules/core-js/features/array/for-each.js
 create mode 100644 node_modules/core-js/features/array/from-async.js
 create mode 100644 node_modules/core-js/features/array/from.js
 create mode 100644 node_modules/core-js/features/array/group-by-to-map.js
 create mode 100644 node_modules/core-js/features/array/group-by.js
 create mode 100644 node_modules/core-js/features/array/group-to-map.js
 create mode 100644 node_modules/core-js/features/array/group.js
 create mode 100644 node_modules/core-js/features/array/includes.js
 create mode 100644 node_modules/core-js/features/array/index-of.js
 create mode 100644 node_modules/core-js/features/array/index.js
 create mode 100644 node_modules/core-js/features/array/is-array.js
 create mode 100644 node_modules/core-js/features/array/is-template-object.js
 create mode 100644 node_modules/core-js/features/array/iterator.js
 create mode 100644 node_modules/core-js/features/array/join.js
 create mode 100644 node_modules/core-js/features/array/keys.js
 create mode 100644 node_modules/core-js/features/array/last-index-of.js
 create mode 100644 node_modules/core-js/features/array/last-index.js
 create mode 100644 node_modules/core-js/features/array/last-item.js
 create mode 100644 node_modules/core-js/features/array/map.js
 create mode 100644 node_modules/core-js/features/array/of.js
 create mode 100644 node_modules/core-js/features/array/push.js
 create mode 100644 node_modules/core-js/features/array/reduce-right.js
 create mode 100644 node_modules/core-js/features/array/reduce.js
 create mode 100644 node_modules/core-js/features/array/reverse.js
 create mode 100644 node_modules/core-js/features/array/slice.js
 create mode 100644 node_modules/core-js/features/array/some.js
 create mode 100644 node_modules/core-js/features/array/sort.js
 create mode 100644 node_modules/core-js/features/array/splice.js
 create mode 100644 node_modules/core-js/features/array/to-reversed.js
 create mode 100644 node_modules/core-js/features/array/to-sorted.js
 create mode 100644 node_modules/core-js/features/array/to-spliced.js
 create mode 100644 node_modules/core-js/features/array/unique-by.js
 create mode 100644 node_modules/core-js/features/array/unshift.js
 create mode 100644 node_modules/core-js/features/array/values.js
 create mode 100644 node_modules/core-js/features/array/virtual/at.js
 create mode 100644 node_modules/core-js/features/array/virtual/concat.js
 create mode 100644 node_modules/core-js/features/array/virtual/copy-within.js
 create mode 100644 node_modules/core-js/features/array/virtual/entries.js
 create mode 100644 node_modules/core-js/features/array/virtual/every.js
 create mode 100644 node_modules/core-js/features/array/virtual/fill.js
 create mode 100644 node_modules/core-js/features/array/virtual/filter-out.js
 create mode 100644 node_modules/core-js/features/array/virtual/filter-reject.js
 create mode 100644 node_modules/core-js/features/array/virtual/filter.js
 create mode 100644 node_modules/core-js/features/array/virtual/find-index.js
 create mode 100644 node_modules/core-js/features/array/virtual/find-last-index.js
 create mode 100644 node_modules/core-js/features/array/virtual/find-last.js
 create mode 100644 node_modules/core-js/features/array/virtual/find.js
 create mode 100644 node_modules/core-js/features/array/virtual/flat-map.js
 create mode 100644 node_modules/core-js/features/array/virtual/flat.js
 create mode 100644 node_modules/core-js/features/array/virtual/for-each.js
 create mode 100644 node_modules/core-js/features/array/virtual/group-by-to-map.js
 create mode 100644 node_modules/core-js/features/array/virtual/group-by.js
 create mode 100644 node_modules/core-js/features/array/virtual/group-to-map.js
 create mode 100644 node_modules/core-js/features/array/virtual/group.js
 create mode 100644 node_modules/core-js/features/array/virtual/includes.js
 create mode 100644 node_modules/core-js/features/array/virtual/index-of.js
 create mode 100644 node_modules/core-js/features/array/virtual/index.js
 create mode 100644 node_modules/core-js/features/array/virtual/iterator.js
 create mode 100644 node_modules/core-js/features/array/virtual/join.js
 create mode 100644 node_modules/core-js/features/array/virtual/keys.js
 create mode 100644 node_modules/core-js/features/array/virtual/last-index-of.js
 create mode 100644 node_modules/core-js/features/array/virtual/map.js
 create mode 100644 node_modules/core-js/features/array/virtual/push.js
 create mode 100644 node_modules/core-js/features/array/virtual/reduce-right.js
 create mode 100644 node_modules/core-js/features/array/virtual/reduce.js
 create mode 100644 node_modules/core-js/features/array/virtual/reverse.js
 create mode 100644 node_modules/core-js/features/array/virtual/slice.js
 create mode 100644 node_modules/core-js/features/array/virtual/some.js
 create mode 100644 node_modules/core-js/features/array/virtual/sort.js
 create mode 100644 node_modules/core-js/features/array/virtual/splice.js
 create mode 100644 node_modules/core-js/features/array/virtual/to-reversed.js
 create mode 100644 node_modules/core-js/features/array/virtual/to-sorted.js
 create mode 100644 node_modules/core-js/features/array/virtual/to-spliced.js
 create mode 100644 node_modules/core-js/features/array/virtual/unique-by.js
 create mode 100644 node_modules/core-js/features/array/virtual/unshift.js
 create mode 100644 node_modules/core-js/features/array/virtual/values.js
 create mode 100644 node_modules/core-js/features/array/virtual/with.js
 create mode 100644 node_modules/core-js/features/array/with.js
 create mode 100644 node_modules/core-js/features/async-disposable-stack/constructor.js
 create mode 100644 node_modules/core-js/features/async-disposable-stack/index.js
 create mode 100644 node_modules/core-js/features/async-iterator/as-indexed-pairs.js
 create mode 100644 node_modules/core-js/features/async-iterator/async-dispose.js
 create mode 100644 node_modules/core-js/features/async-iterator/drop.js
 create mode 100644 node_modules/core-js/features/async-iterator/every.js
 create mode 100644 node_modules/core-js/features/async-iterator/filter.js
 create mode 100644 node_modules/core-js/features/async-iterator/find.js
 create mode 100644 node_modules/core-js/features/async-iterator/flat-map.js
 create mode 100644 node_modules/core-js/features/async-iterator/for-each.js
 create mode 100644 node_modules/core-js/features/async-iterator/from.js
 create mode 100644 node_modules/core-js/features/async-iterator/index.js
 create mode 100644 node_modules/core-js/features/async-iterator/indexed.js
 create mode 100644 node_modules/core-js/features/async-iterator/map.js
 create mode 100644 node_modules/core-js/features/async-iterator/reduce.js
 create mode 100644 node_modules/core-js/features/async-iterator/some.js
 create mode 100644 node_modules/core-js/features/async-iterator/take.js
 create mode 100644 node_modules/core-js/features/async-iterator/to-array.js
 create mode 100644 node_modules/core-js/features/atob.js
 create mode 100644 node_modules/core-js/features/bigint/index.js
 create mode 100644 node_modules/core-js/features/bigint/range.js
 create mode 100644 node_modules/core-js/features/btoa.js
 create mode 100644 node_modules/core-js/features/clear-immediate.js
 create mode 100644 node_modules/core-js/features/composite-key.js
 create mode 100644 node_modules/core-js/features/composite-symbol.js
 create mode 100644 node_modules/core-js/features/data-view/get-float16.js
 create mode 100644 node_modules/core-js/features/data-view/get-uint8-clamped.js
 create mode 100644 node_modules/core-js/features/data-view/index.js
 create mode 100644 node_modules/core-js/features/data-view/set-float16.js
 create mode 100644 node_modules/core-js/features/data-view/set-uint8-clamped.js
 create mode 100644 node_modules/core-js/features/date/get-year.js
 create mode 100644 node_modules/core-js/features/date/index.js
 create mode 100644 node_modules/core-js/features/date/now.js
 create mode 100644 node_modules/core-js/features/date/set-year.js
 create mode 100644 node_modules/core-js/features/date/to-gmt-string.js
 create mode 100644 node_modules/core-js/features/date/to-iso-string.js
 create mode 100644 node_modules/core-js/features/date/to-json.js
 create mode 100644 node_modules/core-js/features/date/to-primitive.js
 create mode 100644 node_modules/core-js/features/date/to-string.js
 create mode 100644 node_modules/core-js/features/disposable-stack/constructor.js
 create mode 100644 node_modules/core-js/features/disposable-stack/index.js
 create mode 100644 node_modules/core-js/features/dom-collections/for-each.js
 create mode 100644 node_modules/core-js/features/dom-collections/index.js
 create mode 100644 node_modules/core-js/features/dom-collections/iterator.js
 create mode 100644 node_modules/core-js/features/dom-exception/constructor.js
 create mode 100644 node_modules/core-js/features/dom-exception/index.js
 create mode 100644 node_modules/core-js/features/dom-exception/to-string-tag.js
 create mode 100644 node_modules/core-js/features/error/constructor.js
 create mode 100644 node_modules/core-js/features/error/index.js
 create mode 100644 node_modules/core-js/features/error/is-error.js
 create mode 100644 node_modules/core-js/features/error/to-string.js
 create mode 100644 node_modules/core-js/features/escape.js
 create mode 100644 node_modules/core-js/features/function/bind.js
 create mode 100644 node_modules/core-js/features/function/demethodize.js
 create mode 100644 node_modules/core-js/features/function/has-instance.js
 create mode 100644 node_modules/core-js/features/function/index.js
 create mode 100644 node_modules/core-js/features/function/is-callable.js
 create mode 100644 node_modules/core-js/features/function/is-constructor.js
 create mode 100644 node_modules/core-js/features/function/metadata.js
 create mode 100644 node_modules/core-js/features/function/name.js
 create mode 100644 node_modules/core-js/features/function/un-this.js
 create mode 100644 node_modules/core-js/features/function/virtual/bind.js
 create mode 100644 node_modules/core-js/features/function/virtual/demethodize.js
 create mode 100644 node_modules/core-js/features/function/virtual/index.js
 create mode 100644 node_modules/core-js/features/function/virtual/un-this.js
 create mode 100644 node_modules/core-js/features/get-iterator-method.js
 create mode 100644 node_modules/core-js/features/get-iterator.js
 create mode 100644 node_modules/core-js/features/global-this.js
 create mode 100644 node_modules/core-js/features/index.js
 create mode 100644 node_modules/core-js/features/instance/at.js
 create mode 100644 node_modules/core-js/features/instance/bind.js
 create mode 100644 node_modules/core-js/features/instance/code-point-at.js
 create mode 100644 node_modules/core-js/features/instance/code-points.js
 create mode 100644 node_modules/core-js/features/instance/concat.js
 create mode 100644 node_modules/core-js/features/instance/copy-within.js
 create mode 100644 node_modules/core-js/features/instance/demethodize.js
 create mode 100644 node_modules/core-js/features/instance/ends-with.js
 create mode 100644 node_modules/core-js/features/instance/entries.js
 create mode 100644 node_modules/core-js/features/instance/every.js
 create mode 100644 node_modules/core-js/features/instance/fill.js
 create mode 100644 node_modules/core-js/features/instance/filter-out.js
 create mode 100644 node_modules/core-js/features/instance/filter-reject.js
 create mode 100644 node_modules/core-js/features/instance/filter.js
 create mode 100644 node_modules/core-js/features/instance/find-index.js
 create mode 100644 node_modules/core-js/features/instance/find-last-index.js
 create mode 100644 node_modules/core-js/features/instance/find-last.js
 create mode 100644 node_modules/core-js/features/instance/find.js
 create mode 100644 node_modules/core-js/features/instance/flags.js
 create mode 100644 node_modules/core-js/features/instance/flat-map.js
 create mode 100644 node_modules/core-js/features/instance/flat.js
 create mode 100644 node_modules/core-js/features/instance/for-each.js
 create mode 100644 node_modules/core-js/features/instance/group-by-to-map.js
 create mode 100644 node_modules/core-js/features/instance/group-by.js
 create mode 100644 node_modules/core-js/features/instance/group-to-map.js
 create mode 100644 node_modules/core-js/features/instance/group.js
 create mode 100644 node_modules/core-js/features/instance/includes.js
 create mode 100644 node_modules/core-js/features/instance/index-of.js
 create mode 100644 node_modules/core-js/features/instance/is-well-formed.js
 create mode 100644 node_modules/core-js/features/instance/keys.js
 create mode 100644 node_modules/core-js/features/instance/last-index-of.js
 create mode 100644 node_modules/core-js/features/instance/map.js
 create mode 100644 node_modules/core-js/features/instance/match-all.js
 create mode 100644 node_modules/core-js/features/instance/pad-end.js
 create mode 100644 node_modules/core-js/features/instance/pad-start.js
 create mode 100644 node_modules/core-js/features/instance/push.js
 create mode 100644 node_modules/core-js/features/instance/reduce-right.js
 create mode 100644 node_modules/core-js/features/instance/reduce.js
 create mode 100644 node_modules/core-js/features/instance/repeat.js
 create mode 100644 node_modules/core-js/features/instance/replace-all.js
 create mode 100644 node_modules/core-js/features/instance/reverse.js
 create mode 100644 node_modules/core-js/features/instance/slice.js
 create mode 100644 node_modules/core-js/features/instance/some.js
 create mode 100644 node_modules/core-js/features/instance/sort.js
 create mode 100644 node_modules/core-js/features/instance/splice.js
 create mode 100644 node_modules/core-js/features/instance/starts-with.js
 create mode 100644 node_modules/core-js/features/instance/to-reversed.js
 create mode 100644 node_modules/core-js/features/instance/to-sorted.js
 create mode 100644 node_modules/core-js/features/instance/to-spliced.js
 create mode 100644 node_modules/core-js/features/instance/to-well-formed.js
 create mode 100644 node_modules/core-js/features/instance/trim-end.js
 create mode 100644 node_modules/core-js/features/instance/trim-left.js
 create mode 100644 node_modules/core-js/features/instance/trim-right.js
 create mode 100644 node_modules/core-js/features/instance/trim-start.js
 create mode 100644 node_modules/core-js/features/instance/trim.js
 create mode 100644 node_modules/core-js/features/instance/un-this.js
 create mode 100644 node_modules/core-js/features/instance/unique-by.js
 create mode 100644 node_modules/core-js/features/instance/unshift.js
 create mode 100644 node_modules/core-js/features/instance/values.js
 create mode 100644 node_modules/core-js/features/instance/with.js
 create mode 100644 node_modules/core-js/features/is-iterable.js
 create mode 100644 node_modules/core-js/features/iterator/as-indexed-pairs.js
 create mode 100644 node_modules/core-js/features/iterator/concat.js
 create mode 100644 node_modules/core-js/features/iterator/dispose.js
 create mode 100644 node_modules/core-js/features/iterator/drop.js
 create mode 100644 node_modules/core-js/features/iterator/every.js
 create mode 100644 node_modules/core-js/features/iterator/filter.js
 create mode 100644 node_modules/core-js/features/iterator/find.js
 create mode 100644 node_modules/core-js/features/iterator/flat-map.js
 create mode 100644 node_modules/core-js/features/iterator/for-each.js
 create mode 100644 node_modules/core-js/features/iterator/from.js
 create mode 100644 node_modules/core-js/features/iterator/index.js
 create mode 100644 node_modules/core-js/features/iterator/indexed.js
 create mode 100644 node_modules/core-js/features/iterator/map.js
 create mode 100644 node_modules/core-js/features/iterator/range.js
 create mode 100644 node_modules/core-js/features/iterator/reduce.js
 create mode 100644 node_modules/core-js/features/iterator/some.js
 create mode 100644 node_modules/core-js/features/iterator/take.js
 create mode 100644 node_modules/core-js/features/iterator/to-array.js
 create mode 100644 node_modules/core-js/features/iterator/to-async.js
 create mode 100644 node_modules/core-js/features/json/index.js
 create mode 100644 node_modules/core-js/features/json/is-raw-json.js
 create mode 100644 node_modules/core-js/features/json/parse.js
 create mode 100644 node_modules/core-js/features/json/raw-json.js
 create mode 100644 node_modules/core-js/features/json/stringify.js
 create mode 100644 node_modules/core-js/features/json/to-string-tag.js
 create mode 100644 node_modules/core-js/features/map/delete-all.js
 create mode 100644 node_modules/core-js/features/map/emplace.js
 create mode 100644 node_modules/core-js/features/map/every.js
 create mode 100644 node_modules/core-js/features/map/filter.js
 create mode 100644 node_modules/core-js/features/map/find-key.js
 create mode 100644 node_modules/core-js/features/map/find.js
 create mode 100644 node_modules/core-js/features/map/from.js
 create mode 100644 node_modules/core-js/features/map/get-or-insert-computed.js
 create mode 100644 node_modules/core-js/features/map/get-or-insert.js
 create mode 100644 node_modules/core-js/features/map/group-by.js
 create mode 100644 node_modules/core-js/features/map/includes.js
 create mode 100644 node_modules/core-js/features/map/index.js
 create mode 100644 node_modules/core-js/features/map/key-by.js
 create mode 100644 node_modules/core-js/features/map/key-of.js
 create mode 100644 node_modules/core-js/features/map/map-keys.js
 create mode 100644 node_modules/core-js/features/map/map-values.js
 create mode 100644 node_modules/core-js/features/map/merge.js
 create mode 100644 node_modules/core-js/features/map/of.js
 create mode 100644 node_modules/core-js/features/map/reduce.js
 create mode 100644 node_modules/core-js/features/map/some.js
 create mode 100644 node_modules/core-js/features/map/update-or-insert.js
 create mode 100644 node_modules/core-js/features/map/update.js
 create mode 100644 node_modules/core-js/features/map/upsert.js
 create mode 100644 node_modules/core-js/features/math/acosh.js
 create mode 100644 node_modules/core-js/features/math/asinh.js
 create mode 100644 node_modules/core-js/features/math/atanh.js
 create mode 100644 node_modules/core-js/features/math/cbrt.js
 create mode 100644 node_modules/core-js/features/math/clamp.js
 create mode 100644 node_modules/core-js/features/math/clz32.js
 create mode 100644 node_modules/core-js/features/math/cosh.js
 create mode 100644 node_modules/core-js/features/math/deg-per-rad.js
 create mode 100644 node_modules/core-js/features/math/degrees.js
 create mode 100644 node_modules/core-js/features/math/expm1.js
 create mode 100644 node_modules/core-js/features/math/f16round.js
 create mode 100644 node_modules/core-js/features/math/fround.js
 create mode 100644 node_modules/core-js/features/math/fscale.js
 create mode 100644 node_modules/core-js/features/math/hypot.js
 create mode 100644 node_modules/core-js/features/math/iaddh.js
 create mode 100644 node_modules/core-js/features/math/imul.js
 create mode 100644 node_modules/core-js/features/math/imulh.js
 create mode 100644 node_modules/core-js/features/math/index.js
 create mode 100644 node_modules/core-js/features/math/isubh.js
 create mode 100644 node_modules/core-js/features/math/log10.js
 create mode 100644 node_modules/core-js/features/math/log1p.js
 create mode 100644 node_modules/core-js/features/math/log2.js
 create mode 100644 node_modules/core-js/features/math/rad-per-deg.js
 create mode 100644 node_modules/core-js/features/math/radians.js
 create mode 100644 node_modules/core-js/features/math/scale.js
 create mode 100644 node_modules/core-js/features/math/seeded-prng.js
 create mode 100644 node_modules/core-js/features/math/sign.js
 create mode 100644 node_modules/core-js/features/math/signbit.js
 create mode 100644 node_modules/core-js/features/math/sinh.js
 create mode 100644 node_modules/core-js/features/math/sum-precise.js
 create mode 100644 node_modules/core-js/features/math/tanh.js
 create mode 100644 node_modules/core-js/features/math/to-string-tag.js
 create mode 100644 node_modules/core-js/features/math/trunc.js
 create mode 100644 node_modules/core-js/features/math/umulh.js
 create mode 100644 node_modules/core-js/features/number/constructor.js
 create mode 100644 node_modules/core-js/features/number/epsilon.js
 create mode 100644 node_modules/core-js/features/number/from-string.js
 create mode 100644 node_modules/core-js/features/number/index.js
 create mode 100644 node_modules/core-js/features/number/is-finite.js
 create mode 100644 node_modules/core-js/features/number/is-integer.js
 create mode 100644 node_modules/core-js/features/number/is-nan.js
 create mode 100644 node_modules/core-js/features/number/is-safe-integer.js
 create mode 100644 node_modules/core-js/features/number/max-safe-integer.js
 create mode 100644 node_modules/core-js/features/number/min-safe-integer.js
 create mode 100644 node_modules/core-js/features/number/parse-float.js
 create mode 100644 node_modules/core-js/features/number/parse-int.js
 create mode 100644 node_modules/core-js/features/number/range.js
 create mode 100644 node_modules/core-js/features/number/to-exponential.js
 create mode 100644 node_modules/core-js/features/number/to-fixed.js
 create mode 100644 node_modules/core-js/features/number/to-precision.js
 create mode 100644 node_modules/core-js/features/number/virtual/index.js
 create mode 100644 node_modules/core-js/features/number/virtual/to-exponential.js
 create mode 100644 node_modules/core-js/features/number/virtual/to-fixed.js
 create mode 100644 node_modules/core-js/features/number/virtual/to-precision.js
 create mode 100644 node_modules/core-js/features/object/assign.js
 create mode 100644 node_modules/core-js/features/object/create.js
 create mode 100644 node_modules/core-js/features/object/define-getter.js
 create mode 100644 node_modules/core-js/features/object/define-properties.js
 create mode 100644 node_modules/core-js/features/object/define-property.js
 create mode 100644 node_modules/core-js/features/object/define-setter.js
 create mode 100644 node_modules/core-js/features/object/entries.js
 create mode 100644 node_modules/core-js/features/object/freeze.js
 create mode 100644 node_modules/core-js/features/object/from-entries.js
 create mode 100644 node_modules/core-js/features/object/get-own-property-descriptor.js
 create mode 100644 node_modules/core-js/features/object/get-own-property-descriptors.js
 create mode 100644 node_modules/core-js/features/object/get-own-property-names.js
 create mode 100644 node_modules/core-js/features/object/get-own-property-symbols.js
 create mode 100644 node_modules/core-js/features/object/get-prototype-of.js
 create mode 100644 node_modules/core-js/features/object/group-by.js
 create mode 100644 node_modules/core-js/features/object/has-own.js
 create mode 100644 node_modules/core-js/features/object/index.js
 create mode 100644 node_modules/core-js/features/object/is-extensible.js
 create mode 100644 node_modules/core-js/features/object/is-frozen.js
 create mode 100644 node_modules/core-js/features/object/is-sealed.js
 create mode 100644 node_modules/core-js/features/object/is.js
 create mode 100644 node_modules/core-js/features/object/iterate-entries.js
 create mode 100644 node_modules/core-js/features/object/iterate-keys.js
 create mode 100644 node_modules/core-js/features/object/iterate-values.js
 create mode 100644 node_modules/core-js/features/object/keys.js
 create mode 100644 node_modules/core-js/features/object/lookup-getter.js
 create mode 100644 node_modules/core-js/features/object/lookup-setter.js
 create mode 100644 node_modules/core-js/features/object/prevent-extensions.js
 create mode 100644 node_modules/core-js/features/object/proto.js
 create mode 100644 node_modules/core-js/features/object/seal.js
 create mode 100644 node_modules/core-js/features/object/set-prototype-of.js
 create mode 100644 node_modules/core-js/features/object/to-string.js
 create mode 100644 node_modules/core-js/features/object/values.js
 create mode 100644 node_modules/core-js/features/observable/index.js
 create mode 100644 node_modules/core-js/features/parse-float.js
 create mode 100644 node_modules/core-js/features/parse-int.js
 create mode 100644 node_modules/core-js/features/promise/all-settled.js
 create mode 100644 node_modules/core-js/features/promise/any.js
 create mode 100644 node_modules/core-js/features/promise/finally.js
 create mode 100644 node_modules/core-js/features/promise/index.js
 create mode 100644 node_modules/core-js/features/promise/try.js
 create mode 100644 node_modules/core-js/features/promise/with-resolvers.js
 create mode 100644 node_modules/core-js/features/queue-microtask.js
 create mode 100644 node_modules/core-js/features/reflect/apply.js
 create mode 100644 node_modules/core-js/features/reflect/construct.js
 create mode 100644 node_modules/core-js/features/reflect/define-metadata.js
 create mode 100644 node_modules/core-js/features/reflect/define-property.js
 create mode 100644 node_modules/core-js/features/reflect/delete-metadata.js
 create mode 100644 node_modules/core-js/features/reflect/delete-property.js
 create mode 100644 node_modules/core-js/features/reflect/get-metadata-keys.js
 create mode 100644 node_modules/core-js/features/reflect/get-metadata.js
 create mode 100644 node_modules/core-js/features/reflect/get-own-metadata-keys.js
 create mode 100644 node_modules/core-js/features/reflect/get-own-metadata.js
 create mode 100644 node_modules/core-js/features/reflect/get-own-property-descriptor.js
 create mode 100644 node_modules/core-js/features/reflect/get-prototype-of.js
 create mode 100644 node_modules/core-js/features/reflect/get.js
 create mode 100644 node_modules/core-js/features/reflect/has-metadata.js
 create mode 100644 node_modules/core-js/features/reflect/has-own-metadata.js
 create mode 100644 node_modules/core-js/features/reflect/has.js
 create mode 100644 node_modules/core-js/features/reflect/index.js
 create mode 100644 node_modules/core-js/features/reflect/is-extensible.js
 create mode 100644 node_modules/core-js/features/reflect/metadata.js
 create mode 100644 node_modules/core-js/features/reflect/own-keys.js
 create mode 100644 node_modules/core-js/features/reflect/prevent-extensions.js
 create mode 100644 node_modules/core-js/features/reflect/set-prototype-of.js
 create mode 100644 node_modules/core-js/features/reflect/set.js
 create mode 100644 node_modules/core-js/features/reflect/to-string-tag.js
 create mode 100644 node_modules/core-js/features/regexp/constructor.js
 create mode 100644 node_modules/core-js/features/regexp/dot-all.js
 create mode 100644 node_modules/core-js/features/regexp/escape.js
 create mode 100644 node_modules/core-js/features/regexp/flags.js
 create mode 100644 node_modules/core-js/features/regexp/index.js
 create mode 100644 node_modules/core-js/features/regexp/match.js
 create mode 100644 node_modules/core-js/features/regexp/replace.js
 create mode 100644 node_modules/core-js/features/regexp/search.js
 create mode 100644 node_modules/core-js/features/regexp/split.js
 create mode 100644 node_modules/core-js/features/regexp/sticky.js
 create mode 100644 node_modules/core-js/features/regexp/test.js
 create mode 100644 node_modules/core-js/features/regexp/to-string.js
 create mode 100644 node_modules/core-js/features/self.js
 create mode 100644 node_modules/core-js/features/set-immediate.js
 create mode 100644 node_modules/core-js/features/set-interval.js
 create mode 100644 node_modules/core-js/features/set-timeout.js
 create mode 100644 node_modules/core-js/features/set/add-all.js
 create mode 100644 node_modules/core-js/features/set/delete-all.js
 create mode 100644 node_modules/core-js/features/set/difference.js
 create mode 100644 node_modules/core-js/features/set/every.js
 create mode 100644 node_modules/core-js/features/set/filter.js
 create mode 100644 node_modules/core-js/features/set/find.js
 create mode 100644 node_modules/core-js/features/set/from.js
 create mode 100644 node_modules/core-js/features/set/index.js
 create mode 100644 node_modules/core-js/features/set/intersection.js
 create mode 100644 node_modules/core-js/features/set/is-disjoint-from.js
 create mode 100644 node_modules/core-js/features/set/is-subset-of.js
 create mode 100644 node_modules/core-js/features/set/is-superset-of.js
 create mode 100644 node_modules/core-js/features/set/join.js
 create mode 100644 node_modules/core-js/features/set/map.js
 create mode 100644 node_modules/core-js/features/set/of.js
 create mode 100644 node_modules/core-js/features/set/reduce.js
 create mode 100644 node_modules/core-js/features/set/some.js
 create mode 100644 node_modules/core-js/features/set/symmetric-difference.js
 create mode 100644 node_modules/core-js/features/set/union.js
 create mode 100644 node_modules/core-js/features/string/anchor.js
 create mode 100644 node_modules/core-js/features/string/at.js
 create mode 100644 node_modules/core-js/features/string/big.js
 create mode 100644 node_modules/core-js/features/string/blink.js
 create mode 100644 node_modules/core-js/features/string/bold.js
 create mode 100644 node_modules/core-js/features/string/code-point-at.js
 create mode 100644 node_modules/core-js/features/string/code-points.js
 create mode 100644 node_modules/core-js/features/string/cooked.js
 create mode 100644 node_modules/core-js/features/string/dedent.js
 create mode 100644 node_modules/core-js/features/string/ends-with.js
 create mode 100644 node_modules/core-js/features/string/fixed.js
 create mode 100644 node_modules/core-js/features/string/fontcolor.js
 create mode 100644 node_modules/core-js/features/string/fontsize.js
 create mode 100644 node_modules/core-js/features/string/from-code-point.js
 create mode 100644 node_modules/core-js/features/string/includes.js
 create mode 100644 node_modules/core-js/features/string/index.js
 create mode 100644 node_modules/core-js/features/string/is-well-formed.js
 create mode 100644 node_modules/core-js/features/string/italics.js
 create mode 100644 node_modules/core-js/features/string/iterator.js
 create mode 100644 node_modules/core-js/features/string/link.js
 create mode 100644 node_modules/core-js/features/string/match-all.js
 create mode 100644 node_modules/core-js/features/string/match.js
 create mode 100644 node_modules/core-js/features/string/pad-end.js
 create mode 100644 node_modules/core-js/features/string/pad-start.js
 create mode 100644 node_modules/core-js/features/string/raw.js
 create mode 100644 node_modules/core-js/features/string/repeat.js
 create mode 100644 node_modules/core-js/features/string/replace-all.js
 create mode 100644 node_modules/core-js/features/string/replace.js
 create mode 100644 node_modules/core-js/features/string/search.js
 create mode 100644 node_modules/core-js/features/string/small.js
 create mode 100644 node_modules/core-js/features/string/split.js
 create mode 100644 node_modules/core-js/features/string/starts-with.js
 create mode 100644 node_modules/core-js/features/string/strike.js
 create mode 100644 node_modules/core-js/features/string/sub.js
 create mode 100644 node_modules/core-js/features/string/substr.js
 create mode 100644 node_modules/core-js/features/string/sup.js
 create mode 100644 node_modules/core-js/features/string/to-well-formed.js
 create mode 100644 node_modules/core-js/features/string/trim-end.js
 create mode 100644 node_modules/core-js/features/string/trim-left.js
 create mode 100644 node_modules/core-js/features/string/trim-right.js
 create mode 100644 node_modules/core-js/features/string/trim-start.js
 create mode 100644 node_modules/core-js/features/string/trim.js
 create mode 100644 node_modules/core-js/features/string/virtual/anchor.js
 create mode 100644 node_modules/core-js/features/string/virtual/at.js
 create mode 100644 node_modules/core-js/features/string/virtual/big.js
 create mode 100644 node_modules/core-js/features/string/virtual/blink.js
 create mode 100644 node_modules/core-js/features/string/virtual/bold.js
 create mode 100644 node_modules/core-js/features/string/virtual/code-point-at.js
 create mode 100644 node_modules/core-js/features/string/virtual/code-points.js
 create mode 100644 node_modules/core-js/features/string/virtual/ends-with.js
 create mode 100644 node_modules/core-js/features/string/virtual/fixed.js
 create mode 100644 node_modules/core-js/features/string/virtual/fontcolor.js
 create mode 100644 node_modules/core-js/features/string/virtual/fontsize.js
 create mode 100644 node_modules/core-js/features/string/virtual/includes.js
 create mode 100644 node_modules/core-js/features/string/virtual/index.js
 create mode 100644 node_modules/core-js/features/string/virtual/is-well-formed.js
 create mode 100644 node_modules/core-js/features/string/virtual/italics.js
 create mode 100644 node_modules/core-js/features/string/virtual/iterator.js
 create mode 100644 node_modules/core-js/features/string/virtual/link.js
 create mode 100644 node_modules/core-js/features/string/virtual/match-all.js
 create mode 100644 node_modules/core-js/features/string/virtual/pad-end.js
 create mode 100644 node_modules/core-js/features/string/virtual/pad-start.js
 create mode 100644 node_modules/core-js/features/string/virtual/repeat.js
 create mode 100644 node_modules/core-js/features/string/virtual/replace-all.js
 create mode 100644 node_modules/core-js/features/string/virtual/small.js
 create mode 100644 node_modules/core-js/features/string/virtual/starts-with.js
 create mode 100644 node_modules/core-js/features/string/virtual/strike.js
 create mode 100644 node_modules/core-js/features/string/virtual/sub.js
 create mode 100644 node_modules/core-js/features/string/virtual/substr.js
 create mode 100644 node_modules/core-js/features/string/virtual/sup.js
 create mode 100644 node_modules/core-js/features/string/virtual/to-well-formed.js
 create mode 100644 node_modules/core-js/features/string/virtual/trim-end.js
 create mode 100644 node_modules/core-js/features/string/virtual/trim-left.js
 create mode 100644 node_modules/core-js/features/string/virtual/trim-right.js
 create mode 100644 node_modules/core-js/features/string/virtual/trim-start.js
 create mode 100644 node_modules/core-js/features/string/virtual/trim.js
 create mode 100644 node_modules/core-js/features/structured-clone.js
 create mode 100644 node_modules/core-js/features/suppressed-error.js
 create mode 100644 node_modules/core-js/features/symbol/async-dispose.js
 create mode 100644 node_modules/core-js/features/symbol/async-iterator.js
 create mode 100644 node_modules/core-js/features/symbol/custom-matcher.js
 create mode 100644 node_modules/core-js/features/symbol/description.js
 create mode 100644 node_modules/core-js/features/symbol/dispose.js
 create mode 100644 node_modules/core-js/features/symbol/for.js
 create mode 100644 node_modules/core-js/features/symbol/has-instance.js
 create mode 100644 node_modules/core-js/features/symbol/index.js
 create mode 100644 node_modules/core-js/features/symbol/is-concat-spreadable.js
 create mode 100644 node_modules/core-js/features/symbol/is-registered-symbol.js
 create mode 100644 node_modules/core-js/features/symbol/is-registered.js
 create mode 100644 node_modules/core-js/features/symbol/is-well-known-symbol.js
 create mode 100644 node_modules/core-js/features/symbol/is-well-known.js
 create mode 100644 node_modules/core-js/features/symbol/iterator.js
 create mode 100644 node_modules/core-js/features/symbol/key-for.js
 create mode 100644 node_modules/core-js/features/symbol/match-all.js
 create mode 100644 node_modules/core-js/features/symbol/match.js
 create mode 100644 node_modules/core-js/features/symbol/matcher.js
 create mode 100644 node_modules/core-js/features/symbol/metadata-key.js
 create mode 100644 node_modules/core-js/features/symbol/metadata.js
 create mode 100644 node_modules/core-js/features/symbol/observable.js
 create mode 100644 node_modules/core-js/features/symbol/pattern-match.js
 create mode 100644 node_modules/core-js/features/symbol/replace-all.js
 create mode 100644 node_modules/core-js/features/symbol/replace.js
 create mode 100644 node_modules/core-js/features/symbol/search.js
 create mode 100644 node_modules/core-js/features/symbol/species.js
 create mode 100644 node_modules/core-js/features/symbol/split.js
 create mode 100644 node_modules/core-js/features/symbol/to-primitive.js
 create mode 100644 node_modules/core-js/features/symbol/to-string-tag.js
 create mode 100644 node_modules/core-js/features/symbol/unscopables.js
 create mode 100644 node_modules/core-js/features/typed-array/at.js
 create mode 100644 node_modules/core-js/features/typed-array/copy-within.js
 create mode 100644 node_modules/core-js/features/typed-array/entries.js
 create mode 100644 node_modules/core-js/features/typed-array/every.js
 create mode 100644 node_modules/core-js/features/typed-array/fill.js
 create mode 100644 node_modules/core-js/features/typed-array/filter-out.js
 create mode 100644 node_modules/core-js/features/typed-array/filter-reject.js
 create mode 100644 node_modules/core-js/features/typed-array/filter.js
 create mode 100644 node_modules/core-js/features/typed-array/find-index.js
 create mode 100644 node_modules/core-js/features/typed-array/find-last-index.js
 create mode 100644 node_modules/core-js/features/typed-array/find-last.js
 create mode 100644 node_modules/core-js/features/typed-array/find.js
 create mode 100644 node_modules/core-js/features/typed-array/float32-array.js
 create mode 100644 node_modules/core-js/features/typed-array/float64-array.js
 create mode 100644 node_modules/core-js/features/typed-array/for-each.js
 create mode 100644 node_modules/core-js/features/typed-array/from-async.js
 create mode 100644 node_modules/core-js/features/typed-array/from-base64.js
 create mode 100644 node_modules/core-js/features/typed-array/from-hex.js
 create mode 100644 node_modules/core-js/features/typed-array/from.js
 create mode 100644 node_modules/core-js/features/typed-array/group-by.js
 create mode 100644 node_modules/core-js/features/typed-array/includes.js
 create mode 100644 node_modules/core-js/features/typed-array/index-of.js
 create mode 100644 node_modules/core-js/features/typed-array/index.js
 create mode 100644 node_modules/core-js/features/typed-array/int16-array.js
 create mode 100644 node_modules/core-js/features/typed-array/int32-array.js
 create mode 100644 node_modules/core-js/features/typed-array/int8-array.js
 create mode 100644 node_modules/core-js/features/typed-array/iterator.js
 create mode 100644 node_modules/core-js/features/typed-array/join.js
 create mode 100644 node_modules/core-js/features/typed-array/keys.js
 create mode 100644 node_modules/core-js/features/typed-array/last-index-of.js
 create mode 100644 node_modules/core-js/features/typed-array/map.js
 create mode 100644 node_modules/core-js/features/typed-array/methods.js
 create mode 100644 node_modules/core-js/features/typed-array/of.js
 create mode 100644 node_modules/core-js/features/typed-array/reduce-right.js
 create mode 100644 node_modules/core-js/features/typed-array/reduce.js
 create mode 100644 node_modules/core-js/features/typed-array/reverse.js
 create mode 100644 node_modules/core-js/features/typed-array/set-from-base64.js
 create mode 100644 node_modules/core-js/features/typed-array/set-from-hex.js
 create mode 100644 node_modules/core-js/features/typed-array/set.js
 create mode 100644 node_modules/core-js/features/typed-array/slice.js
 create mode 100644 node_modules/core-js/features/typed-array/some.js
 create mode 100644 node_modules/core-js/features/typed-array/sort.js
 create mode 100644 node_modules/core-js/features/typed-array/subarray.js
 create mode 100644 node_modules/core-js/features/typed-array/to-base64.js
 create mode 100644 node_modules/core-js/features/typed-array/to-hex.js
 create mode 100644 node_modules/core-js/features/typed-array/to-locale-string.js
 create mode 100644 node_modules/core-js/features/typed-array/to-reversed.js
 create mode 100644 node_modules/core-js/features/typed-array/to-sorted.js
 create mode 100644 node_modules/core-js/features/typed-array/to-spliced.js
 create mode 100644 node_modules/core-js/features/typed-array/to-string.js
 create mode 100644 node_modules/core-js/features/typed-array/uint16-array.js
 create mode 100644 node_modules/core-js/features/typed-array/uint32-array.js
 create mode 100644 node_modules/core-js/features/typed-array/uint8-array.js
 create mode 100644 node_modules/core-js/features/typed-array/uint8-clamped-array.js
 create mode 100644 node_modules/core-js/features/typed-array/unique-by.js
 create mode 100644 node_modules/core-js/features/typed-array/values.js
 create mode 100644 node_modules/core-js/features/typed-array/with.js
 create mode 100644 node_modules/core-js/features/unescape.js
 create mode 100644 node_modules/core-js/features/url-search-params/index.js
 create mode 100644 node_modules/core-js/features/url/can-parse.js
 create mode 100644 node_modules/core-js/features/url/index.js
 create mode 100644 node_modules/core-js/features/url/parse.js
 create mode 100644 node_modules/core-js/features/url/to-json.js
 create mode 100644 node_modules/core-js/features/weak-map/delete-all.js
 create mode 100644 node_modules/core-js/features/weak-map/emplace.js
 create mode 100644 node_modules/core-js/features/weak-map/from.js
 create mode 100644 node_modules/core-js/features/weak-map/get-or-insert-computed.js
 create mode 100644 node_modules/core-js/features/weak-map/get-or-insert.js
 create mode 100644 node_modules/core-js/features/weak-map/index.js
 create mode 100644 node_modules/core-js/features/weak-map/of.js
 create mode 100644 node_modules/core-js/features/weak-map/upsert.js
 create mode 100644 node_modules/core-js/features/weak-set/add-all.js
 create mode 100644 node_modules/core-js/features/weak-set/delete-all.js
 create mode 100644 node_modules/core-js/features/weak-set/from.js
 create mode 100644 node_modules/core-js/features/weak-set/index.js
 create mode 100644 node_modules/core-js/features/weak-set/of.js
 create mode 100644 node_modules/core-js/full/README.md
 create mode 100644 node_modules/core-js/full/aggregate-error.js
 create mode 100644 node_modules/core-js/full/array-buffer/constructor.js
 create mode 100644 node_modules/core-js/full/array-buffer/detached.js
 create mode 100644 node_modules/core-js/full/array-buffer/index.js
 create mode 100644 node_modules/core-js/full/array-buffer/is-view.js
 create mode 100644 node_modules/core-js/full/array-buffer/slice.js
 create mode 100644 node_modules/core-js/full/array-buffer/transfer-to-fixed-length.js
 create mode 100644 node_modules/core-js/full/array-buffer/transfer.js
 create mode 100644 node_modules/core-js/full/array/at.js
 create mode 100644 node_modules/core-js/full/array/concat.js
 create mode 100644 node_modules/core-js/full/array/copy-within.js
 create mode 100644 node_modules/core-js/full/array/entries.js
 create mode 100644 node_modules/core-js/full/array/every.js
 create mode 100644 node_modules/core-js/full/array/fill.js
 create mode 100644 node_modules/core-js/full/array/filter-out.js
 create mode 100644 node_modules/core-js/full/array/filter-reject.js
 create mode 100644 node_modules/core-js/full/array/filter.js
 create mode 100644 node_modules/core-js/full/array/find-index.js
 create mode 100644 node_modules/core-js/full/array/find-last-index.js
 create mode 100644 node_modules/core-js/full/array/find-last.js
 create mode 100644 node_modules/core-js/full/array/find.js
 create mode 100644 node_modules/core-js/full/array/flat-map.js
 create mode 100644 node_modules/core-js/full/array/flat.js
 create mode 100644 node_modules/core-js/full/array/for-each.js
 create mode 100644 node_modules/core-js/full/array/from-async.js
 create mode 100644 node_modules/core-js/full/array/from.js
 create mode 100644 node_modules/core-js/full/array/group-by-to-map.js
 create mode 100644 node_modules/core-js/full/array/group-by.js
 create mode 100644 node_modules/core-js/full/array/group-to-map.js
 create mode 100644 node_modules/core-js/full/array/group.js
 create mode 100644 node_modules/core-js/full/array/includes.js
 create mode 100644 node_modules/core-js/full/array/index-of.js
 create mode 100644 node_modules/core-js/full/array/index.js
 create mode 100644 node_modules/core-js/full/array/is-array.js
 create mode 100644 node_modules/core-js/full/array/is-template-object.js
 create mode 100644 node_modules/core-js/full/array/iterator.js
 create mode 100644 node_modules/core-js/full/array/join.js
 create mode 100644 node_modules/core-js/full/array/keys.js
 create mode 100644 node_modules/core-js/full/array/last-index-of.js
 create mode 100644 node_modules/core-js/full/array/last-index.js
 create mode 100644 node_modules/core-js/full/array/last-item.js
 create mode 100644 node_modules/core-js/full/array/map.js
 create mode 100644 node_modules/core-js/full/array/of.js
 create mode 100644 node_modules/core-js/full/array/push.js
 create mode 100644 node_modules/core-js/full/array/reduce-right.js
 create mode 100644 node_modules/core-js/full/array/reduce.js
 create mode 100644 node_modules/core-js/full/array/reverse.js
 create mode 100644 node_modules/core-js/full/array/slice.js
 create mode 100644 node_modules/core-js/full/array/some.js
 create mode 100644 node_modules/core-js/full/array/sort.js
 create mode 100644 node_modules/core-js/full/array/splice.js
 create mode 100644 node_modules/core-js/full/array/to-reversed.js
 create mode 100644 node_modules/core-js/full/array/to-sorted.js
 create mode 100644 node_modules/core-js/full/array/to-spliced.js
 create mode 100644 node_modules/core-js/full/array/unique-by.js
 create mode 100644 node_modules/core-js/full/array/unshift.js
 create mode 100644 node_modules/core-js/full/array/values.js
 create mode 100644 node_modules/core-js/full/array/virtual/at.js
 create mode 100644 node_modules/core-js/full/array/virtual/concat.js
 create mode 100644 node_modules/core-js/full/array/virtual/copy-within.js
 create mode 100644 node_modules/core-js/full/array/virtual/entries.js
 create mode 100644 node_modules/core-js/full/array/virtual/every.js
 create mode 100644 node_modules/core-js/full/array/virtual/fill.js
 create mode 100644 node_modules/core-js/full/array/virtual/filter-out.js
 create mode 100644 node_modules/core-js/full/array/virtual/filter-reject.js
 create mode 100644 node_modules/core-js/full/array/virtual/filter.js
 create mode 100644 node_modules/core-js/full/array/virtual/find-index.js
 create mode 100644 node_modules/core-js/full/array/virtual/find-last-index.js
 create mode 100644 node_modules/core-js/full/array/virtual/find-last.js
 create mode 100644 node_modules/core-js/full/array/virtual/find.js
 create mode 100644 node_modules/core-js/full/array/virtual/flat-map.js
 create mode 100644 node_modules/core-js/full/array/virtual/flat.js
 create mode 100644 node_modules/core-js/full/array/virtual/for-each.js
 create mode 100644 node_modules/core-js/full/array/virtual/group-by-to-map.js
 create mode 100644 node_modules/core-js/full/array/virtual/group-by.js
 create mode 100644 node_modules/core-js/full/array/virtual/group-to-map.js
 create mode 100644 node_modules/core-js/full/array/virtual/group.js
 create mode 100644 node_modules/core-js/full/array/virtual/includes.js
 create mode 100644 node_modules/core-js/full/array/virtual/index-of.js
 create mode 100644 node_modules/core-js/full/array/virtual/index.js
 create mode 100644 node_modules/core-js/full/array/virtual/iterator.js
 create mode 100644 node_modules/core-js/full/array/virtual/join.js
 create mode 100644 node_modules/core-js/full/array/virtual/keys.js
 create mode 100644 node_modules/core-js/full/array/virtual/last-index-of.js
 create mode 100644 node_modules/core-js/full/array/virtual/map.js
 create mode 100644 node_modules/core-js/full/array/virtual/push.js
 create mode 100644 node_modules/core-js/full/array/virtual/reduce-right.js
 create mode 100644 node_modules/core-js/full/array/virtual/reduce.js
 create mode 100644 node_modules/core-js/full/array/virtual/reverse.js
 create mode 100644 node_modules/core-js/full/array/virtual/slice.js
 create mode 100644 node_modules/core-js/full/array/virtual/some.js
 create mode 100644 node_modules/core-js/full/array/virtual/sort.js
 create mode 100644 node_modules/core-js/full/array/virtual/splice.js
 create mode 100644 node_modules/core-js/full/array/virtual/to-reversed.js
 create mode 100644 node_modules/core-js/full/array/virtual/to-sorted.js
 create mode 100644 node_modules/core-js/full/array/virtual/to-spliced.js
 create mode 100644 node_modules/core-js/full/array/virtual/unique-by.js
 create mode 100644 node_modules/core-js/full/array/virtual/unshift.js
 create mode 100644 node_modules/core-js/full/array/virtual/values.js
 create mode 100644 node_modules/core-js/full/array/virtual/with.js
 create mode 100644 node_modules/core-js/full/array/with.js
 create mode 100644 node_modules/core-js/full/async-disposable-stack/constructor.js
 create mode 100644 node_modules/core-js/full/async-disposable-stack/index.js
 create mode 100644 node_modules/core-js/full/async-iterator/as-indexed-pairs.js
 create mode 100644 node_modules/core-js/full/async-iterator/async-dispose.js
 create mode 100644 node_modules/core-js/full/async-iterator/drop.js
 create mode 100644 node_modules/core-js/full/async-iterator/every.js
 create mode 100644 node_modules/core-js/full/async-iterator/filter.js
 create mode 100644 node_modules/core-js/full/async-iterator/find.js
 create mode 100644 node_modules/core-js/full/async-iterator/flat-map.js
 create mode 100644 node_modules/core-js/full/async-iterator/for-each.js
 create mode 100644 node_modules/core-js/full/async-iterator/from.js
 create mode 100644 node_modules/core-js/full/async-iterator/index.js
 create mode 100644 node_modules/core-js/full/async-iterator/indexed.js
 create mode 100644 node_modules/core-js/full/async-iterator/map.js
 create mode 100644 node_modules/core-js/full/async-iterator/reduce.js
 create mode 100644 node_modules/core-js/full/async-iterator/some.js
 create mode 100644 node_modules/core-js/full/async-iterator/take.js
 create mode 100644 node_modules/core-js/full/async-iterator/to-array.js
 create mode 100644 node_modules/core-js/full/atob.js
 create mode 100644 node_modules/core-js/full/bigint/index.js
 create mode 100644 node_modules/core-js/full/bigint/range.js
 create mode 100644 node_modules/core-js/full/btoa.js
 create mode 100644 node_modules/core-js/full/clear-immediate.js
 create mode 100644 node_modules/core-js/full/composite-key.js
 create mode 100644 node_modules/core-js/full/composite-symbol.js
 create mode 100644 node_modules/core-js/full/data-view/get-float16.js
 create mode 100644 node_modules/core-js/full/data-view/get-uint8-clamped.js
 create mode 100644 node_modules/core-js/full/data-view/index.js
 create mode 100644 node_modules/core-js/full/data-view/set-float16.js
 create mode 100644 node_modules/core-js/full/data-view/set-uint8-clamped.js
 create mode 100644 node_modules/core-js/full/date/get-year.js
 create mode 100644 node_modules/core-js/full/date/index.js
 create mode 100644 node_modules/core-js/full/date/now.js
 create mode 100644 node_modules/core-js/full/date/set-year.js
 create mode 100644 node_modules/core-js/full/date/to-gmt-string.js
 create mode 100644 node_modules/core-js/full/date/to-iso-string.js
 create mode 100644 node_modules/core-js/full/date/to-json.js
 create mode 100644 node_modules/core-js/full/date/to-primitive.js
 create mode 100644 node_modules/core-js/full/date/to-string.js
 create mode 100644 node_modules/core-js/full/disposable-stack/constructor.js
 create mode 100644 node_modules/core-js/full/disposable-stack/index.js
 create mode 100644 node_modules/core-js/full/dom-collections/for-each.js
 create mode 100644 node_modules/core-js/full/dom-collections/index.js
 create mode 100644 node_modules/core-js/full/dom-collections/iterator.js
 create mode 100644 node_modules/core-js/full/dom-exception/constructor.js
 create mode 100644 node_modules/core-js/full/dom-exception/index.js
 create mode 100644 node_modules/core-js/full/dom-exception/to-string-tag.js
 create mode 100644 node_modules/core-js/full/error/constructor.js
 create mode 100644 node_modules/core-js/full/error/index.js
 create mode 100644 node_modules/core-js/full/error/is-error.js
 create mode 100644 node_modules/core-js/full/error/to-string.js
 create mode 100644 node_modules/core-js/full/escape.js
 create mode 100644 node_modules/core-js/full/function/bind.js
 create mode 100644 node_modules/core-js/full/function/demethodize.js
 create mode 100644 node_modules/core-js/full/function/has-instance.js
 create mode 100644 node_modules/core-js/full/function/index.js
 create mode 100644 node_modules/core-js/full/function/is-callable.js
 create mode 100644 node_modules/core-js/full/function/is-constructor.js
 create mode 100644 node_modules/core-js/full/function/metadata.js
 create mode 100644 node_modules/core-js/full/function/name.js
 create mode 100644 node_modules/core-js/full/function/un-this.js
 create mode 100644 node_modules/core-js/full/function/virtual/bind.js
 create mode 100644 node_modules/core-js/full/function/virtual/demethodize.js
 create mode 100644 node_modules/core-js/full/function/virtual/index.js
 create mode 100644 node_modules/core-js/full/function/virtual/un-this.js
 create mode 100644 node_modules/core-js/full/get-iterator-method.js
 create mode 100644 node_modules/core-js/full/get-iterator.js
 create mode 100644 node_modules/core-js/full/global-this.js
 create mode 100644 node_modules/core-js/full/index.js
 create mode 100644 node_modules/core-js/full/instance/at.js
 create mode 100644 node_modules/core-js/full/instance/bind.js
 create mode 100644 node_modules/core-js/full/instance/code-point-at.js
 create mode 100644 node_modules/core-js/full/instance/code-points.js
 create mode 100644 node_modules/core-js/full/instance/concat.js
 create mode 100644 node_modules/core-js/full/instance/copy-within.js
 create mode 100644 node_modules/core-js/full/instance/demethodize.js
 create mode 100644 node_modules/core-js/full/instance/ends-with.js
 create mode 100644 node_modules/core-js/full/instance/entries.js
 create mode 100644 node_modules/core-js/full/instance/every.js
 create mode 100644 node_modules/core-js/full/instance/fill.js
 create mode 100644 node_modules/core-js/full/instance/filter-out.js
 create mode 100644 node_modules/core-js/full/instance/filter-reject.js
 create mode 100644 node_modules/core-js/full/instance/filter.js
 create mode 100644 node_modules/core-js/full/instance/find-index.js
 create mode 100644 node_modules/core-js/full/instance/find-last-index.js
 create mode 100644 node_modules/core-js/full/instance/find-last.js
 create mode 100644 node_modules/core-js/full/instance/find.js
 create mode 100644 node_modules/core-js/full/instance/flags.js
 create mode 100644 node_modules/core-js/full/instance/flat-map.js
 create mode 100644 node_modules/core-js/full/instance/flat.js
 create mode 100644 node_modules/core-js/full/instance/for-each.js
 create mode 100644 node_modules/core-js/full/instance/group-by-to-map.js
 create mode 100644 node_modules/core-js/full/instance/group-by.js
 create mode 100644 node_modules/core-js/full/instance/group-to-map.js
 create mode 100644 node_modules/core-js/full/instance/group.js
 create mode 100644 node_modules/core-js/full/instance/includes.js
 create mode 100644 node_modules/core-js/full/instance/index-of.js
 create mode 100644 node_modules/core-js/full/instance/is-well-formed.js
 create mode 100644 node_modules/core-js/full/instance/keys.js
 create mode 100644 node_modules/core-js/full/instance/last-index-of.js
 create mode 100644 node_modules/core-js/full/instance/map.js
 create mode 100644 node_modules/core-js/full/instance/match-all.js
 create mode 100644 node_modules/core-js/full/instance/pad-end.js
 create mode 100644 node_modules/core-js/full/instance/pad-start.js
 create mode 100644 node_modules/core-js/full/instance/push.js
 create mode 100644 node_modules/core-js/full/instance/reduce-right.js
 create mode 100644 node_modules/core-js/full/instance/reduce.js
 create mode 100644 node_modules/core-js/full/instance/repeat.js
 create mode 100644 node_modules/core-js/full/instance/replace-all.js
 create mode 100644 node_modules/core-js/full/instance/reverse.js
 create mode 100644 node_modules/core-js/full/instance/slice.js
 create mode 100644 node_modules/core-js/full/instance/some.js
 create mode 100644 node_modules/core-js/full/instance/sort.js
 create mode 100644 node_modules/core-js/full/instance/splice.js
 create mode 100644 node_modules/core-js/full/instance/starts-with.js
 create mode 100644 node_modules/core-js/full/instance/to-reversed.js
 create mode 100644 node_modules/core-js/full/instance/to-sorted.js
 create mode 100644 node_modules/core-js/full/instance/to-spliced.js
 create mode 100644 node_modules/core-js/full/instance/to-well-formed.js
 create mode 100644 node_modules/core-js/full/instance/trim-end.js
 create mode 100644 node_modules/core-js/full/instance/trim-left.js
 create mode 100644 node_modules/core-js/full/instance/trim-right.js
 create mode 100644 node_modules/core-js/full/instance/trim-start.js
 create mode 100644 node_modules/core-js/full/instance/trim.js
 create mode 100644 node_modules/core-js/full/instance/un-this.js
 create mode 100644 node_modules/core-js/full/instance/unique-by.js
 create mode 100644 node_modules/core-js/full/instance/unshift.js
 create mode 100644 node_modules/core-js/full/instance/values.js
 create mode 100644 node_modules/core-js/full/instance/with.js
 create mode 100644 node_modules/core-js/full/is-iterable.js
 create mode 100644 node_modules/core-js/full/iterator/as-indexed-pairs.js
 create mode 100644 node_modules/core-js/full/iterator/concat.js
 create mode 100644 node_modules/core-js/full/iterator/dispose.js
 create mode 100644 node_modules/core-js/full/iterator/drop.js
 create mode 100644 node_modules/core-js/full/iterator/every.js
 create mode 100644 node_modules/core-js/full/iterator/filter.js
 create mode 100644 node_modules/core-js/full/iterator/find.js
 create mode 100644 node_modules/core-js/full/iterator/flat-map.js
 create mode 100644 node_modules/core-js/full/iterator/for-each.js
 create mode 100644 node_modules/core-js/full/iterator/from.js
 create mode 100644 node_modules/core-js/full/iterator/index.js
 create mode 100644 node_modules/core-js/full/iterator/indexed.js
 create mode 100644 node_modules/core-js/full/iterator/map.js
 create mode 100644 node_modules/core-js/full/iterator/range.js
 create mode 100644 node_modules/core-js/full/iterator/reduce.js
 create mode 100644 node_modules/core-js/full/iterator/some.js
 create mode 100644 node_modules/core-js/full/iterator/take.js
 create mode 100644 node_modules/core-js/full/iterator/to-array.js
 create mode 100644 node_modules/core-js/full/iterator/to-async.js
 create mode 100644 node_modules/core-js/full/json/index.js
 create mode 100644 node_modules/core-js/full/json/is-raw-json.js
 create mode 100644 node_modules/core-js/full/json/parse.js
 create mode 100644 node_modules/core-js/full/json/raw-json.js
 create mode 100644 node_modules/core-js/full/json/stringify.js
 create mode 100644 node_modules/core-js/full/json/to-string-tag.js
 create mode 100644 node_modules/core-js/full/map/delete-all.js
 create mode 100644 node_modules/core-js/full/map/emplace.js
 create mode 100644 node_modules/core-js/full/map/every.js
 create mode 100644 node_modules/core-js/full/map/filter.js
 create mode 100644 node_modules/core-js/full/map/find-key.js
 create mode 100644 node_modules/core-js/full/map/find.js
 create mode 100644 node_modules/core-js/full/map/from.js
 create mode 100644 node_modules/core-js/full/map/get-or-insert-computed.js
 create mode 100644 node_modules/core-js/full/map/get-or-insert.js
 create mode 100644 node_modules/core-js/full/map/group-by.js
 create mode 100644 node_modules/core-js/full/map/includes.js
 create mode 100644 node_modules/core-js/full/map/index.js
 create mode 100644 node_modules/core-js/full/map/key-by.js
 create mode 100644 node_modules/core-js/full/map/key-of.js
 create mode 100644 node_modules/core-js/full/map/map-keys.js
 create mode 100644 node_modules/core-js/full/map/map-values.js
 create mode 100644 node_modules/core-js/full/map/merge.js
 create mode 100644 node_modules/core-js/full/map/of.js
 create mode 100644 node_modules/core-js/full/map/reduce.js
 create mode 100644 node_modules/core-js/full/map/some.js
 create mode 100644 node_modules/core-js/full/map/update-or-insert.js
 create mode 100644 node_modules/core-js/full/map/update.js
 create mode 100644 node_modules/core-js/full/map/upsert.js
 create mode 100644 node_modules/core-js/full/math/acosh.js
 create mode 100644 node_modules/core-js/full/math/asinh.js
 create mode 100644 node_modules/core-js/full/math/atanh.js
 create mode 100644 node_modules/core-js/full/math/cbrt.js
 create mode 100644 node_modules/core-js/full/math/clamp.js
 create mode 100644 node_modules/core-js/full/math/clz32.js
 create mode 100644 node_modules/core-js/full/math/cosh.js
 create mode 100644 node_modules/core-js/full/math/deg-per-rad.js
 create mode 100644 node_modules/core-js/full/math/degrees.js
 create mode 100644 node_modules/core-js/full/math/expm1.js
 create mode 100644 node_modules/core-js/full/math/f16round.js
 create mode 100644 node_modules/core-js/full/math/fround.js
 create mode 100644 node_modules/core-js/full/math/fscale.js
 create mode 100644 node_modules/core-js/full/math/hypot.js
 create mode 100644 node_modules/core-js/full/math/iaddh.js
 create mode 100644 node_modules/core-js/full/math/imul.js
 create mode 100644 node_modules/core-js/full/math/imulh.js
 create mode 100644 node_modules/core-js/full/math/index.js
 create mode 100644 node_modules/core-js/full/math/isubh.js
 create mode 100644 node_modules/core-js/full/math/log10.js
 create mode 100644 node_modules/core-js/full/math/log1p.js
 create mode 100644 node_modules/core-js/full/math/log2.js
 create mode 100644 node_modules/core-js/full/math/rad-per-deg.js
 create mode 100644 node_modules/core-js/full/math/radians.js
 create mode 100644 node_modules/core-js/full/math/scale.js
 create mode 100644 node_modules/core-js/full/math/seeded-prng.js
 create mode 100644 node_modules/core-js/full/math/sign.js
 create mode 100644 node_modules/core-js/full/math/signbit.js
 create mode 100644 node_modules/core-js/full/math/sinh.js
 create mode 100644 node_modules/core-js/full/math/sum-precise.js
 create mode 100644 node_modules/core-js/full/math/tanh.js
 create mode 100644 node_modules/core-js/full/math/to-string-tag.js
 create mode 100644 node_modules/core-js/full/math/trunc.js
 create mode 100644 node_modules/core-js/full/math/umulh.js
 create mode 100644 node_modules/core-js/full/number/constructor.js
 create mode 100644 node_modules/core-js/full/number/epsilon.js
 create mode 100644 node_modules/core-js/full/number/from-string.js
 create mode 100644 node_modules/core-js/full/number/index.js
 create mode 100644 node_modules/core-js/full/number/is-finite.js
 create mode 100644 node_modules/core-js/full/number/is-integer.js
 create mode 100644 node_modules/core-js/full/number/is-nan.js
 create mode 100644 node_modules/core-js/full/number/is-safe-integer.js
 create mode 100644 node_modules/core-js/full/number/max-safe-integer.js
 create mode 100644 node_modules/core-js/full/number/min-safe-integer.js
 create mode 100644 node_modules/core-js/full/number/parse-float.js
 create mode 100644 node_modules/core-js/full/number/parse-int.js
 create mode 100644 node_modules/core-js/full/number/range.js
 create mode 100644 node_modules/core-js/full/number/to-exponential.js
 create mode 100644 node_modules/core-js/full/number/to-fixed.js
 create mode 100644 node_modules/core-js/full/number/to-precision.js
 create mode 100644 node_modules/core-js/full/number/virtual/index.js
 create mode 100644 node_modules/core-js/full/number/virtual/to-exponential.js
 create mode 100644 node_modules/core-js/full/number/virtual/to-fixed.js
 create mode 100644 node_modules/core-js/full/number/virtual/to-precision.js
 create mode 100644 node_modules/core-js/full/object/assign.js
 create mode 100644 node_modules/core-js/full/object/create.js
 create mode 100644 node_modules/core-js/full/object/define-getter.js
 create mode 100644 node_modules/core-js/full/object/define-properties.js
 create mode 100644 node_modules/core-js/full/object/define-property.js
 create mode 100644 node_modules/core-js/full/object/define-setter.js
 create mode 100644 node_modules/core-js/full/object/entries.js
 create mode 100644 node_modules/core-js/full/object/freeze.js
 create mode 100644 node_modules/core-js/full/object/from-entries.js
 create mode 100644 node_modules/core-js/full/object/get-own-property-descriptor.js
 create mode 100644 node_modules/core-js/full/object/get-own-property-descriptors.js
 create mode 100644 node_modules/core-js/full/object/get-own-property-names.js
 create mode 100644 node_modules/core-js/full/object/get-own-property-symbols.js
 create mode 100644 node_modules/core-js/full/object/get-prototype-of.js
 create mode 100644 node_modules/core-js/full/object/group-by.js
 create mode 100644 node_modules/core-js/full/object/has-own.js
 create mode 100644 node_modules/core-js/full/object/index.js
 create mode 100644 node_modules/core-js/full/object/is-extensible.js
 create mode 100644 node_modules/core-js/full/object/is-frozen.js
 create mode 100644 node_modules/core-js/full/object/is-sealed.js
 create mode 100644 node_modules/core-js/full/object/is.js
 create mode 100644 node_modules/core-js/full/object/iterate-entries.js
 create mode 100644 node_modules/core-js/full/object/iterate-keys.js
 create mode 100644 node_modules/core-js/full/object/iterate-values.js
 create mode 100644 node_modules/core-js/full/object/keys.js
 create mode 100644 node_modules/core-js/full/object/lookup-getter.js
 create mode 100644 node_modules/core-js/full/object/lookup-setter.js
 create mode 100644 node_modules/core-js/full/object/prevent-extensions.js
 create mode 100644 node_modules/core-js/full/object/proto.js
 create mode 100644 node_modules/core-js/full/object/seal.js
 create mode 100644 node_modules/core-js/full/object/set-prototype-of.js
 create mode 100644 node_modules/core-js/full/object/to-string.js
 create mode 100644 node_modules/core-js/full/object/values.js
 create mode 100644 node_modules/core-js/full/observable/index.js
 create mode 100644 node_modules/core-js/full/parse-float.js
 create mode 100644 node_modules/core-js/full/parse-int.js
 create mode 100644 node_modules/core-js/full/promise/all-settled.js
 create mode 100644 node_modules/core-js/full/promise/any.js
 create mode 100644 node_modules/core-js/full/promise/finally.js
 create mode 100644 node_modules/core-js/full/promise/index.js
 create mode 100644 node_modules/core-js/full/promise/try.js
 create mode 100644 node_modules/core-js/full/promise/with-resolvers.js
 create mode 100644 node_modules/core-js/full/queue-microtask.js
 create mode 100644 node_modules/core-js/full/reflect/apply.js
 create mode 100644 node_modules/core-js/full/reflect/construct.js
 create mode 100644 node_modules/core-js/full/reflect/define-metadata.js
 create mode 100644 node_modules/core-js/full/reflect/define-property.js
 create mode 100644 node_modules/core-js/full/reflect/delete-metadata.js
 create mode 100644 node_modules/core-js/full/reflect/delete-property.js
 create mode 100644 node_modules/core-js/full/reflect/get-metadata-keys.js
 create mode 100644 node_modules/core-js/full/reflect/get-metadata.js
 create mode 100644 node_modules/core-js/full/reflect/get-own-metadata-keys.js
 create mode 100644 node_modules/core-js/full/reflect/get-own-metadata.js
 create mode 100644 node_modules/core-js/full/reflect/get-own-property-descriptor.js
 create mode 100644 node_modules/core-js/full/reflect/get-prototype-of.js
 create mode 100644 node_modules/core-js/full/reflect/get.js
 create mode 100644 node_modules/core-js/full/reflect/has-metadata.js
 create mode 100644 node_modules/core-js/full/reflect/has-own-metadata.js
 create mode 100644 node_modules/core-js/full/reflect/has.js
 create mode 100644 node_modules/core-js/full/reflect/index.js
 create mode 100644 node_modules/core-js/full/reflect/is-extensible.js
 create mode 100644 node_modules/core-js/full/reflect/metadata.js
 create mode 100644 node_modules/core-js/full/reflect/own-keys.js
 create mode 100644 node_modules/core-js/full/reflect/prevent-extensions.js
 create mode 100644 node_modules/core-js/full/reflect/set-prototype-of.js
 create mode 100644 node_modules/core-js/full/reflect/set.js
 create mode 100644 node_modules/core-js/full/reflect/to-string-tag.js
 create mode 100644 node_modules/core-js/full/regexp/constructor.js
 create mode 100644 node_modules/core-js/full/regexp/dot-all.js
 create mode 100644 node_modules/core-js/full/regexp/escape.js
 create mode 100644 node_modules/core-js/full/regexp/flags.js
 create mode 100644 node_modules/core-js/full/regexp/index.js
 create mode 100644 node_modules/core-js/full/regexp/match.js
 create mode 100644 node_modules/core-js/full/regexp/replace.js
 create mode 100644 node_modules/core-js/full/regexp/search.js
 create mode 100644 node_modules/core-js/full/regexp/split.js
 create mode 100644 node_modules/core-js/full/regexp/sticky.js
 create mode 100644 node_modules/core-js/full/regexp/test.js
 create mode 100644 node_modules/core-js/full/regexp/to-string.js
 create mode 100644 node_modules/core-js/full/self.js
 create mode 100644 node_modules/core-js/full/set-immediate.js
 create mode 100644 node_modules/core-js/full/set-interval.js
 create mode 100644 node_modules/core-js/full/set-timeout.js
 create mode 100644 node_modules/core-js/full/set/add-all.js
 create mode 100644 node_modules/core-js/full/set/delete-all.js
 create mode 100644 node_modules/core-js/full/set/difference.js
 create mode 100644 node_modules/core-js/full/set/every.js
 create mode 100644 node_modules/core-js/full/set/filter.js
 create mode 100644 node_modules/core-js/full/set/find.js
 create mode 100644 node_modules/core-js/full/set/from.js
 create mode 100644 node_modules/core-js/full/set/index.js
 create mode 100644 node_modules/core-js/full/set/intersection.js
 create mode 100644 node_modules/core-js/full/set/is-disjoint-from.js
 create mode 100644 node_modules/core-js/full/set/is-subset-of.js
 create mode 100644 node_modules/core-js/full/set/is-superset-of.js
 create mode 100644 node_modules/core-js/full/set/join.js
 create mode 100644 node_modules/core-js/full/set/map.js
 create mode 100644 node_modules/core-js/full/set/of.js
 create mode 100644 node_modules/core-js/full/set/reduce.js
 create mode 100644 node_modules/core-js/full/set/some.js
 create mode 100644 node_modules/core-js/full/set/symmetric-difference.js
 create mode 100644 node_modules/core-js/full/set/union.js
 create mode 100644 node_modules/core-js/full/string/anchor.js
 create mode 100644 node_modules/core-js/full/string/at.js
 create mode 100644 node_modules/core-js/full/string/big.js
 create mode 100644 node_modules/core-js/full/string/blink.js
 create mode 100644 node_modules/core-js/full/string/bold.js
 create mode 100644 node_modules/core-js/full/string/code-point-at.js
 create mode 100644 node_modules/core-js/full/string/code-points.js
 create mode 100644 node_modules/core-js/full/string/cooked.js
 create mode 100644 node_modules/core-js/full/string/dedent.js
 create mode 100644 node_modules/core-js/full/string/ends-with.js
 create mode 100644 node_modules/core-js/full/string/fixed.js
 create mode 100644 node_modules/core-js/full/string/fontcolor.js
 create mode 100644 node_modules/core-js/full/string/fontsize.js
 create mode 100644 node_modules/core-js/full/string/from-code-point.js
 create mode 100644 node_modules/core-js/full/string/includes.js
 create mode 100644 node_modules/core-js/full/string/index.js
 create mode 100644 node_modules/core-js/full/string/is-well-formed.js
 create mode 100644 node_modules/core-js/full/string/italics.js
 create mode 100644 node_modules/core-js/full/string/iterator.js
 create mode 100644 node_modules/core-js/full/string/link.js
 create mode 100644 node_modules/core-js/full/string/match-all.js
 create mode 100644 node_modules/core-js/full/string/match.js
 create mode 100644 node_modules/core-js/full/string/pad-end.js
 create mode 100644 node_modules/core-js/full/string/pad-start.js
 create mode 100644 node_modules/core-js/full/string/raw.js
 create mode 100644 node_modules/core-js/full/string/repeat.js
 create mode 100644 node_modules/core-js/full/string/replace-all.js
 create mode 100644 node_modules/core-js/full/string/replace.js
 create mode 100644 node_modules/core-js/full/string/search.js
 create mode 100644 node_modules/core-js/full/string/small.js
 create mode 100644 node_modules/core-js/full/string/split.js
 create mode 100644 node_modules/core-js/full/string/starts-with.js
 create mode 100644 node_modules/core-js/full/string/strike.js
 create mode 100644 node_modules/core-js/full/string/sub.js
 create mode 100644 node_modules/core-js/full/string/substr.js
 create mode 100644 node_modules/core-js/full/string/sup.js
 create mode 100644 node_modules/core-js/full/string/to-well-formed.js
 create mode 100644 node_modules/core-js/full/string/trim-end.js
 create mode 100644 node_modules/core-js/full/string/trim-left.js
 create mode 100644 node_modules/core-js/full/string/trim-right.js
 create mode 100644 node_modules/core-js/full/string/trim-start.js
 create mode 100644 node_modules/core-js/full/string/trim.js
 create mode 100644 node_modules/core-js/full/string/virtual/anchor.js
 create mode 100644 node_modules/core-js/full/string/virtual/at.js
 create mode 100644 node_modules/core-js/full/string/virtual/big.js
 create mode 100644 node_modules/core-js/full/string/virtual/blink.js
 create mode 100644 node_modules/core-js/full/string/virtual/bold.js
 create mode 100644 node_modules/core-js/full/string/virtual/code-point-at.js
 create mode 100644 node_modules/core-js/full/string/virtual/code-points.js
 create mode 100644 node_modules/core-js/full/string/virtual/ends-with.js
 create mode 100644 node_modules/core-js/full/string/virtual/fixed.js
 create mode 100644 node_modules/core-js/full/string/virtual/fontcolor.js
 create mode 100644 node_modules/core-js/full/string/virtual/fontsize.js
 create mode 100644 node_modules/core-js/full/string/virtual/includes.js
 create mode 100644 node_modules/core-js/full/string/virtual/index.js
 create mode 100644 node_modules/core-js/full/string/virtual/is-well-formed.js
 create mode 100644 node_modules/core-js/full/string/virtual/italics.js
 create mode 100644 node_modules/core-js/full/string/virtual/iterator.js
 create mode 100644 node_modules/core-js/full/string/virtual/link.js
 create mode 100644 node_modules/core-js/full/string/virtual/match-all.js
 create mode 100644 node_modules/core-js/full/string/virtual/pad-end.js
 create mode 100644 node_modules/core-js/full/string/virtual/pad-start.js
 create mode 100644 node_modules/core-js/full/string/virtual/repeat.js
 create mode 100644 node_modules/core-js/full/string/virtual/replace-all.js
 create mode 100644 node_modules/core-js/full/string/virtual/small.js
 create mode 100644 node_modules/core-js/full/string/virtual/starts-with.js
 create mode 100644 node_modules/core-js/full/string/virtual/strike.js
 create mode 100644 node_modules/core-js/full/string/virtual/sub.js
 create mode 100644 node_modules/core-js/full/string/virtual/substr.js
 create mode 100644 node_modules/core-js/full/string/virtual/sup.js
 create mode 100644 node_modules/core-js/full/string/virtual/to-well-formed.js
 create mode 100644 node_modules/core-js/full/string/virtual/trim-end.js
 create mode 100644 node_modules/core-js/full/string/virtual/trim-left.js
 create mode 100644 node_modules/core-js/full/string/virtual/trim-right.js
 create mode 100644 node_modules/core-js/full/string/virtual/trim-start.js
 create mode 100644 node_modules/core-js/full/string/virtual/trim.js
 create mode 100644 node_modules/core-js/full/structured-clone.js
 create mode 100644 node_modules/core-js/full/suppressed-error.js
 create mode 100644 node_modules/core-js/full/symbol/async-dispose.js
 create mode 100644 node_modules/core-js/full/symbol/async-iterator.js
 create mode 100644 node_modules/core-js/full/symbol/custom-matcher.js
 create mode 100644 node_modules/core-js/full/symbol/description.js
 create mode 100644 node_modules/core-js/full/symbol/dispose.js
 create mode 100644 node_modules/core-js/full/symbol/for.js
 create mode 100644 node_modules/core-js/full/symbol/has-instance.js
 create mode 100644 node_modules/core-js/full/symbol/index.js
 create mode 100644 node_modules/core-js/full/symbol/is-concat-spreadable.js
 create mode 100644 node_modules/core-js/full/symbol/is-registered-symbol.js
 create mode 100644 node_modules/core-js/full/symbol/is-registered.js
 create mode 100644 node_modules/core-js/full/symbol/is-well-known-symbol.js
 create mode 100644 node_modules/core-js/full/symbol/is-well-known.js
 create mode 100644 node_modules/core-js/full/symbol/iterator.js
 create mode 100644 node_modules/core-js/full/symbol/key-for.js
 create mode 100644 node_modules/core-js/full/symbol/match-all.js
 create mode 100644 node_modules/core-js/full/symbol/match.js
 create mode 100644 node_modules/core-js/full/symbol/matcher.js
 create mode 100644 node_modules/core-js/full/symbol/metadata-key.js
 create mode 100644 node_modules/core-js/full/symbol/metadata.js
 create mode 100644 node_modules/core-js/full/symbol/observable.js
 create mode 100644 node_modules/core-js/full/symbol/pattern-match.js
 create mode 100644 node_modules/core-js/full/symbol/replace-all.js
 create mode 100644 node_modules/core-js/full/symbol/replace.js
 create mode 100644 node_modules/core-js/full/symbol/search.js
 create mode 100644 node_modules/core-js/full/symbol/species.js
 create mode 100644 node_modules/core-js/full/symbol/split.js
 create mode 100644 node_modules/core-js/full/symbol/to-primitive.js
 create mode 100644 node_modules/core-js/full/symbol/to-string-tag.js
 create mode 100644 node_modules/core-js/full/symbol/unscopables.js
 create mode 100644 node_modules/core-js/full/typed-array/at.js
 create mode 100644 node_modules/core-js/full/typed-array/copy-within.js
 create mode 100644 node_modules/core-js/full/typed-array/entries.js
 create mode 100644 node_modules/core-js/full/typed-array/every.js
 create mode 100644 node_modules/core-js/full/typed-array/fill.js
 create mode 100644 node_modules/core-js/full/typed-array/filter-out.js
 create mode 100644 node_modules/core-js/full/typed-array/filter-reject.js
 create mode 100644 node_modules/core-js/full/typed-array/filter.js
 create mode 100644 node_modules/core-js/full/typed-array/find-index.js
 create mode 100644 node_modules/core-js/full/typed-array/find-last-index.js
 create mode 100644 node_modules/core-js/full/typed-array/find-last.js
 create mode 100644 node_modules/core-js/full/typed-array/find.js
 create mode 100644 node_modules/core-js/full/typed-array/float32-array.js
 create mode 100644 node_modules/core-js/full/typed-array/float64-array.js
 create mode 100644 node_modules/core-js/full/typed-array/for-each.js
 create mode 100644 node_modules/core-js/full/typed-array/from-async.js
 create mode 100644 node_modules/core-js/full/typed-array/from-base64.js
 create mode 100644 node_modules/core-js/full/typed-array/from-hex.js
 create mode 100644 node_modules/core-js/full/typed-array/from.js
 create mode 100644 node_modules/core-js/full/typed-array/group-by.js
 create mode 100644 node_modules/core-js/full/typed-array/includes.js
 create mode 100644 node_modules/core-js/full/typed-array/index-of.js
 create mode 100644 node_modules/core-js/full/typed-array/index.js
 create mode 100644 node_modules/core-js/full/typed-array/int16-array.js
 create mode 100644 node_modules/core-js/full/typed-array/int32-array.js
 create mode 100644 node_modules/core-js/full/typed-array/int8-array.js
 create mode 100644 node_modules/core-js/full/typed-array/iterator.js
 create mode 100644 node_modules/core-js/full/typed-array/join.js
 create mode 100644 node_modules/core-js/full/typed-array/keys.js
 create mode 100644 node_modules/core-js/full/typed-array/last-index-of.js
 create mode 100644 node_modules/core-js/full/typed-array/map.js
 create mode 100644 node_modules/core-js/full/typed-array/methods.js
 create mode 100644 node_modules/core-js/full/typed-array/of.js
 create mode 100644 node_modules/core-js/full/typed-array/reduce-right.js
 create mode 100644 node_modules/core-js/full/typed-array/reduce.js
 create mode 100644 node_modules/core-js/full/typed-array/reverse.js
 create mode 100644 node_modules/core-js/full/typed-array/set-from-base64.js
 create mode 100644 node_modules/core-js/full/typed-array/set-from-hex.js
 create mode 100644 node_modules/core-js/full/typed-array/set.js
 create mode 100644 node_modules/core-js/full/typed-array/slice.js
 create mode 100644 node_modules/core-js/full/typed-array/some.js
 create mode 100644 node_modules/core-js/full/typed-array/sort.js
 create mode 100644 node_modules/core-js/full/typed-array/subarray.js
 create mode 100644 node_modules/core-js/full/typed-array/to-base64.js
 create mode 100644 node_modules/core-js/full/typed-array/to-hex.js
 create mode 100644 node_modules/core-js/full/typed-array/to-locale-string.js
 create mode 100644 node_modules/core-js/full/typed-array/to-reversed.js
 create mode 100644 node_modules/core-js/full/typed-array/to-sorted.js
 create mode 100644 node_modules/core-js/full/typed-array/to-spliced.js
 create mode 100644 node_modules/core-js/full/typed-array/to-string.js
 create mode 100644 node_modules/core-js/full/typed-array/uint16-array.js
 create mode 100644 node_modules/core-js/full/typed-array/uint32-array.js
 create mode 100644 node_modules/core-js/full/typed-array/uint8-array.js
 create mode 100644 node_modules/core-js/full/typed-array/uint8-clamped-array.js
 create mode 100644 node_modules/core-js/full/typed-array/unique-by.js
 create mode 100644 node_modules/core-js/full/typed-array/values.js
 create mode 100644 node_modules/core-js/full/typed-array/with.js
 create mode 100644 node_modules/core-js/full/unescape.js
 create mode 100644 node_modules/core-js/full/url-search-params/index.js
 create mode 100644 node_modules/core-js/full/url/can-parse.js
 create mode 100644 node_modules/core-js/full/url/index.js
 create mode 100644 node_modules/core-js/full/url/parse.js
 create mode 100644 node_modules/core-js/full/url/to-json.js
 create mode 100644 node_modules/core-js/full/weak-map/delete-all.js
 create mode 100644 node_modules/core-js/full/weak-map/emplace.js
 create mode 100644 node_modules/core-js/full/weak-map/from.js
 create mode 100644 node_modules/core-js/full/weak-map/get-or-insert-computed.js
 create mode 100644 node_modules/core-js/full/weak-map/get-or-insert.js
 create mode 100644 node_modules/core-js/full/weak-map/index.js
 create mode 100644 node_modules/core-js/full/weak-map/of.js
 create mode 100644 node_modules/core-js/full/weak-map/upsert.js
 create mode 100644 node_modules/core-js/full/weak-set/add-all.js
 create mode 100644 node_modules/core-js/full/weak-set/delete-all.js
 create mode 100644 node_modules/core-js/full/weak-set/from.js
 create mode 100644 node_modules/core-js/full/weak-set/index.js
 create mode 100644 node_modules/core-js/full/weak-set/of.js
 create mode 100644 node_modules/core-js/index.js
 create mode 100644 node_modules/core-js/internals/README.md
 create mode 100644 node_modules/core-js/internals/a-callable.js
 create mode 100644 node_modules/core-js/internals/a-constructor.js
 create mode 100644 node_modules/core-js/internals/a-data-view.js
 create mode 100644 node_modules/core-js/internals/a-map.js
 create mode 100644 node_modules/core-js/internals/a-number.js
 create mode 100644 node_modules/core-js/internals/a-possible-prototype.js
 create mode 100644 node_modules/core-js/internals/a-set.js
 create mode 100644 node_modules/core-js/internals/a-string.js
 create mode 100644 node_modules/core-js/internals/a-weak-map.js
 create mode 100644 node_modules/core-js/internals/a-weak-set.js
 create mode 100644 node_modules/core-js/internals/add-disposable-resource.js
 create mode 100644 node_modules/core-js/internals/add-to-unscopables.js
 create mode 100644 node_modules/core-js/internals/advance-string-index.js
 create mode 100644 node_modules/core-js/internals/an-instance.js
 create mode 100644 node_modules/core-js/internals/an-object-or-undefined.js
 create mode 100644 node_modules/core-js/internals/an-object.js
 create mode 100644 node_modules/core-js/internals/an-uint8-array.js
 create mode 100644 node_modules/core-js/internals/array-buffer-basic-detection.js
 create mode 100644 node_modules/core-js/internals/array-buffer-byte-length.js
 create mode 100644 node_modules/core-js/internals/array-buffer-is-detached.js
 create mode 100644 node_modules/core-js/internals/array-buffer-non-extensible.js
 create mode 100644 node_modules/core-js/internals/array-buffer-not-detached.js
 create mode 100644 node_modules/core-js/internals/array-buffer-transfer.js
 create mode 100644 node_modules/core-js/internals/array-buffer-view-core.js
 create mode 100644 node_modules/core-js/internals/array-buffer.js
 create mode 100644 node_modules/core-js/internals/array-copy-within.js
 create mode 100644 node_modules/core-js/internals/array-fill.js
 create mode 100644 node_modules/core-js/internals/array-for-each.js
 create mode 100644 node_modules/core-js/internals/array-from-async.js
 create mode 100644 node_modules/core-js/internals/array-from-constructor-and-list.js
 create mode 100644 node_modules/core-js/internals/array-from.js
 create mode 100644 node_modules/core-js/internals/array-group-to-map.js
 create mode 100644 node_modules/core-js/internals/array-group.js
 create mode 100644 node_modules/core-js/internals/array-includes.js
 create mode 100644 node_modules/core-js/internals/array-iteration-from-last.js
 create mode 100644 node_modules/core-js/internals/array-iteration.js
 create mode 100644 node_modules/core-js/internals/array-last-index-of.js
 create mode 100644 node_modules/core-js/internals/array-method-has-species-support.js
 create mode 100644 node_modules/core-js/internals/array-method-is-strict.js
 create mode 100644 node_modules/core-js/internals/array-reduce.js
 create mode 100644 node_modules/core-js/internals/array-set-length.js
 create mode 100644 node_modules/core-js/internals/array-slice.js
 create mode 100644 node_modules/core-js/internals/array-sort.js
 create mode 100644 node_modules/core-js/internals/array-species-constructor.js
 create mode 100644 node_modules/core-js/internals/array-species-create.js
 create mode 100644 node_modules/core-js/internals/array-to-reversed.js
 create mode 100644 node_modules/core-js/internals/array-unique-by.js
 create mode 100644 node_modules/core-js/internals/array-with.js
 create mode 100644 node_modules/core-js/internals/async-from-sync-iterator.js
 create mode 100644 node_modules/core-js/internals/async-iterator-close.js
 create mode 100644 node_modules/core-js/internals/async-iterator-create-proxy.js
 create mode 100644 node_modules/core-js/internals/async-iterator-indexed.js
 create mode 100644 node_modules/core-js/internals/async-iterator-iteration.js
 create mode 100644 node_modules/core-js/internals/async-iterator-map.js
 create mode 100644 node_modules/core-js/internals/async-iterator-prototype.js
 create mode 100644 node_modules/core-js/internals/async-iterator-wrap.js
 create mode 100644 node_modules/core-js/internals/base64-map.js
 create mode 100644 node_modules/core-js/internals/call-with-safe-iteration-closing.js
 create mode 100644 node_modules/core-js/internals/caller.js
 create mode 100644 node_modules/core-js/internals/check-correctness-of-iteration.js
 create mode 100644 node_modules/core-js/internals/classof-raw.js
 create mode 100644 node_modules/core-js/internals/classof.js
 create mode 100644 node_modules/core-js/internals/collection-from.js
 create mode 100644 node_modules/core-js/internals/collection-of.js
 create mode 100644 node_modules/core-js/internals/collection-strong.js
 create mode 100644 node_modules/core-js/internals/collection-weak.js
 create mode 100644 node_modules/core-js/internals/collection.js
 create mode 100644 node_modules/core-js/internals/composite-key.js
 create mode 100644 node_modules/core-js/internals/copy-constructor-properties.js
 create mode 100644 node_modules/core-js/internals/correct-is-regexp-logic.js
 create mode 100644 node_modules/core-js/internals/correct-prototype-getter.js
 create mode 100644 node_modules/core-js/internals/create-html.js
 create mode 100644 node_modules/core-js/internals/create-iter-result-object.js
 create mode 100644 node_modules/core-js/internals/create-non-enumerable-property.js
 create mode 100644 node_modules/core-js/internals/create-property-descriptor.js
 create mode 100644 node_modules/core-js/internals/create-property.js
 create mode 100644 node_modules/core-js/internals/date-to-iso-string.js
 create mode 100644 node_modules/core-js/internals/date-to-primitive.js
 create mode 100644 node_modules/core-js/internals/define-built-in-accessor.js
 create mode 100644 node_modules/core-js/internals/define-built-in.js
 create mode 100644 node_modules/core-js/internals/define-built-ins.js
 create mode 100644 node_modules/core-js/internals/define-global-property.js
 create mode 100644 node_modules/core-js/internals/delete-property-or-throw.js
 create mode 100644 node_modules/core-js/internals/descriptors.js
 create mode 100644 node_modules/core-js/internals/detach-transferable.js
 create mode 100644 node_modules/core-js/internals/document-create-element.js
 create mode 100644 node_modules/core-js/internals/does-not-exceed-safe-integer.js
 create mode 100644 node_modules/core-js/internals/dom-exception-constants.js
 create mode 100644 node_modules/core-js/internals/dom-iterables.js
 create mode 100644 node_modules/core-js/internals/dom-token-list-prototype.js
 create mode 100644 node_modules/core-js/internals/entry-unbind.js
 create mode 100644 node_modules/core-js/internals/entry-virtual.js
 create mode 100644 node_modules/core-js/internals/enum-bug-keys.js
 create mode 100644 node_modules/core-js/internals/environment-ff-version.js
 create mode 100644 node_modules/core-js/internals/environment-is-ie-or-edge.js
 create mode 100644 node_modules/core-js/internals/environment-is-ios-pebble.js
 create mode 100644 node_modules/core-js/internals/environment-is-ios.js
 create mode 100644 node_modules/core-js/internals/environment-is-node.js
 create mode 100644 node_modules/core-js/internals/environment-is-webos-webkit.js
 create mode 100644 node_modules/core-js/internals/environment-user-agent.js
 create mode 100644 node_modules/core-js/internals/environment-v8-version.js
 create mode 100644 node_modules/core-js/internals/environment-webkit-version.js
 create mode 100644 node_modules/core-js/internals/environment.js
 create mode 100644 node_modules/core-js/internals/error-stack-clear.js
 create mode 100644 node_modules/core-js/internals/error-stack-install.js
 create mode 100644 node_modules/core-js/internals/error-stack-installable.js
 create mode 100644 node_modules/core-js/internals/error-to-string.js
 create mode 100644 node_modules/core-js/internals/export.js
 create mode 100644 node_modules/core-js/internals/fails.js
 create mode 100644 node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js
 create mode 100644 node_modules/core-js/internals/flatten-into-array.js
 create mode 100644 node_modules/core-js/internals/freezing.js
 create mode 100644 node_modules/core-js/internals/function-apply.js
 create mode 100644 node_modules/core-js/internals/function-bind-context.js
 create mode 100644 node_modules/core-js/internals/function-bind-native.js
 create mode 100644 node_modules/core-js/internals/function-bind.js
 create mode 100644 node_modules/core-js/internals/function-call.js
 create mode 100644 node_modules/core-js/internals/function-demethodize.js
 create mode 100644 node_modules/core-js/internals/function-name.js
 create mode 100644 node_modules/core-js/internals/function-uncurry-this-accessor.js
 create mode 100644 node_modules/core-js/internals/function-uncurry-this-clause.js
 create mode 100644 node_modules/core-js/internals/function-uncurry-this.js
 create mode 100644 node_modules/core-js/internals/get-alphabet-option.js
 create mode 100644 node_modules/core-js/internals/get-async-iterator-flattenable.js
 create mode 100644 node_modules/core-js/internals/get-async-iterator.js
 create mode 100644 node_modules/core-js/internals/get-built-in-node-module.js
 create mode 100644 node_modules/core-js/internals/get-built-in-prototype-method.js
 create mode 100644 node_modules/core-js/internals/get-built-in.js
 create mode 100644 node_modules/core-js/internals/get-iterator-direct.js
 create mode 100644 node_modules/core-js/internals/get-iterator-flattenable.js
 create mode 100644 node_modules/core-js/internals/get-iterator-method.js
 create mode 100644 node_modules/core-js/internals/get-iterator.js
 create mode 100644 node_modules/core-js/internals/get-json-replacer-function.js
 create mode 100644 node_modules/core-js/internals/get-method.js
 create mode 100644 node_modules/core-js/internals/get-set-record.js
 create mode 100644 node_modules/core-js/internals/get-substitution.js
 create mode 100644 node_modules/core-js/internals/global-this.js
 create mode 100644 node_modules/core-js/internals/has-own-property.js
 create mode 100644 node_modules/core-js/internals/hidden-keys.js
 create mode 100644 node_modules/core-js/internals/host-report-errors.js
 create mode 100644 node_modules/core-js/internals/html.js
 create mode 100644 node_modules/core-js/internals/ie8-dom-define.js
 create mode 100644 node_modules/core-js/internals/ieee754.js
 create mode 100644 node_modules/core-js/internals/indexed-object.js
 create mode 100644 node_modules/core-js/internals/inherit-if-required.js
 create mode 100644 node_modules/core-js/internals/inspect-source.js
 create mode 100644 node_modules/core-js/internals/install-error-cause.js
 create mode 100644 node_modules/core-js/internals/internal-metadata.js
 create mode 100644 node_modules/core-js/internals/internal-state.js
 create mode 100644 node_modules/core-js/internals/is-array-iterator-method.js
 create mode 100644 node_modules/core-js/internals/is-array.js
 create mode 100644 node_modules/core-js/internals/is-big-int-array.js
 create mode 100644 node_modules/core-js/internals/is-callable.js
 create mode 100644 node_modules/core-js/internals/is-constructor.js
 create mode 100644 node_modules/core-js/internals/is-data-descriptor.js
 create mode 100644 node_modules/core-js/internals/is-forced.js
 create mode 100644 node_modules/core-js/internals/is-integral-number.js
 create mode 100644 node_modules/core-js/internals/is-iterable.js
 create mode 100644 node_modules/core-js/internals/is-null-or-undefined.js
 create mode 100644 node_modules/core-js/internals/is-object.js
 create mode 100644 node_modules/core-js/internals/is-possible-prototype.js
 create mode 100644 node_modules/core-js/internals/is-pure.js
 create mode 100644 node_modules/core-js/internals/is-raw-json.js
 create mode 100644 node_modules/core-js/internals/is-regexp.js
 create mode 100644 node_modules/core-js/internals/is-symbol.js
 create mode 100644 node_modules/core-js/internals/iterate-simple.js
 create mode 100644 node_modules/core-js/internals/iterate.js
 create mode 100644 node_modules/core-js/internals/iterator-close.js
 create mode 100644 node_modules/core-js/internals/iterator-create-constructor.js
 create mode 100644 node_modules/core-js/internals/iterator-create-proxy.js
 create mode 100644 node_modules/core-js/internals/iterator-define.js
 create mode 100644 node_modules/core-js/internals/iterator-indexed.js
 create mode 100644 node_modules/core-js/internals/iterator-map.js
 create mode 100644 node_modules/core-js/internals/iterators-core.js
 create mode 100644 node_modules/core-js/internals/iterators.js
 create mode 100644 node_modules/core-js/internals/length-of-array-like.js
 create mode 100644 node_modules/core-js/internals/make-built-in.js
 create mode 100644 node_modules/core-js/internals/map-helpers.js
 create mode 100644 node_modules/core-js/internals/map-iterate.js
 create mode 100644 node_modules/core-js/internals/map-upsert.js
 create mode 100644 node_modules/core-js/internals/math-expm1.js
 create mode 100644 node_modules/core-js/internals/math-float-round.js
 create mode 100644 node_modules/core-js/internals/math-fround.js
 create mode 100644 node_modules/core-js/internals/math-log10.js
 create mode 100644 node_modules/core-js/internals/math-log1p.js
 create mode 100644 node_modules/core-js/internals/math-log2.js
 create mode 100644 node_modules/core-js/internals/math-round-ties-to-even.js
 create mode 100644 node_modules/core-js/internals/math-scale.js
 create mode 100644 node_modules/core-js/internals/math-sign.js
 create mode 100644 node_modules/core-js/internals/math-trunc.js
 create mode 100644 node_modules/core-js/internals/microtask.js
 create mode 100644 node_modules/core-js/internals/native-raw-json.js
 create mode 100644 node_modules/core-js/internals/new-promise-capability.js
 create mode 100644 node_modules/core-js/internals/normalize-string-argument.js
 create mode 100644 node_modules/core-js/internals/not-a-nan.js
 create mode 100644 node_modules/core-js/internals/not-a-regexp.js
 create mode 100644 node_modules/core-js/internals/number-is-finite.js
 create mode 100644 node_modules/core-js/internals/number-parse-float.js
 create mode 100644 node_modules/core-js/internals/number-parse-int.js
 create mode 100644 node_modules/core-js/internals/numeric-range-iterator.js
 create mode 100644 node_modules/core-js/internals/object-assign.js
 create mode 100644 node_modules/core-js/internals/object-create.js
 create mode 100644 node_modules/core-js/internals/object-define-properties.js
 create mode 100644 node_modules/core-js/internals/object-define-property.js
 create mode 100644 node_modules/core-js/internals/object-get-own-property-descriptor.js
 create mode 100644 node_modules/core-js/internals/object-get-own-property-names-external.js
 create mode 100644 node_modules/core-js/internals/object-get-own-property-names.js
 create mode 100644 node_modules/core-js/internals/object-get-own-property-symbols.js
 create mode 100644 node_modules/core-js/internals/object-get-prototype-of.js
 create mode 100644 node_modules/core-js/internals/object-is-extensible.js
 create mode 100644 node_modules/core-js/internals/object-is-prototype-of.js
 create mode 100644 node_modules/core-js/internals/object-iterator.js
 create mode 100644 node_modules/core-js/internals/object-keys-internal.js
 create mode 100644 node_modules/core-js/internals/object-keys.js
 create mode 100644 node_modules/core-js/internals/object-property-is-enumerable.js
 create mode 100644 node_modules/core-js/internals/object-prototype-accessors-forced.js
 create mode 100644 node_modules/core-js/internals/object-set-prototype-of.js
 create mode 100644 node_modules/core-js/internals/object-to-array.js
 create mode 100644 node_modules/core-js/internals/object-to-string.js
 create mode 100644 node_modules/core-js/internals/ordinary-to-primitive.js
 create mode 100644 node_modules/core-js/internals/own-keys.js
 create mode 100644 node_modules/core-js/internals/parse-json-string.js
 create mode 100644 node_modules/core-js/internals/path.js
 create mode 100644 node_modules/core-js/internals/perform.js
 create mode 100644 node_modules/core-js/internals/promise-constructor-detection.js
 create mode 100644 node_modules/core-js/internals/promise-native-constructor.js
 create mode 100644 node_modules/core-js/internals/promise-resolve.js
 create mode 100644 node_modules/core-js/internals/promise-statics-incorrect-iteration.js
 create mode 100644 node_modules/core-js/internals/proxy-accessor.js
 create mode 100644 node_modules/core-js/internals/queue.js
 create mode 100644 node_modules/core-js/internals/reflect-metadata.js
 create mode 100644 node_modules/core-js/internals/regexp-exec-abstract.js
 create mode 100644 node_modules/core-js/internals/regexp-exec.js
 create mode 100644 node_modules/core-js/internals/regexp-flags.js
 create mode 100644 node_modules/core-js/internals/regexp-get-flags.js
 create mode 100644 node_modules/core-js/internals/regexp-sticky-helpers.js
 create mode 100644 node_modules/core-js/internals/regexp-unsupported-dot-all.js
 create mode 100644 node_modules/core-js/internals/regexp-unsupported-ncg.js
 create mode 100644 node_modules/core-js/internals/require-object-coercible.js
 create mode 100644 node_modules/core-js/internals/safe-get-built-in.js
 create mode 100644 node_modules/core-js/internals/same-value-zero.js
 create mode 100644 node_modules/core-js/internals/same-value.js
 create mode 100644 node_modules/core-js/internals/schedulers-fix.js
 create mode 100644 node_modules/core-js/internals/set-clone.js
 create mode 100644 node_modules/core-js/internals/set-difference.js
 create mode 100644 node_modules/core-js/internals/set-helpers.js
 create mode 100644 node_modules/core-js/internals/set-intersection.js
 create mode 100644 node_modules/core-js/internals/set-is-disjoint-from.js
 create mode 100644 node_modules/core-js/internals/set-is-subset-of.js
 create mode 100644 node_modules/core-js/internals/set-is-superset-of.js
 create mode 100644 node_modules/core-js/internals/set-iterate.js
 create mode 100644 node_modules/core-js/internals/set-method-accept-set-like.js
 create mode 100644 node_modules/core-js/internals/set-size.js
 create mode 100644 node_modules/core-js/internals/set-species.js
 create mode 100644 node_modules/core-js/internals/set-symmetric-difference.js
 create mode 100644 node_modules/core-js/internals/set-to-string-tag.js
 create mode 100644 node_modules/core-js/internals/set-union.js
 create mode 100644 node_modules/core-js/internals/shared-key.js
 create mode 100644 node_modules/core-js/internals/shared-store.js
 create mode 100644 node_modules/core-js/internals/shared.js
 create mode 100644 node_modules/core-js/internals/species-constructor.js
 create mode 100644 node_modules/core-js/internals/string-cooked.js
 create mode 100644 node_modules/core-js/internals/string-html-forced.js
 create mode 100644 node_modules/core-js/internals/string-multibyte.js
 create mode 100644 node_modules/core-js/internals/string-pad-webkit-bug.js
 create mode 100644 node_modules/core-js/internals/string-pad.js
 create mode 100644 node_modules/core-js/internals/string-parse.js
 create mode 100644 node_modules/core-js/internals/string-punycode-to-ascii.js
 create mode 100644 node_modules/core-js/internals/string-repeat.js
 create mode 100644 node_modules/core-js/internals/string-trim-end.js
 create mode 100644 node_modules/core-js/internals/string-trim-forced.js
 create mode 100644 node_modules/core-js/internals/string-trim-start.js
 create mode 100644 node_modules/core-js/internals/string-trim.js
 create mode 100644 node_modules/core-js/internals/structured-clone-proper-transfer.js
 create mode 100644 node_modules/core-js/internals/symbol-constructor-detection.js
 create mode 100644 node_modules/core-js/internals/symbol-define-to-primitive.js
 create mode 100644 node_modules/core-js/internals/symbol-is-registered.js
 create mode 100644 node_modules/core-js/internals/symbol-is-well-known.js
 create mode 100644 node_modules/core-js/internals/symbol-registry-detection.js
 create mode 100644 node_modules/core-js/internals/task.js
 create mode 100644 node_modules/core-js/internals/this-number-value.js
 create mode 100644 node_modules/core-js/internals/to-absolute-index.js
 create mode 100644 node_modules/core-js/internals/to-big-int.js
 create mode 100644 node_modules/core-js/internals/to-index.js
 create mode 100644 node_modules/core-js/internals/to-indexed-object.js
 create mode 100644 node_modules/core-js/internals/to-integer-or-infinity.js
 create mode 100644 node_modules/core-js/internals/to-length.js
 create mode 100644 node_modules/core-js/internals/to-object.js
 create mode 100644 node_modules/core-js/internals/to-offset.js
 create mode 100644 node_modules/core-js/internals/to-positive-integer.js
 create mode 100644 node_modules/core-js/internals/to-primitive.js
 create mode 100644 node_modules/core-js/internals/to-property-key.js
 create mode 100644 node_modules/core-js/internals/to-set-like.js
 create mode 100644 node_modules/core-js/internals/to-string-tag-support.js
 create mode 100644 node_modules/core-js/internals/to-string.js
 create mode 100644 node_modules/core-js/internals/to-uint8-clamped.js
 create mode 100644 node_modules/core-js/internals/try-to-string.js
 create mode 100644 node_modules/core-js/internals/typed-array-constructor.js
 create mode 100644 node_modules/core-js/internals/typed-array-constructors-require-wrappers.js
 create mode 100644 node_modules/core-js/internals/typed-array-from-same-type-and-list.js
 create mode 100644 node_modules/core-js/internals/typed-array-from.js
 create mode 100644 node_modules/core-js/internals/uid.js
 create mode 100644 node_modules/core-js/internals/uint8-from-base64.js
 create mode 100644 node_modules/core-js/internals/uint8-from-hex.js
 create mode 100644 node_modules/core-js/internals/url-constructor-detection.js
 create mode 100644 node_modules/core-js/internals/use-symbol-as-uid.js
 create mode 100644 node_modules/core-js/internals/v8-prototype-define-bug.js
 create mode 100644 node_modules/core-js/internals/validate-arguments-length.js
 create mode 100644 node_modules/core-js/internals/weak-map-basic-detection.js
 create mode 100644 node_modules/core-js/internals/weak-map-helpers.js
 create mode 100644 node_modules/core-js/internals/weak-set-helpers.js
 create mode 100644 node_modules/core-js/internals/well-known-symbol-define.js
 create mode 100644 node_modules/core-js/internals/well-known-symbol-wrapped.js
 create mode 100644 node_modules/core-js/internals/well-known-symbol.js
 create mode 100644 node_modules/core-js/internals/whitespaces.js
 create mode 100644 node_modules/core-js/internals/wrap-error-constructor-with-cause.js
 create mode 100644 node_modules/core-js/modules/README.md
 create mode 100644 node_modules/core-js/modules/es.aggregate-error.cause.js
 create mode 100644 node_modules/core-js/modules/es.aggregate-error.constructor.js
 create mode 100644 node_modules/core-js/modules/es.aggregate-error.js
 create mode 100644 node_modules/core-js/modules/es.array-buffer.constructor.js
 create mode 100644 node_modules/core-js/modules/es.array-buffer.detached.js
 create mode 100644 node_modules/core-js/modules/es.array-buffer.is-view.js
 create mode 100644 node_modules/core-js/modules/es.array-buffer.slice.js
 create mode 100644 node_modules/core-js/modules/es.array-buffer.transfer-to-fixed-length.js
 create mode 100644 node_modules/core-js/modules/es.array-buffer.transfer.js
 create mode 100644 node_modules/core-js/modules/es.array.at.js
 create mode 100644 node_modules/core-js/modules/es.array.concat.js
 create mode 100644 node_modules/core-js/modules/es.array.copy-within.js
 create mode 100644 node_modules/core-js/modules/es.array.every.js
 create mode 100644 node_modules/core-js/modules/es.array.fill.js
 create mode 100644 node_modules/core-js/modules/es.array.filter.js
 create mode 100644 node_modules/core-js/modules/es.array.find-index.js
 create mode 100644 node_modules/core-js/modules/es.array.find-last-index.js
 create mode 100644 node_modules/core-js/modules/es.array.find-last.js
 create mode 100644 node_modules/core-js/modules/es.array.find.js
 create mode 100644 node_modules/core-js/modules/es.array.flat-map.js
 create mode 100644 node_modules/core-js/modules/es.array.flat.js
 create mode 100644 node_modules/core-js/modules/es.array.for-each.js
 create mode 100644 node_modules/core-js/modules/es.array.from.js
 create mode 100644 node_modules/core-js/modules/es.array.includes.js
 create mode 100644 node_modules/core-js/modules/es.array.index-of.js
 create mode 100644 node_modules/core-js/modules/es.array.is-array.js
 create mode 100644 node_modules/core-js/modules/es.array.iterator.js
 create mode 100644 node_modules/core-js/modules/es.array.join.js
 create mode 100644 node_modules/core-js/modules/es.array.last-index-of.js
 create mode 100644 node_modules/core-js/modules/es.array.map.js
 create mode 100644 node_modules/core-js/modules/es.array.of.js
 create mode 100644 node_modules/core-js/modules/es.array.push.js
 create mode 100644 node_modules/core-js/modules/es.array.reduce-right.js
 create mode 100644 node_modules/core-js/modules/es.array.reduce.js
 create mode 100644 node_modules/core-js/modules/es.array.reverse.js
 create mode 100644 node_modules/core-js/modules/es.array.slice.js
 create mode 100644 node_modules/core-js/modules/es.array.some.js
 create mode 100644 node_modules/core-js/modules/es.array.sort.js
 create mode 100644 node_modules/core-js/modules/es.array.species.js
 create mode 100644 node_modules/core-js/modules/es.array.splice.js
 create mode 100644 node_modules/core-js/modules/es.array.to-reversed.js
 create mode 100644 node_modules/core-js/modules/es.array.to-sorted.js
 create mode 100644 node_modules/core-js/modules/es.array.to-spliced.js
 create mode 100644 node_modules/core-js/modules/es.array.unscopables.flat-map.js
 create mode 100644 node_modules/core-js/modules/es.array.unscopables.flat.js
 create mode 100644 node_modules/core-js/modules/es.array.unshift.js
 create mode 100644 node_modules/core-js/modules/es.array.with.js
 create mode 100644 node_modules/core-js/modules/es.data-view.constructor.js
 create mode 100644 node_modules/core-js/modules/es.data-view.get-float16.js
 create mode 100644 node_modules/core-js/modules/es.data-view.js
 create mode 100644 node_modules/core-js/modules/es.data-view.set-float16.js
 create mode 100644 node_modules/core-js/modules/es.date.get-year.js
 create mode 100644 node_modules/core-js/modules/es.date.now.js
 create mode 100644 node_modules/core-js/modules/es.date.set-year.js
 create mode 100644 node_modules/core-js/modules/es.date.to-gmt-string.js
 create mode 100644 node_modules/core-js/modules/es.date.to-iso-string.js
 create mode 100644 node_modules/core-js/modules/es.date.to-json.js
 create mode 100644 node_modules/core-js/modules/es.date.to-primitive.js
 create mode 100644 node_modules/core-js/modules/es.date.to-string.js
 create mode 100644 node_modules/core-js/modules/es.error.cause.js
 create mode 100644 node_modules/core-js/modules/es.error.to-string.js
 create mode 100644 node_modules/core-js/modules/es.escape.js
 create mode 100644 node_modules/core-js/modules/es.function.bind.js
 create mode 100644 node_modules/core-js/modules/es.function.has-instance.js
 create mode 100644 node_modules/core-js/modules/es.function.name.js
 create mode 100644 node_modules/core-js/modules/es.global-this.js
 create mode 100644 node_modules/core-js/modules/es.iterator.constructor.js
 create mode 100644 node_modules/core-js/modules/es.iterator.drop.js
 create mode 100644 node_modules/core-js/modules/es.iterator.every.js
 create mode 100644 node_modules/core-js/modules/es.iterator.filter.js
 create mode 100644 node_modules/core-js/modules/es.iterator.find.js
 create mode 100644 node_modules/core-js/modules/es.iterator.flat-map.js
 create mode 100644 node_modules/core-js/modules/es.iterator.for-each.js
 create mode 100644 node_modules/core-js/modules/es.iterator.from.js
 create mode 100644 node_modules/core-js/modules/es.iterator.map.js
 create mode 100644 node_modules/core-js/modules/es.iterator.reduce.js
 create mode 100644 node_modules/core-js/modules/es.iterator.some.js
 create mode 100644 node_modules/core-js/modules/es.iterator.take.js
 create mode 100644 node_modules/core-js/modules/es.iterator.to-array.js
 create mode 100644 node_modules/core-js/modules/es.json.stringify.js
 create mode 100644 node_modules/core-js/modules/es.json.to-string-tag.js
 create mode 100644 node_modules/core-js/modules/es.map.constructor.js
 create mode 100644 node_modules/core-js/modules/es.map.group-by.js
 create mode 100644 node_modules/core-js/modules/es.map.js
 create mode 100644 node_modules/core-js/modules/es.math.acosh.js
 create mode 100644 node_modules/core-js/modules/es.math.asinh.js
 create mode 100644 node_modules/core-js/modules/es.math.atanh.js
 create mode 100644 node_modules/core-js/modules/es.math.cbrt.js
 create mode 100644 node_modules/core-js/modules/es.math.clz32.js
 create mode 100644 node_modules/core-js/modules/es.math.cosh.js
 create mode 100644 node_modules/core-js/modules/es.math.expm1.js
 create mode 100644 node_modules/core-js/modules/es.math.f16round.js
 create mode 100644 node_modules/core-js/modules/es.math.fround.js
 create mode 100644 node_modules/core-js/modules/es.math.hypot.js
 create mode 100644 node_modules/core-js/modules/es.math.imul.js
 create mode 100644 node_modules/core-js/modules/es.math.log10.js
 create mode 100644 node_modules/core-js/modules/es.math.log1p.js
 create mode 100644 node_modules/core-js/modules/es.math.log2.js
 create mode 100644 node_modules/core-js/modules/es.math.sign.js
 create mode 100644 node_modules/core-js/modules/es.math.sinh.js
 create mode 100644 node_modules/core-js/modules/es.math.tanh.js
 create mode 100644 node_modules/core-js/modules/es.math.to-string-tag.js
 create mode 100644 node_modules/core-js/modules/es.math.trunc.js
 create mode 100644 node_modules/core-js/modules/es.number.constructor.js
 create mode 100644 node_modules/core-js/modules/es.number.epsilon.js
 create mode 100644 node_modules/core-js/modules/es.number.is-finite.js
 create mode 100644 node_modules/core-js/modules/es.number.is-integer.js
 create mode 100644 node_modules/core-js/modules/es.number.is-nan.js
 create mode 100644 node_modules/core-js/modules/es.number.is-safe-integer.js
 create mode 100644 node_modules/core-js/modules/es.number.max-safe-integer.js
 create mode 100644 node_modules/core-js/modules/es.number.min-safe-integer.js
 create mode 100644 node_modules/core-js/modules/es.number.parse-float.js
 create mode 100644 node_modules/core-js/modules/es.number.parse-int.js
 create mode 100644 node_modules/core-js/modules/es.number.to-exponential.js
 create mode 100644 node_modules/core-js/modules/es.number.to-fixed.js
 create mode 100644 node_modules/core-js/modules/es.number.to-precision.js
 create mode 100644 node_modules/core-js/modules/es.object.assign.js
 create mode 100644 node_modules/core-js/modules/es.object.create.js
 create mode 100644 node_modules/core-js/modules/es.object.define-getter.js
 create mode 100644 node_modules/core-js/modules/es.object.define-properties.js
 create mode 100644 node_modules/core-js/modules/es.object.define-property.js
 create mode 100644 node_modules/core-js/modules/es.object.define-setter.js
 create mode 100644 node_modules/core-js/modules/es.object.entries.js
 create mode 100644 node_modules/core-js/modules/es.object.freeze.js
 create mode 100644 node_modules/core-js/modules/es.object.from-entries.js
 create mode 100644 node_modules/core-js/modules/es.object.get-own-property-descriptor.js
 create mode 100644 node_modules/core-js/modules/es.object.get-own-property-descriptors.js
 create mode 100644 node_modules/core-js/modules/es.object.get-own-property-names.js
 create mode 100644 node_modules/core-js/modules/es.object.get-own-property-symbols.js
 create mode 100644 node_modules/core-js/modules/es.object.get-prototype-of.js
 create mode 100644 node_modules/core-js/modules/es.object.group-by.js
 create mode 100644 node_modules/core-js/modules/es.object.has-own.js
 create mode 100644 node_modules/core-js/modules/es.object.is-extensible.js
 create mode 100644 node_modules/core-js/modules/es.object.is-frozen.js
 create mode 100644 node_modules/core-js/modules/es.object.is-sealed.js
 create mode 100644 node_modules/core-js/modules/es.object.is.js
 create mode 100644 node_modules/core-js/modules/es.object.keys.js
 create mode 100644 node_modules/core-js/modules/es.object.lookup-getter.js
 create mode 100644 node_modules/core-js/modules/es.object.lookup-setter.js
 create mode 100644 node_modules/core-js/modules/es.object.prevent-extensions.js
 create mode 100644 node_modules/core-js/modules/es.object.proto.js
 create mode 100644 node_modules/core-js/modules/es.object.seal.js
 create mode 100644 node_modules/core-js/modules/es.object.set-prototype-of.js
 create mode 100644 node_modules/core-js/modules/es.object.to-string.js
 create mode 100644 node_modules/core-js/modules/es.object.values.js
 create mode 100644 node_modules/core-js/modules/es.parse-float.js
 create mode 100644 node_modules/core-js/modules/es.parse-int.js
 create mode 100644 node_modules/core-js/modules/es.promise.all-settled.js
 create mode 100644 node_modules/core-js/modules/es.promise.all.js
 create mode 100644 node_modules/core-js/modules/es.promise.any.js
 create mode 100644 node_modules/core-js/modules/es.promise.catch.js
 create mode 100644 node_modules/core-js/modules/es.promise.constructor.js
 create mode 100644 node_modules/core-js/modules/es.promise.finally.js
 create mode 100644 node_modules/core-js/modules/es.promise.js
 create mode 100644 node_modules/core-js/modules/es.promise.race.js
 create mode 100644 node_modules/core-js/modules/es.promise.reject.js
 create mode 100644 node_modules/core-js/modules/es.promise.resolve.js
 create mode 100644 node_modules/core-js/modules/es.promise.try.js
 create mode 100644 node_modules/core-js/modules/es.promise.with-resolvers.js
 create mode 100644 node_modules/core-js/modules/es.reflect.apply.js
 create mode 100644 node_modules/core-js/modules/es.reflect.construct.js
 create mode 100644 node_modules/core-js/modules/es.reflect.define-property.js
 create mode 100644 node_modules/core-js/modules/es.reflect.delete-property.js
 create mode 100644 node_modules/core-js/modules/es.reflect.get-own-property-descriptor.js
 create mode 100644 node_modules/core-js/modules/es.reflect.get-prototype-of.js
 create mode 100644 node_modules/core-js/modules/es.reflect.get.js
 create mode 100644 node_modules/core-js/modules/es.reflect.has.js
 create mode 100644 node_modules/core-js/modules/es.reflect.is-extensible.js
 create mode 100644 node_modules/core-js/modules/es.reflect.own-keys.js
 create mode 100644 node_modules/core-js/modules/es.reflect.prevent-extensions.js
 create mode 100644 node_modules/core-js/modules/es.reflect.set-prototype-of.js
 create mode 100644 node_modules/core-js/modules/es.reflect.set.js
 create mode 100644 node_modules/core-js/modules/es.reflect.to-string-tag.js
 create mode 100644 node_modules/core-js/modules/es.regexp.constructor.js
 create mode 100644 node_modules/core-js/modules/es.regexp.dot-all.js
 create mode 100644 node_modules/core-js/modules/es.regexp.escape.js
 create mode 100644 node_modules/core-js/modules/es.regexp.exec.js
 create mode 100644 node_modules/core-js/modules/es.regexp.flags.js
 create mode 100644 node_modules/core-js/modules/es.regexp.sticky.js
 create mode 100644 node_modules/core-js/modules/es.regexp.test.js
 create mode 100644 node_modules/core-js/modules/es.regexp.to-string.js
 create mode 100644 node_modules/core-js/modules/es.set.constructor.js
 create mode 100644 node_modules/core-js/modules/es.set.difference.v2.js
 create mode 100644 node_modules/core-js/modules/es.set.intersection.v2.js
 create mode 100644 node_modules/core-js/modules/es.set.is-disjoint-from.v2.js
 create mode 100644 node_modules/core-js/modules/es.set.is-subset-of.v2.js
 create mode 100644 node_modules/core-js/modules/es.set.is-superset-of.v2.js
 create mode 100644 node_modules/core-js/modules/es.set.js
 create mode 100644 node_modules/core-js/modules/es.set.symmetric-difference.v2.js
 create mode 100644 node_modules/core-js/modules/es.set.union.v2.js
 create mode 100644 node_modules/core-js/modules/es.string.anchor.js
 create mode 100644 node_modules/core-js/modules/es.string.at-alternative.js
 create mode 100644 node_modules/core-js/modules/es.string.big.js
 create mode 100644 node_modules/core-js/modules/es.string.blink.js
 create mode 100644 node_modules/core-js/modules/es.string.bold.js
 create mode 100644 node_modules/core-js/modules/es.string.code-point-at.js
 create mode 100644 node_modules/core-js/modules/es.string.ends-with.js
 create mode 100644 node_modules/core-js/modules/es.string.fixed.js
 create mode 100644 node_modules/core-js/modules/es.string.fontcolor.js
 create mode 100644 node_modules/core-js/modules/es.string.fontsize.js
 create mode 100644 node_modules/core-js/modules/es.string.from-code-point.js
 create mode 100644 node_modules/core-js/modules/es.string.includes.js
 create mode 100644 node_modules/core-js/modules/es.string.is-well-formed.js
 create mode 100644 node_modules/core-js/modules/es.string.italics.js
 create mode 100644 node_modules/core-js/modules/es.string.iterator.js
 create mode 100644 node_modules/core-js/modules/es.string.link.js
 create mode 100644 node_modules/core-js/modules/es.string.match-all.js
 create mode 100644 node_modules/core-js/modules/es.string.match.js
 create mode 100644 node_modules/core-js/modules/es.string.pad-end.js
 create mode 100644 node_modules/core-js/modules/es.string.pad-start.js
 create mode 100644 node_modules/core-js/modules/es.string.raw.js
 create mode 100644 node_modules/core-js/modules/es.string.repeat.js
 create mode 100644 node_modules/core-js/modules/es.string.replace-all.js
 create mode 100644 node_modules/core-js/modules/es.string.replace.js
 create mode 100644 node_modules/core-js/modules/es.string.search.js
 create mode 100644 node_modules/core-js/modules/es.string.small.js
 create mode 100644 node_modules/core-js/modules/es.string.split.js
 create mode 100644 node_modules/core-js/modules/es.string.starts-with.js
 create mode 100644 node_modules/core-js/modules/es.string.strike.js
 create mode 100644 node_modules/core-js/modules/es.string.sub.js
 create mode 100644 node_modules/core-js/modules/es.string.substr.js
 create mode 100644 node_modules/core-js/modules/es.string.sup.js
 create mode 100644 node_modules/core-js/modules/es.string.to-well-formed.js
 create mode 100644 node_modules/core-js/modules/es.string.trim-end.js
 create mode 100644 node_modules/core-js/modules/es.string.trim-left.js
 create mode 100644 node_modules/core-js/modules/es.string.trim-right.js
 create mode 100644 node_modules/core-js/modules/es.string.trim-start.js
 create mode 100644 node_modules/core-js/modules/es.string.trim.js
 create mode 100644 node_modules/core-js/modules/es.symbol.async-iterator.js
 create mode 100644 node_modules/core-js/modules/es.symbol.constructor.js
 create mode 100644 node_modules/core-js/modules/es.symbol.description.js
 create mode 100644 node_modules/core-js/modules/es.symbol.for.js
 create mode 100644 node_modules/core-js/modules/es.symbol.has-instance.js
 create mode 100644 node_modules/core-js/modules/es.symbol.is-concat-spreadable.js
 create mode 100644 node_modules/core-js/modules/es.symbol.iterator.js
 create mode 100644 node_modules/core-js/modules/es.symbol.js
 create mode 100644 node_modules/core-js/modules/es.symbol.key-for.js
 create mode 100644 node_modules/core-js/modules/es.symbol.match-all.js
 create mode 100644 node_modules/core-js/modules/es.symbol.match.js
 create mode 100644 node_modules/core-js/modules/es.symbol.replace.js
 create mode 100644 node_modules/core-js/modules/es.symbol.search.js
 create mode 100644 node_modules/core-js/modules/es.symbol.species.js
 create mode 100644 node_modules/core-js/modules/es.symbol.split.js
 create mode 100644 node_modules/core-js/modules/es.symbol.to-primitive.js
 create mode 100644 node_modules/core-js/modules/es.symbol.to-string-tag.js
 create mode 100644 node_modules/core-js/modules/es.symbol.unscopables.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.at.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.copy-within.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.every.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.fill.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.filter.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.find-index.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.find-last-index.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.find-last.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.find.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.float32-array.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.float64-array.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.for-each.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.from.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.includes.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.index-of.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.int16-array.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.int32-array.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.int8-array.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.iterator.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.join.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.last-index-of.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.map.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.of.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.reduce-right.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.reduce.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.reverse.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.set.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.slice.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.some.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.sort.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.subarray.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.to-locale-string.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.to-reversed.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.to-sorted.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.to-string.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.uint16-array.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.uint32-array.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.uint8-array.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.uint8-clamped-array.js
 create mode 100644 node_modules/core-js/modules/es.typed-array.with.js
 create mode 100644 node_modules/core-js/modules/es.unescape.js
 create mode 100644 node_modules/core-js/modules/es.weak-map.constructor.js
 create mode 100644 node_modules/core-js/modules/es.weak-map.js
 create mode 100644 node_modules/core-js/modules/es.weak-set.constructor.js
 create mode 100644 node_modules/core-js/modules/es.weak-set.js
 create mode 100644 node_modules/core-js/modules/esnext.aggregate-error.js
 create mode 100644 node_modules/core-js/modules/esnext.array-buffer.detached.js
 create mode 100644 node_modules/core-js/modules/esnext.array-buffer.transfer-to-fixed-length.js
 create mode 100644 node_modules/core-js/modules/esnext.array-buffer.transfer.js
 create mode 100644 node_modules/core-js/modules/esnext.array.at.js
 create mode 100644 node_modules/core-js/modules/esnext.array.filter-out.js
 create mode 100644 node_modules/core-js/modules/esnext.array.filter-reject.js
 create mode 100644 node_modules/core-js/modules/esnext.array.find-last-index.js
 create mode 100644 node_modules/core-js/modules/esnext.array.find-last.js
 create mode 100644 node_modules/core-js/modules/esnext.array.from-async.js
 create mode 100644 node_modules/core-js/modules/esnext.array.group-by-to-map.js
 create mode 100644 node_modules/core-js/modules/esnext.array.group-by.js
 create mode 100644 node_modules/core-js/modules/esnext.array.group-to-map.js
 create mode 100644 node_modules/core-js/modules/esnext.array.group.js
 create mode 100644 node_modules/core-js/modules/esnext.array.is-template-object.js
 create mode 100644 node_modules/core-js/modules/esnext.array.last-index.js
 create mode 100644 node_modules/core-js/modules/esnext.array.last-item.js
 create mode 100644 node_modules/core-js/modules/esnext.array.to-reversed.js
 create mode 100644 node_modules/core-js/modules/esnext.array.to-sorted.js
 create mode 100644 node_modules/core-js/modules/esnext.array.to-spliced.js
 create mode 100644 node_modules/core-js/modules/esnext.array.unique-by.js
 create mode 100644 node_modules/core-js/modules/esnext.array.with.js
 create mode 100644 node_modules/core-js/modules/esnext.async-disposable-stack.constructor.js
 create mode 100644 node_modules/core-js/modules/esnext.async-iterator.as-indexed-pairs.js
 create mode 100644 node_modules/core-js/modules/esnext.async-iterator.async-dispose.js
 create mode 100644 node_modules/core-js/modules/esnext.async-iterator.constructor.js
 create mode 100644 node_modules/core-js/modules/esnext.async-iterator.drop.js
 create mode 100644 node_modules/core-js/modules/esnext.async-iterator.every.js
 create mode 100644 node_modules/core-js/modules/esnext.async-iterator.filter.js
 create mode 100644 node_modules/core-js/modules/esnext.async-iterator.find.js
 create mode 100644 node_modules/core-js/modules/esnext.async-iterator.flat-map.js
 create mode 100644 node_modules/core-js/modules/esnext.async-iterator.for-each.js
 create mode 100644 node_modules/core-js/modules/esnext.async-iterator.from.js
 create mode 100644 node_modules/core-js/modules/esnext.async-iterator.indexed.js
 create mode 100644 node_modules/core-js/modules/esnext.async-iterator.map.js
 create mode 100644 node_modules/core-js/modules/esnext.async-iterator.reduce.js
 create mode 100644 node_modules/core-js/modules/esnext.async-iterator.some.js
 create mode 100644 node_modules/core-js/modules/esnext.async-iterator.take.js
 create mode 100644 node_modules/core-js/modules/esnext.async-iterator.to-array.js
 create mode 100644 node_modules/core-js/modules/esnext.bigint.range.js
 create mode 100644 node_modules/core-js/modules/esnext.composite-key.js
 create mode 100644 node_modules/core-js/modules/esnext.composite-symbol.js
 create mode 100644 node_modules/core-js/modules/esnext.data-view.get-float16.js
 create mode 100644 node_modules/core-js/modules/esnext.data-view.get-uint8-clamped.js
 create mode 100644 node_modules/core-js/modules/esnext.data-view.set-float16.js
 create mode 100644 node_modules/core-js/modules/esnext.data-view.set-uint8-clamped.js
 create mode 100644 node_modules/core-js/modules/esnext.disposable-stack.constructor.js
 create mode 100644 node_modules/core-js/modules/esnext.error.is-error.js
 create mode 100644 node_modules/core-js/modules/esnext.function.demethodize.js
 create mode 100644 node_modules/core-js/modules/esnext.function.is-callable.js
 create mode 100644 node_modules/core-js/modules/esnext.function.is-constructor.js
 create mode 100644 node_modules/core-js/modules/esnext.function.metadata.js
 create mode 100644 node_modules/core-js/modules/esnext.function.un-this.js
 create mode 100644 node_modules/core-js/modules/esnext.global-this.js
 create mode 100644 node_modules/core-js/modules/esnext.iterator.as-indexed-pairs.js
 create mode 100644 node_modules/core-js/modules/esnext.iterator.concat.js
 create mode 100644 node_modules/core-js/modules/esnext.iterator.constructor.js
 create mode 100644 node_modules/core-js/modules/esnext.iterator.dispose.js
 create mode 100644 node_modules/core-js/modules/esnext.iterator.drop.js
 create mode 100644 node_modules/core-js/modules/esnext.iterator.every.js
 create mode 100644 node_modules/core-js/modules/esnext.iterator.filter.js
 create mode 100644 node_modules/core-js/modules/esnext.iterator.find.js
 create mode 100644 node_modules/core-js/modules/esnext.iterator.flat-map.js
 create mode 100644 node_modules/core-js/modules/esnext.iterator.for-each.js
 create mode 100644 node_modules/core-js/modules/esnext.iterator.from.js
 create mode 100644 node_modules/core-js/modules/esnext.iterator.indexed.js
 create mode 100644 node_modules/core-js/modules/esnext.iterator.map.js
 create mode 100644 node_modules/core-js/modules/esnext.iterator.range.js
 create mode 100644 node_modules/core-js/modules/esnext.iterator.reduce.js
 create mode 100644 node_modules/core-js/modules/esnext.iterator.some.js
 create mode 100644 node_modules/core-js/modules/esnext.iterator.take.js
 create mode 100644 node_modules/core-js/modules/esnext.iterator.to-array.js
 create mode 100644 node_modules/core-js/modules/esnext.iterator.to-async.js
 create mode 100644 node_modules/core-js/modules/esnext.json.is-raw-json.js
 create mode 100644 node_modules/core-js/modules/esnext.json.parse.js
 create mode 100644 node_modules/core-js/modules/esnext.json.raw-json.js
 create mode 100644 node_modules/core-js/modules/esnext.map.delete-all.js
 create mode 100644 node_modules/core-js/modules/esnext.map.emplace.js
 create mode 100644 node_modules/core-js/modules/esnext.map.every.js
 create mode 100644 node_modules/core-js/modules/esnext.map.filter.js
 create mode 100644 node_modules/core-js/modules/esnext.map.find-key.js
 create mode 100644 node_modules/core-js/modules/esnext.map.find.js
 create mode 100644 node_modules/core-js/modules/esnext.map.from.js
 create mode 100644 node_modules/core-js/modules/esnext.map.get-or-insert-computed.js
 create mode 100644 node_modules/core-js/modules/esnext.map.get-or-insert.js
 create mode 100644 node_modules/core-js/modules/esnext.map.group-by.js
 create mode 100644 node_modules/core-js/modules/esnext.map.includes.js
 create mode 100644 node_modules/core-js/modules/esnext.map.key-by.js
 create mode 100644 node_modules/core-js/modules/esnext.map.key-of.js
 create mode 100644 node_modules/core-js/modules/esnext.map.map-keys.js
 create mode 100644 node_modules/core-js/modules/esnext.map.map-values.js
 create mode 100644 node_modules/core-js/modules/esnext.map.merge.js
 create mode 100644 node_modules/core-js/modules/esnext.map.of.js
 create mode 100644 node_modules/core-js/modules/esnext.map.reduce.js
 create mode 100644 node_modules/core-js/modules/esnext.map.some.js
 create mode 100644 node_modules/core-js/modules/esnext.map.update-or-insert.js
 create mode 100644 node_modules/core-js/modules/esnext.map.update.js
 create mode 100644 node_modules/core-js/modules/esnext.map.upsert.js
 create mode 100644 node_modules/core-js/modules/esnext.math.clamp.js
 create mode 100644 node_modules/core-js/modules/esnext.math.deg-per-rad.js
 create mode 100644 node_modules/core-js/modules/esnext.math.degrees.js
 create mode 100644 node_modules/core-js/modules/esnext.math.f16round.js
 create mode 100644 node_modules/core-js/modules/esnext.math.fscale.js
 create mode 100644 node_modules/core-js/modules/esnext.math.iaddh.js
 create mode 100644 node_modules/core-js/modules/esnext.math.imulh.js
 create mode 100644 node_modules/core-js/modules/esnext.math.isubh.js
 create mode 100644 node_modules/core-js/modules/esnext.math.rad-per-deg.js
 create mode 100644 node_modules/core-js/modules/esnext.math.radians.js
 create mode 100644 node_modules/core-js/modules/esnext.math.scale.js
 create mode 100644 node_modules/core-js/modules/esnext.math.seeded-prng.js
 create mode 100644 node_modules/core-js/modules/esnext.math.signbit.js
 create mode 100644 node_modules/core-js/modules/esnext.math.sum-precise.js
 create mode 100644 node_modules/core-js/modules/esnext.math.umulh.js
 create mode 100644 node_modules/core-js/modules/esnext.number.from-string.js
 create mode 100644 node_modules/core-js/modules/esnext.number.range.js
 create mode 100644 node_modules/core-js/modules/esnext.object.group-by.js
 create mode 100644 node_modules/core-js/modules/esnext.object.has-own.js
 create mode 100644 node_modules/core-js/modules/esnext.object.iterate-entries.js
 create mode 100644 node_modules/core-js/modules/esnext.object.iterate-keys.js
 create mode 100644 node_modules/core-js/modules/esnext.object.iterate-values.js
 create mode 100644 node_modules/core-js/modules/esnext.observable.constructor.js
 create mode 100644 node_modules/core-js/modules/esnext.observable.from.js
 create mode 100644 node_modules/core-js/modules/esnext.observable.js
 create mode 100644 node_modules/core-js/modules/esnext.observable.of.js
 create mode 100644 node_modules/core-js/modules/esnext.promise.all-settled.js
 create mode 100644 node_modules/core-js/modules/esnext.promise.any.js
 create mode 100644 node_modules/core-js/modules/esnext.promise.try.js
 create mode 100644 node_modules/core-js/modules/esnext.promise.with-resolvers.js
 create mode 100644 node_modules/core-js/modules/esnext.reflect.define-metadata.js
 create mode 100644 node_modules/core-js/modules/esnext.reflect.delete-metadata.js
 create mode 100644 node_modules/core-js/modules/esnext.reflect.get-metadata-keys.js
 create mode 100644 node_modules/core-js/modules/esnext.reflect.get-metadata.js
 create mode 100644 node_modules/core-js/modules/esnext.reflect.get-own-metadata-keys.js
 create mode 100644 node_modules/core-js/modules/esnext.reflect.get-own-metadata.js
 create mode 100644 node_modules/core-js/modules/esnext.reflect.has-metadata.js
 create mode 100644 node_modules/core-js/modules/esnext.reflect.has-own-metadata.js
 create mode 100644 node_modules/core-js/modules/esnext.reflect.metadata.js
 create mode 100644 node_modules/core-js/modules/esnext.regexp.escape.js
 create mode 100644 node_modules/core-js/modules/esnext.set.add-all.js
 create mode 100644 node_modules/core-js/modules/esnext.set.delete-all.js
 create mode 100644 node_modules/core-js/modules/esnext.set.difference.js
 create mode 100644 node_modules/core-js/modules/esnext.set.difference.v2.js
 create mode 100644 node_modules/core-js/modules/esnext.set.every.js
 create mode 100644 node_modules/core-js/modules/esnext.set.filter.js
 create mode 100644 node_modules/core-js/modules/esnext.set.find.js
 create mode 100644 node_modules/core-js/modules/esnext.set.from.js
 create mode 100644 node_modules/core-js/modules/esnext.set.intersection.js
 create mode 100644 node_modules/core-js/modules/esnext.set.intersection.v2.js
 create mode 100644 node_modules/core-js/modules/esnext.set.is-disjoint-from.js
 create mode 100644 node_modules/core-js/modules/esnext.set.is-disjoint-from.v2.js
 create mode 100644 node_modules/core-js/modules/esnext.set.is-subset-of.js
 create mode 100644 node_modules/core-js/modules/esnext.set.is-subset-of.v2.js
 create mode 100644 node_modules/core-js/modules/esnext.set.is-superset-of.js
 create mode 100644 node_modules/core-js/modules/esnext.set.is-superset-of.v2.js
 create mode 100644 node_modules/core-js/modules/esnext.set.join.js
 create mode 100644 node_modules/core-js/modules/esnext.set.map.js
 create mode 100644 node_modules/core-js/modules/esnext.set.of.js
 create mode 100644 node_modules/core-js/modules/esnext.set.reduce.js
 create mode 100644 node_modules/core-js/modules/esnext.set.some.js
 create mode 100644 node_modules/core-js/modules/esnext.set.symmetric-difference.js
 create mode 100644 node_modules/core-js/modules/esnext.set.symmetric-difference.v2.js
 create mode 100644 node_modules/core-js/modules/esnext.set.union.js
 create mode 100644 node_modules/core-js/modules/esnext.set.union.v2.js
 create mode 100644 node_modules/core-js/modules/esnext.string.at-alternative.js
 create mode 100644 node_modules/core-js/modules/esnext.string.at.js
 create mode 100644 node_modules/core-js/modules/esnext.string.code-points.js
 create mode 100644 node_modules/core-js/modules/esnext.string.cooked.js
 create mode 100644 node_modules/core-js/modules/esnext.string.dedent.js
 create mode 100644 node_modules/core-js/modules/esnext.string.is-well-formed.js
 create mode 100644 node_modules/core-js/modules/esnext.string.match-all.js
 create mode 100644 node_modules/core-js/modules/esnext.string.replace-all.js
 create mode 100644 node_modules/core-js/modules/esnext.string.to-well-formed.js
 create mode 100644 node_modules/core-js/modules/esnext.suppressed-error.constructor.js
 create mode 100644 node_modules/core-js/modules/esnext.symbol.async-dispose.js
 create mode 100644 node_modules/core-js/modules/esnext.symbol.custom-matcher.js
 create mode 100644 node_modules/core-js/modules/esnext.symbol.dispose.js
 create mode 100644 node_modules/core-js/modules/esnext.symbol.is-registered-symbol.js
 create mode 100644 node_modules/core-js/modules/esnext.symbol.is-registered.js
 create mode 100644 node_modules/core-js/modules/esnext.symbol.is-well-known-symbol.js
 create mode 100644 node_modules/core-js/modules/esnext.symbol.is-well-known.js
 create mode 100644 node_modules/core-js/modules/esnext.symbol.matcher.js
 create mode 100644 node_modules/core-js/modules/esnext.symbol.metadata-key.js
 create mode 100644 node_modules/core-js/modules/esnext.symbol.metadata.js
 create mode 100644 node_modules/core-js/modules/esnext.symbol.observable.js
 create mode 100644 node_modules/core-js/modules/esnext.symbol.pattern-match.js
 create mode 100644 node_modules/core-js/modules/esnext.symbol.replace-all.js
 create mode 100644 node_modules/core-js/modules/esnext.typed-array.at.js
 create mode 100644 node_modules/core-js/modules/esnext.typed-array.filter-out.js
 create mode 100644 node_modules/core-js/modules/esnext.typed-array.filter-reject.js
 create mode 100644 node_modules/core-js/modules/esnext.typed-array.find-last-index.js
 create mode 100644 node_modules/core-js/modules/esnext.typed-array.find-last.js
 create mode 100644 node_modules/core-js/modules/esnext.typed-array.from-async.js
 create mode 100644 node_modules/core-js/modules/esnext.typed-array.group-by.js
 create mode 100644 node_modules/core-js/modules/esnext.typed-array.to-reversed.js
 create mode 100644 node_modules/core-js/modules/esnext.typed-array.to-sorted.js
 create mode 100644 node_modules/core-js/modules/esnext.typed-array.to-spliced.js
 create mode 100644 node_modules/core-js/modules/esnext.typed-array.unique-by.js
 create mode 100644 node_modules/core-js/modules/esnext.typed-array.with.js
 create mode 100644 node_modules/core-js/modules/esnext.uint8-array.from-base64.js
 create mode 100644 node_modules/core-js/modules/esnext.uint8-array.from-hex.js
 create mode 100644 node_modules/core-js/modules/esnext.uint8-array.set-from-base64.js
 create mode 100644 node_modules/core-js/modules/esnext.uint8-array.set-from-hex.js
 create mode 100644 node_modules/core-js/modules/esnext.uint8-array.to-base64.js
 create mode 100644 node_modules/core-js/modules/esnext.uint8-array.to-hex.js
 create mode 100644 node_modules/core-js/modules/esnext.weak-map.delete-all.js
 create mode 100644 node_modules/core-js/modules/esnext.weak-map.emplace.js
 create mode 100644 node_modules/core-js/modules/esnext.weak-map.from.js
 create mode 100644 node_modules/core-js/modules/esnext.weak-map.get-or-insert-computed.js
 create mode 100644 node_modules/core-js/modules/esnext.weak-map.get-or-insert.js
 create mode 100644 node_modules/core-js/modules/esnext.weak-map.of.js
 create mode 100644 node_modules/core-js/modules/esnext.weak-map.upsert.js
 create mode 100644 node_modules/core-js/modules/esnext.weak-set.add-all.js
 create mode 100644 node_modules/core-js/modules/esnext.weak-set.delete-all.js
 create mode 100644 node_modules/core-js/modules/esnext.weak-set.from.js
 create mode 100644 node_modules/core-js/modules/esnext.weak-set.of.js
 create mode 100644 node_modules/core-js/modules/web.atob.js
 create mode 100644 node_modules/core-js/modules/web.btoa.js
 create mode 100644 node_modules/core-js/modules/web.clear-immediate.js
 create mode 100644 node_modules/core-js/modules/web.dom-collections.for-each.js
 create mode 100644 node_modules/core-js/modules/web.dom-collections.iterator.js
 create mode 100644 node_modules/core-js/modules/web.dom-exception.constructor.js
 create mode 100644 node_modules/core-js/modules/web.dom-exception.stack.js
 create mode 100644 node_modules/core-js/modules/web.dom-exception.to-string-tag.js
 create mode 100644 node_modules/core-js/modules/web.immediate.js
 create mode 100644 node_modules/core-js/modules/web.queue-microtask.js
 create mode 100644 node_modules/core-js/modules/web.self.js
 create mode 100644 node_modules/core-js/modules/web.set-immediate.js
 create mode 100644 node_modules/core-js/modules/web.set-interval.js
 create mode 100644 node_modules/core-js/modules/web.set-timeout.js
 create mode 100644 node_modules/core-js/modules/web.structured-clone.js
 create mode 100644 node_modules/core-js/modules/web.timers.js
 create mode 100644 node_modules/core-js/modules/web.url-search-params.constructor.js
 create mode 100644 node_modules/core-js/modules/web.url-search-params.delete.js
 create mode 100644 node_modules/core-js/modules/web.url-search-params.has.js
 create mode 100644 node_modules/core-js/modules/web.url-search-params.js
 create mode 100644 node_modules/core-js/modules/web.url-search-params.size.js
 create mode 100644 node_modules/core-js/modules/web.url.can-parse.js
 create mode 100644 node_modules/core-js/modules/web.url.constructor.js
 create mode 100644 node_modules/core-js/modules/web.url.js
 create mode 100644 node_modules/core-js/modules/web.url.parse.js
 create mode 100644 node_modules/core-js/modules/web.url.to-json.js
 create mode 100644 node_modules/core-js/package.json
 create mode 100644 node_modules/core-js/postinstall.js
 create mode 100644 node_modules/core-js/proposals/accessible-object-hasownproperty.js
 create mode 100644 node_modules/core-js/proposals/array-buffer-base64.js
 create mode 100644 node_modules/core-js/proposals/array-buffer-transfer.js
 create mode 100644 node_modules/core-js/proposals/array-filtering-stage-1.js
 create mode 100644 node_modules/core-js/proposals/array-filtering.js
 create mode 100644 node_modules/core-js/proposals/array-find-from-last.js
 create mode 100644 node_modules/core-js/proposals/array-flat-map.js
 create mode 100644 node_modules/core-js/proposals/array-from-async-stage-2.js
 create mode 100644 node_modules/core-js/proposals/array-from-async.js
 create mode 100644 node_modules/core-js/proposals/array-grouping-stage-3-2.js
 create mode 100644 node_modules/core-js/proposals/array-grouping-stage-3.js
 create mode 100644 node_modules/core-js/proposals/array-grouping-v2.js
 create mode 100644 node_modules/core-js/proposals/array-grouping.js
 create mode 100644 node_modules/core-js/proposals/array-includes.js
 create mode 100644 node_modules/core-js/proposals/array-is-template-object.js
 create mode 100644 node_modules/core-js/proposals/array-last.js
 create mode 100644 node_modules/core-js/proposals/array-unique.js
 create mode 100644 node_modules/core-js/proposals/async-explicit-resource-management.js
 create mode 100644 node_modules/core-js/proposals/async-iteration.js
 create mode 100644 node_modules/core-js/proposals/async-iterator-helpers.js
 create mode 100644 node_modules/core-js/proposals/change-array-by-copy-stage-4.js
 create mode 100644 node_modules/core-js/proposals/change-array-by-copy.js
 create mode 100644 node_modules/core-js/proposals/collection-methods.js
 create mode 100644 node_modules/core-js/proposals/collection-of-from.js
 create mode 100644 node_modules/core-js/proposals/data-view-get-set-uint8-clamped.js
 create mode 100644 node_modules/core-js/proposals/decorator-metadata-v2.js
 create mode 100644 node_modules/core-js/proposals/decorator-metadata.js
 create mode 100644 node_modules/core-js/proposals/decorators.js
 create mode 100644 node_modules/core-js/proposals/efficient-64-bit-arithmetic.js
 create mode 100644 node_modules/core-js/proposals/error-cause.js
 create mode 100644 node_modules/core-js/proposals/explicit-resource-management.js
 create mode 100644 node_modules/core-js/proposals/extractors.js
 create mode 100644 node_modules/core-js/proposals/float16.js
 create mode 100644 node_modules/core-js/proposals/function-demethodize.js
 create mode 100644 node_modules/core-js/proposals/function-is-callable-is-constructor.js
 create mode 100644 node_modules/core-js/proposals/function-un-this.js
 create mode 100644 node_modules/core-js/proposals/global-this.js
 create mode 100644 node_modules/core-js/proposals/index.js
 create mode 100644 node_modules/core-js/proposals/is-error.js
 create mode 100644 node_modules/core-js/proposals/iterator-helpers-stage-3-2.js
 create mode 100644 node_modules/core-js/proposals/iterator-helpers-stage-3.js
 create mode 100644 node_modules/core-js/proposals/iterator-helpers.js
 create mode 100644 node_modules/core-js/proposals/iterator-range.js
 create mode 100644 node_modules/core-js/proposals/iterator-sequencing.js
 create mode 100644 node_modules/core-js/proposals/json-parse-with-source.js
 create mode 100644 node_modules/core-js/proposals/keys-composition.js
 create mode 100644 node_modules/core-js/proposals/map-update-or-insert.js
 create mode 100644 node_modules/core-js/proposals/map-upsert-stage-2.js
 create mode 100644 node_modules/core-js/proposals/map-upsert-v4.js
 create mode 100644 node_modules/core-js/proposals/map-upsert.js
 create mode 100644 node_modules/core-js/proposals/math-clamp.js
 create mode 100644 node_modules/core-js/proposals/math-extensions.js
 create mode 100644 node_modules/core-js/proposals/math-signbit.js
 create mode 100644 node_modules/core-js/proposals/math-sum.js
 create mode 100644 node_modules/core-js/proposals/number-from-string.js
 create mode 100644 node_modules/core-js/proposals/number-range.js
 create mode 100644 node_modules/core-js/proposals/object-from-entries.js
 create mode 100644 node_modules/core-js/proposals/object-getownpropertydescriptors.js
 create mode 100644 node_modules/core-js/proposals/object-iteration.js
 create mode 100644 node_modules/core-js/proposals/object-values-entries.js
 create mode 100644 node_modules/core-js/proposals/observable.js
 create mode 100644 node_modules/core-js/proposals/pattern-matching-v2.js
 create mode 100644 node_modules/core-js/proposals/pattern-matching.js
 create mode 100644 node_modules/core-js/proposals/promise-all-settled.js
 create mode 100644 node_modules/core-js/proposals/promise-any.js
 create mode 100644 node_modules/core-js/proposals/promise-finally.js
 create mode 100644 node_modules/core-js/proposals/promise-try.js
 create mode 100644 node_modules/core-js/proposals/promise-with-resolvers.js
 create mode 100644 node_modules/core-js/proposals/reflect-metadata.js
 create mode 100644 node_modules/core-js/proposals/regexp-dotall-flag.js
 create mode 100644 node_modules/core-js/proposals/regexp-escaping.js
 create mode 100644 node_modules/core-js/proposals/regexp-named-groups.js
 create mode 100644 node_modules/core-js/proposals/relative-indexing-method.js
 create mode 100644 node_modules/core-js/proposals/seeded-random.js
 create mode 100644 node_modules/core-js/proposals/set-methods-v2.js
 create mode 100644 node_modules/core-js/proposals/set-methods.js
 create mode 100644 node_modules/core-js/proposals/string-at.js
 create mode 100644 node_modules/core-js/proposals/string-code-points.js
 create mode 100644 node_modules/core-js/proposals/string-cooked.js
 create mode 100644 node_modules/core-js/proposals/string-dedent.js
 create mode 100644 node_modules/core-js/proposals/string-left-right-trim.js
 create mode 100644 node_modules/core-js/proposals/string-match-all.js
 create mode 100644 node_modules/core-js/proposals/string-padding.js
 create mode 100644 node_modules/core-js/proposals/string-replace-all-stage-4.js
 create mode 100644 node_modules/core-js/proposals/string-replace-all.js
 create mode 100644 node_modules/core-js/proposals/symbol-description.js
 create mode 100644 node_modules/core-js/proposals/symbol-predicates-v2.js
 create mode 100644 node_modules/core-js/proposals/symbol-predicates.js
 create mode 100644 node_modules/core-js/proposals/url.js
 create mode 100644 node_modules/core-js/proposals/using-statement.js
 create mode 100644 node_modules/core-js/proposals/well-formed-stringify.js
 create mode 100644 node_modules/core-js/proposals/well-formed-unicode-strings.js
 create mode 100644 node_modules/core-js/stable/README.md
 create mode 100644 node_modules/core-js/stable/aggregate-error.js
 create mode 100644 node_modules/core-js/stable/array-buffer/constructor.js
 create mode 100644 node_modules/core-js/stable/array-buffer/detached.js
 create mode 100644 node_modules/core-js/stable/array-buffer/index.js
 create mode 100644 node_modules/core-js/stable/array-buffer/is-view.js
 create mode 100644 node_modules/core-js/stable/array-buffer/slice.js
 create mode 100644 node_modules/core-js/stable/array-buffer/transfer-to-fixed-length.js
 create mode 100644 node_modules/core-js/stable/array-buffer/transfer.js
 create mode 100644 node_modules/core-js/stable/array/at.js
 create mode 100644 node_modules/core-js/stable/array/concat.js
 create mode 100644 node_modules/core-js/stable/array/copy-within.js
 create mode 100644 node_modules/core-js/stable/array/entries.js
 create mode 100644 node_modules/core-js/stable/array/every.js
 create mode 100644 node_modules/core-js/stable/array/fill.js
 create mode 100644 node_modules/core-js/stable/array/filter.js
 create mode 100644 node_modules/core-js/stable/array/find-index.js
 create mode 100644 node_modules/core-js/stable/array/find-last-index.js
 create mode 100644 node_modules/core-js/stable/array/find-last.js
 create mode 100644 node_modules/core-js/stable/array/find.js
 create mode 100644 node_modules/core-js/stable/array/flat-map.js
 create mode 100644 node_modules/core-js/stable/array/flat.js
 create mode 100644 node_modules/core-js/stable/array/for-each.js
 create mode 100644 node_modules/core-js/stable/array/from.js
 create mode 100644 node_modules/core-js/stable/array/includes.js
 create mode 100644 node_modules/core-js/stable/array/index-of.js
 create mode 100644 node_modules/core-js/stable/array/index.js
 create mode 100644 node_modules/core-js/stable/array/is-array.js
 create mode 100644 node_modules/core-js/stable/array/iterator.js
 create mode 100644 node_modules/core-js/stable/array/join.js
 create mode 100644 node_modules/core-js/stable/array/keys.js
 create mode 100644 node_modules/core-js/stable/array/last-index-of.js
 create mode 100644 node_modules/core-js/stable/array/map.js
 create mode 100644 node_modules/core-js/stable/array/of.js
 create mode 100644 node_modules/core-js/stable/array/push.js
 create mode 100644 node_modules/core-js/stable/array/reduce-right.js
 create mode 100644 node_modules/core-js/stable/array/reduce.js
 create mode 100644 node_modules/core-js/stable/array/reverse.js
 create mode 100644 node_modules/core-js/stable/array/slice.js
 create mode 100644 node_modules/core-js/stable/array/some.js
 create mode 100644 node_modules/core-js/stable/array/sort.js
 create mode 100644 node_modules/core-js/stable/array/splice.js
 create mode 100644 node_modules/core-js/stable/array/to-reversed.js
 create mode 100644 node_modules/core-js/stable/array/to-sorted.js
 create mode 100644 node_modules/core-js/stable/array/to-spliced.js
 create mode 100644 node_modules/core-js/stable/array/unshift.js
 create mode 100644 node_modules/core-js/stable/array/values.js
 create mode 100644 node_modules/core-js/stable/array/virtual/at.js
 create mode 100644 node_modules/core-js/stable/array/virtual/concat.js
 create mode 100644 node_modules/core-js/stable/array/virtual/copy-within.js
 create mode 100644 node_modules/core-js/stable/array/virtual/entries.js
 create mode 100644 node_modules/core-js/stable/array/virtual/every.js
 create mode 100644 node_modules/core-js/stable/array/virtual/fill.js
 create mode 100644 node_modules/core-js/stable/array/virtual/filter.js
 create mode 100644 node_modules/core-js/stable/array/virtual/find-index.js
 create mode 100644 node_modules/core-js/stable/array/virtual/find-last-index.js
 create mode 100644 node_modules/core-js/stable/array/virtual/find-last.js
 create mode 100644 node_modules/core-js/stable/array/virtual/find.js
 create mode 100644 node_modules/core-js/stable/array/virtual/flat-map.js
 create mode 100644 node_modules/core-js/stable/array/virtual/flat.js
 create mode 100644 node_modules/core-js/stable/array/virtual/for-each.js
 create mode 100644 node_modules/core-js/stable/array/virtual/includes.js
 create mode 100644 node_modules/core-js/stable/array/virtual/index-of.js
 create mode 100644 node_modules/core-js/stable/array/virtual/index.js
 create mode 100644 node_modules/core-js/stable/array/virtual/iterator.js
 create mode 100644 node_modules/core-js/stable/array/virtual/join.js
 create mode 100644 node_modules/core-js/stable/array/virtual/keys.js
 create mode 100644 node_modules/core-js/stable/array/virtual/last-index-of.js
 create mode 100644 node_modules/core-js/stable/array/virtual/map.js
 create mode 100644 node_modules/core-js/stable/array/virtual/push.js
 create mode 100644 node_modules/core-js/stable/array/virtual/reduce-right.js
 create mode 100644 node_modules/core-js/stable/array/virtual/reduce.js
 create mode 100644 node_modules/core-js/stable/array/virtual/reverse.js
 create mode 100644 node_modules/core-js/stable/array/virtual/slice.js
 create mode 100644 node_modules/core-js/stable/array/virtual/some.js
 create mode 100644 node_modules/core-js/stable/array/virtual/sort.js
 create mode 100644 node_modules/core-js/stable/array/virtual/splice.js
 create mode 100644 node_modules/core-js/stable/array/virtual/to-reversed.js
 create mode 100644 node_modules/core-js/stable/array/virtual/to-sorted.js
 create mode 100644 node_modules/core-js/stable/array/virtual/to-spliced.js
 create mode 100644 node_modules/core-js/stable/array/virtual/unshift.js
 create mode 100644 node_modules/core-js/stable/array/virtual/values.js
 create mode 100644 node_modules/core-js/stable/array/virtual/with.js
 create mode 100644 node_modules/core-js/stable/array/with.js
 create mode 100644 node_modules/core-js/stable/atob.js
 create mode 100644 node_modules/core-js/stable/btoa.js
 create mode 100644 node_modules/core-js/stable/clear-immediate.js
 create mode 100644 node_modules/core-js/stable/data-view/get-float16.js
 create mode 100644 node_modules/core-js/stable/data-view/index.js
 create mode 100644 node_modules/core-js/stable/data-view/set-float16.js
 create mode 100644 node_modules/core-js/stable/date/get-year.js
 create mode 100644 node_modules/core-js/stable/date/index.js
 create mode 100644 node_modules/core-js/stable/date/now.js
 create mode 100644 node_modules/core-js/stable/date/set-year.js
 create mode 100644 node_modules/core-js/stable/date/to-gmt-string.js
 create mode 100644 node_modules/core-js/stable/date/to-iso-string.js
 create mode 100644 node_modules/core-js/stable/date/to-json.js
 create mode 100644 node_modules/core-js/stable/date/to-primitive.js
 create mode 100644 node_modules/core-js/stable/date/to-string.js
 create mode 100644 node_modules/core-js/stable/dom-collections/for-each.js
 create mode 100644 node_modules/core-js/stable/dom-collections/index.js
 create mode 100644 node_modules/core-js/stable/dom-collections/iterator.js
 create mode 100644 node_modules/core-js/stable/dom-exception/constructor.js
 create mode 100644 node_modules/core-js/stable/dom-exception/index.js
 create mode 100644 node_modules/core-js/stable/dom-exception/to-string-tag.js
 create mode 100644 node_modules/core-js/stable/error/constructor.js
 create mode 100644 node_modules/core-js/stable/error/index.js
 create mode 100644 node_modules/core-js/stable/error/to-string.js
 create mode 100644 node_modules/core-js/stable/escape.js
 create mode 100644 node_modules/core-js/stable/function/bind.js
 create mode 100644 node_modules/core-js/stable/function/has-instance.js
 create mode 100644 node_modules/core-js/stable/function/index.js
 create mode 100644 node_modules/core-js/stable/function/name.js
 create mode 100644 node_modules/core-js/stable/function/virtual/bind.js
 create mode 100644 node_modules/core-js/stable/function/virtual/index.js
 create mode 100644 node_modules/core-js/stable/get-iterator-method.js
 create mode 100644 node_modules/core-js/stable/get-iterator.js
 create mode 100644 node_modules/core-js/stable/global-this.js
 create mode 100644 node_modules/core-js/stable/index.js
 create mode 100644 node_modules/core-js/stable/instance/at.js
 create mode 100644 node_modules/core-js/stable/instance/bind.js
 create mode 100644 node_modules/core-js/stable/instance/code-point-at.js
 create mode 100644 node_modules/core-js/stable/instance/concat.js
 create mode 100644 node_modules/core-js/stable/instance/copy-within.js
 create mode 100644 node_modules/core-js/stable/instance/ends-with.js
 create mode 100644 node_modules/core-js/stable/instance/entries.js
 create mode 100644 node_modules/core-js/stable/instance/every.js
 create mode 100644 node_modules/core-js/stable/instance/fill.js
 create mode 100644 node_modules/core-js/stable/instance/filter.js
 create mode 100644 node_modules/core-js/stable/instance/find-index.js
 create mode 100644 node_modules/core-js/stable/instance/find-last-index.js
 create mode 100644 node_modules/core-js/stable/instance/find-last.js
 create mode 100644 node_modules/core-js/stable/instance/find.js
 create mode 100644 node_modules/core-js/stable/instance/flags.js
 create mode 100644 node_modules/core-js/stable/instance/flat-map.js
 create mode 100644 node_modules/core-js/stable/instance/flat.js
 create mode 100644 node_modules/core-js/stable/instance/for-each.js
 create mode 100644 node_modules/core-js/stable/instance/includes.js
 create mode 100644 node_modules/core-js/stable/instance/index-of.js
 create mode 100644 node_modules/core-js/stable/instance/is-well-formed.js
 create mode 100644 node_modules/core-js/stable/instance/keys.js
 create mode 100644 node_modules/core-js/stable/instance/last-index-of.js
 create mode 100644 node_modules/core-js/stable/instance/map.js
 create mode 100644 node_modules/core-js/stable/instance/match-all.js
 create mode 100644 node_modules/core-js/stable/instance/pad-end.js
 create mode 100644 node_modules/core-js/stable/instance/pad-start.js
 create mode 100644 node_modules/core-js/stable/instance/push.js
 create mode 100644 node_modules/core-js/stable/instance/reduce-right.js
 create mode 100644 node_modules/core-js/stable/instance/reduce.js
 create mode 100644 node_modules/core-js/stable/instance/repeat.js
 create mode 100644 node_modules/core-js/stable/instance/replace-all.js
 create mode 100644 node_modules/core-js/stable/instance/reverse.js
 create mode 100644 node_modules/core-js/stable/instance/slice.js
 create mode 100644 node_modules/core-js/stable/instance/some.js
 create mode 100644 node_modules/core-js/stable/instance/sort.js
 create mode 100644 node_modules/core-js/stable/instance/splice.js
 create mode 100644 node_modules/core-js/stable/instance/starts-with.js
 create mode 100644 node_modules/core-js/stable/instance/to-reversed.js
 create mode 100644 node_modules/core-js/stable/instance/to-sorted.js
 create mode 100644 node_modules/core-js/stable/instance/to-spliced.js
 create mode 100644 node_modules/core-js/stable/instance/to-well-formed.js
 create mode 100644 node_modules/core-js/stable/instance/trim-end.js
 create mode 100644 node_modules/core-js/stable/instance/trim-left.js
 create mode 100644 node_modules/core-js/stable/instance/trim-right.js
 create mode 100644 node_modules/core-js/stable/instance/trim-start.js
 create mode 100644 node_modules/core-js/stable/instance/trim.js
 create mode 100644 node_modules/core-js/stable/instance/unshift.js
 create mode 100644 node_modules/core-js/stable/instance/values.js
 create mode 100644 node_modules/core-js/stable/instance/with.js
 create mode 100644 node_modules/core-js/stable/is-iterable.js
 create mode 100644 node_modules/core-js/stable/iterator/drop.js
 create mode 100644 node_modules/core-js/stable/iterator/every.js
 create mode 100644 node_modules/core-js/stable/iterator/filter.js
 create mode 100644 node_modules/core-js/stable/iterator/find.js
 create mode 100644 node_modules/core-js/stable/iterator/flat-map.js
 create mode 100644 node_modules/core-js/stable/iterator/for-each.js
 create mode 100644 node_modules/core-js/stable/iterator/from.js
 create mode 100644 node_modules/core-js/stable/iterator/index.js
 create mode 100644 node_modules/core-js/stable/iterator/map.js
 create mode 100644 node_modules/core-js/stable/iterator/reduce.js
 create mode 100644 node_modules/core-js/stable/iterator/some.js
 create mode 100644 node_modules/core-js/stable/iterator/take.js
 create mode 100644 node_modules/core-js/stable/iterator/to-array.js
 create mode 100644 node_modules/core-js/stable/json/index.js
 create mode 100644 node_modules/core-js/stable/json/stringify.js
 create mode 100644 node_modules/core-js/stable/json/to-string-tag.js
 create mode 100644 node_modules/core-js/stable/map/group-by.js
 create mode 100644 node_modules/core-js/stable/map/index.js
 create mode 100644 node_modules/core-js/stable/math/acosh.js
 create mode 100644 node_modules/core-js/stable/math/asinh.js
 create mode 100644 node_modules/core-js/stable/math/atanh.js
 create mode 100644 node_modules/core-js/stable/math/cbrt.js
 create mode 100644 node_modules/core-js/stable/math/clz32.js
 create mode 100644 node_modules/core-js/stable/math/cosh.js
 create mode 100644 node_modules/core-js/stable/math/expm1.js
 create mode 100644 node_modules/core-js/stable/math/f16round.js
 create mode 100644 node_modules/core-js/stable/math/fround.js
 create mode 100644 node_modules/core-js/stable/math/hypot.js
 create mode 100644 node_modules/core-js/stable/math/imul.js
 create mode 100644 node_modules/core-js/stable/math/index.js
 create mode 100644 node_modules/core-js/stable/math/log10.js
 create mode 100644 node_modules/core-js/stable/math/log1p.js
 create mode 100644 node_modules/core-js/stable/math/log2.js
 create mode 100644 node_modules/core-js/stable/math/sign.js
 create mode 100644 node_modules/core-js/stable/math/sinh.js
 create mode 100644 node_modules/core-js/stable/math/tanh.js
 create mode 100644 node_modules/core-js/stable/math/to-string-tag.js
 create mode 100644 node_modules/core-js/stable/math/trunc.js
 create mode 100644 node_modules/core-js/stable/number/constructor.js
 create mode 100644 node_modules/core-js/stable/number/epsilon.js
 create mode 100644 node_modules/core-js/stable/number/index.js
 create mode 100644 node_modules/core-js/stable/number/is-finite.js
 create mode 100644 node_modules/core-js/stable/number/is-integer.js
 create mode 100644 node_modules/core-js/stable/number/is-nan.js
 create mode 100644 node_modules/core-js/stable/number/is-safe-integer.js
 create mode 100644 node_modules/core-js/stable/number/max-safe-integer.js
 create mode 100644 node_modules/core-js/stable/number/min-safe-integer.js
 create mode 100644 node_modules/core-js/stable/number/parse-float.js
 create mode 100644 node_modules/core-js/stable/number/parse-int.js
 create mode 100644 node_modules/core-js/stable/number/to-exponential.js
 create mode 100644 node_modules/core-js/stable/number/to-fixed.js
 create mode 100644 node_modules/core-js/stable/number/to-precision.js
 create mode 100644 node_modules/core-js/stable/number/virtual/index.js
 create mode 100644 node_modules/core-js/stable/number/virtual/to-exponential.js
 create mode 100644 node_modules/core-js/stable/number/virtual/to-fixed.js
 create mode 100644 node_modules/core-js/stable/number/virtual/to-precision.js
 create mode 100644 node_modules/core-js/stable/object/assign.js
 create mode 100644 node_modules/core-js/stable/object/create.js
 create mode 100644 node_modules/core-js/stable/object/define-getter.js
 create mode 100644 node_modules/core-js/stable/object/define-properties.js
 create mode 100644 node_modules/core-js/stable/object/define-property.js
 create mode 100644 node_modules/core-js/stable/object/define-setter.js
 create mode 100644 node_modules/core-js/stable/object/entries.js
 create mode 100644 node_modules/core-js/stable/object/freeze.js
 create mode 100644 node_modules/core-js/stable/object/from-entries.js
 create mode 100644 node_modules/core-js/stable/object/get-own-property-descriptor.js
 create mode 100644 node_modules/core-js/stable/object/get-own-property-descriptors.js
 create mode 100644 node_modules/core-js/stable/object/get-own-property-names.js
 create mode 100644 node_modules/core-js/stable/object/get-own-property-symbols.js
 create mode 100644 node_modules/core-js/stable/object/get-prototype-of.js
 create mode 100644 node_modules/core-js/stable/object/group-by.js
 create mode 100644 node_modules/core-js/stable/object/has-own.js
 create mode 100644 node_modules/core-js/stable/object/index.js
 create mode 100644 node_modules/core-js/stable/object/is-extensible.js
 create mode 100644 node_modules/core-js/stable/object/is-frozen.js
 create mode 100644 node_modules/core-js/stable/object/is-sealed.js
 create mode 100644 node_modules/core-js/stable/object/is.js
 create mode 100644 node_modules/core-js/stable/object/keys.js
 create mode 100644 node_modules/core-js/stable/object/lookup-getter.js
 create mode 100644 node_modules/core-js/stable/object/lookup-setter.js
 create mode 100644 node_modules/core-js/stable/object/prevent-extensions.js
 create mode 100644 node_modules/core-js/stable/object/proto.js
 create mode 100644 node_modules/core-js/stable/object/seal.js
 create mode 100644 node_modules/core-js/stable/object/set-prototype-of.js
 create mode 100644 node_modules/core-js/stable/object/to-string.js
 create mode 100644 node_modules/core-js/stable/object/values.js
 create mode 100644 node_modules/core-js/stable/parse-float.js
 create mode 100644 node_modules/core-js/stable/parse-int.js
 create mode 100644 node_modules/core-js/stable/promise/all-settled.js
 create mode 100644 node_modules/core-js/stable/promise/any.js
 create mode 100644 node_modules/core-js/stable/promise/finally.js
 create mode 100644 node_modules/core-js/stable/promise/index.js
 create mode 100644 node_modules/core-js/stable/promise/try.js
 create mode 100644 node_modules/core-js/stable/promise/with-resolvers.js
 create mode 100644 node_modules/core-js/stable/queue-microtask.js
 create mode 100644 node_modules/core-js/stable/reflect/apply.js
 create mode 100644 node_modules/core-js/stable/reflect/construct.js
 create mode 100644 node_modules/core-js/stable/reflect/define-property.js
 create mode 100644 node_modules/core-js/stable/reflect/delete-property.js
 create mode 100644 node_modules/core-js/stable/reflect/get-own-property-descriptor.js
 create mode 100644 node_modules/core-js/stable/reflect/get-prototype-of.js
 create mode 100644 node_modules/core-js/stable/reflect/get.js
 create mode 100644 node_modules/core-js/stable/reflect/has.js
 create mode 100644 node_modules/core-js/stable/reflect/index.js
 create mode 100644 node_modules/core-js/stable/reflect/is-extensible.js
 create mode 100644 node_modules/core-js/stable/reflect/own-keys.js
 create mode 100644 node_modules/core-js/stable/reflect/prevent-extensions.js
 create mode 100644 node_modules/core-js/stable/reflect/set-prototype-of.js
 create mode 100644 node_modules/core-js/stable/reflect/set.js
 create mode 100644 node_modules/core-js/stable/reflect/to-string-tag.js
 create mode 100644 node_modules/core-js/stable/regexp/constructor.js
 create mode 100644 node_modules/core-js/stable/regexp/dot-all.js
 create mode 100644 node_modules/core-js/stable/regexp/escape.js
 create mode 100644 node_modules/core-js/stable/regexp/flags.js
 create mode 100644 node_modules/core-js/stable/regexp/index.js
 create mode 100644 node_modules/core-js/stable/regexp/match.js
 create mode 100644 node_modules/core-js/stable/regexp/replace.js
 create mode 100644 node_modules/core-js/stable/regexp/search.js
 create mode 100644 node_modules/core-js/stable/regexp/split.js
 create mode 100644 node_modules/core-js/stable/regexp/sticky.js
 create mode 100644 node_modules/core-js/stable/regexp/test.js
 create mode 100644 node_modules/core-js/stable/regexp/to-string.js
 create mode 100644 node_modules/core-js/stable/self.js
 create mode 100644 node_modules/core-js/stable/set-immediate.js
 create mode 100644 node_modules/core-js/stable/set-interval.js
 create mode 100644 node_modules/core-js/stable/set-timeout.js
 create mode 100644 node_modules/core-js/stable/set/difference.js
 create mode 100644 node_modules/core-js/stable/set/index.js
 create mode 100644 node_modules/core-js/stable/set/intersection.js
 create mode 100644 node_modules/core-js/stable/set/is-disjoint-from.js
 create mode 100644 node_modules/core-js/stable/set/is-subset-of.js
 create mode 100644 node_modules/core-js/stable/set/is-superset-of.js
 create mode 100644 node_modules/core-js/stable/set/symmetric-difference.js
 create mode 100644 node_modules/core-js/stable/set/union.js
 create mode 100644 node_modules/core-js/stable/string/anchor.js
 create mode 100644 node_modules/core-js/stable/string/at.js
 create mode 100644 node_modules/core-js/stable/string/big.js
 create mode 100644 node_modules/core-js/stable/string/blink.js
 create mode 100644 node_modules/core-js/stable/string/bold.js
 create mode 100644 node_modules/core-js/stable/string/code-point-at.js
 create mode 100644 node_modules/core-js/stable/string/ends-with.js
 create mode 100644 node_modules/core-js/stable/string/fixed.js
 create mode 100644 node_modules/core-js/stable/string/fontcolor.js
 create mode 100644 node_modules/core-js/stable/string/fontsize.js
 create mode 100644 node_modules/core-js/stable/string/from-code-point.js
 create mode 100644 node_modules/core-js/stable/string/includes.js
 create mode 100644 node_modules/core-js/stable/string/index.js
 create mode 100644 node_modules/core-js/stable/string/is-well-formed.js
 create mode 100644 node_modules/core-js/stable/string/italics.js
 create mode 100644 node_modules/core-js/stable/string/iterator.js
 create mode 100644 node_modules/core-js/stable/string/link.js
 create mode 100644 node_modules/core-js/stable/string/match-all.js
 create mode 100644 node_modules/core-js/stable/string/match.js
 create mode 100644 node_modules/core-js/stable/string/pad-end.js
 create mode 100644 node_modules/core-js/stable/string/pad-start.js
 create mode 100644 node_modules/core-js/stable/string/raw.js
 create mode 100644 node_modules/core-js/stable/string/repeat.js
 create mode 100644 node_modules/core-js/stable/string/replace-all.js
 create mode 100644 node_modules/core-js/stable/string/replace.js
 create mode 100644 node_modules/core-js/stable/string/search.js
 create mode 100644 node_modules/core-js/stable/string/small.js
 create mode 100644 node_modules/core-js/stable/string/split.js
 create mode 100644 node_modules/core-js/stable/string/starts-with.js
 create mode 100644 node_modules/core-js/stable/string/strike.js
 create mode 100644 node_modules/core-js/stable/string/sub.js
 create mode 100644 node_modules/core-js/stable/string/substr.js
 create mode 100644 node_modules/core-js/stable/string/sup.js
 create mode 100644 node_modules/core-js/stable/string/to-well-formed.js
 create mode 100644 node_modules/core-js/stable/string/trim-end.js
 create mode 100644 node_modules/core-js/stable/string/trim-left.js
 create mode 100644 node_modules/core-js/stable/string/trim-right.js
 create mode 100644 node_modules/core-js/stable/string/trim-start.js
 create mode 100644 node_modules/core-js/stable/string/trim.js
 create mode 100644 node_modules/core-js/stable/string/virtual/anchor.js
 create mode 100644 node_modules/core-js/stable/string/virtual/at.js
 create mode 100644 node_modules/core-js/stable/string/virtual/big.js
 create mode 100644 node_modules/core-js/stable/string/virtual/blink.js
 create mode 100644 node_modules/core-js/stable/string/virtual/bold.js
 create mode 100644 node_modules/core-js/stable/string/virtual/code-point-at.js
 create mode 100644 node_modules/core-js/stable/string/virtual/ends-with.js
 create mode 100644 node_modules/core-js/stable/string/virtual/fixed.js
 create mode 100644 node_modules/core-js/stable/string/virtual/fontcolor.js
 create mode 100644 node_modules/core-js/stable/string/virtual/fontsize.js
 create mode 100644 node_modules/core-js/stable/string/virtual/includes.js
 create mode 100644 node_modules/core-js/stable/string/virtual/index.js
 create mode 100644 node_modules/core-js/stable/string/virtual/is-well-formed.js
 create mode 100644 node_modules/core-js/stable/string/virtual/italics.js
 create mode 100644 node_modules/core-js/stable/string/virtual/iterator.js
 create mode 100644 node_modules/core-js/stable/string/virtual/link.js
 create mode 100644 node_modules/core-js/stable/string/virtual/match-all.js
 create mode 100644 node_modules/core-js/stable/string/virtual/pad-end.js
 create mode 100644 node_modules/core-js/stable/string/virtual/pad-start.js
 create mode 100644 node_modules/core-js/stable/string/virtual/repeat.js
 create mode 100644 node_modules/core-js/stable/string/virtual/replace-all.js
 create mode 100644 node_modules/core-js/stable/string/virtual/small.js
 create mode 100644 node_modules/core-js/stable/string/virtual/starts-with.js
 create mode 100644 node_modules/core-js/stable/string/virtual/strike.js
 create mode 100644 node_modules/core-js/stable/string/virtual/sub.js
 create mode 100644 node_modules/core-js/stable/string/virtual/substr.js
 create mode 100644 node_modules/core-js/stable/string/virtual/sup.js
 create mode 100644 node_modules/core-js/stable/string/virtual/to-well-formed.js
 create mode 100644 node_modules/core-js/stable/string/virtual/trim-end.js
 create mode 100644 node_modules/core-js/stable/string/virtual/trim-left.js
 create mode 100644 node_modules/core-js/stable/string/virtual/trim-right.js
 create mode 100644 node_modules/core-js/stable/string/virtual/trim-start.js
 create mode 100644 node_modules/core-js/stable/string/virtual/trim.js
 create mode 100644 node_modules/core-js/stable/structured-clone.js
 create mode 100644 node_modules/core-js/stable/symbol/async-iterator.js
 create mode 100644 node_modules/core-js/stable/symbol/description.js
 create mode 100644 node_modules/core-js/stable/symbol/for.js
 create mode 100644 node_modules/core-js/stable/symbol/has-instance.js
 create mode 100644 node_modules/core-js/stable/symbol/index.js
 create mode 100644 node_modules/core-js/stable/symbol/is-concat-spreadable.js
 create mode 100644 node_modules/core-js/stable/symbol/iterator.js
 create mode 100644 node_modules/core-js/stable/symbol/key-for.js
 create mode 100644 node_modules/core-js/stable/symbol/match-all.js
 create mode 100644 node_modules/core-js/stable/symbol/match.js
 create mode 100644 node_modules/core-js/stable/symbol/replace.js
 create mode 100644 node_modules/core-js/stable/symbol/search.js
 create mode 100644 node_modules/core-js/stable/symbol/species.js
 create mode 100644 node_modules/core-js/stable/symbol/split.js
 create mode 100644 node_modules/core-js/stable/symbol/to-primitive.js
 create mode 100644 node_modules/core-js/stable/symbol/to-string-tag.js
 create mode 100644 node_modules/core-js/stable/symbol/unscopables.js
 create mode 100644 node_modules/core-js/stable/typed-array/at.js
 create mode 100644 node_modules/core-js/stable/typed-array/copy-within.js
 create mode 100644 node_modules/core-js/stable/typed-array/entries.js
 create mode 100644 node_modules/core-js/stable/typed-array/every.js
 create mode 100644 node_modules/core-js/stable/typed-array/fill.js
 create mode 100644 node_modules/core-js/stable/typed-array/filter.js
 create mode 100644 node_modules/core-js/stable/typed-array/find-index.js
 create mode 100644 node_modules/core-js/stable/typed-array/find-last-index.js
 create mode 100644 node_modules/core-js/stable/typed-array/find-last.js
 create mode 100644 node_modules/core-js/stable/typed-array/find.js
 create mode 100644 node_modules/core-js/stable/typed-array/float32-array.js
 create mode 100644 node_modules/core-js/stable/typed-array/float64-array.js
 create mode 100644 node_modules/core-js/stable/typed-array/for-each.js
 create mode 100644 node_modules/core-js/stable/typed-array/from.js
 create mode 100644 node_modules/core-js/stable/typed-array/includes.js
 create mode 100644 node_modules/core-js/stable/typed-array/index-of.js
 create mode 100644 node_modules/core-js/stable/typed-array/index.js
 create mode 100644 node_modules/core-js/stable/typed-array/int16-array.js
 create mode 100644 node_modules/core-js/stable/typed-array/int32-array.js
 create mode 100644 node_modules/core-js/stable/typed-array/int8-array.js
 create mode 100644 node_modules/core-js/stable/typed-array/iterator.js
 create mode 100644 node_modules/core-js/stable/typed-array/join.js
 create mode 100644 node_modules/core-js/stable/typed-array/keys.js
 create mode 100644 node_modules/core-js/stable/typed-array/last-index-of.js
 create mode 100644 node_modules/core-js/stable/typed-array/map.js
 create mode 100644 node_modules/core-js/stable/typed-array/methods.js
 create mode 100644 node_modules/core-js/stable/typed-array/of.js
 create mode 100644 node_modules/core-js/stable/typed-array/reduce-right.js
 create mode 100644 node_modules/core-js/stable/typed-array/reduce.js
 create mode 100644 node_modules/core-js/stable/typed-array/reverse.js
 create mode 100644 node_modules/core-js/stable/typed-array/set.js
 create mode 100644 node_modules/core-js/stable/typed-array/slice.js
 create mode 100644 node_modules/core-js/stable/typed-array/some.js
 create mode 100644 node_modules/core-js/stable/typed-array/sort.js
 create mode 100644 node_modules/core-js/stable/typed-array/subarray.js
 create mode 100644 node_modules/core-js/stable/typed-array/to-locale-string.js
 create mode 100644 node_modules/core-js/stable/typed-array/to-reversed.js
 create mode 100644 node_modules/core-js/stable/typed-array/to-sorted.js
 create mode 100644 node_modules/core-js/stable/typed-array/to-string.js
 create mode 100644 node_modules/core-js/stable/typed-array/uint16-array.js
 create mode 100644 node_modules/core-js/stable/typed-array/uint32-array.js
 create mode 100644 node_modules/core-js/stable/typed-array/uint8-array.js
 create mode 100644 node_modules/core-js/stable/typed-array/uint8-clamped-array.js
 create mode 100644 node_modules/core-js/stable/typed-array/values.js
 create mode 100644 node_modules/core-js/stable/typed-array/with.js
 create mode 100644 node_modules/core-js/stable/unescape.js
 create mode 100644 node_modules/core-js/stable/url-search-params/index.js
 create mode 100644 node_modules/core-js/stable/url/can-parse.js
 create mode 100644 node_modules/core-js/stable/url/index.js
 create mode 100644 node_modules/core-js/stable/url/parse.js
 create mode 100644 node_modules/core-js/stable/url/to-json.js
 create mode 100644 node_modules/core-js/stable/weak-map/index.js
 create mode 100644 node_modules/core-js/stable/weak-set/index.js
 create mode 100644 node_modules/core-js/stage/0.js
 create mode 100644 node_modules/core-js/stage/1.js
 create mode 100644 node_modules/core-js/stage/2.7.js
 create mode 100644 node_modules/core-js/stage/2.js
 create mode 100644 node_modules/core-js/stage/3.js
 create mode 100644 node_modules/core-js/stage/4.js
 create mode 100644 node_modules/core-js/stage/README.md
 create mode 100644 node_modules/core-js/stage/index.js
 create mode 100644 node_modules/core-js/stage/pre.js
 create mode 100644 node_modules/core-js/web/README.md
 create mode 100644 node_modules/core-js/web/dom-collections.js
 create mode 100644 node_modules/core-js/web/dom-exception.js
 create mode 100644 node_modules/core-js/web/immediate.js
 create mode 100644 node_modules/core-js/web/index.js
 create mode 100644 node_modules/core-js/web/queue-microtask.js
 create mode 100644 node_modules/core-js/web/structured-clone.js
 create mode 100644 node_modules/core-js/web/timers.js
 create mode 100644 node_modules/core-js/web/url-search-params.js
 create mode 100644 node_modules/core-js/web/url.js
 create mode 100644 node_modules/css-line-break/CHANGELOG.md
 create mode 100644 node_modules/css-line-break/LICENSE
 create mode 100644 node_modules/css-line-break/README.md
 create mode 100644 node_modules/css-line-break/package.json
 create mode 100644 node_modules/css-line-break/rollup.config.ts
 create mode 100644 node_modules/dompurify/LICENSE
 create mode 100644 node_modules/dompurify/README.md
 create mode 100644 node_modules/dompurify/package.json
 create mode 100644 node_modules/fflate/CHANGELOG.md
 create mode 100644 node_modules/fflate/LICENSE
 create mode 100644 node_modules/fflate/README.md
 create mode 100644 node_modules/fflate/esm/browser.d.ts
 create mode 100644 node_modules/fflate/esm/browser.js
 create mode 100644 node_modules/fflate/esm/index.d.mts
 create mode 100644 node_modules/fflate/esm/index.mjs
 create mode 100644 node_modules/fflate/lib/browser.cjs
 create mode 100644 node_modules/fflate/lib/browser.d.cts
 create mode 100644 node_modules/fflate/lib/index.cjs
 create mode 100644 node_modules/fflate/lib/index.d.ts
 create mode 100644 node_modules/fflate/lib/node-worker.cjs
 create mode 100644 node_modules/fflate/lib/node.cjs
 create mode 100644 node_modules/fflate/lib/node.d.cts
 create mode 100644 node_modules/fflate/lib/worker.cjs
 create mode 100644 node_modules/fflate/package.json
 create mode 100644 node_modules/fflate/umd/index.js
 create mode 100644 node_modules/html2canvas/CHANGELOG.md
 create mode 100644 node_modules/html2canvas/LICENSE
 create mode 100644 node_modules/html2canvas/README.md
 create mode 100644 node_modules/html2canvas/package.json
 create mode 100644 node_modules/html2canvas/tsconfig.json
 create mode 100644 node_modules/jspdf/LICENSE
 create mode 100644 node_modules/jspdf/README.md
 create mode 100644 node_modules/jspdf/package.json
 create mode 100644 node_modules/jspdf/types/index.d.ts
 create mode 100644 node_modules/performance-now/.npmignore
 create mode 100644 node_modules/performance-now/.tm_properties
 create mode 100644 node_modules/performance-now/.travis.yml
 create mode 100644 node_modules/performance-now/README.md
 create mode 100644 node_modules/performance-now/lib/performance-now.js
 create mode 100644 node_modules/performance-now/lib/performance-now.js.map
 create mode 100644 node_modules/performance-now/license.txt
 create mode 100644 node_modules/performance-now/package.json
 create mode 100644 node_modules/performance-now/src/index.d.ts
 create mode 100644 node_modules/performance-now/src/performance-now.coffee
 create mode 100644 node_modules/performance-now/test/mocha.opts
 create mode 100644 node_modules/performance-now/test/performance-now.coffee
 create mode 100644 node_modules/performance-now/test/scripts.coffee
 create mode 100644 node_modules/performance-now/test/scripts/delayed-call.coffee
 create mode 100644 node_modules/performance-now/test/scripts/delayed-require.coffee
 create mode 100644 node_modules/performance-now/test/scripts/difference.coffee
 create mode 100644 node_modules/performance-now/test/scripts/initial-value.coffee
 create mode 100644 node_modules/raf/LICENSE
 create mode 100644 node_modules/raf/README.md
 create mode 100644 node_modules/raf/index.js
 create mode 100644 node_modules/raf/package.json
 create mode 100644 node_modules/raf/polyfill.js
 create mode 100644 node_modules/raf/test.js
 create mode 100644 node_modules/raf/window.js
 create mode 100644 node_modules/regenerator-runtime/LICENSE
 create mode 100644 node_modules/regenerator-runtime/README.md
 create mode 100644 node_modules/regenerator-runtime/package.json
 create mode 100644 node_modules/regenerator-runtime/path.js
 create mode 100644 node_modules/regenerator-runtime/runtime.js
 create mode 100644 node_modules/rgbcolor/FEEL-FREE.md
 create mode 100644 node_modules/rgbcolor/LICENSE.md
 create mode 100644 node_modules/rgbcolor/README.md
 create mode 100644 node_modules/rgbcolor/index.js
 create mode 100644 node_modules/rgbcolor/package.json
 create mode 100644 node_modules/stackblur-canvas/.editorconfig
 create mode 100644 node_modules/stackblur-canvas/.eslintignore
 create mode 100644 node_modules/stackblur-canvas/.eslintrc.js
 create mode 100644 node_modules/stackblur-canvas/CHANGES.md
 create mode 100644 node_modules/stackblur-canvas/LICENSE-MIT.txt
 create mode 100644 node_modules/stackblur-canvas/README.md
 create mode 100644 node_modules/stackblur-canvas/index.d.ts
 create mode 100644 node_modules/stackblur-canvas/package.json
 create mode 100644 node_modules/stackblur-canvas/src/stackblur.js
 create mode 100644 node_modules/svg-pathdata/CHANGELOG.md
 create mode 100644 node_modules/svg-pathdata/LICENSE
 create mode 100644 node_modules/svg-pathdata/README.md
 create mode 100644 node_modules/svg-pathdata/index.d.ts
 create mode 100644 node_modules/svg-pathdata/karma.conf.js
 create mode 100644 node_modules/svg-pathdata/lib/SVGPathData.cjs
 create mode 100644 node_modules/svg-pathdata/lib/SVGPathData.cjs.map
 create mode 100644 node_modules/svg-pathdata/lib/SVGPathData.d.ts
 create mode 100644 node_modules/svg-pathdata/lib/SVGPathData.module.js
 create mode 100644 node_modules/svg-pathdata/lib/SVGPathData.module.js.map
 create mode 100644 node_modules/svg-pathdata/lib/SVGPathDataEncoder.d.ts
 create mode 100644 node_modules/svg-pathdata/lib/SVGPathDataParser.d.ts
 create mode 100644 node_modules/svg-pathdata/lib/SVGPathDataTransformer.d.ts
 create mode 100644 node_modules/svg-pathdata/lib/TransformableSVG.d.ts
 create mode 100644 node_modules/svg-pathdata/lib/mathUtils.d.ts
 create mode 100644 node_modules/svg-pathdata/lib/types.d.ts
 create mode 100644 node_modules/svg-pathdata/package.json
 create mode 100644 node_modules/svg-pathdata/src/SVGPathData.ts
 create mode 100644 node_modules/svg-pathdata/src/SVGPathDataEncoder.ts
 create mode 100644 node_modules/svg-pathdata/src/SVGPathDataParser.ts
 create mode 100644 node_modules/svg-pathdata/src/SVGPathDataTransformer.ts
 create mode 100644 node_modules/svg-pathdata/src/TransformableSVG.ts
 create mode 100644 node_modules/svg-pathdata/src/mathUtils.ts
 create mode 100644 node_modules/svg-pathdata/src/types.ts
 create mode 100644 node_modules/svg-pathdata/tsconfig.json
 create mode 100644 node_modules/svg-pathdata/tslint.json
 create mode 100644 node_modules/text-segmentation/CHANGELOG.md
 create mode 100644 node_modules/text-segmentation/LICENSE
 create mode 100644 node_modules/text-segmentation/README.md
 create mode 100644 node_modules/text-segmentation/package.json
 create mode 100644 node_modules/text-segmentation/rollup.config.ts
 create mode 100644 node_modules/utrie/CHANGELOG.md
 create mode 100644 node_modules/utrie/LICENSE
 create mode 100644 node_modules/utrie/package.json
 create mode 100644 node_modules/utrie/rollup.config.ts
 create mode 100644 ventaboletos/public/search.jpg

diff --git a/node_modules/.bin/atob b/node_modules/.bin/atob
new file mode 100644
index 0000000..6d8ec0e
--- /dev/null
+++ b/node_modules/.bin/atob
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+    *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+  exec "$basedir/node"  "$basedir/../atob/bin/atob.js" "$@"
+else 
+  exec node  "$basedir/../atob/bin/atob.js" "$@"
+fi
diff --git a/node_modules/.bin/atob.cmd b/node_modules/.bin/atob.cmd
new file mode 100644
index 0000000..850a60b
--- /dev/null
+++ b/node_modules/.bin/atob.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+  SET "_prog=%dp0%\node.exe"
+) ELSE (
+  SET "_prog=node"
+  SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\atob\bin\atob.js" %*
diff --git a/node_modules/.bin/atob.ps1 b/node_modules/.bin/atob.ps1
new file mode 100644
index 0000000..4a9f311
--- /dev/null
+++ b/node_modules/.bin/atob.ps1
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+  # Fix case when both the Windows and Linux builds of Node
+  # are installed in the same directory
+  $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+  # Support pipeline input
+  if ($MyInvocation.ExpectingInput) {
+    $input | & "$basedir/node$exe"  "$basedir/../atob/bin/atob.js" $args
+  } else {
+    & "$basedir/node$exe"  "$basedir/../atob/bin/atob.js" $args
+  }
+  $ret=$LASTEXITCODE
+} else {
+  # Support pipeline input
+  if ($MyInvocation.ExpectingInput) {
+    $input | & "node$exe"  "$basedir/../atob/bin/atob.js" $args
+  } else {
+    & "node$exe"  "$basedir/../atob/bin/atob.js" $args
+  }
+  $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/node_modules/.bin/btoa b/node_modules/.bin/btoa
new file mode 100644
index 0000000..432de37
--- /dev/null
+++ b/node_modules/.bin/btoa
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+    *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+  exec "$basedir/node"  "$basedir/../btoa/bin/btoa.js" "$@"
+else 
+  exec node  "$basedir/../btoa/bin/btoa.js" "$@"
+fi
diff --git a/node_modules/.bin/btoa.cmd b/node_modules/.bin/btoa.cmd
new file mode 100644
index 0000000..3cf3f65
--- /dev/null
+++ b/node_modules/.bin/btoa.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+  SET "_prog=%dp0%\node.exe"
+) ELSE (
+  SET "_prog=node"
+  SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\btoa\bin\btoa.js" %*
diff --git a/node_modules/.bin/btoa.ps1 b/node_modules/.bin/btoa.ps1
new file mode 100644
index 0000000..1ee1d1d
--- /dev/null
+++ b/node_modules/.bin/btoa.ps1
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+  # Fix case when both the Windows and Linux builds of Node
+  # are installed in the same directory
+  $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+  # Support pipeline input
+  if ($MyInvocation.ExpectingInput) {
+    $input | & "$basedir/node$exe"  "$basedir/../btoa/bin/btoa.js" $args
+  } else {
+    & "$basedir/node$exe"  "$basedir/../btoa/bin/btoa.js" $args
+  }
+  $ret=$LASTEXITCODE
+} else {
+  # Support pipeline input
+  if ($MyInvocation.ExpectingInput) {
+    $input | & "node$exe"  "$basedir/../btoa/bin/btoa.js" $args
+  } else {
+    & "node$exe"  "$basedir/../btoa/bin/btoa.js" $args
+  }
+  $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json
index a134059..c337cef 100644
--- a/node_modules/.package-lock.json
+++ b/node_modules/.package-lock.json
@@ -3,6 +3,17 @@
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
+    "node_modules/@babel/runtime": {
+      "version": "7.26.9",
+      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.9.tgz",
+      "integrity": "sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==",
+      "dependencies": {
+        "regenerator-runtime": "^0.14.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
     "node_modules/@supabase/auth-js": {
       "version": "2.68.0",
       "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.68.0.tgz",
@@ -83,6 +94,18 @@
       "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.6.tgz",
       "integrity": "sha512-PIzZZlEppgrpoT2QgbnDU+MMzuR6BbCjllj0bM70lWoejMeNJAxCchxnv7J3XFkI8MpygtRpzXrIlmWUBclP5A=="
     },
+    "node_modules/@types/raf": {
+      "version": "3.4.3",
+      "resolved": "https://registry.npmjs.org/@types/raf/-/raf-3.4.3.tgz",
+      "integrity": "sha512-c4YAvMedbPZ5tEyxzQdMoOhhJ4RD3rngZIdwC2/qDN3d7JpEhB6fiBRKVY1lg5B7Wk+uPBjn5f39j1/2MY1oOw==",
+      "optional": true
+    },
+    "node_modules/@types/trusted-types": {
+      "version": "2.0.7",
+      "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
+      "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
+      "optional": true
+    },
     "node_modules/@types/ws": {
       "version": "8.5.14",
       "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.14.tgz",
@@ -91,6 +114,178 @@
         "@types/node": "*"
       }
     },
+    "node_modules/atob": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+      "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+      "bin": {
+        "atob": "bin/atob.js"
+      },
+      "engines": {
+        "node": ">= 4.5.0"
+      }
+    },
+    "node_modules/base64-arraybuffer": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
+      "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==",
+      "engines": {
+        "node": ">= 0.6.0"
+      }
+    },
+    "node_modules/btoa": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz",
+      "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==",
+      "bin": {
+        "btoa": "bin/btoa.js"
+      },
+      "engines": {
+        "node": ">= 0.4.0"
+      }
+    },
+    "node_modules/canvg": {
+      "version": "3.0.10",
+      "resolved": "https://registry.npmjs.org/canvg/-/canvg-3.0.10.tgz",
+      "integrity": "sha512-qwR2FRNO9NlzTeKIPIKpnTY6fqwuYSequ8Ru8c0YkYU7U0oW+hLUvWadLvAu1Rl72OMNiFhoLu4f8eUjQ7l/+Q==",
+      "optional": true,
+      "dependencies": {
+        "@babel/runtime": "^7.12.5",
+        "@types/raf": "^3.4.0",
+        "core-js": "^3.8.3",
+        "raf": "^3.4.1",
+        "regenerator-runtime": "^0.13.7",
+        "rgbcolor": "^1.0.1",
+        "stackblur-canvas": "^2.0.0",
+        "svg-pathdata": "^6.0.3"
+      },
+      "engines": {
+        "node": ">=10.0.0"
+      }
+    },
+    "node_modules/canvg/node_modules/regenerator-runtime": {
+      "version": "0.13.11",
+      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
+      "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==",
+      "optional": true
+    },
+    "node_modules/core-js": {
+      "version": "3.41.0",
+      "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.41.0.tgz",
+      "integrity": "sha512-SJ4/EHwS36QMJd6h/Rg+GyR4A5xE0FSI3eZ+iBVpfqf1x0eTSg1smWLHrA+2jQThZSh97fmSgFSU8B61nxosxA==",
+      "hasInstallScript": true,
+      "optional": true,
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/core-js"
+      }
+    },
+    "node_modules/css-line-break": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz",
+      "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==",
+      "dependencies": {
+        "utrie": "^1.0.2"
+      }
+    },
+    "node_modules/dompurify": {
+      "version": "3.2.4",
+      "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.4.tgz",
+      "integrity": "sha512-ysFSFEDVduQpyhzAob/kkuJjf5zWkZD8/A9ywSp1byueyuCfHamrCBa14/Oc2iiB0e51B+NpxSl5gmzn+Ms/mg==",
+      "optional": true,
+      "optionalDependencies": {
+        "@types/trusted-types": "^2.0.7"
+      }
+    },
+    "node_modules/fflate": {
+      "version": "0.8.2",
+      "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz",
+      "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A=="
+    },
+    "node_modules/html2canvas": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz",
+      "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==",
+      "dependencies": {
+        "css-line-break": "^2.1.0",
+        "text-segmentation": "^1.0.3"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/jspdf": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/jspdf/-/jspdf-3.0.0.tgz",
+      "integrity": "sha512-QvuQZvOI8CjfjVgtajdL0ihrDYif1cN5gXiF9lb9Pd9JOpmocvnNyFO9sdiJ/8RA5Bu8zyGOUjJLj5kiku16ug==",
+      "dependencies": {
+        "@babel/runtime": "^7.26.0",
+        "atob": "^2.1.2",
+        "btoa": "^1.2.1",
+        "fflate": "^0.8.1"
+      },
+      "optionalDependencies": {
+        "canvg": "^3.0.6",
+        "core-js": "^3.6.0",
+        "dompurify": "^3.2.4",
+        "html2canvas": "^1.0.0-rc.5"
+      }
+    },
+    "node_modules/performance-now": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+      "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==",
+      "optional": true
+    },
+    "node_modules/raf": {
+      "version": "3.4.1",
+      "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
+      "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
+      "optional": true,
+      "dependencies": {
+        "performance-now": "^2.1.0"
+      }
+    },
+    "node_modules/regenerator-runtime": {
+      "version": "0.14.1",
+      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+      "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
+    },
+    "node_modules/rgbcolor": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/rgbcolor/-/rgbcolor-1.0.1.tgz",
+      "integrity": "sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==",
+      "optional": true,
+      "engines": {
+        "node": ">= 0.8.15"
+      }
+    },
+    "node_modules/stackblur-canvas": {
+      "version": "2.7.0",
+      "resolved": "https://registry.npmjs.org/stackblur-canvas/-/stackblur-canvas-2.7.0.tgz",
+      "integrity": "sha512-yf7OENo23AGJhBriGx0QivY5JP6Y1HbrrDI6WLt6C5auYZXlQrheoY8hD4ibekFKz1HOfE48Ww8kMWMnJD/zcQ==",
+      "optional": true,
+      "engines": {
+        "node": ">=0.1.14"
+      }
+    },
+    "node_modules/svg-pathdata": {
+      "version": "6.0.3",
+      "resolved": "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-6.0.3.tgz",
+      "integrity": "sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==",
+      "optional": true,
+      "engines": {
+        "node": ">=12.0.0"
+      }
+    },
+    "node_modules/text-segmentation": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz",
+      "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==",
+      "dependencies": {
+        "utrie": "^1.0.2"
+      }
+    },
     "node_modules/tr46": {
       "version": "0.0.3",
       "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
@@ -101,6 +296,14 @@
       "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz",
       "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="
     },
+    "node_modules/utrie": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/utrie/-/utrie-1.0.2.tgz",
+      "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==",
+      "dependencies": {
+        "base64-arraybuffer": "^1.0.2"
+      }
+    },
     "node_modules/webidl-conversions": {
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
diff --git a/node_modules/@babel/runtime/LICENSE b/node_modules/@babel/runtime/LICENSE
new file mode 100644
index 0000000..f31575e
--- /dev/null
+++ b/node_modules/@babel/runtime/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/@babel/runtime/README.md b/node_modules/@babel/runtime/README.md
new file mode 100644
index 0000000..2f3368e
--- /dev/null
+++ b/node_modules/@babel/runtime/README.md
@@ -0,0 +1,19 @@
+# @babel/runtime
+
+> babel's modular runtime helpers
+
+See our website [@babel/runtime](https://babeljs.io/docs/babel-runtime) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save @babel/runtime
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/runtime
+```
diff --git a/node_modules/@babel/runtime/helpers/AwaitValue.js b/node_modules/@babel/runtime/helpers/AwaitValue.js
new file mode 100644
index 0000000..52a7e69
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/AwaitValue.js
@@ -0,0 +1,4 @@
+function _AwaitValue(t) {
+  this.wrapped = t;
+}
+module.exports = _AwaitValue, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/OverloadYield.js b/node_modules/@babel/runtime/helpers/OverloadYield.js
new file mode 100644
index 0000000..0eca88c
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/OverloadYield.js
@@ -0,0 +1,4 @@
+function _OverloadYield(e, d) {
+  this.v = e, this.k = d;
+}
+module.exports = _OverloadYield, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js b/node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js
new file mode 100644
index 0000000..0ff780e
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js
@@ -0,0 +1,9 @@
+function _applyDecoratedDescriptor(i, e, r, n, l) {
+  var a = {};
+  return Object.keys(n).forEach(function (i) {
+    a[i] = n[i];
+  }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, ("value" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) {
+    return n(i, e, r) || r;
+  }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a;
+}
+module.exports = _applyDecoratedDescriptor, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/applyDecs.js b/node_modules/@babel/runtime/helpers/applyDecs.js
new file mode 100644
index 0000000..3770c5a
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/applyDecs.js
@@ -0,0 +1,236 @@
+var _typeof = require("./typeof.js")["default"];
+var setFunctionName = require("./setFunctionName.js");
+var toPropertyKey = require("./toPropertyKey.js");
+function old_createMetadataMethodsForProperty(e, t, a, r) {
+  return {
+    getMetadata: function getMetadata(o) {
+      old_assertNotFinished(r, "getMetadata"), old_assertMetadataKey(o);
+      var i = e[o];
+      if (void 0 !== i) if (1 === t) {
+        var n = i["public"];
+        if (void 0 !== n) return n[a];
+      } else if (2 === t) {
+        var l = i["private"];
+        if (void 0 !== l) return l.get(a);
+      } else if (Object.hasOwnProperty.call(i, "constructor")) return i.constructor;
+    },
+    setMetadata: function setMetadata(o, i) {
+      old_assertNotFinished(r, "setMetadata"), old_assertMetadataKey(o);
+      var n = e[o];
+      if (void 0 === n && (n = e[o] = {}), 1 === t) {
+        var l = n["public"];
+        void 0 === l && (l = n["public"] = {}), l[a] = i;
+      } else if (2 === t) {
+        var s = n.priv;
+        void 0 === s && (s = n["private"] = new Map()), s.set(a, i);
+      } else n.constructor = i;
+    }
+  };
+}
+function old_convertMetadataMapToFinal(e, t) {
+  var a = e[Symbol.metadata || Symbol["for"]("Symbol.metadata")],
+    r = Object.getOwnPropertySymbols(t);
+  if (0 !== r.length) {
+    for (var o = 0; o < r.length; o++) {
+      var i = r[o],
+        n = t[i],
+        l = a ? a[i] : null,
+        s = n["public"],
+        c = l ? l["public"] : null;
+      s && c && Object.setPrototypeOf(s, c);
+      var d = n["private"];
+      if (d) {
+        var u = Array.from(d.values()),
+          f = l ? l["private"] : null;
+        f && (u = u.concat(f)), n["private"] = u;
+      }
+      l && Object.setPrototypeOf(n, l);
+    }
+    a && Object.setPrototypeOf(t, a), e[Symbol.metadata || Symbol["for"]("Symbol.metadata")] = t;
+  }
+}
+function old_createAddInitializerMethod(e, t) {
+  return function (a) {
+    old_assertNotFinished(t, "addInitializer"), old_assertCallable(a, "An initializer"), e.push(a);
+  };
+}
+function old_memberDec(e, t, a, r, o, i, n, l, s) {
+  var c;
+  switch (i) {
+    case 1:
+      c = "accessor";
+      break;
+    case 2:
+      c = "method";
+      break;
+    case 3:
+      c = "getter";
+      break;
+    case 4:
+      c = "setter";
+      break;
+    default:
+      c = "field";
+  }
+  var d,
+    u,
+    f = {
+      kind: c,
+      name: l ? "#" + t : toPropertyKey(t),
+      isStatic: n,
+      isPrivate: l
+    },
+    p = {
+      v: !1
+    };
+  if (0 !== i && (f.addInitializer = old_createAddInitializerMethod(o, p)), l) {
+    d = 2, u = Symbol(t);
+    var v = {};
+    0 === i ? (v.get = a.get, v.set = a.set) : 2 === i ? v.get = function () {
+      return a.value;
+    } : (1 !== i && 3 !== i || (v.get = function () {
+      return a.get.call(this);
+    }), 1 !== i && 4 !== i || (v.set = function (e) {
+      a.set.call(this, e);
+    })), f.access = v;
+  } else d = 1, u = t;
+  try {
+    return e(s, Object.assign(f, old_createMetadataMethodsForProperty(r, d, u, p)));
+  } finally {
+    p.v = !0;
+  }
+}
+function old_assertNotFinished(e, t) {
+  if (e.v) throw Error("attempted to call " + t + " after decoration was finished");
+}
+function old_assertMetadataKey(e) {
+  if ("symbol" != _typeof(e)) throw new TypeError("Metadata keys must be symbols, received: " + e);
+}
+function old_assertCallable(e, t) {
+  if ("function" != typeof e) throw new TypeError(t + " must be a function");
+}
+function old_assertValidReturnValue(e, t) {
+  var a = _typeof(t);
+  if (1 === e) {
+    if ("object" !== a || null === t) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
+    void 0 !== t.get && old_assertCallable(t.get, "accessor.get"), void 0 !== t.set && old_assertCallable(t.set, "accessor.set"), void 0 !== t.init && old_assertCallable(t.init, "accessor.init"), void 0 !== t.initializer && old_assertCallable(t.initializer, "accessor.initializer");
+  } else if ("function" !== a) throw new TypeError((0 === e ? "field" : 10 === e ? "class" : "method") + " decorators must return a function or void 0");
+}
+function old_getInit(e) {
+  var t;
+  return null == (t = e.init) && (t = e.initializer) && void 0 !== console && console.warn(".initializer has been renamed to .init as of March 2022"), t;
+}
+function old_applyMemberDec(e, t, a, r, o, i, n, l, s) {
+  var c,
+    d,
+    u,
+    f,
+    p,
+    v,
+    y,
+    h = a[0];
+  if (n ? (0 === o || 1 === o ? (c = {
+    get: a[3],
+    set: a[4]
+  }, u = "get") : 3 === o ? (c = {
+    get: a[3]
+  }, u = "get") : 4 === o ? (c = {
+    set: a[3]
+  }, u = "set") : c = {
+    value: a[3]
+  }, 0 !== o && (1 === o && setFunctionName(a[4], "#" + r, "set"), setFunctionName(a[3], "#" + r, u))) : 0 !== o && (c = Object.getOwnPropertyDescriptor(t, r)), 1 === o ? f = {
+    get: c.get,
+    set: c.set
+  } : 2 === o ? f = c.value : 3 === o ? f = c.get : 4 === o && (f = c.set), "function" == typeof h) void 0 !== (p = old_memberDec(h, r, c, l, s, o, i, n, f)) && (old_assertValidReturnValue(o, p), 0 === o ? d = p : 1 === o ? (d = old_getInit(p), v = p.get || f.get, y = p.set || f.set, f = {
+    get: v,
+    set: y
+  }) : f = p);else for (var m = h.length - 1; m >= 0; m--) {
+    var b;
+    void 0 !== (p = old_memberDec(h[m], r, c, l, s, o, i, n, f)) && (old_assertValidReturnValue(o, p), 0 === o ? b = p : 1 === o ? (b = old_getInit(p), v = p.get || f.get, y = p.set || f.set, f = {
+      get: v,
+      set: y
+    }) : f = p, void 0 !== b && (void 0 === d ? d = b : "function" == typeof d ? d = [d, b] : d.push(b)));
+  }
+  if (0 === o || 1 === o) {
+    if (void 0 === d) d = function d(e, t) {
+      return t;
+    };else if ("function" != typeof d) {
+      var g = d;
+      d = function d(e, t) {
+        for (var a = t, r = 0; r < g.length; r++) a = g[r].call(e, a);
+        return a;
+      };
+    } else {
+      var _ = d;
+      d = function d(e, t) {
+        return _.call(e, t);
+      };
+    }
+    e.push(d);
+  }
+  0 !== o && (1 === o ? (c.get = f.get, c.set = f.set) : 2 === o ? c.value = f : 3 === o ? c.get = f : 4 === o && (c.set = f), n ? 1 === o ? (e.push(function (e, t) {
+    return f.get.call(e, t);
+  }), e.push(function (e, t) {
+    return f.set.call(e, t);
+  })) : 2 === o ? e.push(f) : e.push(function (e, t) {
+    return f.call(e, t);
+  }) : Object.defineProperty(t, r, c));
+}
+function old_applyMemberDecs(e, t, a, r, o) {
+  for (var i, n, l = new Map(), s = new Map(), c = 0; c < o.length; c++) {
+    var d = o[c];
+    if (Array.isArray(d)) {
+      var u,
+        f,
+        p,
+        v = d[1],
+        y = d[2],
+        h = d.length > 3,
+        m = v >= 5;
+      if (m ? (u = t, f = r, 0 != (v -= 5) && (p = n = n || [])) : (u = t.prototype, f = a, 0 !== v && (p = i = i || [])), 0 !== v && !h) {
+        var b = m ? s : l,
+          g = b.get(y) || 0;
+        if (!0 === g || 3 === g && 4 !== v || 4 === g && 3 !== v) throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + y);
+        !g && v > 2 ? b.set(y, v) : b.set(y, !0);
+      }
+      old_applyMemberDec(e, u, d, y, v, m, h, f, p);
+    }
+  }
+  old_pushInitializers(e, i), old_pushInitializers(e, n);
+}
+function old_pushInitializers(e, t) {
+  t && e.push(function (e) {
+    for (var a = 0; a < t.length; a++) t[a].call(e);
+    return e;
+  });
+}
+function old_applyClassDecs(e, t, a, r) {
+  if (r.length > 0) {
+    for (var o = [], i = t, n = t.name, l = r.length - 1; l >= 0; l--) {
+      var s = {
+        v: !1
+      };
+      try {
+        var c = Object.assign({
+            kind: "class",
+            name: n,
+            addInitializer: old_createAddInitializerMethod(o, s)
+          }, old_createMetadataMethodsForProperty(a, 0, n, s)),
+          d = r[l](i, c);
+      } finally {
+        s.v = !0;
+      }
+      void 0 !== d && (old_assertValidReturnValue(10, d), i = d);
+    }
+    e.push(i, function () {
+      for (var e = 0; e < o.length; e++) o[e].call(i);
+    });
+  }
+}
+function applyDecs(e, t, a) {
+  var r = [],
+    o = {},
+    i = {};
+  return old_applyMemberDecs(r, e, i, o, t), old_convertMetadataMapToFinal(e.prototype, i), old_applyClassDecs(r, e, o, a), old_convertMetadataMapToFinal(e, o), r;
+}
+module.exports = applyDecs, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/applyDecs2203.js b/node_modules/@babel/runtime/helpers/applyDecs2203.js
new file mode 100644
index 0000000..d3da333
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/applyDecs2203.js
@@ -0,0 +1,184 @@
+var _typeof = require("./typeof.js")["default"];
+function applyDecs2203Factory() {
+  function createAddInitializerMethod(e, t) {
+    return function (r) {
+      !function (e, t) {
+        if (e.v) throw Error("attempted to call addInitializer after decoration was finished");
+      }(t), assertCallable(r, "An initializer"), e.push(r);
+    };
+  }
+  function memberDec(e, t, r, a, n, i, s, o) {
+    var c;
+    switch (n) {
+      case 1:
+        c = "accessor";
+        break;
+      case 2:
+        c = "method";
+        break;
+      case 3:
+        c = "getter";
+        break;
+      case 4:
+        c = "setter";
+        break;
+      default:
+        c = "field";
+    }
+    var l,
+      u,
+      f = {
+        kind: c,
+        name: s ? "#" + t : t,
+        "static": i,
+        "private": s
+      },
+      p = {
+        v: !1
+      };
+    0 !== n && (f.addInitializer = createAddInitializerMethod(a, p)), 0 === n ? s ? (l = r.get, u = r.set) : (l = function l() {
+      return this[t];
+    }, u = function u(e) {
+      this[t] = e;
+    }) : 2 === n ? l = function l() {
+      return r.value;
+    } : (1 !== n && 3 !== n || (l = function l() {
+      return r.get.call(this);
+    }), 1 !== n && 4 !== n || (u = function u(e) {
+      r.set.call(this, e);
+    })), f.access = l && u ? {
+      get: l,
+      set: u
+    } : l ? {
+      get: l
+    } : {
+      set: u
+    };
+    try {
+      return e(o, f);
+    } finally {
+      p.v = !0;
+    }
+  }
+  function assertCallable(e, t) {
+    if ("function" != typeof e) throw new TypeError(t + " must be a function");
+  }
+  function assertValidReturnValue(e, t) {
+    var r = _typeof(t);
+    if (1 === e) {
+      if ("object" !== r || null === t) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
+      void 0 !== t.get && assertCallable(t.get, "accessor.get"), void 0 !== t.set && assertCallable(t.set, "accessor.set"), void 0 !== t.init && assertCallable(t.init, "accessor.init");
+    } else if ("function" !== r) throw new TypeError((0 === e ? "field" : 10 === e ? "class" : "method") + " decorators must return a function or void 0");
+  }
+  function applyMemberDec(e, t, r, a, n, i, s, o) {
+    var c,
+      l,
+      u,
+      f,
+      p,
+      d,
+      h = r[0];
+    if (s ? c = 0 === n || 1 === n ? {
+      get: r[3],
+      set: r[4]
+    } : 3 === n ? {
+      get: r[3]
+    } : 4 === n ? {
+      set: r[3]
+    } : {
+      value: r[3]
+    } : 0 !== n && (c = Object.getOwnPropertyDescriptor(t, a)), 1 === n ? u = {
+      get: c.get,
+      set: c.set
+    } : 2 === n ? u = c.value : 3 === n ? u = c.get : 4 === n && (u = c.set), "function" == typeof h) void 0 !== (f = memberDec(h, a, c, o, n, i, s, u)) && (assertValidReturnValue(n, f), 0 === n ? l = f : 1 === n ? (l = f.init, p = f.get || u.get, d = f.set || u.set, u = {
+      get: p,
+      set: d
+    }) : u = f);else for (var v = h.length - 1; v >= 0; v--) {
+      var g;
+      void 0 !== (f = memberDec(h[v], a, c, o, n, i, s, u)) && (assertValidReturnValue(n, f), 0 === n ? g = f : 1 === n ? (g = f.init, p = f.get || u.get, d = f.set || u.set, u = {
+        get: p,
+        set: d
+      }) : u = f, void 0 !== g && (void 0 === l ? l = g : "function" == typeof l ? l = [l, g] : l.push(g)));
+    }
+    if (0 === n || 1 === n) {
+      if (void 0 === l) l = function l(e, t) {
+        return t;
+      };else if ("function" != typeof l) {
+        var y = l;
+        l = function l(e, t) {
+          for (var r = t, a = 0; a < y.length; a++) r = y[a].call(e, r);
+          return r;
+        };
+      } else {
+        var m = l;
+        l = function l(e, t) {
+          return m.call(e, t);
+        };
+      }
+      e.push(l);
+    }
+    0 !== n && (1 === n ? (c.get = u.get, c.set = u.set) : 2 === n ? c.value = u : 3 === n ? c.get = u : 4 === n && (c.set = u), s ? 1 === n ? (e.push(function (e, t) {
+      return u.get.call(e, t);
+    }), e.push(function (e, t) {
+      return u.set.call(e, t);
+    })) : 2 === n ? e.push(u) : e.push(function (e, t) {
+      return u.call(e, t);
+    }) : Object.defineProperty(t, a, c));
+  }
+  function pushInitializers(e, t) {
+    t && e.push(function (e) {
+      for (var r = 0; r < t.length; r++) t[r].call(e);
+      return e;
+    });
+  }
+  return function (e, t, r) {
+    var a = [];
+    return function (e, t, r) {
+      for (var a, n, i = new Map(), s = new Map(), o = 0; o < r.length; o++) {
+        var c = r[o];
+        if (Array.isArray(c)) {
+          var l,
+            u,
+            f = c[1],
+            p = c[2],
+            d = c.length > 3,
+            h = f >= 5;
+          if (h ? (l = t, 0 != (f -= 5) && (u = n = n || [])) : (l = t.prototype, 0 !== f && (u = a = a || [])), 0 !== f && !d) {
+            var v = h ? s : i,
+              g = v.get(p) || 0;
+            if (!0 === g || 3 === g && 4 !== f || 4 === g && 3 !== f) throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + p);
+            !g && f > 2 ? v.set(p, f) : v.set(p, !0);
+          }
+          applyMemberDec(e, l, c, p, f, h, d, u);
+        }
+      }
+      pushInitializers(e, a), pushInitializers(e, n);
+    }(a, e, t), function (e, t, r) {
+      if (r.length > 0) {
+        for (var a = [], n = t, i = t.name, s = r.length - 1; s >= 0; s--) {
+          var o = {
+            v: !1
+          };
+          try {
+            var c = r[s](n, {
+              kind: "class",
+              name: i,
+              addInitializer: createAddInitializerMethod(a, o)
+            });
+          } finally {
+            o.v = !0;
+          }
+          void 0 !== c && (assertValidReturnValue(10, c), n = c);
+        }
+        e.push(n, function () {
+          for (var e = 0; e < a.length; e++) a[e].call(n);
+        });
+      }
+    }(a, e, r), a;
+  };
+}
+var applyDecs2203Impl;
+function applyDecs2203(e, t, r) {
+  return (applyDecs2203Impl = applyDecs2203Impl || applyDecs2203Factory())(e, t, r);
+}
+module.exports = applyDecs2203, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/applyDecs2203R.js b/node_modules/@babel/runtime/helpers/applyDecs2203R.js
new file mode 100644
index 0000000..725419b
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/applyDecs2203R.js
@@ -0,0 +1,191 @@
+var _typeof = require("./typeof.js")["default"];
+var setFunctionName = require("./setFunctionName.js");
+var toPropertyKey = require("./toPropertyKey.js");
+function applyDecs2203RFactory() {
+  function createAddInitializerMethod(e, t) {
+    return function (r) {
+      !function (e, t) {
+        if (e.v) throw Error("attempted to call addInitializer after decoration was finished");
+      }(t), assertCallable(r, "An initializer"), e.push(r);
+    };
+  }
+  function memberDec(e, t, r, n, a, i, o, s) {
+    var c;
+    switch (a) {
+      case 1:
+        c = "accessor";
+        break;
+      case 2:
+        c = "method";
+        break;
+      case 3:
+        c = "getter";
+        break;
+      case 4:
+        c = "setter";
+        break;
+      default:
+        c = "field";
+    }
+    var l,
+      u,
+      f = {
+        kind: c,
+        name: o ? "#" + t : toPropertyKey(t),
+        "static": i,
+        "private": o
+      },
+      p = {
+        v: !1
+      };
+    0 !== a && (f.addInitializer = createAddInitializerMethod(n, p)), 0 === a ? o ? (l = r.get, u = r.set) : (l = function l() {
+      return this[t];
+    }, u = function u(e) {
+      this[t] = e;
+    }) : 2 === a ? l = function l() {
+      return r.value;
+    } : (1 !== a && 3 !== a || (l = function l() {
+      return r.get.call(this);
+    }), 1 !== a && 4 !== a || (u = function u(e) {
+      r.set.call(this, e);
+    })), f.access = l && u ? {
+      get: l,
+      set: u
+    } : l ? {
+      get: l
+    } : {
+      set: u
+    };
+    try {
+      return e(s, f);
+    } finally {
+      p.v = !0;
+    }
+  }
+  function assertCallable(e, t) {
+    if ("function" != typeof e) throw new TypeError(t + " must be a function");
+  }
+  function assertValidReturnValue(e, t) {
+    var r = _typeof(t);
+    if (1 === e) {
+      if ("object" !== r || null === t) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
+      void 0 !== t.get && assertCallable(t.get, "accessor.get"), void 0 !== t.set && assertCallable(t.set, "accessor.set"), void 0 !== t.init && assertCallable(t.init, "accessor.init");
+    } else if ("function" !== r) throw new TypeError((0 === e ? "field" : 10 === e ? "class" : "method") + " decorators must return a function or void 0");
+  }
+  function applyMemberDec(e, t, r, n, a, i, o, s) {
+    var c,
+      l,
+      u,
+      f,
+      p,
+      d,
+      h,
+      v = r[0];
+    if (o ? (0 === a || 1 === a ? (c = {
+      get: r[3],
+      set: r[4]
+    }, u = "get") : 3 === a ? (c = {
+      get: r[3]
+    }, u = "get") : 4 === a ? (c = {
+      set: r[3]
+    }, u = "set") : c = {
+      value: r[3]
+    }, 0 !== a && (1 === a && setFunctionName(r[4], "#" + n, "set"), setFunctionName(r[3], "#" + n, u))) : 0 !== a && (c = Object.getOwnPropertyDescriptor(t, n)), 1 === a ? f = {
+      get: c.get,
+      set: c.set
+    } : 2 === a ? f = c.value : 3 === a ? f = c.get : 4 === a && (f = c.set), "function" == typeof v) void 0 !== (p = memberDec(v, n, c, s, a, i, o, f)) && (assertValidReturnValue(a, p), 0 === a ? l = p : 1 === a ? (l = p.init, d = p.get || f.get, h = p.set || f.set, f = {
+      get: d,
+      set: h
+    }) : f = p);else for (var g = v.length - 1; g >= 0; g--) {
+      var y;
+      void 0 !== (p = memberDec(v[g], n, c, s, a, i, o, f)) && (assertValidReturnValue(a, p), 0 === a ? y = p : 1 === a ? (y = p.init, d = p.get || f.get, h = p.set || f.set, f = {
+        get: d,
+        set: h
+      }) : f = p, void 0 !== y && (void 0 === l ? l = y : "function" == typeof l ? l = [l, y] : l.push(y)));
+    }
+    if (0 === a || 1 === a) {
+      if (void 0 === l) l = function l(e, t) {
+        return t;
+      };else if ("function" != typeof l) {
+        var m = l;
+        l = function l(e, t) {
+          for (var r = t, n = 0; n < m.length; n++) r = m[n].call(e, r);
+          return r;
+        };
+      } else {
+        var b = l;
+        l = function l(e, t) {
+          return b.call(e, t);
+        };
+      }
+      e.push(l);
+    }
+    0 !== a && (1 === a ? (c.get = f.get, c.set = f.set) : 2 === a ? c.value = f : 3 === a ? c.get = f : 4 === a && (c.set = f), o ? 1 === a ? (e.push(function (e, t) {
+      return f.get.call(e, t);
+    }), e.push(function (e, t) {
+      return f.set.call(e, t);
+    })) : 2 === a ? e.push(f) : e.push(function (e, t) {
+      return f.call(e, t);
+    }) : Object.defineProperty(t, n, c));
+  }
+  function applyMemberDecs(e, t) {
+    for (var r, n, a = [], i = new Map(), o = new Map(), s = 0; s < t.length; s++) {
+      var c = t[s];
+      if (Array.isArray(c)) {
+        var l,
+          u,
+          f = c[1],
+          p = c[2],
+          d = c.length > 3,
+          h = f >= 5;
+        if (h ? (l = e, 0 != (f -= 5) && (u = n = n || [])) : (l = e.prototype, 0 !== f && (u = r = r || [])), 0 !== f && !d) {
+          var v = h ? o : i,
+            g = v.get(p) || 0;
+          if (!0 === g || 3 === g && 4 !== f || 4 === g && 3 !== f) throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + p);
+          !g && f > 2 ? v.set(p, f) : v.set(p, !0);
+        }
+        applyMemberDec(a, l, c, p, f, h, d, u);
+      }
+    }
+    return pushInitializers(a, r), pushInitializers(a, n), a;
+  }
+  function pushInitializers(e, t) {
+    t && e.push(function (e) {
+      for (var r = 0; r < t.length; r++) t[r].call(e);
+      return e;
+    });
+  }
+  return function (e, t, r) {
+    return {
+      e: applyMemberDecs(e, t),
+      get c() {
+        return function (e, t) {
+          if (t.length > 0) {
+            for (var r = [], n = e, a = e.name, i = t.length - 1; i >= 0; i--) {
+              var o = {
+                v: !1
+              };
+              try {
+                var s = t[i](n, {
+                  kind: "class",
+                  name: a,
+                  addInitializer: createAddInitializerMethod(r, o)
+                });
+              } finally {
+                o.v = !0;
+              }
+              void 0 !== s && (assertValidReturnValue(10, s), n = s);
+            }
+            return [n, function () {
+              for (var e = 0; e < r.length; e++) r[e].call(n);
+            }];
+          }
+        }(e, r);
+      }
+    };
+  };
+}
+function applyDecs2203R(e, t, r) {
+  return (module.exports = applyDecs2203R = applyDecs2203RFactory(), module.exports.__esModule = true, module.exports["default"] = module.exports)(e, t, r);
+}
+module.exports = applyDecs2203R, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/applyDecs2301.js b/node_modules/@babel/runtime/helpers/applyDecs2301.js
new file mode 100644
index 0000000..fc2c130
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/applyDecs2301.js
@@ -0,0 +1,222 @@
+var _typeof = require("./typeof.js")["default"];
+var checkInRHS = require("./checkInRHS.js");
+var setFunctionName = require("./setFunctionName.js");
+var toPropertyKey = require("./toPropertyKey.js");
+function applyDecs2301Factory() {
+  function createAddInitializerMethod(e, t) {
+    return function (r) {
+      !function (e, t) {
+        if (e.v) throw Error("attempted to call addInitializer after decoration was finished");
+      }(t), assertCallable(r, "An initializer"), e.push(r);
+    };
+  }
+  function assertInstanceIfPrivate(e, t) {
+    if (!e(t)) throw new TypeError("Attempted to access private element on non-instance");
+  }
+  function memberDec(e, t, r, n, a, i, s, o, c) {
+    var u;
+    switch (a) {
+      case 1:
+        u = "accessor";
+        break;
+      case 2:
+        u = "method";
+        break;
+      case 3:
+        u = "getter";
+        break;
+      case 4:
+        u = "setter";
+        break;
+      default:
+        u = "field";
+    }
+    var l,
+      f,
+      p = {
+        kind: u,
+        name: s ? "#" + t : toPropertyKey(t),
+        "static": i,
+        "private": s
+      },
+      d = {
+        v: !1
+      };
+    if (0 !== a && (p.addInitializer = createAddInitializerMethod(n, d)), s || 0 !== a && 2 !== a) {
+      if (2 === a) l = function l(e) {
+        return assertInstanceIfPrivate(c, e), r.value;
+      };else {
+        var h = 0 === a || 1 === a;
+        (h || 3 === a) && (l = s ? function (e) {
+          return assertInstanceIfPrivate(c, e), r.get.call(e);
+        } : function (e) {
+          return r.get.call(e);
+        }), (h || 4 === a) && (f = s ? function (e, t) {
+          assertInstanceIfPrivate(c, e), r.set.call(e, t);
+        } : function (e, t) {
+          r.set.call(e, t);
+        });
+      }
+    } else l = function l(e) {
+      return e[t];
+    }, 0 === a && (f = function f(e, r) {
+      e[t] = r;
+    });
+    var v = s ? c.bind() : function (e) {
+      return t in e;
+    };
+    p.access = l && f ? {
+      get: l,
+      set: f,
+      has: v
+    } : l ? {
+      get: l,
+      has: v
+    } : {
+      set: f,
+      has: v
+    };
+    try {
+      return e(o, p);
+    } finally {
+      d.v = !0;
+    }
+  }
+  function assertCallable(e, t) {
+    if ("function" != typeof e) throw new TypeError(t + " must be a function");
+  }
+  function assertValidReturnValue(e, t) {
+    var r = _typeof(t);
+    if (1 === e) {
+      if ("object" !== r || null === t) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
+      void 0 !== t.get && assertCallable(t.get, "accessor.get"), void 0 !== t.set && assertCallable(t.set, "accessor.set"), void 0 !== t.init && assertCallable(t.init, "accessor.init");
+    } else if ("function" !== r) throw new TypeError((0 === e ? "field" : 10 === e ? "class" : "method") + " decorators must return a function or void 0");
+  }
+  function curryThis2(e) {
+    return function (t) {
+      e(this, t);
+    };
+  }
+  function applyMemberDec(e, t, r, n, a, i, s, o, c) {
+    var u,
+      l,
+      f,
+      p,
+      d,
+      h,
+      v,
+      y,
+      g = r[0];
+    if (s ? (0 === a || 1 === a ? (u = {
+      get: (d = r[3], function () {
+        return d(this);
+      }),
+      set: curryThis2(r[4])
+    }, f = "get") : 3 === a ? (u = {
+      get: r[3]
+    }, f = "get") : 4 === a ? (u = {
+      set: r[3]
+    }, f = "set") : u = {
+      value: r[3]
+    }, 0 !== a && (1 === a && setFunctionName(u.set, "#" + n, "set"), setFunctionName(u[f || "value"], "#" + n, f))) : 0 !== a && (u = Object.getOwnPropertyDescriptor(t, n)), 1 === a ? p = {
+      get: u.get,
+      set: u.set
+    } : 2 === a ? p = u.value : 3 === a ? p = u.get : 4 === a && (p = u.set), "function" == typeof g) void 0 !== (h = memberDec(g, n, u, o, a, i, s, p, c)) && (assertValidReturnValue(a, h), 0 === a ? l = h : 1 === a ? (l = h.init, v = h.get || p.get, y = h.set || p.set, p = {
+      get: v,
+      set: y
+    }) : p = h);else for (var m = g.length - 1; m >= 0; m--) {
+      var b;
+      void 0 !== (h = memberDec(g[m], n, u, o, a, i, s, p, c)) && (assertValidReturnValue(a, h), 0 === a ? b = h : 1 === a ? (b = h.init, v = h.get || p.get, y = h.set || p.set, p = {
+        get: v,
+        set: y
+      }) : p = h, void 0 !== b && (void 0 === l ? l = b : "function" == typeof l ? l = [l, b] : l.push(b)));
+    }
+    if (0 === a || 1 === a) {
+      if (void 0 === l) l = function l(e, t) {
+        return t;
+      };else if ("function" != typeof l) {
+        var I = l;
+        l = function l(e, t) {
+          for (var r = t, n = 0; n < I.length; n++) r = I[n].call(e, r);
+          return r;
+        };
+      } else {
+        var w = l;
+        l = function l(e, t) {
+          return w.call(e, t);
+        };
+      }
+      e.push(l);
+    }
+    0 !== a && (1 === a ? (u.get = p.get, u.set = p.set) : 2 === a ? u.value = p : 3 === a ? u.get = p : 4 === a && (u.set = p), s ? 1 === a ? (e.push(function (e, t) {
+      return p.get.call(e, t);
+    }), e.push(function (e, t) {
+      return p.set.call(e, t);
+    })) : 2 === a ? e.push(p) : e.push(function (e, t) {
+      return p.call(e, t);
+    }) : Object.defineProperty(t, n, u));
+  }
+  function applyMemberDecs(e, t, r) {
+    for (var n, a, i, s = [], o = new Map(), c = new Map(), u = 0; u < t.length; u++) {
+      var l = t[u];
+      if (Array.isArray(l)) {
+        var f,
+          p,
+          d = l[1],
+          h = l[2],
+          v = l.length > 3,
+          y = d >= 5,
+          g = r;
+        if (y ? (f = e, 0 != (d -= 5) && (p = a = a || []), v && !i && (i = function i(t) {
+          return checkInRHS(t) === e;
+        }), g = i) : (f = e.prototype, 0 !== d && (p = n = n || [])), 0 !== d && !v) {
+          var m = y ? c : o,
+            b = m.get(h) || 0;
+          if (!0 === b || 3 === b && 4 !== d || 4 === b && 3 !== d) throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + h);
+          !b && d > 2 ? m.set(h, d) : m.set(h, !0);
+        }
+        applyMemberDec(s, f, l, h, d, y, v, p, g);
+      }
+    }
+    return pushInitializers(s, n), pushInitializers(s, a), s;
+  }
+  function pushInitializers(e, t) {
+    t && e.push(function (e) {
+      for (var r = 0; r < t.length; r++) t[r].call(e);
+      return e;
+    });
+  }
+  return function (e, t, r, n) {
+    return {
+      e: applyMemberDecs(e, t, n),
+      get c() {
+        return function (e, t) {
+          if (t.length > 0) {
+            for (var r = [], n = e, a = e.name, i = t.length - 1; i >= 0; i--) {
+              var s = {
+                v: !1
+              };
+              try {
+                var o = t[i](n, {
+                  kind: "class",
+                  name: a,
+                  addInitializer: createAddInitializerMethod(r, s)
+                });
+              } finally {
+                s.v = !0;
+              }
+              void 0 !== o && (assertValidReturnValue(10, o), n = o);
+            }
+            return [n, function () {
+              for (var e = 0; e < r.length; e++) r[e].call(n);
+            }];
+          }
+        }(e, r);
+      }
+    };
+  };
+}
+function applyDecs2301(e, t, r, n) {
+  return (module.exports = applyDecs2301 = applyDecs2301Factory(), module.exports.__esModule = true, module.exports["default"] = module.exports)(e, t, r, n);
+}
+module.exports = applyDecs2301, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/applyDecs2305.js b/node_modules/@babel/runtime/helpers/applyDecs2305.js
new file mode 100644
index 0000000..744c352
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/applyDecs2305.js
@@ -0,0 +1,133 @@
+var _typeof = require("./typeof.js")["default"];
+var checkInRHS = require("./checkInRHS.js");
+var setFunctionName = require("./setFunctionName.js");
+var toPropertyKey = require("./toPropertyKey.js");
+function applyDecs2305(e, t, r, n, o, a) {
+  function i(e, t, r) {
+    return function (n, o) {
+      return r && r(n), e[t].call(n, o);
+    };
+  }
+  function c(e, t) {
+    for (var r = 0; r < e.length; r++) e[r].call(t);
+    return t;
+  }
+  function s(e, t, r, n) {
+    if ("function" != typeof e && (n || void 0 !== e)) throw new TypeError(t + " must " + (r || "be") + " a function" + (n ? "" : " or undefined"));
+    return e;
+  }
+  function applyDec(e, t, r, n, o, a, c, u, l, f, p, d, h) {
+    function m(e) {
+      if (!h(e)) throw new TypeError("Attempted to access private element on non-instance");
+    }
+    var y,
+      v = t[0],
+      g = t[3],
+      b = !u;
+    if (!b) {
+      r || Array.isArray(v) || (v = [v]);
+      var w = {},
+        S = [],
+        A = 3 === o ? "get" : 4 === o || d ? "set" : "value";
+      f ? (p || d ? w = {
+        get: setFunctionName(function () {
+          return g(this);
+        }, n, "get"),
+        set: function set(e) {
+          t[4](this, e);
+        }
+      } : w[A] = g, p || setFunctionName(w[A], n, 2 === o ? "" : A)) : p || (w = Object.getOwnPropertyDescriptor(e, n));
+    }
+    for (var P = e, j = v.length - 1; j >= 0; j -= r ? 2 : 1) {
+      var D = v[j],
+        E = r ? v[j - 1] : void 0,
+        I = {},
+        O = {
+          kind: ["field", "accessor", "method", "getter", "setter", "class"][o],
+          name: n,
+          metadata: a,
+          addInitializer: function (e, t) {
+            if (e.v) throw Error("attempted to call addInitializer after decoration was finished");
+            s(t, "An initializer", "be", !0), c.push(t);
+          }.bind(null, I)
+        };
+      try {
+        if (b) (y = s(D.call(E, P, O), "class decorators", "return")) && (P = y);else {
+          var k, F;
+          O["static"] = l, O["private"] = f, f ? 2 === o ? k = function k(e) {
+            return m(e), w.value;
+          } : (o < 4 && (k = i(w, "get", m)), 3 !== o && (F = i(w, "set", m))) : (k = function k(e) {
+            return e[n];
+          }, (o < 2 || 4 === o) && (F = function F(e, t) {
+            e[n] = t;
+          }));
+          var N = O.access = {
+            has: f ? h.bind() : function (e) {
+              return n in e;
+            }
+          };
+          if (k && (N.get = k), F && (N.set = F), P = D.call(E, d ? {
+            get: w.get,
+            set: w.set
+          } : w[A], O), d) {
+            if ("object" == _typeof(P) && P) (y = s(P.get, "accessor.get")) && (w.get = y), (y = s(P.set, "accessor.set")) && (w.set = y), (y = s(P.init, "accessor.init")) && S.push(y);else if (void 0 !== P) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
+          } else s(P, (p ? "field" : "method") + " decorators", "return") && (p ? S.push(P) : w[A] = P);
+        }
+      } finally {
+        I.v = !0;
+      }
+    }
+    return (p || d) && u.push(function (e, t) {
+      for (var r = S.length - 1; r >= 0; r--) t = S[r].call(e, t);
+      return t;
+    }), p || b || (f ? d ? u.push(i(w, "get"), i(w, "set")) : u.push(2 === o ? w[A] : i.call.bind(w[A])) : Object.defineProperty(e, n, w)), P;
+  }
+  function u(e, t) {
+    return Object.defineProperty(e, Symbol.metadata || Symbol["for"]("Symbol.metadata"), {
+      configurable: !0,
+      enumerable: !0,
+      value: t
+    });
+  }
+  if (arguments.length >= 6) var l = a[Symbol.metadata || Symbol["for"]("Symbol.metadata")];
+  var f = Object.create(null == l ? null : l),
+    p = function (e, t, r, n) {
+      var o,
+        a,
+        i = [],
+        s = function s(t) {
+          return checkInRHS(t) === e;
+        },
+        u = new Map();
+      function l(e) {
+        e && i.push(c.bind(null, e));
+      }
+      for (var f = 0; f < t.length; f++) {
+        var p = t[f];
+        if (Array.isArray(p)) {
+          var d = p[1],
+            h = p[2],
+            m = p.length > 3,
+            y = 16 & d,
+            v = !!(8 & d),
+            g = 0 == (d &= 7),
+            b = h + "/" + v;
+          if (!g && !m) {
+            var w = u.get(b);
+            if (!0 === w || 3 === w && 4 !== d || 4 === w && 3 !== d) throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + h);
+            u.set(b, !(d > 2) || d);
+          }
+          applyDec(v ? e : e.prototype, p, y, m ? "#" + h : toPropertyKey(h), d, n, v ? a = a || [] : o = o || [], i, v, m, g, 1 === d, v && m ? s : r);
+        }
+      }
+      return l(o), l(a), i;
+    }(e, t, o, f);
+  return r.length || u(e, f), {
+    e: p,
+    get c() {
+      var t = [];
+      return r.length && [u(applyDec(e, [r], n, e.name, 5, f, t), f), c.bind(null, t, e)];
+    }
+  };
+}
+module.exports = applyDecs2305, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/applyDecs2311.js b/node_modules/@babel/runtime/helpers/applyDecs2311.js
new file mode 100644
index 0000000..5f00a31
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/applyDecs2311.js
@@ -0,0 +1,124 @@
+var _typeof = require("./typeof.js")["default"];
+var checkInRHS = require("./checkInRHS.js");
+var setFunctionName = require("./setFunctionName.js");
+var toPropertyKey = require("./toPropertyKey.js");
+function applyDecs2311(e, t, n, r, o, i) {
+  var a,
+    c,
+    u,
+    s,
+    f,
+    l,
+    p,
+    d = Symbol.metadata || Symbol["for"]("Symbol.metadata"),
+    m = Object.defineProperty,
+    h = Object.create,
+    y = [h(null), h(null)],
+    v = t.length;
+  function g(t, n, r) {
+    return function (o, i) {
+      n && (i = o, o = e);
+      for (var a = 0; a < t.length; a++) i = t[a].apply(o, r ? [i] : []);
+      return r ? i : o;
+    };
+  }
+  function b(e, t, n, r) {
+    if ("function" != typeof e && (r || void 0 !== e)) throw new TypeError(t + " must " + (n || "be") + " a function" + (r ? "" : " or undefined"));
+    return e;
+  }
+  function applyDec(e, t, n, r, o, i, u, s, f, l, p) {
+    function d(e) {
+      if (!p(e)) throw new TypeError("Attempted to access private element on non-instance");
+    }
+    var h = [].concat(t[0]),
+      v = t[3],
+      w = !u,
+      D = 1 === o,
+      S = 3 === o,
+      j = 4 === o,
+      E = 2 === o;
+    function I(t, n, r) {
+      return function (o, i) {
+        return n && (i = o, o = e), r && r(o), P[t].call(o, i);
+      };
+    }
+    if (!w) {
+      var P = {},
+        k = [],
+        F = S ? "get" : j || D ? "set" : "value";
+      if (f ? (l || D ? P = {
+        get: setFunctionName(function () {
+          return v(this);
+        }, r, "get"),
+        set: function set(e) {
+          t[4](this, e);
+        }
+      } : P[F] = v, l || setFunctionName(P[F], r, E ? "" : F)) : l || (P = Object.getOwnPropertyDescriptor(e, r)), !l && !f) {
+        if ((c = y[+s][r]) && 7 != (c ^ o)) throw Error("Decorating two elements with the same name (" + P[F].name + ") is not supported yet");
+        y[+s][r] = o < 3 ? 1 : o;
+      }
+    }
+    for (var N = e, O = h.length - 1; O >= 0; O -= n ? 2 : 1) {
+      var T = b(h[O], "A decorator", "be", !0),
+        z = n ? h[O - 1] : void 0,
+        A = {},
+        H = {
+          kind: ["field", "accessor", "method", "getter", "setter", "class"][o],
+          name: r,
+          metadata: a,
+          addInitializer: function (e, t) {
+            if (e.v) throw new TypeError("attempted to call addInitializer after decoration was finished");
+            b(t, "An initializer", "be", !0), i.push(t);
+          }.bind(null, A)
+        };
+      if (w) c = T.call(z, N, H), A.v = 1, b(c, "class decorators", "return") && (N = c);else if (H["static"] = s, H["private"] = f, c = H.access = {
+        has: f ? p.bind() : function (e) {
+          return r in e;
+        }
+      }, j || (c.get = f ? E ? function (e) {
+        return d(e), P.value;
+      } : I("get", 0, d) : function (e) {
+        return e[r];
+      }), E || S || (c.set = f ? I("set", 0, d) : function (e, t) {
+        e[r] = t;
+      }), N = T.call(z, D ? {
+        get: P.get,
+        set: P.set
+      } : P[F], H), A.v = 1, D) {
+        if ("object" == _typeof(N) && N) (c = b(N.get, "accessor.get")) && (P.get = c), (c = b(N.set, "accessor.set")) && (P.set = c), (c = b(N.init, "accessor.init")) && k.unshift(c);else if (void 0 !== N) throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined");
+      } else b(N, (l ? "field" : "method") + " decorators", "return") && (l ? k.unshift(N) : P[F] = N);
+    }
+    return o < 2 && u.push(g(k, s, 1), g(i, s, 0)), l || w || (f ? D ? u.splice(-1, 0, I("get", s), I("set", s)) : u.push(E ? P[F] : b.call.bind(P[F])) : m(e, r, P)), N;
+  }
+  function w(e) {
+    return m(e, d, {
+      configurable: !0,
+      enumerable: !0,
+      value: a
+    });
+  }
+  return void 0 !== i && (a = i[d]), a = h(null == a ? null : a), f = [], l = function l(e) {
+    e && f.push(g(e));
+  }, p = function p(t, r) {
+    for (var i = 0; i < n.length; i++) {
+      var a = n[i],
+        c = a[1],
+        l = 7 & c;
+      if ((8 & c) == t && !l == r) {
+        var p = a[2],
+          d = !!a[3],
+          m = 16 & c;
+        applyDec(t ? e : e.prototype, a, m, d ? "#" + p : toPropertyKey(p), l, l < 2 ? [] : t ? s = s || [] : u = u || [], f, !!t, d, r, t && d ? function (t) {
+          return checkInRHS(t) === e;
+        } : o);
+      }
+    }
+  }, p(8, 0), p(0, 0), p(8, 1), p(0, 1), l(u), l(s), c = f, v || w(e), {
+    e: c,
+    get c() {
+      var n = [];
+      return v && [w(e = applyDec(e, [t], r, e.name, 5, n)), g(n, 1)];
+    }
+  };
+}
+module.exports = applyDecs2311, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/arrayLikeToArray.js b/node_modules/@babel/runtime/helpers/arrayLikeToArray.js
new file mode 100644
index 0000000..19787e3
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/arrayLikeToArray.js
@@ -0,0 +1,6 @@
+function _arrayLikeToArray(r, a) {
+  (null == a || a > r.length) && (a = r.length);
+  for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
+  return n;
+}
+module.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/arrayWithHoles.js b/node_modules/@babel/runtime/helpers/arrayWithHoles.js
new file mode 100644
index 0000000..78bdd93
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/arrayWithHoles.js
@@ -0,0 +1,4 @@
+function _arrayWithHoles(r) {
+  if (Array.isArray(r)) return r;
+}
+module.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js b/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js
new file mode 100644
index 0000000..42218f5
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js
@@ -0,0 +1,5 @@
+var arrayLikeToArray = require("./arrayLikeToArray.js");
+function _arrayWithoutHoles(r) {
+  if (Array.isArray(r)) return arrayLikeToArray(r);
+}
+module.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/assertClassBrand.js b/node_modules/@babel/runtime/helpers/assertClassBrand.js
new file mode 100644
index 0000000..e63ed8f
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/assertClassBrand.js
@@ -0,0 +1,5 @@
+function _assertClassBrand(e, t, n) {
+  if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n;
+  throw new TypeError("Private element is not present on this object");
+}
+module.exports = _assertClassBrand, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/assertThisInitialized.js b/node_modules/@babel/runtime/helpers/assertThisInitialized.js
new file mode 100644
index 0000000..02594fb
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/assertThisInitialized.js
@@ -0,0 +1,5 @@
+function _assertThisInitialized(e) {
+  if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+  return e;
+}
+module.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/asyncGeneratorDelegate.js b/node_modules/@babel/runtime/helpers/asyncGeneratorDelegate.js
new file mode 100644
index 0000000..023568e
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/asyncGeneratorDelegate.js
@@ -0,0 +1,24 @@
+var OverloadYield = require("./OverloadYield.js");
+function _asyncGeneratorDelegate(t) {
+  var e = {},
+    n = !1;
+  function pump(e, r) {
+    return n = !0, r = new Promise(function (n) {
+      n(t[e](r));
+    }), {
+      done: !1,
+      value: new OverloadYield(r, 1)
+    };
+  }
+  return e["undefined" != typeof Symbol && Symbol.iterator || "@@iterator"] = function () {
+    return this;
+  }, e.next = function (t) {
+    return n ? (n = !1, t) : pump("next", t);
+  }, "function" == typeof t["throw"] && (e["throw"] = function (t) {
+    if (n) throw n = !1, t;
+    return pump("throw", t);
+  }), "function" == typeof t["return"] && (e["return"] = function (t) {
+    return n ? (n = !1, t) : pump("return", t);
+  }), e;
+}
+module.exports = _asyncGeneratorDelegate, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/asyncIterator.js b/node_modules/@babel/runtime/helpers/asyncIterator.js
new file mode 100644
index 0000000..9c0c95c
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/asyncIterator.js
@@ -0,0 +1,45 @@
+function _asyncIterator(r) {
+  var n,
+    t,
+    o,
+    e = 2;
+  for ("undefined" != typeof Symbol && (t = Symbol.asyncIterator, o = Symbol.iterator); e--;) {
+    if (t && null != (n = r[t])) return n.call(r);
+    if (o && null != (n = r[o])) return new AsyncFromSyncIterator(n.call(r));
+    t = "@@asyncIterator", o = "@@iterator";
+  }
+  throw new TypeError("Object is not async iterable");
+}
+function AsyncFromSyncIterator(r) {
+  function AsyncFromSyncIteratorContinuation(r) {
+    if (Object(r) !== r) return Promise.reject(new TypeError(r + " is not an object."));
+    var n = r.done;
+    return Promise.resolve(r.value).then(function (r) {
+      return {
+        value: r,
+        done: n
+      };
+    });
+  }
+  return AsyncFromSyncIterator = function AsyncFromSyncIterator(r) {
+    this.s = r, this.n = r.next;
+  }, AsyncFromSyncIterator.prototype = {
+    s: null,
+    n: null,
+    next: function next() {
+      return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments));
+    },
+    "return": function _return(r) {
+      var n = this.s["return"];
+      return void 0 === n ? Promise.resolve({
+        value: r,
+        done: !0
+      }) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments));
+    },
+    "throw": function _throw(r) {
+      var n = this.s["return"];
+      return void 0 === n ? Promise.reject(r) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments));
+    }
+  }, new AsyncFromSyncIterator(r);
+}
+module.exports = _asyncIterator, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/asyncToGenerator.js b/node_modules/@babel/runtime/helpers/asyncToGenerator.js
new file mode 100644
index 0000000..a080339
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/asyncToGenerator.js
@@ -0,0 +1,26 @@
+function asyncGeneratorStep(n, t, e, r, o, a, c) {
+  try {
+    var i = n[a](c),
+      u = i.value;
+  } catch (n) {
+    return void e(n);
+  }
+  i.done ? t(u) : Promise.resolve(u).then(r, o);
+}
+function _asyncToGenerator(n) {
+  return function () {
+    var t = this,
+      e = arguments;
+    return new Promise(function (r, o) {
+      var a = n.apply(t, e);
+      function _next(n) {
+        asyncGeneratorStep(a, r, o, _next, _throw, "next", n);
+      }
+      function _throw(n) {
+        asyncGeneratorStep(a, r, o, _next, _throw, "throw", n);
+      }
+      _next(void 0);
+    });
+  };
+}
+module.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/awaitAsyncGenerator.js b/node_modules/@babel/runtime/helpers/awaitAsyncGenerator.js
new file mode 100644
index 0000000..2d6fab9
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/awaitAsyncGenerator.js
@@ -0,0 +1,5 @@
+var OverloadYield = require("./OverloadYield.js");
+function _awaitAsyncGenerator(e) {
+  return new OverloadYield(e, 0);
+}
+module.exports = _awaitAsyncGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/callSuper.js b/node_modules/@babel/runtime/helpers/callSuper.js
new file mode 100644
index 0000000..38eaf7f
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/callSuper.js
@@ -0,0 +1,7 @@
+var getPrototypeOf = require("./getPrototypeOf.js");
+var isNativeReflectConstruct = require("./isNativeReflectConstruct.js");
+var possibleConstructorReturn = require("./possibleConstructorReturn.js");
+function _callSuper(t, o, e) {
+  return o = getPrototypeOf(o), possibleConstructorReturn(t, isNativeReflectConstruct() ? Reflect.construct(o, e || [], getPrototypeOf(t).constructor) : o.apply(t, e));
+}
+module.exports = _callSuper, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/checkInRHS.js b/node_modules/@babel/runtime/helpers/checkInRHS.js
new file mode 100644
index 0000000..4eea13d
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/checkInRHS.js
@@ -0,0 +1,6 @@
+var _typeof = require("./typeof.js")["default"];
+function _checkInRHS(e) {
+  if (Object(e) !== e) throw TypeError("right-hand side of 'in' should be an object, got " + (null !== e ? _typeof(e) : "null"));
+  return e;
+}
+module.exports = _checkInRHS, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/checkPrivateRedeclaration.js b/node_modules/@babel/runtime/helpers/checkPrivateRedeclaration.js
new file mode 100644
index 0000000..33ad54c
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/checkPrivateRedeclaration.js
@@ -0,0 +1,4 @@
+function _checkPrivateRedeclaration(e, t) {
+  if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object");
+}
+module.exports = _checkPrivateRedeclaration, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classApplyDescriptorDestructureSet.js b/node_modules/@babel/runtime/helpers/classApplyDescriptorDestructureSet.js
new file mode 100644
index 0000000..9998b83
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classApplyDescriptorDestructureSet.js
@@ -0,0 +1,10 @@
+function _classApplyDescriptorDestructureSet(e, t) {
+  if (t.set) return "__destrObj" in t || (t.__destrObj = {
+    set value(r) {
+      t.set.call(e, r);
+    }
+  }), t.__destrObj;
+  if (!t.writable) throw new TypeError("attempted to set read only private field");
+  return t;
+}
+module.exports = _classApplyDescriptorDestructureSet, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classApplyDescriptorGet.js b/node_modules/@babel/runtime/helpers/classApplyDescriptorGet.js
new file mode 100644
index 0000000..ab62724
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classApplyDescriptorGet.js
@@ -0,0 +1,4 @@
+function _classApplyDescriptorGet(e, t) {
+  return t.get ? t.get.call(e) : t.value;
+}
+module.exports = _classApplyDescriptorGet, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classApplyDescriptorSet.js b/node_modules/@babel/runtime/helpers/classApplyDescriptorSet.js
new file mode 100644
index 0000000..0975f95
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classApplyDescriptorSet.js
@@ -0,0 +1,7 @@
+function _classApplyDescriptorSet(e, t, l) {
+  if (t.set) t.set.call(e, l);else {
+    if (!t.writable) throw new TypeError("attempted to set read only private field");
+    t.value = l;
+  }
+}
+module.exports = _classApplyDescriptorSet, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classCallCheck.js b/node_modules/@babel/runtime/helpers/classCallCheck.js
new file mode 100644
index 0000000..21b8390
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classCallCheck.js
@@ -0,0 +1,4 @@
+function _classCallCheck(a, n) {
+  if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
+}
+module.exports = _classCallCheck, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classCheckPrivateStaticAccess.js b/node_modules/@babel/runtime/helpers/classCheckPrivateStaticAccess.js
new file mode 100644
index 0000000..7520f74
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classCheckPrivateStaticAccess.js
@@ -0,0 +1,5 @@
+var assertClassBrand = require("./assertClassBrand.js");
+function _classCheckPrivateStaticAccess(s, a, r) {
+  return assertClassBrand(a, s, r);
+}
+module.exports = _classCheckPrivateStaticAccess, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classCheckPrivateStaticFieldDescriptor.js b/node_modules/@babel/runtime/helpers/classCheckPrivateStaticFieldDescriptor.js
new file mode 100644
index 0000000..7f70395
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classCheckPrivateStaticFieldDescriptor.js
@@ -0,0 +1,4 @@
+function _classCheckPrivateStaticFieldDescriptor(t, e) {
+  if (void 0 === t) throw new TypeError("attempted to " + e + " private static field before its declaration");
+}
+module.exports = _classCheckPrivateStaticFieldDescriptor, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classExtractFieldDescriptor.js b/node_modules/@babel/runtime/helpers/classExtractFieldDescriptor.js
new file mode 100644
index 0000000..be855be
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classExtractFieldDescriptor.js
@@ -0,0 +1,5 @@
+var classPrivateFieldGet2 = require("./classPrivateFieldGet2.js");
+function _classExtractFieldDescriptor(e, t) {
+  return classPrivateFieldGet2(t, e);
+}
+module.exports = _classExtractFieldDescriptor, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classNameTDZError.js b/node_modules/@babel/runtime/helpers/classNameTDZError.js
new file mode 100644
index 0000000..8141ff8
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classNameTDZError.js
@@ -0,0 +1,4 @@
+function _classNameTDZError(e) {
+  throw new ReferenceError('Class "' + e + '" cannot be referenced in computed property keys.');
+}
+module.exports = _classNameTDZError, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classPrivateFieldDestructureSet.js b/node_modules/@babel/runtime/helpers/classPrivateFieldDestructureSet.js
new file mode 100644
index 0000000..97c764d
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classPrivateFieldDestructureSet.js
@@ -0,0 +1,7 @@
+var classApplyDescriptorDestructureSet = require("./classApplyDescriptorDestructureSet.js");
+var classPrivateFieldGet2 = require("./classPrivateFieldGet2.js");
+function _classPrivateFieldDestructureSet(e, t) {
+  var r = classPrivateFieldGet2(t, e);
+  return classApplyDescriptorDestructureSet(e, r);
+}
+module.exports = _classPrivateFieldDestructureSet, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classPrivateFieldGet.js b/node_modules/@babel/runtime/helpers/classPrivateFieldGet.js
new file mode 100644
index 0000000..bbee142
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classPrivateFieldGet.js
@@ -0,0 +1,7 @@
+var classApplyDescriptorGet = require("./classApplyDescriptorGet.js");
+var classPrivateFieldGet2 = require("./classPrivateFieldGet2.js");
+function _classPrivateFieldGet(e, t) {
+  var r = classPrivateFieldGet2(t, e);
+  return classApplyDescriptorGet(e, r);
+}
+module.exports = _classPrivateFieldGet, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classPrivateFieldGet2.js b/node_modules/@babel/runtime/helpers/classPrivateFieldGet2.js
new file mode 100644
index 0000000..d4c271c
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classPrivateFieldGet2.js
@@ -0,0 +1,5 @@
+var assertClassBrand = require("./assertClassBrand.js");
+function _classPrivateFieldGet2(s, a) {
+  return s.get(assertClassBrand(s, a));
+}
+module.exports = _classPrivateFieldGet2, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classPrivateFieldInitSpec.js b/node_modules/@babel/runtime/helpers/classPrivateFieldInitSpec.js
new file mode 100644
index 0000000..a290c19
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classPrivateFieldInitSpec.js
@@ -0,0 +1,5 @@
+var checkPrivateRedeclaration = require("./checkPrivateRedeclaration.js");
+function _classPrivateFieldInitSpec(e, t, a) {
+  checkPrivateRedeclaration(e, t), t.set(e, a);
+}
+module.exports = _classPrivateFieldInitSpec, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classPrivateFieldLooseBase.js b/node_modules/@babel/runtime/helpers/classPrivateFieldLooseBase.js
new file mode 100644
index 0000000..f9e46f2
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classPrivateFieldLooseBase.js
@@ -0,0 +1,5 @@
+function _classPrivateFieldBase(e, t) {
+  if (!{}.hasOwnProperty.call(e, t)) throw new TypeError("attempted to use private field on non-instance");
+  return e;
+}
+module.exports = _classPrivateFieldBase, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classPrivateFieldLooseKey.js b/node_modules/@babel/runtime/helpers/classPrivateFieldLooseKey.js
new file mode 100644
index 0000000..5dc687f
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classPrivateFieldLooseKey.js
@@ -0,0 +1,5 @@
+var id = 0;
+function _classPrivateFieldKey(e) {
+  return "__private_" + id++ + "_" + e;
+}
+module.exports = _classPrivateFieldKey, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classPrivateFieldSet.js b/node_modules/@babel/runtime/helpers/classPrivateFieldSet.js
new file mode 100644
index 0000000..f3746e7
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classPrivateFieldSet.js
@@ -0,0 +1,7 @@
+var classApplyDescriptorSet = require("./classApplyDescriptorSet.js");
+var classPrivateFieldGet2 = require("./classPrivateFieldGet2.js");
+function _classPrivateFieldSet(e, t, r) {
+  var s = classPrivateFieldGet2(t, e);
+  return classApplyDescriptorSet(e, s, r), r;
+}
+module.exports = _classPrivateFieldSet, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classPrivateFieldSet2.js b/node_modules/@babel/runtime/helpers/classPrivateFieldSet2.js
new file mode 100644
index 0000000..25c60ca
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classPrivateFieldSet2.js
@@ -0,0 +1,5 @@
+var assertClassBrand = require("./assertClassBrand.js");
+function _classPrivateFieldSet2(s, a, r) {
+  return s.set(assertClassBrand(s, a), r), r;
+}
+module.exports = _classPrivateFieldSet2, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classPrivateGetter.js b/node_modules/@babel/runtime/helpers/classPrivateGetter.js
new file mode 100644
index 0000000..1b3cf30
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classPrivateGetter.js
@@ -0,0 +1,5 @@
+var assertClassBrand = require("./assertClassBrand.js");
+function _classPrivateGetter(s, r, a) {
+  return a(assertClassBrand(s, r));
+}
+module.exports = _classPrivateGetter, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classPrivateMethodGet.js b/node_modules/@babel/runtime/helpers/classPrivateMethodGet.js
new file mode 100644
index 0000000..e4af387
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classPrivateMethodGet.js
@@ -0,0 +1,5 @@
+var assertClassBrand = require("./assertClassBrand.js");
+function _classPrivateMethodGet(s, a, r) {
+  return assertClassBrand(a, s), r;
+}
+module.exports = _classPrivateMethodGet, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classPrivateMethodInitSpec.js b/node_modules/@babel/runtime/helpers/classPrivateMethodInitSpec.js
new file mode 100644
index 0000000..821c8ed
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classPrivateMethodInitSpec.js
@@ -0,0 +1,5 @@
+var checkPrivateRedeclaration = require("./checkPrivateRedeclaration.js");
+function _classPrivateMethodInitSpec(e, a) {
+  checkPrivateRedeclaration(e, a), a.add(e);
+}
+module.exports = _classPrivateMethodInitSpec, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classPrivateMethodSet.js b/node_modules/@babel/runtime/helpers/classPrivateMethodSet.js
new file mode 100644
index 0000000..a44fd78
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classPrivateMethodSet.js
@@ -0,0 +1,4 @@
+function _classPrivateMethodSet() {
+  throw new TypeError("attempted to reassign private method");
+}
+module.exports = _classPrivateMethodSet, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classPrivateSetter.js b/node_modules/@babel/runtime/helpers/classPrivateSetter.js
new file mode 100644
index 0000000..494f81f
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classPrivateSetter.js
@@ -0,0 +1,5 @@
+var assertClassBrand = require("./assertClassBrand.js");
+function _classPrivateSetter(s, r, a, t) {
+  return r(assertClassBrand(s, a), t), t;
+}
+module.exports = _classPrivateSetter, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classStaticPrivateFieldDestructureSet.js b/node_modules/@babel/runtime/helpers/classStaticPrivateFieldDestructureSet.js
new file mode 100644
index 0000000..2bb6e8b
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classStaticPrivateFieldDestructureSet.js
@@ -0,0 +1,7 @@
+var classApplyDescriptorDestructureSet = require("./classApplyDescriptorDestructureSet.js");
+var assertClassBrand = require("./assertClassBrand.js");
+var classCheckPrivateStaticFieldDescriptor = require("./classCheckPrivateStaticFieldDescriptor.js");
+function _classStaticPrivateFieldDestructureSet(t, r, s) {
+  return assertClassBrand(r, t), classCheckPrivateStaticFieldDescriptor(s, "set"), classApplyDescriptorDestructureSet(t, s);
+}
+module.exports = _classStaticPrivateFieldDestructureSet, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecGet.js b/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecGet.js
new file mode 100644
index 0000000..eb2365f
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecGet.js
@@ -0,0 +1,7 @@
+var classApplyDescriptorGet = require("./classApplyDescriptorGet.js");
+var assertClassBrand = require("./assertClassBrand.js");
+var classCheckPrivateStaticFieldDescriptor = require("./classCheckPrivateStaticFieldDescriptor.js");
+function _classStaticPrivateFieldSpecGet(t, s, r) {
+  return assertClassBrand(s, t), classCheckPrivateStaticFieldDescriptor(r, "get"), classApplyDescriptorGet(t, r);
+}
+module.exports = _classStaticPrivateFieldSpecGet, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecSet.js b/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecSet.js
new file mode 100644
index 0000000..7783cd8
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecSet.js
@@ -0,0 +1,7 @@
+var classApplyDescriptorSet = require("./classApplyDescriptorSet.js");
+var assertClassBrand = require("./assertClassBrand.js");
+var classCheckPrivateStaticFieldDescriptor = require("./classCheckPrivateStaticFieldDescriptor.js");
+function _classStaticPrivateFieldSpecSet(s, t, r, e) {
+  return assertClassBrand(t, s), classCheckPrivateStaticFieldDescriptor(r, "set"), classApplyDescriptorSet(s, r, e), e;
+}
+module.exports = _classStaticPrivateFieldSpecSet, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classStaticPrivateMethodGet.js b/node_modules/@babel/runtime/helpers/classStaticPrivateMethodGet.js
new file mode 100644
index 0000000..c895be5
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classStaticPrivateMethodGet.js
@@ -0,0 +1,5 @@
+var assertClassBrand = require("./assertClassBrand.js");
+function _classStaticPrivateMethodGet(s, a, t) {
+  return assertClassBrand(a, s), t;
+}
+module.exports = _classStaticPrivateMethodGet, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classStaticPrivateMethodSet.js b/node_modules/@babel/runtime/helpers/classStaticPrivateMethodSet.js
new file mode 100644
index 0000000..72560e6
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classStaticPrivateMethodSet.js
@@ -0,0 +1,4 @@
+function _classStaticPrivateMethodSet() {
+  throw new TypeError("attempted to set read only static private field");
+}
+module.exports = _classStaticPrivateMethodSet, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/construct.js b/node_modules/@babel/runtime/helpers/construct.js
new file mode 100644
index 0000000..aee8e70
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/construct.js
@@ -0,0 +1,10 @@
+var isNativeReflectConstruct = require("./isNativeReflectConstruct.js");
+var setPrototypeOf = require("./setPrototypeOf.js");
+function _construct(t, e, r) {
+  if (isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);
+  var o = [null];
+  o.push.apply(o, e);
+  var p = new (t.bind.apply(t, o))();
+  return r && setPrototypeOf(p, r.prototype), p;
+}
+module.exports = _construct, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/createClass.js b/node_modules/@babel/runtime/helpers/createClass.js
new file mode 100644
index 0000000..8757f9e
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/createClass.js
@@ -0,0 +1,13 @@
+var toPropertyKey = require("./toPropertyKey.js");
+function _defineProperties(e, r) {
+  for (var t = 0; t < r.length; t++) {
+    var o = r[t];
+    o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);
+  }
+}
+function _createClass(e, r, t) {
+  return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", {
+    writable: !1
+  }), e;
+}
+module.exports = _createClass, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js b/node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js
new file mode 100644
index 0000000..2778307
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js
@@ -0,0 +1,50 @@
+var unsupportedIterableToArray = require("./unsupportedIterableToArray.js");
+function _createForOfIteratorHelper(r, e) {
+  var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
+  if (!t) {
+    if (Array.isArray(r) || (t = unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) {
+      t && (r = t);
+      var _n = 0,
+        F = function F() {};
+      return {
+        s: F,
+        n: function n() {
+          return _n >= r.length ? {
+            done: !0
+          } : {
+            done: !1,
+            value: r[_n++]
+          };
+        },
+        e: function e(r) {
+          throw r;
+        },
+        f: F
+      };
+    }
+    throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+  }
+  var o,
+    a = !0,
+    u = !1;
+  return {
+    s: function s() {
+      t = t.call(r);
+    },
+    n: function n() {
+      var r = t.next();
+      return a = r.done, r;
+    },
+    e: function e(r) {
+      u = !0, o = r;
+    },
+    f: function f() {
+      try {
+        a || null == t["return"] || t["return"]();
+      } finally {
+        if (u) throw o;
+      }
+    }
+  };
+}
+module.exports = _createForOfIteratorHelper, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/createForOfIteratorHelperLoose.js b/node_modules/@babel/runtime/helpers/createForOfIteratorHelperLoose.js
new file mode 100644
index 0000000..bc81b1c
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/createForOfIteratorHelperLoose.js
@@ -0,0 +1,19 @@
+var unsupportedIterableToArray = require("./unsupportedIterableToArray.js");
+function _createForOfIteratorHelperLoose(r, e) {
+  var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
+  if (t) return (t = t.call(r)).next.bind(t);
+  if (Array.isArray(r) || (t = unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) {
+    t && (r = t);
+    var o = 0;
+    return function () {
+      return o >= r.length ? {
+        done: !0
+      } : {
+        done: !1,
+        value: r[o++]
+      };
+    };
+  }
+  throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+}
+module.exports = _createForOfIteratorHelperLoose, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/createSuper.js b/node_modules/@babel/runtime/helpers/createSuper.js
new file mode 100644
index 0000000..b1869e6
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/createSuper.js
@@ -0,0 +1,16 @@
+var getPrototypeOf = require("./getPrototypeOf.js");
+var isNativeReflectConstruct = require("./isNativeReflectConstruct.js");
+var possibleConstructorReturn = require("./possibleConstructorReturn.js");
+function _createSuper(t) {
+  var r = isNativeReflectConstruct();
+  return function () {
+    var e,
+      o = getPrototypeOf(t);
+    if (r) {
+      var s = getPrototypeOf(this).constructor;
+      e = Reflect.construct(o, arguments, s);
+    } else e = o.apply(this, arguments);
+    return possibleConstructorReturn(this, e);
+  };
+}
+module.exports = _createSuper, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/decorate.js b/node_modules/@babel/runtime/helpers/decorate.js
new file mode 100644
index 0000000..bc22acf
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/decorate.js
@@ -0,0 +1,250 @@
+var toArray = require("./toArray.js");
+var toPropertyKey = require("./toPropertyKey.js");
+function _decorate(e, r, t, i) {
+  var o = _getDecoratorsApi();
+  if (i) for (var n = 0; n < i.length; n++) o = i[n](o);
+  var s = r(function (e) {
+      o.initializeInstanceElements(e, a.elements);
+    }, t),
+    a = o.decorateClass(_coalesceClassElements(s.d.map(_createElementDescriptor)), e);
+  return o.initializeClassElements(s.F, a.elements), o.runClassFinishers(s.F, a.finishers);
+}
+function _getDecoratorsApi() {
+  _getDecoratorsApi = function _getDecoratorsApi() {
+    return e;
+  };
+  var e = {
+    elementsDefinitionOrder: [["method"], ["field"]],
+    initializeInstanceElements: function initializeInstanceElements(e, r) {
+      ["method", "field"].forEach(function (t) {
+        r.forEach(function (r) {
+          r.kind === t && "own" === r.placement && this.defineClassElement(e, r);
+        }, this);
+      }, this);
+    },
+    initializeClassElements: function initializeClassElements(e, r) {
+      var t = e.prototype;
+      ["method", "field"].forEach(function (i) {
+        r.forEach(function (r) {
+          var o = r.placement;
+          if (r.kind === i && ("static" === o || "prototype" === o)) {
+            var n = "static" === o ? e : t;
+            this.defineClassElement(n, r);
+          }
+        }, this);
+      }, this);
+    },
+    defineClassElement: function defineClassElement(e, r) {
+      var t = r.descriptor;
+      if ("field" === r.kind) {
+        var i = r.initializer;
+        t = {
+          enumerable: t.enumerable,
+          writable: t.writable,
+          configurable: t.configurable,
+          value: void 0 === i ? void 0 : i.call(e)
+        };
+      }
+      Object.defineProperty(e, r.key, t);
+    },
+    decorateClass: function decorateClass(e, r) {
+      var t = [],
+        i = [],
+        o = {
+          "static": [],
+          prototype: [],
+          own: []
+        };
+      if (e.forEach(function (e) {
+        this.addElementPlacement(e, o);
+      }, this), e.forEach(function (e) {
+        if (!_hasDecorators(e)) return t.push(e);
+        var r = this.decorateElement(e, o);
+        t.push(r.element), t.push.apply(t, r.extras), i.push.apply(i, r.finishers);
+      }, this), !r) return {
+        elements: t,
+        finishers: i
+      };
+      var n = this.decorateConstructor(t, r);
+      return i.push.apply(i, n.finishers), n.finishers = i, n;
+    },
+    addElementPlacement: function addElementPlacement(e, r, t) {
+      var i = r[e.placement];
+      if (!t && -1 !== i.indexOf(e.key)) throw new TypeError("Duplicated element (" + e.key + ")");
+      i.push(e.key);
+    },
+    decorateElement: function decorateElement(e, r) {
+      for (var t = [], i = [], o = e.decorators, n = o.length - 1; n >= 0; n--) {
+        var s = r[e.placement];
+        s.splice(s.indexOf(e.key), 1);
+        var a = this.fromElementDescriptor(e),
+          l = this.toElementFinisherExtras((0, o[n])(a) || a);
+        e = l.element, this.addElementPlacement(e, r), l.finisher && i.push(l.finisher);
+        var c = l.extras;
+        if (c) {
+          for (var p = 0; p < c.length; p++) this.addElementPlacement(c[p], r);
+          t.push.apply(t, c);
+        }
+      }
+      return {
+        element: e,
+        finishers: i,
+        extras: t
+      };
+    },
+    decorateConstructor: function decorateConstructor(e, r) {
+      for (var t = [], i = r.length - 1; i >= 0; i--) {
+        var o = this.fromClassDescriptor(e),
+          n = this.toClassDescriptor((0, r[i])(o) || o);
+        if (void 0 !== n.finisher && t.push(n.finisher), void 0 !== n.elements) {
+          e = n.elements;
+          for (var s = 0; s < e.length - 1; s++) for (var a = s + 1; a < e.length; a++) if (e[s].key === e[a].key && e[s].placement === e[a].placement) throw new TypeError("Duplicated element (" + e[s].key + ")");
+        }
+      }
+      return {
+        elements: e,
+        finishers: t
+      };
+    },
+    fromElementDescriptor: function fromElementDescriptor(e) {
+      var r = {
+        kind: e.kind,
+        key: e.key,
+        placement: e.placement,
+        descriptor: e.descriptor
+      };
+      return Object.defineProperty(r, Symbol.toStringTag, {
+        value: "Descriptor",
+        configurable: !0
+      }), "field" === e.kind && (r.initializer = e.initializer), r;
+    },
+    toElementDescriptors: function toElementDescriptors(e) {
+      if (void 0 !== e) return toArray(e).map(function (e) {
+        var r = this.toElementDescriptor(e);
+        return this.disallowProperty(e, "finisher", "An element descriptor"), this.disallowProperty(e, "extras", "An element descriptor"), r;
+      }, this);
+    },
+    toElementDescriptor: function toElementDescriptor(e) {
+      var r = e.kind + "";
+      if ("method" !== r && "field" !== r) throw new TypeError('An element descriptor\'s .kind property must be either "method" or "field", but a decorator created an element descriptor with .kind "' + r + '"');
+      var t = toPropertyKey(e.key),
+        i = e.placement + "";
+      if ("static" !== i && "prototype" !== i && "own" !== i) throw new TypeError('An element descriptor\'s .placement property must be one of "static", "prototype" or "own", but a decorator created an element descriptor with .placement "' + i + '"');
+      var o = e.descriptor;
+      this.disallowProperty(e, "elements", "An element descriptor");
+      var n = {
+        kind: r,
+        key: t,
+        placement: i,
+        descriptor: Object.assign({}, o)
+      };
+      return "field" !== r ? this.disallowProperty(e, "initializer", "A method descriptor") : (this.disallowProperty(o, "get", "The property descriptor of a field descriptor"), this.disallowProperty(o, "set", "The property descriptor of a field descriptor"), this.disallowProperty(o, "value", "The property descriptor of a field descriptor"), n.initializer = e.initializer), n;
+    },
+    toElementFinisherExtras: function toElementFinisherExtras(e) {
+      return {
+        element: this.toElementDescriptor(e),
+        finisher: _optionalCallableProperty(e, "finisher"),
+        extras: this.toElementDescriptors(e.extras)
+      };
+    },
+    fromClassDescriptor: function fromClassDescriptor(e) {
+      var r = {
+        kind: "class",
+        elements: e.map(this.fromElementDescriptor, this)
+      };
+      return Object.defineProperty(r, Symbol.toStringTag, {
+        value: "Descriptor",
+        configurable: !0
+      }), r;
+    },
+    toClassDescriptor: function toClassDescriptor(e) {
+      var r = e.kind + "";
+      if ("class" !== r) throw new TypeError('A class descriptor\'s .kind property must be "class", but a decorator created a class descriptor with .kind "' + r + '"');
+      this.disallowProperty(e, "key", "A class descriptor"), this.disallowProperty(e, "placement", "A class descriptor"), this.disallowProperty(e, "descriptor", "A class descriptor"), this.disallowProperty(e, "initializer", "A class descriptor"), this.disallowProperty(e, "extras", "A class descriptor");
+      var t = _optionalCallableProperty(e, "finisher");
+      return {
+        elements: this.toElementDescriptors(e.elements),
+        finisher: t
+      };
+    },
+    runClassFinishers: function runClassFinishers(e, r) {
+      for (var t = 0; t < r.length; t++) {
+        var i = (0, r[t])(e);
+        if (void 0 !== i) {
+          if ("function" != typeof i) throw new TypeError("Finishers must return a constructor.");
+          e = i;
+        }
+      }
+      return e;
+    },
+    disallowProperty: function disallowProperty(e, r, t) {
+      if (void 0 !== e[r]) throw new TypeError(t + " can't have a ." + r + " property.");
+    }
+  };
+  return e;
+}
+function _createElementDescriptor(e) {
+  var r,
+    t = toPropertyKey(e.key);
+  "method" === e.kind ? r = {
+    value: e.value,
+    writable: !0,
+    configurable: !0,
+    enumerable: !1
+  } : "get" === e.kind ? r = {
+    get: e.value,
+    configurable: !0,
+    enumerable: !1
+  } : "set" === e.kind ? r = {
+    set: e.value,
+    configurable: !0,
+    enumerable: !1
+  } : "field" === e.kind && (r = {
+    configurable: !0,
+    writable: !0,
+    enumerable: !0
+  });
+  var i = {
+    kind: "field" === e.kind ? "field" : "method",
+    key: t,
+    placement: e["static"] ? "static" : "field" === e.kind ? "own" : "prototype",
+    descriptor: r
+  };
+  return e.decorators && (i.decorators = e.decorators), "field" === e.kind && (i.initializer = e.value), i;
+}
+function _coalesceGetterSetter(e, r) {
+  void 0 !== e.descriptor.get ? r.descriptor.get = e.descriptor.get : r.descriptor.set = e.descriptor.set;
+}
+function _coalesceClassElements(e) {
+  for (var r = [], isSameElement = function isSameElement(e) {
+      return "method" === e.kind && e.key === o.key && e.placement === o.placement;
+    }, t = 0; t < e.length; t++) {
+    var i,
+      o = e[t];
+    if ("method" === o.kind && (i = r.find(isSameElement))) {
+      if (_isDataDescriptor(o.descriptor) || _isDataDescriptor(i.descriptor)) {
+        if (_hasDecorators(o) || _hasDecorators(i)) throw new ReferenceError("Duplicated methods (" + o.key + ") can't be decorated.");
+        i.descriptor = o.descriptor;
+      } else {
+        if (_hasDecorators(o)) {
+          if (_hasDecorators(i)) throw new ReferenceError("Decorators can't be placed on different accessors with for the same property (" + o.key + ").");
+          i.decorators = o.decorators;
+        }
+        _coalesceGetterSetter(o, i);
+      }
+    } else r.push(o);
+  }
+  return r;
+}
+function _hasDecorators(e) {
+  return e.decorators && e.decorators.length;
+}
+function _isDataDescriptor(e) {
+  return void 0 !== e && !(void 0 === e.value && void 0 === e.writable);
+}
+function _optionalCallableProperty(e, r) {
+  var t = e[r];
+  if (void 0 !== t && "function" != typeof t) throw new TypeError("Expected '" + r + "' to be a function");
+  return t;
+}
+module.exports = _decorate, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/defaults.js b/node_modules/@babel/runtime/helpers/defaults.js
new file mode 100644
index 0000000..dfdbbb0
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/defaults.js
@@ -0,0 +1,9 @@
+function _defaults(e, r) {
+  for (var t = Object.getOwnPropertyNames(r), o = 0; o < t.length; o++) {
+    var n = t[o],
+      a = Object.getOwnPropertyDescriptor(r, n);
+    a && a.configurable && void 0 === e[n] && Object.defineProperty(e, n, a);
+  }
+  return e;
+}
+module.exports = _defaults, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/defineAccessor.js b/node_modules/@babel/runtime/helpers/defineAccessor.js
new file mode 100644
index 0000000..dc065f0
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/defineAccessor.js
@@ -0,0 +1,8 @@
+function _defineAccessor(e, r, n, t) {
+  var c = {
+    configurable: !0,
+    enumerable: !0
+  };
+  return c[e] = t, Object.defineProperty(r, n, c);
+}
+module.exports = _defineAccessor, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/defineEnumerableProperties.js b/node_modules/@babel/runtime/helpers/defineEnumerableProperties.js
new file mode 100644
index 0000000..ab9f43c
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/defineEnumerableProperties.js
@@ -0,0 +1,12 @@
+function _defineEnumerableProperties(e, r) {
+  for (var t in r) {
+    var n = r[t];
+    n.configurable = n.enumerable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, t, n);
+  }
+  if (Object.getOwnPropertySymbols) for (var a = Object.getOwnPropertySymbols(r), b = 0; b < a.length; b++) {
+    var i = a[b];
+    (n = r[i]).configurable = n.enumerable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, i, n);
+  }
+  return e;
+}
+module.exports = _defineEnumerableProperties, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/defineProperty.js b/node_modules/@babel/runtime/helpers/defineProperty.js
new file mode 100644
index 0000000..2c2ff1e
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/defineProperty.js
@@ -0,0 +1,10 @@
+var toPropertyKey = require("./toPropertyKey.js");
+function _defineProperty(e, r, t) {
+  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
+    value: t,
+    enumerable: !0,
+    configurable: !0,
+    writable: !0
+  }) : e[r] = t, e;
+}
+module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/dispose.js b/node_modules/@babel/runtime/helpers/dispose.js
new file mode 100644
index 0000000..c20193c
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/dispose.js
@@ -0,0 +1,28 @@
+function dispose_SuppressedError(r, e) {
+  return "undefined" != typeof SuppressedError ? dispose_SuppressedError = SuppressedError : (dispose_SuppressedError = function dispose_SuppressedError(r, e) {
+    this.suppressed = e, this.error = r, this.stack = Error().stack;
+  }, dispose_SuppressedError.prototype = Object.create(Error.prototype, {
+    constructor: {
+      value: dispose_SuppressedError,
+      writable: !0,
+      configurable: !0
+    }
+  })), new dispose_SuppressedError(r, e);
+}
+function _dispose(r, e, s) {
+  function next() {
+    for (; r.length > 0;) try {
+      var o = r.pop(),
+        p = o.d.call(o.v);
+      if (o.a) return Promise.resolve(p).then(next, err);
+    } catch (r) {
+      return err(r);
+    }
+    if (s) throw e;
+  }
+  function err(r) {
+    return e = s ? new dispose_SuppressedError(e, r) : r, s = !0, next();
+  }
+  return next();
+}
+module.exports = _dispose, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/AwaitValue.js b/node_modules/@babel/runtime/helpers/esm/AwaitValue.js
new file mode 100644
index 0000000..6f210c9
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/AwaitValue.js
@@ -0,0 +1,4 @@
+function _AwaitValue(t) {
+  this.wrapped = t;
+}
+export { _AwaitValue as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/OverloadYield.js b/node_modules/@babel/runtime/helpers/esm/OverloadYield.js
new file mode 100644
index 0000000..d7753a6
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/OverloadYield.js
@@ -0,0 +1,4 @@
+function _OverloadYield(e, d) {
+  this.v = e, this.k = d;
+}
+export { _OverloadYield as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/applyDecoratedDescriptor.js b/node_modules/@babel/runtime/helpers/esm/applyDecoratedDescriptor.js
new file mode 100644
index 0000000..0f33483
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/applyDecoratedDescriptor.js
@@ -0,0 +1,9 @@
+function _applyDecoratedDescriptor(i, e, r, n, l) {
+  var a = {};
+  return Object.keys(n).forEach(function (i) {
+    a[i] = n[i];
+  }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, ("value" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) {
+    return n(i, e, r) || r;
+  }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a;
+}
+export { _applyDecoratedDescriptor as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/applyDecs.js b/node_modules/@babel/runtime/helpers/esm/applyDecs.js
new file mode 100644
index 0000000..2b75dfd
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/applyDecs.js
@@ -0,0 +1,236 @@
+import _typeof from "./typeof.js";
+import setFunctionName from "./setFunctionName.js";
+import toPropertyKey from "./toPropertyKey.js";
+function old_createMetadataMethodsForProperty(e, t, a, r) {
+  return {
+    getMetadata: function getMetadata(o) {
+      old_assertNotFinished(r, "getMetadata"), old_assertMetadataKey(o);
+      var i = e[o];
+      if (void 0 !== i) if (1 === t) {
+        var n = i["public"];
+        if (void 0 !== n) return n[a];
+      } else if (2 === t) {
+        var l = i["private"];
+        if (void 0 !== l) return l.get(a);
+      } else if (Object.hasOwnProperty.call(i, "constructor")) return i.constructor;
+    },
+    setMetadata: function setMetadata(o, i) {
+      old_assertNotFinished(r, "setMetadata"), old_assertMetadataKey(o);
+      var n = e[o];
+      if (void 0 === n && (n = e[o] = {}), 1 === t) {
+        var l = n["public"];
+        void 0 === l && (l = n["public"] = {}), l[a] = i;
+      } else if (2 === t) {
+        var s = n.priv;
+        void 0 === s && (s = n["private"] = new Map()), s.set(a, i);
+      } else n.constructor = i;
+    }
+  };
+}
+function old_convertMetadataMapToFinal(e, t) {
+  var a = e[Symbol.metadata || Symbol["for"]("Symbol.metadata")],
+    r = Object.getOwnPropertySymbols(t);
+  if (0 !== r.length) {
+    for (var o = 0; o < r.length; o++) {
+      var i = r[o],
+        n = t[i],
+        l = a ? a[i] : null,
+        s = n["public"],
+        c = l ? l["public"] : null;
+      s && c && Object.setPrototypeOf(s, c);
+      var d = n["private"];
+      if (d) {
+        var u = Array.from(d.values()),
+          f = l ? l["private"] : null;
+        f && (u = u.concat(f)), n["private"] = u;
+      }
+      l && Object.setPrototypeOf(n, l);
+    }
+    a && Object.setPrototypeOf(t, a), e[Symbol.metadata || Symbol["for"]("Symbol.metadata")] = t;
+  }
+}
+function old_createAddInitializerMethod(e, t) {
+  return function (a) {
+    old_assertNotFinished(t, "addInitializer"), old_assertCallable(a, "An initializer"), e.push(a);
+  };
+}
+function old_memberDec(e, t, a, r, o, i, n, l, s) {
+  var c;
+  switch (i) {
+    case 1:
+      c = "accessor";
+      break;
+    case 2:
+      c = "method";
+      break;
+    case 3:
+      c = "getter";
+      break;
+    case 4:
+      c = "setter";
+      break;
+    default:
+      c = "field";
+  }
+  var d,
+    u,
+    f = {
+      kind: c,
+      name: l ? "#" + t : toPropertyKey(t),
+      isStatic: n,
+      isPrivate: l
+    },
+    p = {
+      v: !1
+    };
+  if (0 !== i && (f.addInitializer = old_createAddInitializerMethod(o, p)), l) {
+    d = 2, u = Symbol(t);
+    var v = {};
+    0 === i ? (v.get = a.get, v.set = a.set) : 2 === i ? v.get = function () {
+      return a.value;
+    } : (1 !== i && 3 !== i || (v.get = function () {
+      return a.get.call(this);
+    }), 1 !== i && 4 !== i || (v.set = function (e) {
+      a.set.call(this, e);
+    })), f.access = v;
+  } else d = 1, u = t;
+  try {
+    return e(s, Object.assign(f, old_createMetadataMethodsForProperty(r, d, u, p)));
+  } finally {
+    p.v = !0;
+  }
+}
+function old_assertNotFinished(e, t) {
+  if (e.v) throw Error("attempted to call " + t + " after decoration was finished");
+}
+function old_assertMetadataKey(e) {
+  if ("symbol" != _typeof(e)) throw new TypeError("Metadata keys must be symbols, received: " + e);
+}
+function old_assertCallable(e, t) {
+  if ("function" != typeof e) throw new TypeError(t + " must be a function");
+}
+function old_assertValidReturnValue(e, t) {
+  var a = _typeof(t);
+  if (1 === e) {
+    if ("object" !== a || null === t) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
+    void 0 !== t.get && old_assertCallable(t.get, "accessor.get"), void 0 !== t.set && old_assertCallable(t.set, "accessor.set"), void 0 !== t.init && old_assertCallable(t.init, "accessor.init"), void 0 !== t.initializer && old_assertCallable(t.initializer, "accessor.initializer");
+  } else if ("function" !== a) throw new TypeError((0 === e ? "field" : 10 === e ? "class" : "method") + " decorators must return a function or void 0");
+}
+function old_getInit(e) {
+  var t;
+  return null == (t = e.init) && (t = e.initializer) && void 0 !== console && console.warn(".initializer has been renamed to .init as of March 2022"), t;
+}
+function old_applyMemberDec(e, t, a, r, o, i, n, l, s) {
+  var c,
+    d,
+    u,
+    f,
+    p,
+    v,
+    y,
+    h = a[0];
+  if (n ? (0 === o || 1 === o ? (c = {
+    get: a[3],
+    set: a[4]
+  }, u = "get") : 3 === o ? (c = {
+    get: a[3]
+  }, u = "get") : 4 === o ? (c = {
+    set: a[3]
+  }, u = "set") : c = {
+    value: a[3]
+  }, 0 !== o && (1 === o && setFunctionName(a[4], "#" + r, "set"), setFunctionName(a[3], "#" + r, u))) : 0 !== o && (c = Object.getOwnPropertyDescriptor(t, r)), 1 === o ? f = {
+    get: c.get,
+    set: c.set
+  } : 2 === o ? f = c.value : 3 === o ? f = c.get : 4 === o && (f = c.set), "function" == typeof h) void 0 !== (p = old_memberDec(h, r, c, l, s, o, i, n, f)) && (old_assertValidReturnValue(o, p), 0 === o ? d = p : 1 === o ? (d = old_getInit(p), v = p.get || f.get, y = p.set || f.set, f = {
+    get: v,
+    set: y
+  }) : f = p);else for (var m = h.length - 1; m >= 0; m--) {
+    var b;
+    void 0 !== (p = old_memberDec(h[m], r, c, l, s, o, i, n, f)) && (old_assertValidReturnValue(o, p), 0 === o ? b = p : 1 === o ? (b = old_getInit(p), v = p.get || f.get, y = p.set || f.set, f = {
+      get: v,
+      set: y
+    }) : f = p, void 0 !== b && (void 0 === d ? d = b : "function" == typeof d ? d = [d, b] : d.push(b)));
+  }
+  if (0 === o || 1 === o) {
+    if (void 0 === d) d = function d(e, t) {
+      return t;
+    };else if ("function" != typeof d) {
+      var g = d;
+      d = function d(e, t) {
+        for (var a = t, r = 0; r < g.length; r++) a = g[r].call(e, a);
+        return a;
+      };
+    } else {
+      var _ = d;
+      d = function d(e, t) {
+        return _.call(e, t);
+      };
+    }
+    e.push(d);
+  }
+  0 !== o && (1 === o ? (c.get = f.get, c.set = f.set) : 2 === o ? c.value = f : 3 === o ? c.get = f : 4 === o && (c.set = f), n ? 1 === o ? (e.push(function (e, t) {
+    return f.get.call(e, t);
+  }), e.push(function (e, t) {
+    return f.set.call(e, t);
+  })) : 2 === o ? e.push(f) : e.push(function (e, t) {
+    return f.call(e, t);
+  }) : Object.defineProperty(t, r, c));
+}
+function old_applyMemberDecs(e, t, a, r, o) {
+  for (var i, n, l = new Map(), s = new Map(), c = 0; c < o.length; c++) {
+    var d = o[c];
+    if (Array.isArray(d)) {
+      var u,
+        f,
+        p,
+        v = d[1],
+        y = d[2],
+        h = d.length > 3,
+        m = v >= 5;
+      if (m ? (u = t, f = r, 0 != (v -= 5) && (p = n = n || [])) : (u = t.prototype, f = a, 0 !== v && (p = i = i || [])), 0 !== v && !h) {
+        var b = m ? s : l,
+          g = b.get(y) || 0;
+        if (!0 === g || 3 === g && 4 !== v || 4 === g && 3 !== v) throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + y);
+        !g && v > 2 ? b.set(y, v) : b.set(y, !0);
+      }
+      old_applyMemberDec(e, u, d, y, v, m, h, f, p);
+    }
+  }
+  old_pushInitializers(e, i), old_pushInitializers(e, n);
+}
+function old_pushInitializers(e, t) {
+  t && e.push(function (e) {
+    for (var a = 0; a < t.length; a++) t[a].call(e);
+    return e;
+  });
+}
+function old_applyClassDecs(e, t, a, r) {
+  if (r.length > 0) {
+    for (var o = [], i = t, n = t.name, l = r.length - 1; l >= 0; l--) {
+      var s = {
+        v: !1
+      };
+      try {
+        var c = Object.assign({
+            kind: "class",
+            name: n,
+            addInitializer: old_createAddInitializerMethod(o, s)
+          }, old_createMetadataMethodsForProperty(a, 0, n, s)),
+          d = r[l](i, c);
+      } finally {
+        s.v = !0;
+      }
+      void 0 !== d && (old_assertValidReturnValue(10, d), i = d);
+    }
+    e.push(i, function () {
+      for (var e = 0; e < o.length; e++) o[e].call(i);
+    });
+  }
+}
+function applyDecs(e, t, a) {
+  var r = [],
+    o = {},
+    i = {};
+  return old_applyMemberDecs(r, e, i, o, t), old_convertMetadataMapToFinal(e.prototype, i), old_applyClassDecs(r, e, o, a), old_convertMetadataMapToFinal(e, o), r;
+}
+export { applyDecs as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/applyDecs2203.js b/node_modules/@babel/runtime/helpers/esm/applyDecs2203.js
new file mode 100644
index 0000000..bddb51d
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/applyDecs2203.js
@@ -0,0 +1,184 @@
+import _typeof from "./typeof.js";
+function applyDecs2203Factory() {
+  function createAddInitializerMethod(e, t) {
+    return function (r) {
+      !function (e, t) {
+        if (e.v) throw Error("attempted to call addInitializer after decoration was finished");
+      }(t), assertCallable(r, "An initializer"), e.push(r);
+    };
+  }
+  function memberDec(e, t, r, a, n, i, s, o) {
+    var c;
+    switch (n) {
+      case 1:
+        c = "accessor";
+        break;
+      case 2:
+        c = "method";
+        break;
+      case 3:
+        c = "getter";
+        break;
+      case 4:
+        c = "setter";
+        break;
+      default:
+        c = "field";
+    }
+    var l,
+      u,
+      f = {
+        kind: c,
+        name: s ? "#" + t : t,
+        "static": i,
+        "private": s
+      },
+      p = {
+        v: !1
+      };
+    0 !== n && (f.addInitializer = createAddInitializerMethod(a, p)), 0 === n ? s ? (l = r.get, u = r.set) : (l = function l() {
+      return this[t];
+    }, u = function u(e) {
+      this[t] = e;
+    }) : 2 === n ? l = function l() {
+      return r.value;
+    } : (1 !== n && 3 !== n || (l = function l() {
+      return r.get.call(this);
+    }), 1 !== n && 4 !== n || (u = function u(e) {
+      r.set.call(this, e);
+    })), f.access = l && u ? {
+      get: l,
+      set: u
+    } : l ? {
+      get: l
+    } : {
+      set: u
+    };
+    try {
+      return e(o, f);
+    } finally {
+      p.v = !0;
+    }
+  }
+  function assertCallable(e, t) {
+    if ("function" != typeof e) throw new TypeError(t + " must be a function");
+  }
+  function assertValidReturnValue(e, t) {
+    var r = _typeof(t);
+    if (1 === e) {
+      if ("object" !== r || null === t) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
+      void 0 !== t.get && assertCallable(t.get, "accessor.get"), void 0 !== t.set && assertCallable(t.set, "accessor.set"), void 0 !== t.init && assertCallable(t.init, "accessor.init");
+    } else if ("function" !== r) throw new TypeError((0 === e ? "field" : 10 === e ? "class" : "method") + " decorators must return a function or void 0");
+  }
+  function applyMemberDec(e, t, r, a, n, i, s, o) {
+    var c,
+      l,
+      u,
+      f,
+      p,
+      d,
+      h = r[0];
+    if (s ? c = 0 === n || 1 === n ? {
+      get: r[3],
+      set: r[4]
+    } : 3 === n ? {
+      get: r[3]
+    } : 4 === n ? {
+      set: r[3]
+    } : {
+      value: r[3]
+    } : 0 !== n && (c = Object.getOwnPropertyDescriptor(t, a)), 1 === n ? u = {
+      get: c.get,
+      set: c.set
+    } : 2 === n ? u = c.value : 3 === n ? u = c.get : 4 === n && (u = c.set), "function" == typeof h) void 0 !== (f = memberDec(h, a, c, o, n, i, s, u)) && (assertValidReturnValue(n, f), 0 === n ? l = f : 1 === n ? (l = f.init, p = f.get || u.get, d = f.set || u.set, u = {
+      get: p,
+      set: d
+    }) : u = f);else for (var v = h.length - 1; v >= 0; v--) {
+      var g;
+      void 0 !== (f = memberDec(h[v], a, c, o, n, i, s, u)) && (assertValidReturnValue(n, f), 0 === n ? g = f : 1 === n ? (g = f.init, p = f.get || u.get, d = f.set || u.set, u = {
+        get: p,
+        set: d
+      }) : u = f, void 0 !== g && (void 0 === l ? l = g : "function" == typeof l ? l = [l, g] : l.push(g)));
+    }
+    if (0 === n || 1 === n) {
+      if (void 0 === l) l = function l(e, t) {
+        return t;
+      };else if ("function" != typeof l) {
+        var y = l;
+        l = function l(e, t) {
+          for (var r = t, a = 0; a < y.length; a++) r = y[a].call(e, r);
+          return r;
+        };
+      } else {
+        var m = l;
+        l = function l(e, t) {
+          return m.call(e, t);
+        };
+      }
+      e.push(l);
+    }
+    0 !== n && (1 === n ? (c.get = u.get, c.set = u.set) : 2 === n ? c.value = u : 3 === n ? c.get = u : 4 === n && (c.set = u), s ? 1 === n ? (e.push(function (e, t) {
+      return u.get.call(e, t);
+    }), e.push(function (e, t) {
+      return u.set.call(e, t);
+    })) : 2 === n ? e.push(u) : e.push(function (e, t) {
+      return u.call(e, t);
+    }) : Object.defineProperty(t, a, c));
+  }
+  function pushInitializers(e, t) {
+    t && e.push(function (e) {
+      for (var r = 0; r < t.length; r++) t[r].call(e);
+      return e;
+    });
+  }
+  return function (e, t, r) {
+    var a = [];
+    return function (e, t, r) {
+      for (var a, n, i = new Map(), s = new Map(), o = 0; o < r.length; o++) {
+        var c = r[o];
+        if (Array.isArray(c)) {
+          var l,
+            u,
+            f = c[1],
+            p = c[2],
+            d = c.length > 3,
+            h = f >= 5;
+          if (h ? (l = t, 0 != (f -= 5) && (u = n = n || [])) : (l = t.prototype, 0 !== f && (u = a = a || [])), 0 !== f && !d) {
+            var v = h ? s : i,
+              g = v.get(p) || 0;
+            if (!0 === g || 3 === g && 4 !== f || 4 === g && 3 !== f) throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + p);
+            !g && f > 2 ? v.set(p, f) : v.set(p, !0);
+          }
+          applyMemberDec(e, l, c, p, f, h, d, u);
+        }
+      }
+      pushInitializers(e, a), pushInitializers(e, n);
+    }(a, e, t), function (e, t, r) {
+      if (r.length > 0) {
+        for (var a = [], n = t, i = t.name, s = r.length - 1; s >= 0; s--) {
+          var o = {
+            v: !1
+          };
+          try {
+            var c = r[s](n, {
+              kind: "class",
+              name: i,
+              addInitializer: createAddInitializerMethod(a, o)
+            });
+          } finally {
+            o.v = !0;
+          }
+          void 0 !== c && (assertValidReturnValue(10, c), n = c);
+        }
+        e.push(n, function () {
+          for (var e = 0; e < a.length; e++) a[e].call(n);
+        });
+      }
+    }(a, e, r), a;
+  };
+}
+var applyDecs2203Impl;
+function applyDecs2203(e, t, r) {
+  return (applyDecs2203Impl = applyDecs2203Impl || applyDecs2203Factory())(e, t, r);
+}
+export { applyDecs2203 as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/applyDecs2203R.js b/node_modules/@babel/runtime/helpers/esm/applyDecs2203R.js
new file mode 100644
index 0000000..3944bf4
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/applyDecs2203R.js
@@ -0,0 +1,191 @@
+import _typeof from "./typeof.js";
+import setFunctionName from "./setFunctionName.js";
+import toPropertyKey from "./toPropertyKey.js";
+function applyDecs2203RFactory() {
+  function createAddInitializerMethod(e, t) {
+    return function (r) {
+      !function (e, t) {
+        if (e.v) throw Error("attempted to call addInitializer after decoration was finished");
+      }(t), assertCallable(r, "An initializer"), e.push(r);
+    };
+  }
+  function memberDec(e, t, r, n, a, i, o, s) {
+    var c;
+    switch (a) {
+      case 1:
+        c = "accessor";
+        break;
+      case 2:
+        c = "method";
+        break;
+      case 3:
+        c = "getter";
+        break;
+      case 4:
+        c = "setter";
+        break;
+      default:
+        c = "field";
+    }
+    var l,
+      u,
+      f = {
+        kind: c,
+        name: o ? "#" + t : toPropertyKey(t),
+        "static": i,
+        "private": o
+      },
+      p = {
+        v: !1
+      };
+    0 !== a && (f.addInitializer = createAddInitializerMethod(n, p)), 0 === a ? o ? (l = r.get, u = r.set) : (l = function l() {
+      return this[t];
+    }, u = function u(e) {
+      this[t] = e;
+    }) : 2 === a ? l = function l() {
+      return r.value;
+    } : (1 !== a && 3 !== a || (l = function l() {
+      return r.get.call(this);
+    }), 1 !== a && 4 !== a || (u = function u(e) {
+      r.set.call(this, e);
+    })), f.access = l && u ? {
+      get: l,
+      set: u
+    } : l ? {
+      get: l
+    } : {
+      set: u
+    };
+    try {
+      return e(s, f);
+    } finally {
+      p.v = !0;
+    }
+  }
+  function assertCallable(e, t) {
+    if ("function" != typeof e) throw new TypeError(t + " must be a function");
+  }
+  function assertValidReturnValue(e, t) {
+    var r = _typeof(t);
+    if (1 === e) {
+      if ("object" !== r || null === t) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
+      void 0 !== t.get && assertCallable(t.get, "accessor.get"), void 0 !== t.set && assertCallable(t.set, "accessor.set"), void 0 !== t.init && assertCallable(t.init, "accessor.init");
+    } else if ("function" !== r) throw new TypeError((0 === e ? "field" : 10 === e ? "class" : "method") + " decorators must return a function or void 0");
+  }
+  function applyMemberDec(e, t, r, n, a, i, o, s) {
+    var c,
+      l,
+      u,
+      f,
+      p,
+      d,
+      h,
+      v = r[0];
+    if (o ? (0 === a || 1 === a ? (c = {
+      get: r[3],
+      set: r[4]
+    }, u = "get") : 3 === a ? (c = {
+      get: r[3]
+    }, u = "get") : 4 === a ? (c = {
+      set: r[3]
+    }, u = "set") : c = {
+      value: r[3]
+    }, 0 !== a && (1 === a && setFunctionName(r[4], "#" + n, "set"), setFunctionName(r[3], "#" + n, u))) : 0 !== a && (c = Object.getOwnPropertyDescriptor(t, n)), 1 === a ? f = {
+      get: c.get,
+      set: c.set
+    } : 2 === a ? f = c.value : 3 === a ? f = c.get : 4 === a && (f = c.set), "function" == typeof v) void 0 !== (p = memberDec(v, n, c, s, a, i, o, f)) && (assertValidReturnValue(a, p), 0 === a ? l = p : 1 === a ? (l = p.init, d = p.get || f.get, h = p.set || f.set, f = {
+      get: d,
+      set: h
+    }) : f = p);else for (var g = v.length - 1; g >= 0; g--) {
+      var y;
+      void 0 !== (p = memberDec(v[g], n, c, s, a, i, o, f)) && (assertValidReturnValue(a, p), 0 === a ? y = p : 1 === a ? (y = p.init, d = p.get || f.get, h = p.set || f.set, f = {
+        get: d,
+        set: h
+      }) : f = p, void 0 !== y && (void 0 === l ? l = y : "function" == typeof l ? l = [l, y] : l.push(y)));
+    }
+    if (0 === a || 1 === a) {
+      if (void 0 === l) l = function l(e, t) {
+        return t;
+      };else if ("function" != typeof l) {
+        var m = l;
+        l = function l(e, t) {
+          for (var r = t, n = 0; n < m.length; n++) r = m[n].call(e, r);
+          return r;
+        };
+      } else {
+        var b = l;
+        l = function l(e, t) {
+          return b.call(e, t);
+        };
+      }
+      e.push(l);
+    }
+    0 !== a && (1 === a ? (c.get = f.get, c.set = f.set) : 2 === a ? c.value = f : 3 === a ? c.get = f : 4 === a && (c.set = f), o ? 1 === a ? (e.push(function (e, t) {
+      return f.get.call(e, t);
+    }), e.push(function (e, t) {
+      return f.set.call(e, t);
+    })) : 2 === a ? e.push(f) : e.push(function (e, t) {
+      return f.call(e, t);
+    }) : Object.defineProperty(t, n, c));
+  }
+  function applyMemberDecs(e, t) {
+    for (var r, n, a = [], i = new Map(), o = new Map(), s = 0; s < t.length; s++) {
+      var c = t[s];
+      if (Array.isArray(c)) {
+        var l,
+          u,
+          f = c[1],
+          p = c[2],
+          d = c.length > 3,
+          h = f >= 5;
+        if (h ? (l = e, 0 != (f -= 5) && (u = n = n || [])) : (l = e.prototype, 0 !== f && (u = r = r || [])), 0 !== f && !d) {
+          var v = h ? o : i,
+            g = v.get(p) || 0;
+          if (!0 === g || 3 === g && 4 !== f || 4 === g && 3 !== f) throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + p);
+          !g && f > 2 ? v.set(p, f) : v.set(p, !0);
+        }
+        applyMemberDec(a, l, c, p, f, h, d, u);
+      }
+    }
+    return pushInitializers(a, r), pushInitializers(a, n), a;
+  }
+  function pushInitializers(e, t) {
+    t && e.push(function (e) {
+      for (var r = 0; r < t.length; r++) t[r].call(e);
+      return e;
+    });
+  }
+  return function (e, t, r) {
+    return {
+      e: applyMemberDecs(e, t),
+      get c() {
+        return function (e, t) {
+          if (t.length > 0) {
+            for (var r = [], n = e, a = e.name, i = t.length - 1; i >= 0; i--) {
+              var o = {
+                v: !1
+              };
+              try {
+                var s = t[i](n, {
+                  kind: "class",
+                  name: a,
+                  addInitializer: createAddInitializerMethod(r, o)
+                });
+              } finally {
+                o.v = !0;
+              }
+              void 0 !== s && (assertValidReturnValue(10, s), n = s);
+            }
+            return [n, function () {
+              for (var e = 0; e < r.length; e++) r[e].call(n);
+            }];
+          }
+        }(e, r);
+      }
+    };
+  };
+}
+function applyDecs2203R(e, t, r) {
+  return (applyDecs2203R = applyDecs2203RFactory())(e, t, r);
+}
+export { applyDecs2203R as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/applyDecs2301.js b/node_modules/@babel/runtime/helpers/esm/applyDecs2301.js
new file mode 100644
index 0000000..bb4fbe6
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/applyDecs2301.js
@@ -0,0 +1,222 @@
+import _typeof from "./typeof.js";
+import checkInRHS from "./checkInRHS.js";
+import setFunctionName from "./setFunctionName.js";
+import toPropertyKey from "./toPropertyKey.js";
+function applyDecs2301Factory() {
+  function createAddInitializerMethod(e, t) {
+    return function (r) {
+      !function (e, t) {
+        if (e.v) throw Error("attempted to call addInitializer after decoration was finished");
+      }(t), assertCallable(r, "An initializer"), e.push(r);
+    };
+  }
+  function assertInstanceIfPrivate(e, t) {
+    if (!e(t)) throw new TypeError("Attempted to access private element on non-instance");
+  }
+  function memberDec(e, t, r, n, a, i, s, o, c) {
+    var u;
+    switch (a) {
+      case 1:
+        u = "accessor";
+        break;
+      case 2:
+        u = "method";
+        break;
+      case 3:
+        u = "getter";
+        break;
+      case 4:
+        u = "setter";
+        break;
+      default:
+        u = "field";
+    }
+    var l,
+      f,
+      p = {
+        kind: u,
+        name: s ? "#" + t : toPropertyKey(t),
+        "static": i,
+        "private": s
+      },
+      d = {
+        v: !1
+      };
+    if (0 !== a && (p.addInitializer = createAddInitializerMethod(n, d)), s || 0 !== a && 2 !== a) {
+      if (2 === a) l = function l(e) {
+        return assertInstanceIfPrivate(c, e), r.value;
+      };else {
+        var h = 0 === a || 1 === a;
+        (h || 3 === a) && (l = s ? function (e) {
+          return assertInstanceIfPrivate(c, e), r.get.call(e);
+        } : function (e) {
+          return r.get.call(e);
+        }), (h || 4 === a) && (f = s ? function (e, t) {
+          assertInstanceIfPrivate(c, e), r.set.call(e, t);
+        } : function (e, t) {
+          r.set.call(e, t);
+        });
+      }
+    } else l = function l(e) {
+      return e[t];
+    }, 0 === a && (f = function f(e, r) {
+      e[t] = r;
+    });
+    var v = s ? c.bind() : function (e) {
+      return t in e;
+    };
+    p.access = l && f ? {
+      get: l,
+      set: f,
+      has: v
+    } : l ? {
+      get: l,
+      has: v
+    } : {
+      set: f,
+      has: v
+    };
+    try {
+      return e(o, p);
+    } finally {
+      d.v = !0;
+    }
+  }
+  function assertCallable(e, t) {
+    if ("function" != typeof e) throw new TypeError(t + " must be a function");
+  }
+  function assertValidReturnValue(e, t) {
+    var r = _typeof(t);
+    if (1 === e) {
+      if ("object" !== r || null === t) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
+      void 0 !== t.get && assertCallable(t.get, "accessor.get"), void 0 !== t.set && assertCallable(t.set, "accessor.set"), void 0 !== t.init && assertCallable(t.init, "accessor.init");
+    } else if ("function" !== r) throw new TypeError((0 === e ? "field" : 10 === e ? "class" : "method") + " decorators must return a function or void 0");
+  }
+  function curryThis2(e) {
+    return function (t) {
+      e(this, t);
+    };
+  }
+  function applyMemberDec(e, t, r, n, a, i, s, o, c) {
+    var u,
+      l,
+      f,
+      p,
+      d,
+      h,
+      v,
+      y,
+      g = r[0];
+    if (s ? (0 === a || 1 === a ? (u = {
+      get: (d = r[3], function () {
+        return d(this);
+      }),
+      set: curryThis2(r[4])
+    }, f = "get") : 3 === a ? (u = {
+      get: r[3]
+    }, f = "get") : 4 === a ? (u = {
+      set: r[3]
+    }, f = "set") : u = {
+      value: r[3]
+    }, 0 !== a && (1 === a && setFunctionName(u.set, "#" + n, "set"), setFunctionName(u[f || "value"], "#" + n, f))) : 0 !== a && (u = Object.getOwnPropertyDescriptor(t, n)), 1 === a ? p = {
+      get: u.get,
+      set: u.set
+    } : 2 === a ? p = u.value : 3 === a ? p = u.get : 4 === a && (p = u.set), "function" == typeof g) void 0 !== (h = memberDec(g, n, u, o, a, i, s, p, c)) && (assertValidReturnValue(a, h), 0 === a ? l = h : 1 === a ? (l = h.init, v = h.get || p.get, y = h.set || p.set, p = {
+      get: v,
+      set: y
+    }) : p = h);else for (var m = g.length - 1; m >= 0; m--) {
+      var b;
+      void 0 !== (h = memberDec(g[m], n, u, o, a, i, s, p, c)) && (assertValidReturnValue(a, h), 0 === a ? b = h : 1 === a ? (b = h.init, v = h.get || p.get, y = h.set || p.set, p = {
+        get: v,
+        set: y
+      }) : p = h, void 0 !== b && (void 0 === l ? l = b : "function" == typeof l ? l = [l, b] : l.push(b)));
+    }
+    if (0 === a || 1 === a) {
+      if (void 0 === l) l = function l(e, t) {
+        return t;
+      };else if ("function" != typeof l) {
+        var I = l;
+        l = function l(e, t) {
+          for (var r = t, n = 0; n < I.length; n++) r = I[n].call(e, r);
+          return r;
+        };
+      } else {
+        var w = l;
+        l = function l(e, t) {
+          return w.call(e, t);
+        };
+      }
+      e.push(l);
+    }
+    0 !== a && (1 === a ? (u.get = p.get, u.set = p.set) : 2 === a ? u.value = p : 3 === a ? u.get = p : 4 === a && (u.set = p), s ? 1 === a ? (e.push(function (e, t) {
+      return p.get.call(e, t);
+    }), e.push(function (e, t) {
+      return p.set.call(e, t);
+    })) : 2 === a ? e.push(p) : e.push(function (e, t) {
+      return p.call(e, t);
+    }) : Object.defineProperty(t, n, u));
+  }
+  function applyMemberDecs(e, t, r) {
+    for (var n, a, i, s = [], o = new Map(), c = new Map(), u = 0; u < t.length; u++) {
+      var l = t[u];
+      if (Array.isArray(l)) {
+        var f,
+          p,
+          d = l[1],
+          h = l[2],
+          v = l.length > 3,
+          y = d >= 5,
+          g = r;
+        if (y ? (f = e, 0 != (d -= 5) && (p = a = a || []), v && !i && (i = function i(t) {
+          return checkInRHS(t) === e;
+        }), g = i) : (f = e.prototype, 0 !== d && (p = n = n || [])), 0 !== d && !v) {
+          var m = y ? c : o,
+            b = m.get(h) || 0;
+          if (!0 === b || 3 === b && 4 !== d || 4 === b && 3 !== d) throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + h);
+          !b && d > 2 ? m.set(h, d) : m.set(h, !0);
+        }
+        applyMemberDec(s, f, l, h, d, y, v, p, g);
+      }
+    }
+    return pushInitializers(s, n), pushInitializers(s, a), s;
+  }
+  function pushInitializers(e, t) {
+    t && e.push(function (e) {
+      for (var r = 0; r < t.length; r++) t[r].call(e);
+      return e;
+    });
+  }
+  return function (e, t, r, n) {
+    return {
+      e: applyMemberDecs(e, t, n),
+      get c() {
+        return function (e, t) {
+          if (t.length > 0) {
+            for (var r = [], n = e, a = e.name, i = t.length - 1; i >= 0; i--) {
+              var s = {
+                v: !1
+              };
+              try {
+                var o = t[i](n, {
+                  kind: "class",
+                  name: a,
+                  addInitializer: createAddInitializerMethod(r, s)
+                });
+              } finally {
+                s.v = !0;
+              }
+              void 0 !== o && (assertValidReturnValue(10, o), n = o);
+            }
+            return [n, function () {
+              for (var e = 0; e < r.length; e++) r[e].call(n);
+            }];
+          }
+        }(e, r);
+      }
+    };
+  };
+}
+function applyDecs2301(e, t, r, n) {
+  return (applyDecs2301 = applyDecs2301Factory())(e, t, r, n);
+}
+export { applyDecs2301 as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/applyDecs2305.js b/node_modules/@babel/runtime/helpers/esm/applyDecs2305.js
new file mode 100644
index 0000000..a11b2b9
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/applyDecs2305.js
@@ -0,0 +1,133 @@
+import _typeof from "./typeof.js";
+import checkInRHS from "./checkInRHS.js";
+import setFunctionName from "./setFunctionName.js";
+import toPropertyKey from "./toPropertyKey.js";
+function applyDecs2305(e, t, r, n, o, a) {
+  function i(e, t, r) {
+    return function (n, o) {
+      return r && r(n), e[t].call(n, o);
+    };
+  }
+  function c(e, t) {
+    for (var r = 0; r < e.length; r++) e[r].call(t);
+    return t;
+  }
+  function s(e, t, r, n) {
+    if ("function" != typeof e && (n || void 0 !== e)) throw new TypeError(t + " must " + (r || "be") + " a function" + (n ? "" : " or undefined"));
+    return e;
+  }
+  function applyDec(e, t, r, n, o, a, c, u, l, f, p, d, h) {
+    function m(e) {
+      if (!h(e)) throw new TypeError("Attempted to access private element on non-instance");
+    }
+    var y,
+      v = t[0],
+      g = t[3],
+      b = !u;
+    if (!b) {
+      r || Array.isArray(v) || (v = [v]);
+      var w = {},
+        S = [],
+        A = 3 === o ? "get" : 4 === o || d ? "set" : "value";
+      f ? (p || d ? w = {
+        get: setFunctionName(function () {
+          return g(this);
+        }, n, "get"),
+        set: function set(e) {
+          t[4](this, e);
+        }
+      } : w[A] = g, p || setFunctionName(w[A], n, 2 === o ? "" : A)) : p || (w = Object.getOwnPropertyDescriptor(e, n));
+    }
+    for (var P = e, j = v.length - 1; j >= 0; j -= r ? 2 : 1) {
+      var D = v[j],
+        E = r ? v[j - 1] : void 0,
+        I = {},
+        O = {
+          kind: ["field", "accessor", "method", "getter", "setter", "class"][o],
+          name: n,
+          metadata: a,
+          addInitializer: function (e, t) {
+            if (e.v) throw Error("attempted to call addInitializer after decoration was finished");
+            s(t, "An initializer", "be", !0), c.push(t);
+          }.bind(null, I)
+        };
+      try {
+        if (b) (y = s(D.call(E, P, O), "class decorators", "return")) && (P = y);else {
+          var k, F;
+          O["static"] = l, O["private"] = f, f ? 2 === o ? k = function k(e) {
+            return m(e), w.value;
+          } : (o < 4 && (k = i(w, "get", m)), 3 !== o && (F = i(w, "set", m))) : (k = function k(e) {
+            return e[n];
+          }, (o < 2 || 4 === o) && (F = function F(e, t) {
+            e[n] = t;
+          }));
+          var N = O.access = {
+            has: f ? h.bind() : function (e) {
+              return n in e;
+            }
+          };
+          if (k && (N.get = k), F && (N.set = F), P = D.call(E, d ? {
+            get: w.get,
+            set: w.set
+          } : w[A], O), d) {
+            if ("object" == _typeof(P) && P) (y = s(P.get, "accessor.get")) && (w.get = y), (y = s(P.set, "accessor.set")) && (w.set = y), (y = s(P.init, "accessor.init")) && S.push(y);else if (void 0 !== P) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
+          } else s(P, (p ? "field" : "method") + " decorators", "return") && (p ? S.push(P) : w[A] = P);
+        }
+      } finally {
+        I.v = !0;
+      }
+    }
+    return (p || d) && u.push(function (e, t) {
+      for (var r = S.length - 1; r >= 0; r--) t = S[r].call(e, t);
+      return t;
+    }), p || b || (f ? d ? u.push(i(w, "get"), i(w, "set")) : u.push(2 === o ? w[A] : i.call.bind(w[A])) : Object.defineProperty(e, n, w)), P;
+  }
+  function u(e, t) {
+    return Object.defineProperty(e, Symbol.metadata || Symbol["for"]("Symbol.metadata"), {
+      configurable: !0,
+      enumerable: !0,
+      value: t
+    });
+  }
+  if (arguments.length >= 6) var l = a[Symbol.metadata || Symbol["for"]("Symbol.metadata")];
+  var f = Object.create(null == l ? null : l),
+    p = function (e, t, r, n) {
+      var o,
+        a,
+        i = [],
+        s = function s(t) {
+          return checkInRHS(t) === e;
+        },
+        u = new Map();
+      function l(e) {
+        e && i.push(c.bind(null, e));
+      }
+      for (var f = 0; f < t.length; f++) {
+        var p = t[f];
+        if (Array.isArray(p)) {
+          var d = p[1],
+            h = p[2],
+            m = p.length > 3,
+            y = 16 & d,
+            v = !!(8 & d),
+            g = 0 == (d &= 7),
+            b = h + "/" + v;
+          if (!g && !m) {
+            var w = u.get(b);
+            if (!0 === w || 3 === w && 4 !== d || 4 === w && 3 !== d) throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + h);
+            u.set(b, !(d > 2) || d);
+          }
+          applyDec(v ? e : e.prototype, p, y, m ? "#" + h : toPropertyKey(h), d, n, v ? a = a || [] : o = o || [], i, v, m, g, 1 === d, v && m ? s : r);
+        }
+      }
+      return l(o), l(a), i;
+    }(e, t, o, f);
+  return r.length || u(e, f), {
+    e: p,
+    get c() {
+      var t = [];
+      return r.length && [u(applyDec(e, [r], n, e.name, 5, f, t), f), c.bind(null, t, e)];
+    }
+  };
+}
+export { applyDecs2305 as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/applyDecs2311.js b/node_modules/@babel/runtime/helpers/esm/applyDecs2311.js
new file mode 100644
index 0000000..41b2c48
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/applyDecs2311.js
@@ -0,0 +1,124 @@
+import _typeof from "./typeof.js";
+import checkInRHS from "./checkInRHS.js";
+import setFunctionName from "./setFunctionName.js";
+import toPropertyKey from "./toPropertyKey.js";
+function applyDecs2311(e, t, n, r, o, i) {
+  var a,
+    c,
+    u,
+    s,
+    f,
+    l,
+    p,
+    d = Symbol.metadata || Symbol["for"]("Symbol.metadata"),
+    m = Object.defineProperty,
+    h = Object.create,
+    y = [h(null), h(null)],
+    v = t.length;
+  function g(t, n, r) {
+    return function (o, i) {
+      n && (i = o, o = e);
+      for (var a = 0; a < t.length; a++) i = t[a].apply(o, r ? [i] : []);
+      return r ? i : o;
+    };
+  }
+  function b(e, t, n, r) {
+    if ("function" != typeof e && (r || void 0 !== e)) throw new TypeError(t + " must " + (n || "be") + " a function" + (r ? "" : " or undefined"));
+    return e;
+  }
+  function applyDec(e, t, n, r, o, i, u, s, f, l, p) {
+    function d(e) {
+      if (!p(e)) throw new TypeError("Attempted to access private element on non-instance");
+    }
+    var h = [].concat(t[0]),
+      v = t[3],
+      w = !u,
+      D = 1 === o,
+      S = 3 === o,
+      j = 4 === o,
+      E = 2 === o;
+    function I(t, n, r) {
+      return function (o, i) {
+        return n && (i = o, o = e), r && r(o), P[t].call(o, i);
+      };
+    }
+    if (!w) {
+      var P = {},
+        k = [],
+        F = S ? "get" : j || D ? "set" : "value";
+      if (f ? (l || D ? P = {
+        get: setFunctionName(function () {
+          return v(this);
+        }, r, "get"),
+        set: function set(e) {
+          t[4](this, e);
+        }
+      } : P[F] = v, l || setFunctionName(P[F], r, E ? "" : F)) : l || (P = Object.getOwnPropertyDescriptor(e, r)), !l && !f) {
+        if ((c = y[+s][r]) && 7 != (c ^ o)) throw Error("Decorating two elements with the same name (" + P[F].name + ") is not supported yet");
+        y[+s][r] = o < 3 ? 1 : o;
+      }
+    }
+    for (var N = e, O = h.length - 1; O >= 0; O -= n ? 2 : 1) {
+      var T = b(h[O], "A decorator", "be", !0),
+        z = n ? h[O - 1] : void 0,
+        A = {},
+        H = {
+          kind: ["field", "accessor", "method", "getter", "setter", "class"][o],
+          name: r,
+          metadata: a,
+          addInitializer: function (e, t) {
+            if (e.v) throw new TypeError("attempted to call addInitializer after decoration was finished");
+            b(t, "An initializer", "be", !0), i.push(t);
+          }.bind(null, A)
+        };
+      if (w) c = T.call(z, N, H), A.v = 1, b(c, "class decorators", "return") && (N = c);else if (H["static"] = s, H["private"] = f, c = H.access = {
+        has: f ? p.bind() : function (e) {
+          return r in e;
+        }
+      }, j || (c.get = f ? E ? function (e) {
+        return d(e), P.value;
+      } : I("get", 0, d) : function (e) {
+        return e[r];
+      }), E || S || (c.set = f ? I("set", 0, d) : function (e, t) {
+        e[r] = t;
+      }), N = T.call(z, D ? {
+        get: P.get,
+        set: P.set
+      } : P[F], H), A.v = 1, D) {
+        if ("object" == _typeof(N) && N) (c = b(N.get, "accessor.get")) && (P.get = c), (c = b(N.set, "accessor.set")) && (P.set = c), (c = b(N.init, "accessor.init")) && k.unshift(c);else if (void 0 !== N) throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined");
+      } else b(N, (l ? "field" : "method") + " decorators", "return") && (l ? k.unshift(N) : P[F] = N);
+    }
+    return o < 2 && u.push(g(k, s, 1), g(i, s, 0)), l || w || (f ? D ? u.splice(-1, 0, I("get", s), I("set", s)) : u.push(E ? P[F] : b.call.bind(P[F])) : m(e, r, P)), N;
+  }
+  function w(e) {
+    return m(e, d, {
+      configurable: !0,
+      enumerable: !0,
+      value: a
+    });
+  }
+  return void 0 !== i && (a = i[d]), a = h(null == a ? null : a), f = [], l = function l(e) {
+    e && f.push(g(e));
+  }, p = function p(t, r) {
+    for (var i = 0; i < n.length; i++) {
+      var a = n[i],
+        c = a[1],
+        l = 7 & c;
+      if ((8 & c) == t && !l == r) {
+        var p = a[2],
+          d = !!a[3],
+          m = 16 & c;
+        applyDec(t ? e : e.prototype, a, m, d ? "#" + p : toPropertyKey(p), l, l < 2 ? [] : t ? s = s || [] : u = u || [], f, !!t, d, r, t && d ? function (t) {
+          return checkInRHS(t) === e;
+        } : o);
+      }
+    }
+  }, p(8, 0), p(0, 0), p(8, 1), p(0, 1), l(u), l(s), c = f, v || w(e), {
+    e: c,
+    get c() {
+      var n = [];
+      return v && [w(e = applyDec(e, [t], r, e.name, 5, n)), g(n, 1)];
+    }
+  };
+}
+export { applyDecs2311 as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js b/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js
new file mode 100644
index 0000000..9ace772
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js
@@ -0,0 +1,6 @@
+function _arrayLikeToArray(r, a) {
+  (null == a || a > r.length) && (a = r.length);
+  for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
+  return n;
+}
+export { _arrayLikeToArray as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js b/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js
new file mode 100644
index 0000000..99fa715
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js
@@ -0,0 +1,4 @@
+function _arrayWithHoles(r) {
+  if (Array.isArray(r)) return r;
+}
+export { _arrayWithHoles as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js b/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js
new file mode 100644
index 0000000..1ce6f21
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js
@@ -0,0 +1,5 @@
+import arrayLikeToArray from "./arrayLikeToArray.js";
+function _arrayWithoutHoles(r) {
+  if (Array.isArray(r)) return arrayLikeToArray(r);
+}
+export { _arrayWithoutHoles as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/assertClassBrand.js b/node_modules/@babel/runtime/helpers/esm/assertClassBrand.js
new file mode 100644
index 0000000..ae7b712
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/assertClassBrand.js
@@ -0,0 +1,5 @@
+function _assertClassBrand(e, t, n) {
+  if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n;
+  throw new TypeError("Private element is not present on this object");
+}
+export { _assertClassBrand as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js b/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js
new file mode 100644
index 0000000..4a41bde
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js
@@ -0,0 +1,5 @@
+function _assertThisInitialized(e) {
+  if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+  return e;
+}
+export { _assertThisInitialized as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/asyncGeneratorDelegate.js b/node_modules/@babel/runtime/helpers/esm/asyncGeneratorDelegate.js
new file mode 100644
index 0000000..e026689
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/asyncGeneratorDelegate.js
@@ -0,0 +1,24 @@
+import OverloadYield from "./OverloadYield.js";
+function _asyncGeneratorDelegate(t) {
+  var e = {},
+    n = !1;
+  function pump(e, r) {
+    return n = !0, r = new Promise(function (n) {
+      n(t[e](r));
+    }), {
+      done: !1,
+      value: new OverloadYield(r, 1)
+    };
+  }
+  return e["undefined" != typeof Symbol && Symbol.iterator || "@@iterator"] = function () {
+    return this;
+  }, e.next = function (t) {
+    return n ? (n = !1, t) : pump("next", t);
+  }, "function" == typeof t["throw"] && (e["throw"] = function (t) {
+    if (n) throw n = !1, t;
+    return pump("throw", t);
+  }), "function" == typeof t["return"] && (e["return"] = function (t) {
+    return n ? (n = !1, t) : pump("return", t);
+  }), e;
+}
+export { _asyncGeneratorDelegate as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/asyncIterator.js b/node_modules/@babel/runtime/helpers/esm/asyncIterator.js
new file mode 100644
index 0000000..2ed00b7
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/asyncIterator.js
@@ -0,0 +1,45 @@
+function _asyncIterator(r) {
+  var n,
+    t,
+    o,
+    e = 2;
+  for ("undefined" != typeof Symbol && (t = Symbol.asyncIterator, o = Symbol.iterator); e--;) {
+    if (t && null != (n = r[t])) return n.call(r);
+    if (o && null != (n = r[o])) return new AsyncFromSyncIterator(n.call(r));
+    t = "@@asyncIterator", o = "@@iterator";
+  }
+  throw new TypeError("Object is not async iterable");
+}
+function AsyncFromSyncIterator(r) {
+  function AsyncFromSyncIteratorContinuation(r) {
+    if (Object(r) !== r) return Promise.reject(new TypeError(r + " is not an object."));
+    var n = r.done;
+    return Promise.resolve(r.value).then(function (r) {
+      return {
+        value: r,
+        done: n
+      };
+    });
+  }
+  return AsyncFromSyncIterator = function AsyncFromSyncIterator(r) {
+    this.s = r, this.n = r.next;
+  }, AsyncFromSyncIterator.prototype = {
+    s: null,
+    n: null,
+    next: function next() {
+      return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments));
+    },
+    "return": function _return(r) {
+      var n = this.s["return"];
+      return void 0 === n ? Promise.resolve({
+        value: r,
+        done: !0
+      }) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments));
+    },
+    "throw": function _throw(r) {
+      var n = this.s["return"];
+      return void 0 === n ? Promise.reject(r) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments));
+    }
+  }, new AsyncFromSyncIterator(r);
+}
+export { _asyncIterator as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js b/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js
new file mode 100644
index 0000000..00f29b1
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js
@@ -0,0 +1,26 @@
+function asyncGeneratorStep(n, t, e, r, o, a, c) {
+  try {
+    var i = n[a](c),
+      u = i.value;
+  } catch (n) {
+    return void e(n);
+  }
+  i.done ? t(u) : Promise.resolve(u).then(r, o);
+}
+function _asyncToGenerator(n) {
+  return function () {
+    var t = this,
+      e = arguments;
+    return new Promise(function (r, o) {
+      var a = n.apply(t, e);
+      function _next(n) {
+        asyncGeneratorStep(a, r, o, _next, _throw, "next", n);
+      }
+      function _throw(n) {
+        asyncGeneratorStep(a, r, o, _next, _throw, "throw", n);
+      }
+      _next(void 0);
+    });
+  };
+}
+export { _asyncToGenerator as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/awaitAsyncGenerator.js b/node_modules/@babel/runtime/helpers/esm/awaitAsyncGenerator.js
new file mode 100644
index 0000000..097c88c
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/awaitAsyncGenerator.js
@@ -0,0 +1,5 @@
+import OverloadYield from "./OverloadYield.js";
+function _awaitAsyncGenerator(e) {
+  return new OverloadYield(e, 0);
+}
+export { _awaitAsyncGenerator as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/callSuper.js b/node_modules/@babel/runtime/helpers/esm/callSuper.js
new file mode 100644
index 0000000..6d17a4e
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/callSuper.js
@@ -0,0 +1,7 @@
+import getPrototypeOf from "./getPrototypeOf.js";
+import isNativeReflectConstruct from "./isNativeReflectConstruct.js";
+import possibleConstructorReturn from "./possibleConstructorReturn.js";
+function _callSuper(t, o, e) {
+  return o = getPrototypeOf(o), possibleConstructorReturn(t, isNativeReflectConstruct() ? Reflect.construct(o, e || [], getPrototypeOf(t).constructor) : o.apply(t, e));
+}
+export { _callSuper as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/checkInRHS.js b/node_modules/@babel/runtime/helpers/esm/checkInRHS.js
new file mode 100644
index 0000000..12f59b4
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/checkInRHS.js
@@ -0,0 +1,6 @@
+import _typeof from "./typeof.js";
+function _checkInRHS(e) {
+  if (Object(e) !== e) throw TypeError("right-hand side of 'in' should be an object, got " + (null !== e ? _typeof(e) : "null"));
+  return e;
+}
+export { _checkInRHS as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/checkPrivateRedeclaration.js b/node_modules/@babel/runtime/helpers/esm/checkPrivateRedeclaration.js
new file mode 100644
index 0000000..e9e6b3b
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/checkPrivateRedeclaration.js
@@ -0,0 +1,4 @@
+function _checkPrivateRedeclaration(e, t) {
+  if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object");
+}
+export { _checkPrivateRedeclaration as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorDestructureSet.js b/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorDestructureSet.js
new file mode 100644
index 0000000..5623419
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorDestructureSet.js
@@ -0,0 +1,10 @@
+function _classApplyDescriptorDestructureSet(e, t) {
+  if (t.set) return "__destrObj" in t || (t.__destrObj = {
+    set value(r) {
+      t.set.call(e, r);
+    }
+  }), t.__destrObj;
+  if (!t.writable) throw new TypeError("attempted to set read only private field");
+  return t;
+}
+export { _classApplyDescriptorDestructureSet as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorGet.js b/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorGet.js
new file mode 100644
index 0000000..b9259d3
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorGet.js
@@ -0,0 +1,4 @@
+function _classApplyDescriptorGet(e, t) {
+  return t.get ? t.get.call(e) : t.value;
+}
+export { _classApplyDescriptorGet as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorSet.js b/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorSet.js
new file mode 100644
index 0000000..d9c4fbd
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorSet.js
@@ -0,0 +1,7 @@
+function _classApplyDescriptorSet(e, t, l) {
+  if (t.set) t.set.call(e, l);else {
+    if (!t.writable) throw new TypeError("attempted to set read only private field");
+    t.value = l;
+  }
+}
+export { _classApplyDescriptorSet as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classCallCheck.js b/node_modules/@babel/runtime/helpers/esm/classCallCheck.js
new file mode 100644
index 0000000..bf97219
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classCallCheck.js
@@ -0,0 +1,4 @@
+function _classCallCheck(a, n) {
+  if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
+}
+export { _classCallCheck as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticAccess.js b/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticAccess.js
new file mode 100644
index 0000000..366ed05
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticAccess.js
@@ -0,0 +1,5 @@
+import assertClassBrand from "./assertClassBrand.js";
+function _classCheckPrivateStaticAccess(s, a, r) {
+  return assertClassBrand(a, s, r);
+}
+export { _classCheckPrivateStaticAccess as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticFieldDescriptor.js b/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticFieldDescriptor.js
new file mode 100644
index 0000000..844be91
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticFieldDescriptor.js
@@ -0,0 +1,4 @@
+function _classCheckPrivateStaticFieldDescriptor(t, e) {
+  if (void 0 === t) throw new TypeError("attempted to " + e + " private static field before its declaration");
+}
+export { _classCheckPrivateStaticFieldDescriptor as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classExtractFieldDescriptor.js b/node_modules/@babel/runtime/helpers/esm/classExtractFieldDescriptor.js
new file mode 100644
index 0000000..652689d
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classExtractFieldDescriptor.js
@@ -0,0 +1,5 @@
+import classPrivateFieldGet2 from "./classPrivateFieldGet2.js";
+function _classExtractFieldDescriptor(e, t) {
+  return classPrivateFieldGet2(t, e);
+}
+export { _classExtractFieldDescriptor as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classNameTDZError.js b/node_modules/@babel/runtime/helpers/esm/classNameTDZError.js
new file mode 100644
index 0000000..68e76ff
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classNameTDZError.js
@@ -0,0 +1,4 @@
+function _classNameTDZError(e) {
+  throw new ReferenceError('Class "' + e + '" cannot be referenced in computed property keys.');
+}
+export { _classNameTDZError as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateFieldDestructureSet.js b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldDestructureSet.js
new file mode 100644
index 0000000..9303366
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldDestructureSet.js
@@ -0,0 +1,7 @@
+import classApplyDescriptorDestructureSet from "./classApplyDescriptorDestructureSet.js";
+import classPrivateFieldGet2 from "./classPrivateFieldGet2.js";
+function _classPrivateFieldDestructureSet(e, t) {
+  var r = classPrivateFieldGet2(t, e);
+  return classApplyDescriptorDestructureSet(e, r);
+}
+export { _classPrivateFieldDestructureSet as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js
new file mode 100644
index 0000000..ce7ebcb
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js
@@ -0,0 +1,7 @@
+import classApplyDescriptorGet from "./classApplyDescriptorGet.js";
+import classPrivateFieldGet2 from "./classPrivateFieldGet2.js";
+function _classPrivateFieldGet(e, t) {
+  var r = classPrivateFieldGet2(t, e);
+  return classApplyDescriptorGet(e, r);
+}
+export { _classPrivateFieldGet as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet2.js b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet2.js
new file mode 100644
index 0000000..4aa3da6
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet2.js
@@ -0,0 +1,5 @@
+import assertClassBrand from "./assertClassBrand.js";
+function _classPrivateFieldGet2(s, a) {
+  return s.get(assertClassBrand(s, a));
+}
+export { _classPrivateFieldGet2 as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateFieldInitSpec.js b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldInitSpec.js
new file mode 100644
index 0000000..5dcdbe0
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldInitSpec.js
@@ -0,0 +1,5 @@
+import checkPrivateRedeclaration from "./checkPrivateRedeclaration.js";
+function _classPrivateFieldInitSpec(e, t, a) {
+  checkPrivateRedeclaration(e, t), t.set(e, a);
+}
+export { _classPrivateFieldInitSpec as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseBase.js b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseBase.js
new file mode 100644
index 0000000..4bd662c
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseBase.js
@@ -0,0 +1,5 @@
+function _classPrivateFieldBase(e, t) {
+  if (!{}.hasOwnProperty.call(e, t)) throw new TypeError("attempted to use private field on non-instance");
+  return e;
+}
+export { _classPrivateFieldBase as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseKey.js b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseKey.js
new file mode 100644
index 0000000..90d2193
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseKey.js
@@ -0,0 +1,5 @@
+var id = 0;
+function _classPrivateFieldKey(e) {
+  return "__private_" + id++ + "_" + e;
+}
+export { _classPrivateFieldKey as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js
new file mode 100644
index 0000000..b5161bd
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js
@@ -0,0 +1,7 @@
+import classApplyDescriptorSet from "./classApplyDescriptorSet.js";
+import classPrivateFieldGet2 from "./classPrivateFieldGet2.js";
+function _classPrivateFieldSet(e, t, r) {
+  var s = classPrivateFieldGet2(t, e);
+  return classApplyDescriptorSet(e, s, r), r;
+}
+export { _classPrivateFieldSet as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet2.js b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet2.js
new file mode 100644
index 0000000..337b01a
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet2.js
@@ -0,0 +1,5 @@
+import assertClassBrand from "./assertClassBrand.js";
+function _classPrivateFieldSet2(s, a, r) {
+  return s.set(assertClassBrand(s, a), r), r;
+}
+export { _classPrivateFieldSet2 as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateGetter.js b/node_modules/@babel/runtime/helpers/esm/classPrivateGetter.js
new file mode 100644
index 0000000..ff3e985
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classPrivateGetter.js
@@ -0,0 +1,5 @@
+import assertClassBrand from "./assertClassBrand.js";
+function _classPrivateGetter(s, r, a) {
+  return a(assertClassBrand(s, r));
+}
+export { _classPrivateGetter as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateMethodGet.js b/node_modules/@babel/runtime/helpers/esm/classPrivateMethodGet.js
new file mode 100644
index 0000000..4832fc6
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classPrivateMethodGet.js
@@ -0,0 +1,5 @@
+import assertClassBrand from "./assertClassBrand.js";
+function _classPrivateMethodGet(s, a, r) {
+  return assertClassBrand(a, s), r;
+}
+export { _classPrivateMethodGet as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateMethodInitSpec.js b/node_modules/@babel/runtime/helpers/esm/classPrivateMethodInitSpec.js
new file mode 100644
index 0000000..61e23e2
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classPrivateMethodInitSpec.js
@@ -0,0 +1,5 @@
+import checkPrivateRedeclaration from "./checkPrivateRedeclaration.js";
+function _classPrivateMethodInitSpec(e, a) {
+  checkPrivateRedeclaration(e, a), a.add(e);
+}
+export { _classPrivateMethodInitSpec as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateMethodSet.js b/node_modules/@babel/runtime/helpers/esm/classPrivateMethodSet.js
new file mode 100644
index 0000000..d181b51
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classPrivateMethodSet.js
@@ -0,0 +1,4 @@
+function _classPrivateMethodSet() {
+  throw new TypeError("attempted to reassign private method");
+}
+export { _classPrivateMethodSet as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateSetter.js b/node_modules/@babel/runtime/helpers/esm/classPrivateSetter.js
new file mode 100644
index 0000000..9a80d59
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classPrivateSetter.js
@@ -0,0 +1,5 @@
+import assertClassBrand from "./assertClassBrand.js";
+function _classPrivateSetter(s, r, a, t) {
+  return r(assertClassBrand(s, a), t), t;
+}
+export { _classPrivateSetter as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldDestructureSet.js b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldDestructureSet.js
new file mode 100644
index 0000000..747e639
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldDestructureSet.js
@@ -0,0 +1,7 @@
+import classApplyDescriptorDestructureSet from "./classApplyDescriptorDestructureSet.js";
+import assertClassBrand from "./assertClassBrand.js";
+import classCheckPrivateStaticFieldDescriptor from "./classCheckPrivateStaticFieldDescriptor.js";
+function _classStaticPrivateFieldDestructureSet(t, r, s) {
+  return assertClassBrand(r, t), classCheckPrivateStaticFieldDescriptor(s, "set"), classApplyDescriptorDestructureSet(t, s);
+}
+export { _classStaticPrivateFieldDestructureSet as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecGet.js b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecGet.js
new file mode 100644
index 0000000..23684b7
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecGet.js
@@ -0,0 +1,7 @@
+import classApplyDescriptorGet from "./classApplyDescriptorGet.js";
+import assertClassBrand from "./assertClassBrand.js";
+import classCheckPrivateStaticFieldDescriptor from "./classCheckPrivateStaticFieldDescriptor.js";
+function _classStaticPrivateFieldSpecGet(t, s, r) {
+  return assertClassBrand(s, t), classCheckPrivateStaticFieldDescriptor(r, "get"), classApplyDescriptorGet(t, r);
+}
+export { _classStaticPrivateFieldSpecGet as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecSet.js b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecSet.js
new file mode 100644
index 0000000..3a31468
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecSet.js
@@ -0,0 +1,7 @@
+import classApplyDescriptorSet from "./classApplyDescriptorSet.js";
+import assertClassBrand from "./assertClassBrand.js";
+import classCheckPrivateStaticFieldDescriptor from "./classCheckPrivateStaticFieldDescriptor.js";
+function _classStaticPrivateFieldSpecSet(s, t, r, e) {
+  return assertClassBrand(t, s), classCheckPrivateStaticFieldDescriptor(r, "set"), classApplyDescriptorSet(s, r, e), e;
+}
+export { _classStaticPrivateFieldSpecSet as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodGet.js b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodGet.js
new file mode 100644
index 0000000..047b177
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodGet.js
@@ -0,0 +1,5 @@
+import assertClassBrand from "./assertClassBrand.js";
+function _classStaticPrivateMethodGet(s, a, t) {
+  return assertClassBrand(a, s), t;
+}
+export { _classStaticPrivateMethodGet as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodSet.js b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodSet.js
new file mode 100644
index 0000000..a61ae63
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodSet.js
@@ -0,0 +1,4 @@
+function _classStaticPrivateMethodSet() {
+  throw new TypeError("attempted to set read only static private field");
+}
+export { _classStaticPrivateMethodSet as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/construct.js b/node_modules/@babel/runtime/helpers/esm/construct.js
new file mode 100644
index 0000000..91609ff
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/construct.js
@@ -0,0 +1,10 @@
+import isNativeReflectConstruct from "./isNativeReflectConstruct.js";
+import setPrototypeOf from "./setPrototypeOf.js";
+function _construct(t, e, r) {
+  if (isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);
+  var o = [null];
+  o.push.apply(o, e);
+  var p = new (t.bind.apply(t, o))();
+  return r && setPrototypeOf(p, r.prototype), p;
+}
+export { _construct as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/createClass.js b/node_modules/@babel/runtime/helpers/esm/createClass.js
new file mode 100644
index 0000000..9b17851
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/createClass.js
@@ -0,0 +1,13 @@
+import toPropertyKey from "./toPropertyKey.js";
+function _defineProperties(e, r) {
+  for (var t = 0; t < r.length; t++) {
+    var o = r[t];
+    o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);
+  }
+}
+function _createClass(e, r, t) {
+  return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", {
+    writable: !1
+  }), e;
+}
+export { _createClass as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js b/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js
new file mode 100644
index 0000000..93b97f9
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js
@@ -0,0 +1,50 @@
+import unsupportedIterableToArray from "./unsupportedIterableToArray.js";
+function _createForOfIteratorHelper(r, e) {
+  var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
+  if (!t) {
+    if (Array.isArray(r) || (t = unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) {
+      t && (r = t);
+      var _n = 0,
+        F = function F() {};
+      return {
+        s: F,
+        n: function n() {
+          return _n >= r.length ? {
+            done: !0
+          } : {
+            done: !1,
+            value: r[_n++]
+          };
+        },
+        e: function e(r) {
+          throw r;
+        },
+        f: F
+      };
+    }
+    throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+  }
+  var o,
+    a = !0,
+    u = !1;
+  return {
+    s: function s() {
+      t = t.call(r);
+    },
+    n: function n() {
+      var r = t.next();
+      return a = r.done, r;
+    },
+    e: function e(r) {
+      u = !0, o = r;
+    },
+    f: function f() {
+      try {
+        a || null == t["return"] || t["return"]();
+      } finally {
+        if (u) throw o;
+      }
+    }
+  };
+}
+export { _createForOfIteratorHelper as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelperLoose.js b/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelperLoose.js
new file mode 100644
index 0000000..3deaae4
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelperLoose.js
@@ -0,0 +1,19 @@
+import unsupportedIterableToArray from "./unsupportedIterableToArray.js";
+function _createForOfIteratorHelperLoose(r, e) {
+  var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
+  if (t) return (t = t.call(r)).next.bind(t);
+  if (Array.isArray(r) || (t = unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) {
+    t && (r = t);
+    var o = 0;
+    return function () {
+      return o >= r.length ? {
+        done: !0
+      } : {
+        done: !1,
+        value: r[o++]
+      };
+    };
+  }
+  throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+}
+export { _createForOfIteratorHelperLoose as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/createSuper.js b/node_modules/@babel/runtime/helpers/esm/createSuper.js
new file mode 100644
index 0000000..dfabf71
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/createSuper.js
@@ -0,0 +1,16 @@
+import getPrototypeOf from "./getPrototypeOf.js";
+import isNativeReflectConstruct from "./isNativeReflectConstruct.js";
+import possibleConstructorReturn from "./possibleConstructorReturn.js";
+function _createSuper(t) {
+  var r = isNativeReflectConstruct();
+  return function () {
+    var e,
+      o = getPrototypeOf(t);
+    if (r) {
+      var s = getPrototypeOf(this).constructor;
+      e = Reflect.construct(o, arguments, s);
+    } else e = o.apply(this, arguments);
+    return possibleConstructorReturn(this, e);
+  };
+}
+export { _createSuper as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/decorate.js b/node_modules/@babel/runtime/helpers/esm/decorate.js
new file mode 100644
index 0000000..f76b6a6
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/decorate.js
@@ -0,0 +1,250 @@
+import toArray from "./toArray.js";
+import toPropertyKey from "./toPropertyKey.js";
+function _decorate(e, r, t, i) {
+  var o = _getDecoratorsApi();
+  if (i) for (var n = 0; n < i.length; n++) o = i[n](o);
+  var s = r(function (e) {
+      o.initializeInstanceElements(e, a.elements);
+    }, t),
+    a = o.decorateClass(_coalesceClassElements(s.d.map(_createElementDescriptor)), e);
+  return o.initializeClassElements(s.F, a.elements), o.runClassFinishers(s.F, a.finishers);
+}
+function _getDecoratorsApi() {
+  _getDecoratorsApi = function _getDecoratorsApi() {
+    return e;
+  };
+  var e = {
+    elementsDefinitionOrder: [["method"], ["field"]],
+    initializeInstanceElements: function initializeInstanceElements(e, r) {
+      ["method", "field"].forEach(function (t) {
+        r.forEach(function (r) {
+          r.kind === t && "own" === r.placement && this.defineClassElement(e, r);
+        }, this);
+      }, this);
+    },
+    initializeClassElements: function initializeClassElements(e, r) {
+      var t = e.prototype;
+      ["method", "field"].forEach(function (i) {
+        r.forEach(function (r) {
+          var o = r.placement;
+          if (r.kind === i && ("static" === o || "prototype" === o)) {
+            var n = "static" === o ? e : t;
+            this.defineClassElement(n, r);
+          }
+        }, this);
+      }, this);
+    },
+    defineClassElement: function defineClassElement(e, r) {
+      var t = r.descriptor;
+      if ("field" === r.kind) {
+        var i = r.initializer;
+        t = {
+          enumerable: t.enumerable,
+          writable: t.writable,
+          configurable: t.configurable,
+          value: void 0 === i ? void 0 : i.call(e)
+        };
+      }
+      Object.defineProperty(e, r.key, t);
+    },
+    decorateClass: function decorateClass(e, r) {
+      var t = [],
+        i = [],
+        o = {
+          "static": [],
+          prototype: [],
+          own: []
+        };
+      if (e.forEach(function (e) {
+        this.addElementPlacement(e, o);
+      }, this), e.forEach(function (e) {
+        if (!_hasDecorators(e)) return t.push(e);
+        var r = this.decorateElement(e, o);
+        t.push(r.element), t.push.apply(t, r.extras), i.push.apply(i, r.finishers);
+      }, this), !r) return {
+        elements: t,
+        finishers: i
+      };
+      var n = this.decorateConstructor(t, r);
+      return i.push.apply(i, n.finishers), n.finishers = i, n;
+    },
+    addElementPlacement: function addElementPlacement(e, r, t) {
+      var i = r[e.placement];
+      if (!t && -1 !== i.indexOf(e.key)) throw new TypeError("Duplicated element (" + e.key + ")");
+      i.push(e.key);
+    },
+    decorateElement: function decorateElement(e, r) {
+      for (var t = [], i = [], o = e.decorators, n = o.length - 1; n >= 0; n--) {
+        var s = r[e.placement];
+        s.splice(s.indexOf(e.key), 1);
+        var a = this.fromElementDescriptor(e),
+          l = this.toElementFinisherExtras((0, o[n])(a) || a);
+        e = l.element, this.addElementPlacement(e, r), l.finisher && i.push(l.finisher);
+        var c = l.extras;
+        if (c) {
+          for (var p = 0; p < c.length; p++) this.addElementPlacement(c[p], r);
+          t.push.apply(t, c);
+        }
+      }
+      return {
+        element: e,
+        finishers: i,
+        extras: t
+      };
+    },
+    decorateConstructor: function decorateConstructor(e, r) {
+      for (var t = [], i = r.length - 1; i >= 0; i--) {
+        var o = this.fromClassDescriptor(e),
+          n = this.toClassDescriptor((0, r[i])(o) || o);
+        if (void 0 !== n.finisher && t.push(n.finisher), void 0 !== n.elements) {
+          e = n.elements;
+          for (var s = 0; s < e.length - 1; s++) for (var a = s + 1; a < e.length; a++) if (e[s].key === e[a].key && e[s].placement === e[a].placement) throw new TypeError("Duplicated element (" + e[s].key + ")");
+        }
+      }
+      return {
+        elements: e,
+        finishers: t
+      };
+    },
+    fromElementDescriptor: function fromElementDescriptor(e) {
+      var r = {
+        kind: e.kind,
+        key: e.key,
+        placement: e.placement,
+        descriptor: e.descriptor
+      };
+      return Object.defineProperty(r, Symbol.toStringTag, {
+        value: "Descriptor",
+        configurable: !0
+      }), "field" === e.kind && (r.initializer = e.initializer), r;
+    },
+    toElementDescriptors: function toElementDescriptors(e) {
+      if (void 0 !== e) return toArray(e).map(function (e) {
+        var r = this.toElementDescriptor(e);
+        return this.disallowProperty(e, "finisher", "An element descriptor"), this.disallowProperty(e, "extras", "An element descriptor"), r;
+      }, this);
+    },
+    toElementDescriptor: function toElementDescriptor(e) {
+      var r = e.kind + "";
+      if ("method" !== r && "field" !== r) throw new TypeError('An element descriptor\'s .kind property must be either "method" or "field", but a decorator created an element descriptor with .kind "' + r + '"');
+      var t = toPropertyKey(e.key),
+        i = e.placement + "";
+      if ("static" !== i && "prototype" !== i && "own" !== i) throw new TypeError('An element descriptor\'s .placement property must be one of "static", "prototype" or "own", but a decorator created an element descriptor with .placement "' + i + '"');
+      var o = e.descriptor;
+      this.disallowProperty(e, "elements", "An element descriptor");
+      var n = {
+        kind: r,
+        key: t,
+        placement: i,
+        descriptor: Object.assign({}, o)
+      };
+      return "field" !== r ? this.disallowProperty(e, "initializer", "A method descriptor") : (this.disallowProperty(o, "get", "The property descriptor of a field descriptor"), this.disallowProperty(o, "set", "The property descriptor of a field descriptor"), this.disallowProperty(o, "value", "The property descriptor of a field descriptor"), n.initializer = e.initializer), n;
+    },
+    toElementFinisherExtras: function toElementFinisherExtras(e) {
+      return {
+        element: this.toElementDescriptor(e),
+        finisher: _optionalCallableProperty(e, "finisher"),
+        extras: this.toElementDescriptors(e.extras)
+      };
+    },
+    fromClassDescriptor: function fromClassDescriptor(e) {
+      var r = {
+        kind: "class",
+        elements: e.map(this.fromElementDescriptor, this)
+      };
+      return Object.defineProperty(r, Symbol.toStringTag, {
+        value: "Descriptor",
+        configurable: !0
+      }), r;
+    },
+    toClassDescriptor: function toClassDescriptor(e) {
+      var r = e.kind + "";
+      if ("class" !== r) throw new TypeError('A class descriptor\'s .kind property must be "class", but a decorator created a class descriptor with .kind "' + r + '"');
+      this.disallowProperty(e, "key", "A class descriptor"), this.disallowProperty(e, "placement", "A class descriptor"), this.disallowProperty(e, "descriptor", "A class descriptor"), this.disallowProperty(e, "initializer", "A class descriptor"), this.disallowProperty(e, "extras", "A class descriptor");
+      var t = _optionalCallableProperty(e, "finisher");
+      return {
+        elements: this.toElementDescriptors(e.elements),
+        finisher: t
+      };
+    },
+    runClassFinishers: function runClassFinishers(e, r) {
+      for (var t = 0; t < r.length; t++) {
+        var i = (0, r[t])(e);
+        if (void 0 !== i) {
+          if ("function" != typeof i) throw new TypeError("Finishers must return a constructor.");
+          e = i;
+        }
+      }
+      return e;
+    },
+    disallowProperty: function disallowProperty(e, r, t) {
+      if (void 0 !== e[r]) throw new TypeError(t + " can't have a ." + r + " property.");
+    }
+  };
+  return e;
+}
+function _createElementDescriptor(e) {
+  var r,
+    t = toPropertyKey(e.key);
+  "method" === e.kind ? r = {
+    value: e.value,
+    writable: !0,
+    configurable: !0,
+    enumerable: !1
+  } : "get" === e.kind ? r = {
+    get: e.value,
+    configurable: !0,
+    enumerable: !1
+  } : "set" === e.kind ? r = {
+    set: e.value,
+    configurable: !0,
+    enumerable: !1
+  } : "field" === e.kind && (r = {
+    configurable: !0,
+    writable: !0,
+    enumerable: !0
+  });
+  var i = {
+    kind: "field" === e.kind ? "field" : "method",
+    key: t,
+    placement: e["static"] ? "static" : "field" === e.kind ? "own" : "prototype",
+    descriptor: r
+  };
+  return e.decorators && (i.decorators = e.decorators), "field" === e.kind && (i.initializer = e.value), i;
+}
+function _coalesceGetterSetter(e, r) {
+  void 0 !== e.descriptor.get ? r.descriptor.get = e.descriptor.get : r.descriptor.set = e.descriptor.set;
+}
+function _coalesceClassElements(e) {
+  for (var r = [], isSameElement = function isSameElement(e) {
+      return "method" === e.kind && e.key === o.key && e.placement === o.placement;
+    }, t = 0; t < e.length; t++) {
+    var i,
+      o = e[t];
+    if ("method" === o.kind && (i = r.find(isSameElement))) {
+      if (_isDataDescriptor(o.descriptor) || _isDataDescriptor(i.descriptor)) {
+        if (_hasDecorators(o) || _hasDecorators(i)) throw new ReferenceError("Duplicated methods (" + o.key + ") can't be decorated.");
+        i.descriptor = o.descriptor;
+      } else {
+        if (_hasDecorators(o)) {
+          if (_hasDecorators(i)) throw new ReferenceError("Decorators can't be placed on different accessors with for the same property (" + o.key + ").");
+          i.decorators = o.decorators;
+        }
+        _coalesceGetterSetter(o, i);
+      }
+    } else r.push(o);
+  }
+  return r;
+}
+function _hasDecorators(e) {
+  return e.decorators && e.decorators.length;
+}
+function _isDataDescriptor(e) {
+  return void 0 !== e && !(void 0 === e.value && void 0 === e.writable);
+}
+function _optionalCallableProperty(e, r) {
+  var t = e[r];
+  if (void 0 !== t && "function" != typeof t) throw new TypeError("Expected '" + r + "' to be a function");
+  return t;
+}
+export { _decorate as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/defaults.js b/node_modules/@babel/runtime/helpers/esm/defaults.js
new file mode 100644
index 0000000..d3041a3
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/defaults.js
@@ -0,0 +1,9 @@
+function _defaults(e, r) {
+  for (var t = Object.getOwnPropertyNames(r), o = 0; o < t.length; o++) {
+    var n = t[o],
+      a = Object.getOwnPropertyDescriptor(r, n);
+    a && a.configurable && void 0 === e[n] && Object.defineProperty(e, n, a);
+  }
+  return e;
+}
+export { _defaults as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/defineAccessor.js b/node_modules/@babel/runtime/helpers/esm/defineAccessor.js
new file mode 100644
index 0000000..a8292de
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/defineAccessor.js
@@ -0,0 +1,8 @@
+function _defineAccessor(e, r, n, t) {
+  var c = {
+    configurable: !0,
+    enumerable: !0
+  };
+  return c[e] = t, Object.defineProperty(r, n, c);
+}
+export { _defineAccessor as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/defineEnumerableProperties.js b/node_modules/@babel/runtime/helpers/esm/defineEnumerableProperties.js
new file mode 100644
index 0000000..3d31d98
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/defineEnumerableProperties.js
@@ -0,0 +1,12 @@
+function _defineEnumerableProperties(e, r) {
+  for (var t in r) {
+    var n = r[t];
+    n.configurable = n.enumerable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, t, n);
+  }
+  if (Object.getOwnPropertySymbols) for (var a = Object.getOwnPropertySymbols(r), b = 0; b < a.length; b++) {
+    var i = a[b];
+    (n = r[i]).configurable = n.enumerable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, i, n);
+  }
+  return e;
+}
+export { _defineEnumerableProperties as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/defineProperty.js b/node_modules/@babel/runtime/helpers/esm/defineProperty.js
new file mode 100644
index 0000000..05ec32b
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/defineProperty.js
@@ -0,0 +1,10 @@
+import toPropertyKey from "./toPropertyKey.js";
+function _defineProperty(e, r, t) {
+  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
+    value: t,
+    enumerable: !0,
+    configurable: !0,
+    writable: !0
+  }) : e[r] = t, e;
+}
+export { _defineProperty as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/dispose.js b/node_modules/@babel/runtime/helpers/esm/dispose.js
new file mode 100644
index 0000000..a87ab20
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/dispose.js
@@ -0,0 +1,28 @@
+function dispose_SuppressedError(r, e) {
+  return "undefined" != typeof SuppressedError ? dispose_SuppressedError = SuppressedError : (dispose_SuppressedError = function dispose_SuppressedError(r, e) {
+    this.suppressed = e, this.error = r, this.stack = Error().stack;
+  }, dispose_SuppressedError.prototype = Object.create(Error.prototype, {
+    constructor: {
+      value: dispose_SuppressedError,
+      writable: !0,
+      configurable: !0
+    }
+  })), new dispose_SuppressedError(r, e);
+}
+function _dispose(r, e, s) {
+  function next() {
+    for (; r.length > 0;) try {
+      var o = r.pop(),
+        p = o.d.call(o.v);
+      if (o.a) return Promise.resolve(p).then(next, err);
+    } catch (r) {
+      return err(r);
+    }
+    if (s) throw e;
+  }
+  function err(r) {
+    return e = s ? new dispose_SuppressedError(e, r) : r, s = !0, next();
+  }
+  return next();
+}
+export { _dispose as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/extends.js b/node_modules/@babel/runtime/helpers/esm/extends.js
new file mode 100644
index 0000000..53f118c
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/extends.js
@@ -0,0 +1,10 @@
+function _extends() {
+  return _extends = Object.assign ? Object.assign.bind() : function (n) {
+    for (var e = 1; e < arguments.length; e++) {
+      var t = arguments[e];
+      for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
+    }
+    return n;
+  }, _extends.apply(null, arguments);
+}
+export { _extends as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/get.js b/node_modules/@babel/runtime/helpers/esm/get.js
new file mode 100644
index 0000000..8124bc0
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/get.js
@@ -0,0 +1,11 @@
+import superPropBase from "./superPropBase.js";
+function _get() {
+  return _get = "undefined" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) {
+    var p = superPropBase(e, t);
+    if (p) {
+      var n = Object.getOwnPropertyDescriptor(p, t);
+      return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value;
+    }
+  }, _get.apply(null, arguments);
+}
+export { _get as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js b/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js
new file mode 100644
index 0000000..9073c45
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js
@@ -0,0 +1,6 @@
+function _getPrototypeOf(t) {
+  return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {
+    return t.__proto__ || Object.getPrototypeOf(t);
+  }, _getPrototypeOf(t);
+}
+export { _getPrototypeOf as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/identity.js b/node_modules/@babel/runtime/helpers/esm/identity.js
new file mode 100644
index 0000000..6b564ac
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/identity.js
@@ -0,0 +1,4 @@
+function _identity(t) {
+  return t;
+}
+export { _identity as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/importDeferProxy.js b/node_modules/@babel/runtime/helpers/esm/importDeferProxy.js
new file mode 100644
index 0000000..6d35b52
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/importDeferProxy.js
@@ -0,0 +1,27 @@
+function _importDeferProxy(e) {
+  var t = null,
+    constValue = function constValue(e) {
+      return function () {
+        return e;
+      };
+    },
+    proxy = function proxy(r) {
+      return function (n, o, f) {
+        return null === t && (t = e()), r(t, o, f);
+      };
+    };
+  return new Proxy({}, {
+    defineProperty: constValue(!1),
+    deleteProperty: constValue(!1),
+    get: proxy(Reflect.get),
+    getOwnPropertyDescriptor: proxy(Reflect.getOwnPropertyDescriptor),
+    getPrototypeOf: constValue(null),
+    isExtensible: constValue(!1),
+    has: proxy(Reflect.has),
+    ownKeys: proxy(Reflect.ownKeys),
+    preventExtensions: constValue(!0),
+    set: constValue(!1),
+    setPrototypeOf: constValue(!1)
+  });
+}
+export { _importDeferProxy as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/inherits.js b/node_modules/@babel/runtime/helpers/esm/inherits.js
new file mode 100644
index 0000000..78f6e4e
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/inherits.js
@@ -0,0 +1,14 @@
+import setPrototypeOf from "./setPrototypeOf.js";
+function _inherits(t, e) {
+  if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
+  t.prototype = Object.create(e && e.prototype, {
+    constructor: {
+      value: t,
+      writable: !0,
+      configurable: !0
+    }
+  }), Object.defineProperty(t, "prototype", {
+    writable: !1
+  }), e && setPrototypeOf(t, e);
+}
+export { _inherits as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js b/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js
new file mode 100644
index 0000000..0bd1330
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js
@@ -0,0 +1,5 @@
+import setPrototypeOf from "./setPrototypeOf.js";
+function _inheritsLoose(t, o) {
+  t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);
+}
+export { _inheritsLoose as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/initializerDefineProperty.js b/node_modules/@babel/runtime/helpers/esm/initializerDefineProperty.js
new file mode 100644
index 0000000..68bcc2c
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/initializerDefineProperty.js
@@ -0,0 +1,9 @@
+function _initializerDefineProperty(e, i, r, l) {
+  r && Object.defineProperty(e, i, {
+    enumerable: r.enumerable,
+    configurable: r.configurable,
+    writable: r.writable,
+    value: r.initializer ? r.initializer.call(l) : void 0
+  });
+}
+export { _initializerDefineProperty as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/initializerWarningHelper.js b/node_modules/@babel/runtime/helpers/esm/initializerWarningHelper.js
new file mode 100644
index 0000000..0a658e3
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/initializerWarningHelper.js
@@ -0,0 +1,4 @@
+function _initializerWarningHelper(r, e) {
+  throw Error("Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.");
+}
+export { _initializerWarningHelper as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/instanceof.js b/node_modules/@babel/runtime/helpers/esm/instanceof.js
new file mode 100644
index 0000000..316539e
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/instanceof.js
@@ -0,0 +1,4 @@
+function _instanceof(n, e) {
+  return null != e && "undefined" != typeof Symbol && e[Symbol.hasInstance] ? !!e[Symbol.hasInstance](n) : n instanceof e;
+}
+export { _instanceof as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/interopRequireDefault.js b/node_modules/@babel/runtime/helpers/esm/interopRequireDefault.js
new file mode 100644
index 0000000..365d248
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/interopRequireDefault.js
@@ -0,0 +1,6 @@
+function _interopRequireDefault(e) {
+  return e && e.__esModule ? e : {
+    "default": e
+  };
+}
+export { _interopRequireDefault as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/interopRequireWildcard.js b/node_modules/@babel/runtime/helpers/esm/interopRequireWildcard.js
new file mode 100644
index 0000000..e190f1e
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/interopRequireWildcard.js
@@ -0,0 +1,27 @@
+import _typeof from "./typeof.js";
+function _getRequireWildcardCache(e) {
+  if ("function" != typeof WeakMap) return null;
+  var r = new WeakMap(),
+    t = new WeakMap();
+  return (_getRequireWildcardCache = function _getRequireWildcardCache(e) {
+    return e ? t : r;
+  })(e);
+}
+function _interopRequireWildcard(e, r) {
+  if (!r && e && e.__esModule) return e;
+  if (null === e || "object" != _typeof(e) && "function" != typeof e) return {
+    "default": e
+  };
+  var t = _getRequireWildcardCache(r);
+  if (t && t.has(e)) return t.get(e);
+  var n = {
+      __proto__: null
+    },
+    a = Object.defineProperty && Object.getOwnPropertyDescriptor;
+  for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
+    var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
+    i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];
+  }
+  return n["default"] = e, t && t.set(e, n), n;
+}
+export { _interopRequireWildcard as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js b/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js
new file mode 100644
index 0000000..0cfe276
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js
@@ -0,0 +1,8 @@
+function _isNativeFunction(t) {
+  try {
+    return -1 !== Function.toString.call(t).indexOf("[native code]");
+  } catch (n) {
+    return "function" == typeof t;
+  }
+}
+export { _isNativeFunction as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js b/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js
new file mode 100644
index 0000000..0eb5e39
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js
@@ -0,0 +1,9 @@
+function _isNativeReflectConstruct() {
+  try {
+    var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
+  } catch (t) {}
+  return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {
+    return !!t;
+  })();
+}
+export { _isNativeReflectConstruct as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/iterableToArray.js b/node_modules/@babel/runtime/helpers/esm/iterableToArray.js
new file mode 100644
index 0000000..b7de339
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/iterableToArray.js
@@ -0,0 +1,4 @@
+function _iterableToArray(r) {
+  if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r);
+}
+export { _iterableToArray as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js b/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js
new file mode 100644
index 0000000..473f067
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js
@@ -0,0 +1,28 @@
+function _iterableToArrayLimit(r, l) {
+  var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
+  if (null != t) {
+    var e,
+      n,
+      i,
+      u,
+      a = [],
+      f = !0,
+      o = !1;
+    try {
+      if (i = (t = t.call(r)).next, 0 === l) {
+        if (Object(t) !== t) return;
+        f = !1;
+      } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
+    } catch (r) {
+      o = !0, n = r;
+    } finally {
+      try {
+        if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
+      } finally {
+        if (o) throw n;
+      }
+    }
+    return a;
+  }
+}
+export { _iterableToArrayLimit as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/jsx.js b/node_modules/@babel/runtime/helpers/esm/jsx.js
new file mode 100644
index 0000000..a120e5b
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/jsx.js
@@ -0,0 +1,22 @@
+var REACT_ELEMENT_TYPE;
+function _createRawReactElement(e, r, E, l) {
+  REACT_ELEMENT_TYPE || (REACT_ELEMENT_TYPE = "function" == typeof Symbol && Symbol["for"] && Symbol["for"]("react.element") || 60103);
+  var o = e && e.defaultProps,
+    n = arguments.length - 3;
+  if (r || 0 === n || (r = {
+    children: void 0
+  }), 1 === n) r.children = l;else if (n > 1) {
+    for (var t = Array(n), f = 0; f < n; f++) t[f] = arguments[f + 3];
+    r.children = t;
+  }
+  if (r && o) for (var i in o) void 0 === r[i] && (r[i] = o[i]);else r || (r = o || {});
+  return {
+    $$typeof: REACT_ELEMENT_TYPE,
+    type: e,
+    key: void 0 === E ? null : "" + E,
+    ref: null,
+    props: r,
+    _owner: null
+  };
+}
+export { _createRawReactElement as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/maybeArrayLike.js b/node_modules/@babel/runtime/helpers/esm/maybeArrayLike.js
new file mode 100644
index 0000000..527c682
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/maybeArrayLike.js
@@ -0,0 +1,9 @@
+import arrayLikeToArray from "./arrayLikeToArray.js";
+function _maybeArrayLike(r, a, e) {
+  if (a && !Array.isArray(a) && "number" == typeof a.length) {
+    var y = a.length;
+    return arrayLikeToArray(a, void 0 !== e && e < y ? e : y);
+  }
+  return r(a, e);
+}
+export { _maybeArrayLike as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/newArrowCheck.js b/node_modules/@babel/runtime/helpers/esm/newArrowCheck.js
new file mode 100644
index 0000000..5f70e0d
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/newArrowCheck.js
@@ -0,0 +1,4 @@
+function _newArrowCheck(n, r) {
+  if (n !== r) throw new TypeError("Cannot instantiate an arrow function");
+}
+export { _newArrowCheck as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js b/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js
new file mode 100644
index 0000000..9050250
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js
@@ -0,0 +1,4 @@
+function _nonIterableRest() {
+  throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+}
+export { _nonIterableRest as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js b/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js
new file mode 100644
index 0000000..fb03235
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js
@@ -0,0 +1,4 @@
+function _nonIterableSpread() {
+  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+}
+export { _nonIterableSpread as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/nullishReceiverError.js b/node_modules/@babel/runtime/helpers/esm/nullishReceiverError.js
new file mode 100644
index 0000000..d8c3060
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/nullishReceiverError.js
@@ -0,0 +1,4 @@
+function _nullishReceiverError(r) {
+  throw new TypeError("Cannot set property of null or undefined.");
+}
+export { _nullishReceiverError as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js b/node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js
new file mode 100644
index 0000000..a92eac8
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js
@@ -0,0 +1,4 @@
+function _objectDestructuringEmpty(t) {
+  if (null == t) throw new TypeError("Cannot destructure " + t);
+}
+export { _objectDestructuringEmpty as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/objectSpread.js b/node_modules/@babel/runtime/helpers/esm/objectSpread.js
new file mode 100644
index 0000000..0f82f06
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/objectSpread.js
@@ -0,0 +1,14 @@
+import defineProperty from "./defineProperty.js";
+function _objectSpread(e) {
+  for (var r = 1; r < arguments.length; r++) {
+    var t = null != arguments[r] ? Object(arguments[r]) : {},
+      o = Object.keys(t);
+    "function" == typeof Object.getOwnPropertySymbols && o.push.apply(o, Object.getOwnPropertySymbols(t).filter(function (e) {
+      return Object.getOwnPropertyDescriptor(t, e).enumerable;
+    })), o.forEach(function (r) {
+      defineProperty(e, r, t[r]);
+    });
+  }
+  return e;
+}
+export { _objectSpread as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/objectSpread2.js b/node_modules/@babel/runtime/helpers/esm/objectSpread2.js
new file mode 100644
index 0000000..0035bc7
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/objectSpread2.js
@@ -0,0 +1,23 @@
+import defineProperty from "./defineProperty.js";
+function ownKeys(e, r) {
+  var t = Object.keys(e);
+  if (Object.getOwnPropertySymbols) {
+    var o = Object.getOwnPropertySymbols(e);
+    r && (o = o.filter(function (r) {
+      return Object.getOwnPropertyDescriptor(e, r).enumerable;
+    })), t.push.apply(t, o);
+  }
+  return t;
+}
+function _objectSpread2(e) {
+  for (var r = 1; r < arguments.length; r++) {
+    var t = null != arguments[r] ? arguments[r] : {};
+    r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {
+      defineProperty(e, r, t[r]);
+    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
+      Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
+    });
+  }
+  return e;
+}
+export { _objectSpread2 as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js b/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js
new file mode 100644
index 0000000..598fb9a
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js
@@ -0,0 +1,13 @@
+import objectWithoutPropertiesLoose from "./objectWithoutPropertiesLoose.js";
+function _objectWithoutProperties(e, t) {
+  if (null == e) return {};
+  var o,
+    r,
+    i = objectWithoutPropertiesLoose(e, t);
+  if (Object.getOwnPropertySymbols) {
+    var n = Object.getOwnPropertySymbols(e);
+    for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);
+  }
+  return i;
+}
+export { _objectWithoutProperties as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js b/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js
new file mode 100644
index 0000000..90f68f3
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js
@@ -0,0 +1,10 @@
+function _objectWithoutPropertiesLoose(r, e) {
+  if (null == r) return {};
+  var t = {};
+  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
+    if (-1 !== e.indexOf(n)) continue;
+    t[n] = r[n];
+  }
+  return t;
+}
+export { _objectWithoutPropertiesLoose as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/package.json b/node_modules/@babel/runtime/helpers/esm/package.json
new file mode 100644
index 0000000..aead43d
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/package.json
@@ -0,0 +1,3 @@
+{
+  "type": "module"
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js b/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js
new file mode 100644
index 0000000..d84e1e6
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js
@@ -0,0 +1,8 @@
+import _typeof from "./typeof.js";
+import assertThisInitialized from "./assertThisInitialized.js";
+function _possibleConstructorReturn(t, e) {
+  if (e && ("object" == _typeof(e) || "function" == typeof e)) return e;
+  if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined");
+  return assertThisInitialized(t);
+}
+export { _possibleConstructorReturn as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/readOnlyError.js b/node_modules/@babel/runtime/helpers/esm/readOnlyError.js
new file mode 100644
index 0000000..fcc3e33
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/readOnlyError.js
@@ -0,0 +1,4 @@
+function _readOnlyError(r) {
+  throw new TypeError('"' + r + '" is read-only');
+}
+export { _readOnlyError as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js b/node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js
new file mode 100644
index 0000000..19c78cd
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js
@@ -0,0 +1,304 @@
+import _typeof from "./typeof.js";
+function _regeneratorRuntime() {
+  "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
+  _regeneratorRuntime = function _regeneratorRuntime() {
+    return e;
+  };
+  var t,
+    e = {},
+    r = Object.prototype,
+    n = r.hasOwnProperty,
+    o = Object.defineProperty || function (t, e, r) {
+      t[e] = r.value;
+    },
+    i = "function" == typeof Symbol ? Symbol : {},
+    a = i.iterator || "@@iterator",
+    c = i.asyncIterator || "@@asyncIterator",
+    u = i.toStringTag || "@@toStringTag";
+  function define(t, e, r) {
+    return Object.defineProperty(t, e, {
+      value: r,
+      enumerable: !0,
+      configurable: !0,
+      writable: !0
+    }), t[e];
+  }
+  try {
+    define({}, "");
+  } catch (t) {
+    define = function define(t, e, r) {
+      return t[e] = r;
+    };
+  }
+  function wrap(t, e, r, n) {
+    var i = e && e.prototype instanceof Generator ? e : Generator,
+      a = Object.create(i.prototype),
+      c = new Context(n || []);
+    return o(a, "_invoke", {
+      value: makeInvokeMethod(t, r, c)
+    }), a;
+  }
+  function tryCatch(t, e, r) {
+    try {
+      return {
+        type: "normal",
+        arg: t.call(e, r)
+      };
+    } catch (t) {
+      return {
+        type: "throw",
+        arg: t
+      };
+    }
+  }
+  e.wrap = wrap;
+  var h = "suspendedStart",
+    l = "suspendedYield",
+    f = "executing",
+    s = "completed",
+    y = {};
+  function Generator() {}
+  function GeneratorFunction() {}
+  function GeneratorFunctionPrototype() {}
+  var p = {};
+  define(p, a, function () {
+    return this;
+  });
+  var d = Object.getPrototypeOf,
+    v = d && d(d(values([])));
+  v && v !== r && n.call(v, a) && (p = v);
+  var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);
+  function defineIteratorMethods(t) {
+    ["next", "throw", "return"].forEach(function (e) {
+      define(t, e, function (t) {
+        return this._invoke(e, t);
+      });
+    });
+  }
+  function AsyncIterator(t, e) {
+    function invoke(r, o, i, a) {
+      var c = tryCatch(t[r], t, o);
+      if ("throw" !== c.type) {
+        var u = c.arg,
+          h = u.value;
+        return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) {
+          invoke("next", t, i, a);
+        }, function (t) {
+          invoke("throw", t, i, a);
+        }) : e.resolve(h).then(function (t) {
+          u.value = t, i(u);
+        }, function (t) {
+          return invoke("throw", t, i, a);
+        });
+      }
+      a(c.arg);
+    }
+    var r;
+    o(this, "_invoke", {
+      value: function value(t, n) {
+        function callInvokeWithMethodAndArg() {
+          return new e(function (e, r) {
+            invoke(t, n, e, r);
+          });
+        }
+        return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
+      }
+    });
+  }
+  function makeInvokeMethod(e, r, n) {
+    var o = h;
+    return function (i, a) {
+      if (o === f) throw Error("Generator is already running");
+      if (o === s) {
+        if ("throw" === i) throw a;
+        return {
+          value: t,
+          done: !0
+        };
+      }
+      for (n.method = i, n.arg = a;;) {
+        var c = n.delegate;
+        if (c) {
+          var u = maybeInvokeDelegate(c, n);
+          if (u) {
+            if (u === y) continue;
+            return u;
+          }
+        }
+        if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) {
+          if (o === h) throw o = s, n.arg;
+          n.dispatchException(n.arg);
+        } else "return" === n.method && n.abrupt("return", n.arg);
+        o = f;
+        var p = tryCatch(e, r, n);
+        if ("normal" === p.type) {
+          if (o = n.done ? s : l, p.arg === y) continue;
+          return {
+            value: p.arg,
+            done: n.done
+          };
+        }
+        "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg);
+      }
+    };
+  }
+  function maybeInvokeDelegate(e, r) {
+    var n = r.method,
+      o = e.iterator[n];
+    if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y;
+    var i = tryCatch(o, e.iterator, r.arg);
+    if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y;
+    var a = i.arg;
+    return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y);
+  }
+  function pushTryEntry(t) {
+    var e = {
+      tryLoc: t[0]
+    };
+    1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);
+  }
+  function resetTryEntry(t) {
+    var e = t.completion || {};
+    e.type = "normal", delete e.arg, t.completion = e;
+  }
+  function Context(t) {
+    this.tryEntries = [{
+      tryLoc: "root"
+    }], t.forEach(pushTryEntry, this), this.reset(!0);
+  }
+  function values(e) {
+    if (e || "" === e) {
+      var r = e[a];
+      if (r) return r.call(e);
+      if ("function" == typeof e.next) return e;
+      if (!isNaN(e.length)) {
+        var o = -1,
+          i = function next() {
+            for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;
+            return next.value = t, next.done = !0, next;
+          };
+        return i.next = i;
+      }
+    }
+    throw new TypeError(_typeof(e) + " is not iterable");
+  }
+  return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", {
+    value: GeneratorFunctionPrototype,
+    configurable: !0
+  }), o(GeneratorFunctionPrototype, "constructor", {
+    value: GeneratorFunction,
+    configurable: !0
+  }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) {
+    var e = "function" == typeof t && t.constructor;
+    return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name));
+  }, e.mark = function (t) {
+    return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t;
+  }, e.awrap = function (t) {
+    return {
+      __await: t
+    };
+  }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {
+    return this;
+  }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {
+    void 0 === i && (i = Promise);
+    var a = new AsyncIterator(wrap(t, r, n, o), i);
+    return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {
+      return t.done ? t.value : a.next();
+    });
+  }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () {
+    return this;
+  }), define(g, "toString", function () {
+    return "[object Generator]";
+  }), e.keys = function (t) {
+    var e = Object(t),
+      r = [];
+    for (var n in e) r.push(n);
+    return r.reverse(), function next() {
+      for (; r.length;) {
+        var t = r.pop();
+        if (t in e) return next.value = t, next.done = !1, next;
+      }
+      return next.done = !0, next;
+    };
+  }, e.values = values, Context.prototype = {
+    constructor: Context,
+    reset: function reset(e) {
+      if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);
+    },
+    stop: function stop() {
+      this.done = !0;
+      var t = this.tryEntries[0].completion;
+      if ("throw" === t.type) throw t.arg;
+      return this.rval;
+    },
+    dispatchException: function dispatchException(e) {
+      if (this.done) throw e;
+      var r = this;
+      function handle(n, o) {
+        return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o;
+      }
+      for (var o = this.tryEntries.length - 1; o >= 0; --o) {
+        var i = this.tryEntries[o],
+          a = i.completion;
+        if ("root" === i.tryLoc) return handle("end");
+        if (i.tryLoc <= this.prev) {
+          var c = n.call(i, "catchLoc"),
+            u = n.call(i, "finallyLoc");
+          if (c && u) {
+            if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
+            if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
+          } else if (c) {
+            if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
+          } else {
+            if (!u) throw Error("try statement without catch or finally");
+            if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
+          }
+        }
+      }
+    },
+    abrupt: function abrupt(t, e) {
+      for (var r = this.tryEntries.length - 1; r >= 0; --r) {
+        var o = this.tryEntries[r];
+        if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) {
+          var i = o;
+          break;
+        }
+      }
+      i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);
+      var a = i ? i.completion : {};
+      return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a);
+    },
+    complete: function complete(t, e) {
+      if ("throw" === t.type) throw t.arg;
+      return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y;
+    },
+    finish: function finish(t) {
+      for (var e = this.tryEntries.length - 1; e >= 0; --e) {
+        var r = this.tryEntries[e];
+        if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;
+      }
+    },
+    "catch": function _catch(t) {
+      for (var e = this.tryEntries.length - 1; e >= 0; --e) {
+        var r = this.tryEntries[e];
+        if (r.tryLoc === t) {
+          var n = r.completion;
+          if ("throw" === n.type) {
+            var o = n.arg;
+            resetTryEntry(r);
+          }
+          return o;
+        }
+      }
+      throw Error("illegal catch attempt");
+    },
+    delegateYield: function delegateYield(e, r, n) {
+      return this.delegate = {
+        iterator: values(e),
+        resultName: r,
+        nextLoc: n
+      }, "next" === this.method && (this.arg = t), y;
+    }
+  }, e;
+}
+export { _regeneratorRuntime as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/set.js b/node_modules/@babel/runtime/helpers/esm/set.js
new file mode 100644
index 0000000..ed0a803
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/set.js
@@ -0,0 +1,22 @@
+import superPropBase from "./superPropBase.js";
+import defineProperty from "./defineProperty.js";
+function set(e, r, t, o) {
+  return set = "undefined" != typeof Reflect && Reflect.set ? Reflect.set : function (e, r, t, o) {
+    var f,
+      i = superPropBase(e, r);
+    if (i) {
+      if ((f = Object.getOwnPropertyDescriptor(i, r)).set) return f.set.call(o, t), !0;
+      if (!f.writable) return !1;
+    }
+    if (f = Object.getOwnPropertyDescriptor(o, r)) {
+      if (!f.writable) return !1;
+      f.value = t, Object.defineProperty(o, r, f);
+    } else defineProperty(o, r, t);
+    return !0;
+  }, set(e, r, t, o);
+}
+function _set(e, r, t, o, f) {
+  if (!set(e, r, t, o || e) && f) throw new TypeError("failed to set property");
+  return t;
+}
+export { _set as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/setFunctionName.js b/node_modules/@babel/runtime/helpers/esm/setFunctionName.js
new file mode 100644
index 0000000..82213ce
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/setFunctionName.js
@@ -0,0 +1,12 @@
+import _typeof from "./typeof.js";
+function setFunctionName(e, t, n) {
+  "symbol" == _typeof(t) && (t = (t = t.description) ? "[" + t + "]" : "");
+  try {
+    Object.defineProperty(e, "name", {
+      configurable: !0,
+      value: n ? n + " " + t : t
+    });
+  } catch (e) {}
+  return e;
+}
+export { setFunctionName as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js b/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js
new file mode 100644
index 0000000..c30983c
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js
@@ -0,0 +1,6 @@
+function _setPrototypeOf(t, e) {
+  return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {
+    return t.__proto__ = e, t;
+  }, _setPrototypeOf(t, e);
+}
+export { _setPrototypeOf as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/skipFirstGeneratorNext.js b/node_modules/@babel/runtime/helpers/esm/skipFirstGeneratorNext.js
new file mode 100644
index 0000000..41d5738
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/skipFirstGeneratorNext.js
@@ -0,0 +1,7 @@
+function _skipFirstGeneratorNext(t) {
+  return function () {
+    var r = t.apply(this, arguments);
+    return r.next(), r;
+  };
+}
+export { _skipFirstGeneratorNext as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/slicedToArray.js b/node_modules/@babel/runtime/helpers/esm/slicedToArray.js
new file mode 100644
index 0000000..c044c2a
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/slicedToArray.js
@@ -0,0 +1,8 @@
+import arrayWithHoles from "./arrayWithHoles.js";
+import iterableToArrayLimit from "./iterableToArrayLimit.js";
+import unsupportedIterableToArray from "./unsupportedIterableToArray.js";
+import nonIterableRest from "./nonIterableRest.js";
+function _slicedToArray(r, e) {
+  return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();
+}
+export { _slicedToArray as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/superPropBase.js b/node_modules/@babel/runtime/helpers/esm/superPropBase.js
new file mode 100644
index 0000000..a5fa386
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/superPropBase.js
@@ -0,0 +1,6 @@
+import getPrototypeOf from "./getPrototypeOf.js";
+function _superPropBase(t, o) {
+  for (; !{}.hasOwnProperty.call(t, o) && null !== (t = getPrototypeOf(t)););
+  return t;
+}
+export { _superPropBase as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/superPropGet.js b/node_modules/@babel/runtime/helpers/esm/superPropGet.js
new file mode 100644
index 0000000..b2b60a8
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/superPropGet.js
@@ -0,0 +1,9 @@
+import get from "./get.js";
+import getPrototypeOf from "./getPrototypeOf.js";
+function _superPropGet(t, o, e, r) {
+  var p = get(getPrototypeOf(1 & r ? t.prototype : t), o, e);
+  return 2 & r && "function" == typeof p ? function (t) {
+    return p.apply(e, t);
+  } : p;
+}
+export { _superPropGet as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/superPropSet.js b/node_modules/@babel/runtime/helpers/esm/superPropSet.js
new file mode 100644
index 0000000..e182f38
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/superPropSet.js
@@ -0,0 +1,6 @@
+import set from "./set.js";
+import getPrototypeOf from "./getPrototypeOf.js";
+function _superPropSet(t, e, o, r, p, f) {
+  return set(getPrototypeOf(f ? t.prototype : t), e, o, r, p);
+}
+export { _superPropSet as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js b/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js
new file mode 100644
index 0000000..3d842cd
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js
@@ -0,0 +1,8 @@
+function _taggedTemplateLiteral(e, t) {
+  return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, {
+    raw: {
+      value: Object.freeze(t)
+    }
+  }));
+}
+export { _taggedTemplateLiteral as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteralLoose.js b/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteralLoose.js
new file mode 100644
index 0000000..741aeb8
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteralLoose.js
@@ -0,0 +1,4 @@
+function _taggedTemplateLiteralLoose(e, t) {
+  return t || (t = e.slice(0)), e.raw = t, e;
+}
+export { _taggedTemplateLiteralLoose as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/tdz.js b/node_modules/@babel/runtime/helpers/esm/tdz.js
new file mode 100644
index 0000000..58df493
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/tdz.js
@@ -0,0 +1,4 @@
+function _tdzError(e) {
+  throw new ReferenceError(e + " is not defined - temporal dead zone");
+}
+export { _tdzError as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/temporalRef.js b/node_modules/@babel/runtime/helpers/esm/temporalRef.js
new file mode 100644
index 0000000..8dbf014
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/temporalRef.js
@@ -0,0 +1,6 @@
+import temporalUndefined from "./temporalUndefined.js";
+import tdz from "./tdz.js";
+function _temporalRef(r, e) {
+  return r === temporalUndefined ? tdz(e) : r;
+}
+export { _temporalRef as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/temporalUndefined.js b/node_modules/@babel/runtime/helpers/esm/temporalUndefined.js
new file mode 100644
index 0000000..2ec0b0d
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/temporalUndefined.js
@@ -0,0 +1,2 @@
+function _temporalUndefined() {}
+export { _temporalUndefined as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/toArray.js b/node_modules/@babel/runtime/helpers/esm/toArray.js
new file mode 100644
index 0000000..e5f0f52
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/toArray.js
@@ -0,0 +1,8 @@
+import arrayWithHoles from "./arrayWithHoles.js";
+import iterableToArray from "./iterableToArray.js";
+import unsupportedIterableToArray from "./unsupportedIterableToArray.js";
+import nonIterableRest from "./nonIterableRest.js";
+function _toArray(r) {
+  return arrayWithHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableRest();
+}
+export { _toArray as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js b/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js
new file mode 100644
index 0000000..f7338e4
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js
@@ -0,0 +1,8 @@
+import arrayWithoutHoles from "./arrayWithoutHoles.js";
+import iterableToArray from "./iterableToArray.js";
+import unsupportedIterableToArray from "./unsupportedIterableToArray.js";
+import nonIterableSpread from "./nonIterableSpread.js";
+function _toConsumableArray(r) {
+  return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();
+}
+export { _toConsumableArray as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/toPrimitive.js b/node_modules/@babel/runtime/helpers/esm/toPrimitive.js
new file mode 100644
index 0000000..9a3de46
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/toPrimitive.js
@@ -0,0 +1,12 @@
+import _typeof from "./typeof.js";
+function toPrimitive(t, r) {
+  if ("object" != _typeof(t) || !t) return t;
+  var e = t[Symbol.toPrimitive];
+  if (void 0 !== e) {
+    var i = e.call(t, r || "default");
+    if ("object" != _typeof(i)) return i;
+    throw new TypeError("@@toPrimitive must return a primitive value.");
+  }
+  return ("string" === r ? String : Number)(t);
+}
+export { toPrimitive as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js b/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js
new file mode 100644
index 0000000..b3274d8
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js
@@ -0,0 +1,7 @@
+import _typeof from "./typeof.js";
+import toPrimitive from "./toPrimitive.js";
+function toPropertyKey(t) {
+  var i = toPrimitive(t, "string");
+  return "symbol" == _typeof(i) ? i : i + "";
+}
+export { toPropertyKey as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/toSetter.js b/node_modules/@babel/runtime/helpers/esm/toSetter.js
new file mode 100644
index 0000000..b1dbf7a
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/toSetter.js
@@ -0,0 +1,10 @@
+function _toSetter(t, e, n) {
+  e || (e = []);
+  var r = e.length++;
+  return Object.defineProperty({}, "_", {
+    set: function set(o) {
+      e[r] = o, t.apply(n, e);
+    }
+  });
+}
+export { _toSetter as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/typeof.js b/node_modules/@babel/runtime/helpers/esm/typeof.js
new file mode 100644
index 0000000..5b0bc9b
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/typeof.js
@@ -0,0 +1,10 @@
+function _typeof(o) {
+  "@babel/helpers - typeof";
+
+  return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
+    return typeof o;
+  } : function (o) {
+    return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
+  }, _typeof(o);
+}
+export { _typeof as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js b/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js
new file mode 100644
index 0000000..33adc49
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js
@@ -0,0 +1,9 @@
+import arrayLikeToArray from "./arrayLikeToArray.js";
+function _unsupportedIterableToArray(r, a) {
+  if (r) {
+    if ("string" == typeof r) return arrayLikeToArray(r, a);
+    var t = {}.toString.call(r).slice(8, -1);
+    return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;
+  }
+}
+export { _unsupportedIterableToArray as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/using.js b/node_modules/@babel/runtime/helpers/esm/using.js
new file mode 100644
index 0000000..9bda17b
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/using.js
@@ -0,0 +1,12 @@
+function _using(o, n, e) {
+  if (null == n) return n;
+  if (Object(n) !== n) throw new TypeError("using declarations can only be used with objects, functions, null, or undefined.");
+  if (e) var r = n[Symbol.asyncDispose || Symbol["for"]("Symbol.asyncDispose")];
+  if (null == r && (r = n[Symbol.dispose || Symbol["for"]("Symbol.dispose")]), "function" != typeof r) throw new TypeError("Property [Symbol.dispose] is not a function.");
+  return o.push({
+    v: n,
+    d: r,
+    a: e
+  }), n;
+}
+export { _using as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/usingCtx.js b/node_modules/@babel/runtime/helpers/esm/usingCtx.js
new file mode 100644
index 0000000..1464379
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/usingCtx.js
@@ -0,0 +1,59 @@
+function _usingCtx() {
+  var r = "function" == typeof SuppressedError ? SuppressedError : function (r, e) {
+      var n = Error();
+      return n.name = "SuppressedError", n.error = r, n.suppressed = e, n;
+    },
+    e = {},
+    n = [];
+  function using(r, e) {
+    if (null != e) {
+      if (Object(e) !== e) throw new TypeError("using declarations can only be used with objects, functions, null, or undefined.");
+      if (r) var o = e[Symbol.asyncDispose || Symbol["for"]("Symbol.asyncDispose")];
+      if (void 0 === o && (o = e[Symbol.dispose || Symbol["for"]("Symbol.dispose")], r)) var t = o;
+      if ("function" != typeof o) throw new TypeError("Object is not disposable.");
+      t && (o = function o() {
+        try {
+          t.call(e);
+        } catch (r) {
+          return Promise.reject(r);
+        }
+      }), n.push({
+        v: e,
+        d: o,
+        a: r
+      });
+    } else r && n.push({
+      d: e,
+      a: r
+    });
+    return e;
+  }
+  return {
+    e: e,
+    u: using.bind(null, !1),
+    a: using.bind(null, !0),
+    d: function d() {
+      var o,
+        t = this.e,
+        s = 0;
+      function next() {
+        for (; o = n.pop();) try {
+          if (!o.a && 1 === s) return s = 0, n.push(o), Promise.resolve().then(next);
+          if (o.d) {
+            var r = o.d.call(o.v);
+            if (o.a) return s |= 2, Promise.resolve(r).then(next, err);
+          } else s |= 1;
+        } catch (r) {
+          return err(r);
+        }
+        if (1 === s) return t !== e ? Promise.reject(t) : Promise.resolve();
+        if (t !== e) throw t;
+      }
+      function err(n) {
+        return t = t !== e ? new r(n, t) : n, next();
+      }
+      return next();
+    }
+  };
+}
+export { _usingCtx as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/wrapAsyncGenerator.js b/node_modules/@babel/runtime/helpers/esm/wrapAsyncGenerator.js
new file mode 100644
index 0000000..ffeea5d
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/wrapAsyncGenerator.js
@@ -0,0 +1,69 @@
+import OverloadYield from "./OverloadYield.js";
+function _wrapAsyncGenerator(e) {
+  return function () {
+    return new AsyncGenerator(e.apply(this, arguments));
+  };
+}
+function AsyncGenerator(e) {
+  var r, t;
+  function resume(r, t) {
+    try {
+      var n = e[r](t),
+        o = n.value,
+        u = o instanceof OverloadYield;
+      Promise.resolve(u ? o.v : o).then(function (t) {
+        if (u) {
+          var i = "return" === r ? "return" : "next";
+          if (!o.k || t.done) return resume(i, t);
+          t = e[i](t).value;
+        }
+        settle(n.done ? "return" : "normal", t);
+      }, function (e) {
+        resume("throw", e);
+      });
+    } catch (e) {
+      settle("throw", e);
+    }
+  }
+  function settle(e, n) {
+    switch (e) {
+      case "return":
+        r.resolve({
+          value: n,
+          done: !0
+        });
+        break;
+      case "throw":
+        r.reject(n);
+        break;
+      default:
+        r.resolve({
+          value: n,
+          done: !1
+        });
+    }
+    (r = r.next) ? resume(r.key, r.arg) : t = null;
+  }
+  this._invoke = function (e, n) {
+    return new Promise(function (o, u) {
+      var i = {
+        key: e,
+        arg: n,
+        resolve: o,
+        reject: u,
+        next: null
+      };
+      t ? t = t.next = i : (r = t = i, resume(e, n));
+    });
+  }, "function" != typeof e["return"] && (this["return"] = void 0);
+}
+AsyncGenerator.prototype["function" == typeof Symbol && Symbol.asyncIterator || "@@asyncIterator"] = function () {
+  return this;
+}, AsyncGenerator.prototype.next = function (e) {
+  return this._invoke("next", e);
+}, AsyncGenerator.prototype["throw"] = function (e) {
+  return this._invoke("throw", e);
+}, AsyncGenerator.prototype["return"] = function (e) {
+  return this._invoke("return", e);
+};
+export { _wrapAsyncGenerator as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js b/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js
new file mode 100644
index 0000000..15bf78f
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js
@@ -0,0 +1,27 @@
+import getPrototypeOf from "./getPrototypeOf.js";
+import setPrototypeOf from "./setPrototypeOf.js";
+import isNativeFunction from "./isNativeFunction.js";
+import construct from "./construct.js";
+function _wrapNativeSuper(t) {
+  var r = "function" == typeof Map ? new Map() : void 0;
+  return _wrapNativeSuper = function _wrapNativeSuper(t) {
+    if (null === t || !isNativeFunction(t)) return t;
+    if ("function" != typeof t) throw new TypeError("Super expression must either be null or a function");
+    if (void 0 !== r) {
+      if (r.has(t)) return r.get(t);
+      r.set(t, Wrapper);
+    }
+    function Wrapper() {
+      return construct(t, arguments, getPrototypeOf(this).constructor);
+    }
+    return Wrapper.prototype = Object.create(t.prototype, {
+      constructor: {
+        value: Wrapper,
+        enumerable: !1,
+        writable: !0,
+        configurable: !0
+      }
+    }), setPrototypeOf(Wrapper, t);
+  }, _wrapNativeSuper(t);
+}
+export { _wrapNativeSuper as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/wrapRegExp.js b/node_modules/@babel/runtime/helpers/esm/wrapRegExp.js
new file mode 100644
index 0000000..ecf821e
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/wrapRegExp.js
@@ -0,0 +1,51 @@
+import _typeof from "./typeof.js";
+import setPrototypeOf from "./setPrototypeOf.js";
+import inherits from "./inherits.js";
+function _wrapRegExp() {
+  _wrapRegExp = function _wrapRegExp(e, r) {
+    return new BabelRegExp(e, void 0, r);
+  };
+  var e = RegExp.prototype,
+    r = new WeakMap();
+  function BabelRegExp(e, t, p) {
+    var o = RegExp(e, t);
+    return r.set(o, p || r.get(e)), setPrototypeOf(o, BabelRegExp.prototype);
+  }
+  function buildGroups(e, t) {
+    var p = r.get(t);
+    return Object.keys(p).reduce(function (r, t) {
+      var o = p[t];
+      if ("number" == typeof o) r[t] = e[o];else {
+        for (var i = 0; void 0 === e[o[i]] && i + 1 < o.length;) i++;
+        r[t] = e[o[i]];
+      }
+      return r;
+    }, Object.create(null));
+  }
+  return inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (r) {
+    var t = e.exec.call(this, r);
+    if (t) {
+      t.groups = buildGroups(t, this);
+      var p = t.indices;
+      p && (p.groups = buildGroups(p, this));
+    }
+    return t;
+  }, BabelRegExp.prototype[Symbol.replace] = function (t, p) {
+    if ("string" == typeof p) {
+      var o = r.get(this);
+      return e[Symbol.replace].call(this, t, p.replace(/\$<([^>]+)>/g, function (e, r) {
+        var t = o[r];
+        return "$" + (Array.isArray(t) ? t.join("$") : t);
+      }));
+    }
+    if ("function" == typeof p) {
+      var i = this;
+      return e[Symbol.replace].call(this, t, function () {
+        var e = arguments;
+        return "object" != _typeof(e[e.length - 1]) && (e = [].slice.call(e)).push(buildGroups(e, i)), p.apply(this, e);
+      });
+    }
+    return e[Symbol.replace].call(this, t, p);
+  }, _wrapRegExp.apply(this, arguments);
+}
+export { _wrapRegExp as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/writeOnlyError.js b/node_modules/@babel/runtime/helpers/esm/writeOnlyError.js
new file mode 100644
index 0000000..250c286
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/writeOnlyError.js
@@ -0,0 +1,4 @@
+function _writeOnlyError(r) {
+  throw new TypeError('"' + r + '" is write-only');
+}
+export { _writeOnlyError as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/extends.js b/node_modules/@babel/runtime/helpers/extends.js
new file mode 100644
index 0000000..eee4a1f
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/extends.js
@@ -0,0 +1,10 @@
+function _extends() {
+  return module.exports = _extends = Object.assign ? Object.assign.bind() : function (n) {
+    for (var e = 1; e < arguments.length; e++) {
+      var t = arguments[e];
+      for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
+    }
+    return n;
+  }, module.exports.__esModule = true, module.exports["default"] = module.exports, _extends.apply(null, arguments);
+}
+module.exports = _extends, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/get.js b/node_modules/@babel/runtime/helpers/get.js
new file mode 100644
index 0000000..15428de
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/get.js
@@ -0,0 +1,11 @@
+var superPropBase = require("./superPropBase.js");
+function _get() {
+  return module.exports = _get = "undefined" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) {
+    var p = superPropBase(e, t);
+    if (p) {
+      var n = Object.getOwnPropertyDescriptor(p, t);
+      return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value;
+    }
+  }, module.exports.__esModule = true, module.exports["default"] = module.exports, _get.apply(null, arguments);
+}
+module.exports = _get, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/getPrototypeOf.js b/node_modules/@babel/runtime/helpers/getPrototypeOf.js
new file mode 100644
index 0000000..9070748
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/getPrototypeOf.js
@@ -0,0 +1,6 @@
+function _getPrototypeOf(t) {
+  return module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {
+    return t.__proto__ || Object.getPrototypeOf(t);
+  }, module.exports.__esModule = true, module.exports["default"] = module.exports, _getPrototypeOf(t);
+}
+module.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/identity.js b/node_modules/@babel/runtime/helpers/identity.js
new file mode 100644
index 0000000..54de5b5
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/identity.js
@@ -0,0 +1,4 @@
+function _identity(t) {
+  return t;
+}
+module.exports = _identity, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/importDeferProxy.js b/node_modules/@babel/runtime/helpers/importDeferProxy.js
new file mode 100644
index 0000000..cffaae6
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/importDeferProxy.js
@@ -0,0 +1,27 @@
+function _importDeferProxy(e) {
+  var t = null,
+    constValue = function constValue(e) {
+      return function () {
+        return e;
+      };
+    },
+    proxy = function proxy(r) {
+      return function (n, o, f) {
+        return null === t && (t = e()), r(t, o, f);
+      };
+    };
+  return new Proxy({}, {
+    defineProperty: constValue(!1),
+    deleteProperty: constValue(!1),
+    get: proxy(Reflect.get),
+    getOwnPropertyDescriptor: proxy(Reflect.getOwnPropertyDescriptor),
+    getPrototypeOf: constValue(null),
+    isExtensible: constValue(!1),
+    has: proxy(Reflect.has),
+    ownKeys: proxy(Reflect.ownKeys),
+    preventExtensions: constValue(!0),
+    set: constValue(!1),
+    setPrototypeOf: constValue(!1)
+  });
+}
+module.exports = _importDeferProxy, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/inherits.js b/node_modules/@babel/runtime/helpers/inherits.js
new file mode 100644
index 0000000..715a78e
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/inherits.js
@@ -0,0 +1,14 @@
+var setPrototypeOf = require("./setPrototypeOf.js");
+function _inherits(t, e) {
+  if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
+  t.prototype = Object.create(e && e.prototype, {
+    constructor: {
+      value: t,
+      writable: !0,
+      configurable: !0
+    }
+  }), Object.defineProperty(t, "prototype", {
+    writable: !1
+  }), e && setPrototypeOf(t, e);
+}
+module.exports = _inherits, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/inheritsLoose.js b/node_modules/@babel/runtime/helpers/inheritsLoose.js
new file mode 100644
index 0000000..a27baf0
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/inheritsLoose.js
@@ -0,0 +1,5 @@
+var setPrototypeOf = require("./setPrototypeOf.js");
+function _inheritsLoose(t, o) {
+  t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);
+}
+module.exports = _inheritsLoose, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/initializerDefineProperty.js b/node_modules/@babel/runtime/helpers/initializerDefineProperty.js
new file mode 100644
index 0000000..f9fa317
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/initializerDefineProperty.js
@@ -0,0 +1,9 @@
+function _initializerDefineProperty(e, i, r, l) {
+  r && Object.defineProperty(e, i, {
+    enumerable: r.enumerable,
+    configurable: r.configurable,
+    writable: r.writable,
+    value: r.initializer ? r.initializer.call(l) : void 0
+  });
+}
+module.exports = _initializerDefineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/initializerWarningHelper.js b/node_modules/@babel/runtime/helpers/initializerWarningHelper.js
new file mode 100644
index 0000000..e14ce59
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/initializerWarningHelper.js
@@ -0,0 +1,4 @@
+function _initializerWarningHelper(r, e) {
+  throw Error("Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.");
+}
+module.exports = _initializerWarningHelper, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/instanceof.js b/node_modules/@babel/runtime/helpers/instanceof.js
new file mode 100644
index 0000000..9952301
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/instanceof.js
@@ -0,0 +1,4 @@
+function _instanceof(n, e) {
+  return null != e && "undefined" != typeof Symbol && e[Symbol.hasInstance] ? !!e[Symbol.hasInstance](n) : n instanceof e;
+}
+module.exports = _instanceof, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/interopRequireDefault.js b/node_modules/@babel/runtime/helpers/interopRequireDefault.js
new file mode 100644
index 0000000..6944715
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/interopRequireDefault.js
@@ -0,0 +1,6 @@
+function _interopRequireDefault(e) {
+  return e && e.__esModule ? e : {
+    "default": e
+  };
+}
+module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/interopRequireWildcard.js b/node_modules/@babel/runtime/helpers/interopRequireWildcard.js
new file mode 100644
index 0000000..41411cc
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/interopRequireWildcard.js
@@ -0,0 +1,27 @@
+var _typeof = require("./typeof.js")["default"];
+function _getRequireWildcardCache(e) {
+  if ("function" != typeof WeakMap) return null;
+  var r = new WeakMap(),
+    t = new WeakMap();
+  return (_getRequireWildcardCache = function _getRequireWildcardCache(e) {
+    return e ? t : r;
+  })(e);
+}
+function _interopRequireWildcard(e, r) {
+  if (!r && e && e.__esModule) return e;
+  if (null === e || "object" != _typeof(e) && "function" != typeof e) return {
+    "default": e
+  };
+  var t = _getRequireWildcardCache(r);
+  if (t && t.has(e)) return t.get(e);
+  var n = {
+      __proto__: null
+    },
+    a = Object.defineProperty && Object.getOwnPropertyDescriptor;
+  for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
+    var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
+    i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];
+  }
+  return n["default"] = e, t && t.set(e, n), n;
+}
+module.exports = _interopRequireWildcard, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/isNativeFunction.js b/node_modules/@babel/runtime/helpers/isNativeFunction.js
new file mode 100644
index 0000000..f0eb49e
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/isNativeFunction.js
@@ -0,0 +1,8 @@
+function _isNativeFunction(t) {
+  try {
+    return -1 !== Function.toString.call(t).indexOf("[native code]");
+  } catch (n) {
+    return "function" == typeof t;
+  }
+}
+module.exports = _isNativeFunction, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js b/node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js
new file mode 100644
index 0000000..b677e10
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js
@@ -0,0 +1,9 @@
+function _isNativeReflectConstruct() {
+  try {
+    var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
+  } catch (t) {}
+  return (module.exports = _isNativeReflectConstruct = function _isNativeReflectConstruct() {
+    return !!t;
+  }, module.exports.__esModule = true, module.exports["default"] = module.exports)();
+}
+module.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/iterableToArray.js b/node_modules/@babel/runtime/helpers/iterableToArray.js
new file mode 100644
index 0000000..c839a32
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/iterableToArray.js
@@ -0,0 +1,4 @@
+function _iterableToArray(r) {
+  if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r);
+}
+module.exports = _iterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js b/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js
new file mode 100644
index 0000000..2671778
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js
@@ -0,0 +1,28 @@
+function _iterableToArrayLimit(r, l) {
+  var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
+  if (null != t) {
+    var e,
+      n,
+      i,
+      u,
+      a = [],
+      f = !0,
+      o = !1;
+    try {
+      if (i = (t = t.call(r)).next, 0 === l) {
+        if (Object(t) !== t) return;
+        f = !1;
+      } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
+    } catch (r) {
+      o = !0, n = r;
+    } finally {
+      try {
+        if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
+      } finally {
+        if (o) throw n;
+      }
+    }
+    return a;
+  }
+}
+module.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/jsx.js b/node_modules/@babel/runtime/helpers/jsx.js
new file mode 100644
index 0000000..3415eea
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/jsx.js
@@ -0,0 +1,22 @@
+var REACT_ELEMENT_TYPE;
+function _createRawReactElement(e, r, E, l) {
+  REACT_ELEMENT_TYPE || (REACT_ELEMENT_TYPE = "function" == typeof Symbol && Symbol["for"] && Symbol["for"]("react.element") || 60103);
+  var o = e && e.defaultProps,
+    n = arguments.length - 3;
+  if (r || 0 === n || (r = {
+    children: void 0
+  }), 1 === n) r.children = l;else if (n > 1) {
+    for (var t = Array(n), f = 0; f < n; f++) t[f] = arguments[f + 3];
+    r.children = t;
+  }
+  if (r && o) for (var i in o) void 0 === r[i] && (r[i] = o[i]);else r || (r = o || {});
+  return {
+    $$typeof: REACT_ELEMENT_TYPE,
+    type: e,
+    key: void 0 === E ? null : "" + E,
+    ref: null,
+    props: r,
+    _owner: null
+  };
+}
+module.exports = _createRawReactElement, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/maybeArrayLike.js b/node_modules/@babel/runtime/helpers/maybeArrayLike.js
new file mode 100644
index 0000000..9873cc7
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/maybeArrayLike.js
@@ -0,0 +1,9 @@
+var arrayLikeToArray = require("./arrayLikeToArray.js");
+function _maybeArrayLike(r, a, e) {
+  if (a && !Array.isArray(a) && "number" == typeof a.length) {
+    var y = a.length;
+    return arrayLikeToArray(a, void 0 !== e && e < y ? e : y);
+  }
+  return r(a, e);
+}
+module.exports = _maybeArrayLike, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/newArrowCheck.js b/node_modules/@babel/runtime/helpers/newArrowCheck.js
new file mode 100644
index 0000000..8e74d99
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/newArrowCheck.js
@@ -0,0 +1,4 @@
+function _newArrowCheck(n, r) {
+  if (n !== r) throw new TypeError("Cannot instantiate an arrow function");
+}
+module.exports = _newArrowCheck, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/nonIterableRest.js b/node_modules/@babel/runtime/helpers/nonIterableRest.js
new file mode 100644
index 0000000..95265ba
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/nonIterableRest.js
@@ -0,0 +1,4 @@
+function _nonIterableRest() {
+  throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+}
+module.exports = _nonIterableRest, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/nonIterableSpread.js b/node_modules/@babel/runtime/helpers/nonIterableSpread.js
new file mode 100644
index 0000000..3fcf23f
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/nonIterableSpread.js
@@ -0,0 +1,4 @@
+function _nonIterableSpread() {
+  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+}
+module.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/nullishReceiverError.js b/node_modules/@babel/runtime/helpers/nullishReceiverError.js
new file mode 100644
index 0000000..970e023
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/nullishReceiverError.js
@@ -0,0 +1,4 @@
+function _nullishReceiverError(r) {
+  throw new TypeError("Cannot set property of null or undefined.");
+}
+module.exports = _nullishReceiverError, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js b/node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js
new file mode 100644
index 0000000..9f62a1b
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js
@@ -0,0 +1,4 @@
+function _objectDestructuringEmpty(t) {
+  if (null == t) throw new TypeError("Cannot destructure " + t);
+}
+module.exports = _objectDestructuringEmpty, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/objectSpread.js b/node_modules/@babel/runtime/helpers/objectSpread.js
new file mode 100644
index 0000000..a367643
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/objectSpread.js
@@ -0,0 +1,14 @@
+var defineProperty = require("./defineProperty.js");
+function _objectSpread(e) {
+  for (var r = 1; r < arguments.length; r++) {
+    var t = null != arguments[r] ? Object(arguments[r]) : {},
+      o = Object.keys(t);
+    "function" == typeof Object.getOwnPropertySymbols && o.push.apply(o, Object.getOwnPropertySymbols(t).filter(function (e) {
+      return Object.getOwnPropertyDescriptor(t, e).enumerable;
+    })), o.forEach(function (r) {
+      defineProperty(e, r, t[r]);
+    });
+  }
+  return e;
+}
+module.exports = _objectSpread, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/objectSpread2.js b/node_modules/@babel/runtime/helpers/objectSpread2.js
new file mode 100644
index 0000000..4f3b9fa
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/objectSpread2.js
@@ -0,0 +1,23 @@
+var defineProperty = require("./defineProperty.js");
+function ownKeys(e, r) {
+  var t = Object.keys(e);
+  if (Object.getOwnPropertySymbols) {
+    var o = Object.getOwnPropertySymbols(e);
+    r && (o = o.filter(function (r) {
+      return Object.getOwnPropertyDescriptor(e, r).enumerable;
+    })), t.push.apply(t, o);
+  }
+  return t;
+}
+function _objectSpread2(e) {
+  for (var r = 1; r < arguments.length; r++) {
+    var t = null != arguments[r] ? arguments[r] : {};
+    r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {
+      defineProperty(e, r, t[r]);
+    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
+      Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
+    });
+  }
+  return e;
+}
+module.exports = _objectSpread2, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/objectWithoutProperties.js b/node_modules/@babel/runtime/helpers/objectWithoutProperties.js
new file mode 100644
index 0000000..3a40f9e
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/objectWithoutProperties.js
@@ -0,0 +1,13 @@
+var objectWithoutPropertiesLoose = require("./objectWithoutPropertiesLoose.js");
+function _objectWithoutProperties(e, t) {
+  if (null == e) return {};
+  var o,
+    r,
+    i = objectWithoutPropertiesLoose(e, t);
+  if (Object.getOwnPropertySymbols) {
+    var n = Object.getOwnPropertySymbols(e);
+    for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);
+  }
+  return i;
+}
+module.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js b/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js
new file mode 100644
index 0000000..c243acd
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js
@@ -0,0 +1,10 @@
+function _objectWithoutPropertiesLoose(r, e) {
+  if (null == r) return {};
+  var t = {};
+  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
+    if (-1 !== e.indexOf(n)) continue;
+    t[n] = r[n];
+  }
+  return t;
+}
+module.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js b/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js
new file mode 100644
index 0000000..06e6e6d
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js
@@ -0,0 +1,8 @@
+var _typeof = require("./typeof.js")["default"];
+var assertThisInitialized = require("./assertThisInitialized.js");
+function _possibleConstructorReturn(t, e) {
+  if (e && ("object" == _typeof(e) || "function" == typeof e)) return e;
+  if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined");
+  return assertThisInitialized(t);
+}
+module.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/readOnlyError.js b/node_modules/@babel/runtime/helpers/readOnlyError.js
new file mode 100644
index 0000000..1bf3e09
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/readOnlyError.js
@@ -0,0 +1,4 @@
+function _readOnlyError(r) {
+  throw new TypeError('"' + r + '" is read-only');
+}
+module.exports = _readOnlyError, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/regeneratorRuntime.js b/node_modules/@babel/runtime/helpers/regeneratorRuntime.js
new file mode 100644
index 0000000..f33e494
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/regeneratorRuntime.js
@@ -0,0 +1,304 @@
+var _typeof = require("./typeof.js")["default"];
+function _regeneratorRuntime() {
+  "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
+  module.exports = _regeneratorRuntime = function _regeneratorRuntime() {
+    return e;
+  }, module.exports.__esModule = true, module.exports["default"] = module.exports;
+  var t,
+    e = {},
+    r = Object.prototype,
+    n = r.hasOwnProperty,
+    o = Object.defineProperty || function (t, e, r) {
+      t[e] = r.value;
+    },
+    i = "function" == typeof Symbol ? Symbol : {},
+    a = i.iterator || "@@iterator",
+    c = i.asyncIterator || "@@asyncIterator",
+    u = i.toStringTag || "@@toStringTag";
+  function define(t, e, r) {
+    return Object.defineProperty(t, e, {
+      value: r,
+      enumerable: !0,
+      configurable: !0,
+      writable: !0
+    }), t[e];
+  }
+  try {
+    define({}, "");
+  } catch (t) {
+    define = function define(t, e, r) {
+      return t[e] = r;
+    };
+  }
+  function wrap(t, e, r, n) {
+    var i = e && e.prototype instanceof Generator ? e : Generator,
+      a = Object.create(i.prototype),
+      c = new Context(n || []);
+    return o(a, "_invoke", {
+      value: makeInvokeMethod(t, r, c)
+    }), a;
+  }
+  function tryCatch(t, e, r) {
+    try {
+      return {
+        type: "normal",
+        arg: t.call(e, r)
+      };
+    } catch (t) {
+      return {
+        type: "throw",
+        arg: t
+      };
+    }
+  }
+  e.wrap = wrap;
+  var h = "suspendedStart",
+    l = "suspendedYield",
+    f = "executing",
+    s = "completed",
+    y = {};
+  function Generator() {}
+  function GeneratorFunction() {}
+  function GeneratorFunctionPrototype() {}
+  var p = {};
+  define(p, a, function () {
+    return this;
+  });
+  var d = Object.getPrototypeOf,
+    v = d && d(d(values([])));
+  v && v !== r && n.call(v, a) && (p = v);
+  var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);
+  function defineIteratorMethods(t) {
+    ["next", "throw", "return"].forEach(function (e) {
+      define(t, e, function (t) {
+        return this._invoke(e, t);
+      });
+    });
+  }
+  function AsyncIterator(t, e) {
+    function invoke(r, o, i, a) {
+      var c = tryCatch(t[r], t, o);
+      if ("throw" !== c.type) {
+        var u = c.arg,
+          h = u.value;
+        return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) {
+          invoke("next", t, i, a);
+        }, function (t) {
+          invoke("throw", t, i, a);
+        }) : e.resolve(h).then(function (t) {
+          u.value = t, i(u);
+        }, function (t) {
+          return invoke("throw", t, i, a);
+        });
+      }
+      a(c.arg);
+    }
+    var r;
+    o(this, "_invoke", {
+      value: function value(t, n) {
+        function callInvokeWithMethodAndArg() {
+          return new e(function (e, r) {
+            invoke(t, n, e, r);
+          });
+        }
+        return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
+      }
+    });
+  }
+  function makeInvokeMethod(e, r, n) {
+    var o = h;
+    return function (i, a) {
+      if (o === f) throw Error("Generator is already running");
+      if (o === s) {
+        if ("throw" === i) throw a;
+        return {
+          value: t,
+          done: !0
+        };
+      }
+      for (n.method = i, n.arg = a;;) {
+        var c = n.delegate;
+        if (c) {
+          var u = maybeInvokeDelegate(c, n);
+          if (u) {
+            if (u === y) continue;
+            return u;
+          }
+        }
+        if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) {
+          if (o === h) throw o = s, n.arg;
+          n.dispatchException(n.arg);
+        } else "return" === n.method && n.abrupt("return", n.arg);
+        o = f;
+        var p = tryCatch(e, r, n);
+        if ("normal" === p.type) {
+          if (o = n.done ? s : l, p.arg === y) continue;
+          return {
+            value: p.arg,
+            done: n.done
+          };
+        }
+        "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg);
+      }
+    };
+  }
+  function maybeInvokeDelegate(e, r) {
+    var n = r.method,
+      o = e.iterator[n];
+    if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y;
+    var i = tryCatch(o, e.iterator, r.arg);
+    if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y;
+    var a = i.arg;
+    return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y);
+  }
+  function pushTryEntry(t) {
+    var e = {
+      tryLoc: t[0]
+    };
+    1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);
+  }
+  function resetTryEntry(t) {
+    var e = t.completion || {};
+    e.type = "normal", delete e.arg, t.completion = e;
+  }
+  function Context(t) {
+    this.tryEntries = [{
+      tryLoc: "root"
+    }], t.forEach(pushTryEntry, this), this.reset(!0);
+  }
+  function values(e) {
+    if (e || "" === e) {
+      var r = e[a];
+      if (r) return r.call(e);
+      if ("function" == typeof e.next) return e;
+      if (!isNaN(e.length)) {
+        var o = -1,
+          i = function next() {
+            for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;
+            return next.value = t, next.done = !0, next;
+          };
+        return i.next = i;
+      }
+    }
+    throw new TypeError(_typeof(e) + " is not iterable");
+  }
+  return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", {
+    value: GeneratorFunctionPrototype,
+    configurable: !0
+  }), o(GeneratorFunctionPrototype, "constructor", {
+    value: GeneratorFunction,
+    configurable: !0
+  }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) {
+    var e = "function" == typeof t && t.constructor;
+    return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name));
+  }, e.mark = function (t) {
+    return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t;
+  }, e.awrap = function (t) {
+    return {
+      __await: t
+    };
+  }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {
+    return this;
+  }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {
+    void 0 === i && (i = Promise);
+    var a = new AsyncIterator(wrap(t, r, n, o), i);
+    return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {
+      return t.done ? t.value : a.next();
+    });
+  }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () {
+    return this;
+  }), define(g, "toString", function () {
+    return "[object Generator]";
+  }), e.keys = function (t) {
+    var e = Object(t),
+      r = [];
+    for (var n in e) r.push(n);
+    return r.reverse(), function next() {
+      for (; r.length;) {
+        var t = r.pop();
+        if (t in e) return next.value = t, next.done = !1, next;
+      }
+      return next.done = !0, next;
+    };
+  }, e.values = values, Context.prototype = {
+    constructor: Context,
+    reset: function reset(e) {
+      if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);
+    },
+    stop: function stop() {
+      this.done = !0;
+      var t = this.tryEntries[0].completion;
+      if ("throw" === t.type) throw t.arg;
+      return this.rval;
+    },
+    dispatchException: function dispatchException(e) {
+      if (this.done) throw e;
+      var r = this;
+      function handle(n, o) {
+        return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o;
+      }
+      for (var o = this.tryEntries.length - 1; o >= 0; --o) {
+        var i = this.tryEntries[o],
+          a = i.completion;
+        if ("root" === i.tryLoc) return handle("end");
+        if (i.tryLoc <= this.prev) {
+          var c = n.call(i, "catchLoc"),
+            u = n.call(i, "finallyLoc");
+          if (c && u) {
+            if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
+            if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
+          } else if (c) {
+            if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
+          } else {
+            if (!u) throw Error("try statement without catch or finally");
+            if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
+          }
+        }
+      }
+    },
+    abrupt: function abrupt(t, e) {
+      for (var r = this.tryEntries.length - 1; r >= 0; --r) {
+        var o = this.tryEntries[r];
+        if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) {
+          var i = o;
+          break;
+        }
+      }
+      i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);
+      var a = i ? i.completion : {};
+      return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a);
+    },
+    complete: function complete(t, e) {
+      if ("throw" === t.type) throw t.arg;
+      return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y;
+    },
+    finish: function finish(t) {
+      for (var e = this.tryEntries.length - 1; e >= 0; --e) {
+        var r = this.tryEntries[e];
+        if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;
+      }
+    },
+    "catch": function _catch(t) {
+      for (var e = this.tryEntries.length - 1; e >= 0; --e) {
+        var r = this.tryEntries[e];
+        if (r.tryLoc === t) {
+          var n = r.completion;
+          if ("throw" === n.type) {
+            var o = n.arg;
+            resetTryEntry(r);
+          }
+          return o;
+        }
+      }
+      throw Error("illegal catch attempt");
+    },
+    delegateYield: function delegateYield(e, r, n) {
+      return this.delegate = {
+        iterator: values(e),
+        resultName: r,
+        nextLoc: n
+      }, "next" === this.method && (this.arg = t), y;
+    }
+  }, e;
+}
+module.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/set.js b/node_modules/@babel/runtime/helpers/set.js
new file mode 100644
index 0000000..6421470
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/set.js
@@ -0,0 +1,22 @@
+var superPropBase = require("./superPropBase.js");
+var defineProperty = require("./defineProperty.js");
+function set(e, r, t, o) {
+  return set = "undefined" != typeof Reflect && Reflect.set ? Reflect.set : function (e, r, t, o) {
+    var f,
+      i = superPropBase(e, r);
+    if (i) {
+      if ((f = Object.getOwnPropertyDescriptor(i, r)).set) return f.set.call(o, t), !0;
+      if (!f.writable) return !1;
+    }
+    if (f = Object.getOwnPropertyDescriptor(o, r)) {
+      if (!f.writable) return !1;
+      f.value = t, Object.defineProperty(o, r, f);
+    } else defineProperty(o, r, t);
+    return !0;
+  }, set(e, r, t, o);
+}
+function _set(e, r, t, o, f) {
+  if (!set(e, r, t, o || e) && f) throw new TypeError("failed to set property");
+  return t;
+}
+module.exports = _set, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/setFunctionName.js b/node_modules/@babel/runtime/helpers/setFunctionName.js
new file mode 100644
index 0000000..9664076
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/setFunctionName.js
@@ -0,0 +1,12 @@
+var _typeof = require("./typeof.js")["default"];
+function setFunctionName(e, t, n) {
+  "symbol" == _typeof(t) && (t = (t = t.description) ? "[" + t + "]" : "");
+  try {
+    Object.defineProperty(e, "name", {
+      configurable: !0,
+      value: n ? n + " " + t : t
+    });
+  } catch (e) {}
+  return e;
+}
+module.exports = setFunctionName, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/setPrototypeOf.js b/node_modules/@babel/runtime/helpers/setPrototypeOf.js
new file mode 100644
index 0000000..7d991ff
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/setPrototypeOf.js
@@ -0,0 +1,6 @@
+function _setPrototypeOf(t, e) {
+  return module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {
+    return t.__proto__ = e, t;
+  }, module.exports.__esModule = true, module.exports["default"] = module.exports, _setPrototypeOf(t, e);
+}
+module.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/skipFirstGeneratorNext.js b/node_modules/@babel/runtime/helpers/skipFirstGeneratorNext.js
new file mode 100644
index 0000000..2aed548
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/skipFirstGeneratorNext.js
@@ -0,0 +1,7 @@
+function _skipFirstGeneratorNext(t) {
+  return function () {
+    var r = t.apply(this, arguments);
+    return r.next(), r;
+  };
+}
+module.exports = _skipFirstGeneratorNext, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/slicedToArray.js b/node_modules/@babel/runtime/helpers/slicedToArray.js
new file mode 100644
index 0000000..3d752c4
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/slicedToArray.js
@@ -0,0 +1,8 @@
+var arrayWithHoles = require("./arrayWithHoles.js");
+var iterableToArrayLimit = require("./iterableToArrayLimit.js");
+var unsupportedIterableToArray = require("./unsupportedIterableToArray.js");
+var nonIterableRest = require("./nonIterableRest.js");
+function _slicedToArray(r, e) {
+  return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();
+}
+module.exports = _slicedToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/superPropBase.js b/node_modules/@babel/runtime/helpers/superPropBase.js
new file mode 100644
index 0000000..5cad459
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/superPropBase.js
@@ -0,0 +1,6 @@
+var getPrototypeOf = require("./getPrototypeOf.js");
+function _superPropBase(t, o) {
+  for (; !{}.hasOwnProperty.call(t, o) && null !== (t = getPrototypeOf(t)););
+  return t;
+}
+module.exports = _superPropBase, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/superPropGet.js b/node_modules/@babel/runtime/helpers/superPropGet.js
new file mode 100644
index 0000000..baf8b10
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/superPropGet.js
@@ -0,0 +1,9 @@
+var get = require("./get.js");
+var getPrototypeOf = require("./getPrototypeOf.js");
+function _superPropGet(t, o, e, r) {
+  var p = get(getPrototypeOf(1 & r ? t.prototype : t), o, e);
+  return 2 & r && "function" == typeof p ? function (t) {
+    return p.apply(e, t);
+  } : p;
+}
+module.exports = _superPropGet, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/superPropSet.js b/node_modules/@babel/runtime/helpers/superPropSet.js
new file mode 100644
index 0000000..e0578c0
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/superPropSet.js
@@ -0,0 +1,6 @@
+var set = require("./set.js");
+var getPrototypeOf = require("./getPrototypeOf.js");
+function _superPropSet(t, e, o, r, p, f) {
+  return set(getPrototypeOf(f ? t.prototype : t), e, o, r, p);
+}
+module.exports = _superPropSet, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js b/node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js
new file mode 100644
index 0000000..38d6065
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js
@@ -0,0 +1,8 @@
+function _taggedTemplateLiteral(e, t) {
+  return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, {
+    raw: {
+      value: Object.freeze(t)
+    }
+  }));
+}
+module.exports = _taggedTemplateLiteral, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/taggedTemplateLiteralLoose.js b/node_modules/@babel/runtime/helpers/taggedTemplateLiteralLoose.js
new file mode 100644
index 0000000..2f8c146
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/taggedTemplateLiteralLoose.js
@@ -0,0 +1,4 @@
+function _taggedTemplateLiteralLoose(e, t) {
+  return t || (t = e.slice(0)), e.raw = t, e;
+}
+module.exports = _taggedTemplateLiteralLoose, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/tdz.js b/node_modules/@babel/runtime/helpers/tdz.js
new file mode 100644
index 0000000..c66f476
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/tdz.js
@@ -0,0 +1,4 @@
+function _tdzError(e) {
+  throw new ReferenceError(e + " is not defined - temporal dead zone");
+}
+module.exports = _tdzError, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/temporalRef.js b/node_modules/@babel/runtime/helpers/temporalRef.js
new file mode 100644
index 0000000..54c9190
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/temporalRef.js
@@ -0,0 +1,6 @@
+var temporalUndefined = require("./temporalUndefined.js");
+var tdz = require("./tdz.js");
+function _temporalRef(r, e) {
+  return r === temporalUndefined ? tdz(e) : r;
+}
+module.exports = _temporalRef, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/temporalUndefined.js b/node_modules/@babel/runtime/helpers/temporalUndefined.js
new file mode 100644
index 0000000..f8def80
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/temporalUndefined.js
@@ -0,0 +1,2 @@
+function _temporalUndefined() {}
+module.exports = _temporalUndefined, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/toArray.js b/node_modules/@babel/runtime/helpers/toArray.js
new file mode 100644
index 0000000..2be1d2b
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/toArray.js
@@ -0,0 +1,8 @@
+var arrayWithHoles = require("./arrayWithHoles.js");
+var iterableToArray = require("./iterableToArray.js");
+var unsupportedIterableToArray = require("./unsupportedIterableToArray.js");
+var nonIterableRest = require("./nonIterableRest.js");
+function _toArray(r) {
+  return arrayWithHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableRest();
+}
+module.exports = _toArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/toConsumableArray.js b/node_modules/@babel/runtime/helpers/toConsumableArray.js
new file mode 100644
index 0000000..698f9c6
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/toConsumableArray.js
@@ -0,0 +1,8 @@
+var arrayWithoutHoles = require("./arrayWithoutHoles.js");
+var iterableToArray = require("./iterableToArray.js");
+var unsupportedIterableToArray = require("./unsupportedIterableToArray.js");
+var nonIterableSpread = require("./nonIterableSpread.js");
+function _toConsumableArray(r) {
+  return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();
+}
+module.exports = _toConsumableArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/toPrimitive.js b/node_modules/@babel/runtime/helpers/toPrimitive.js
new file mode 100644
index 0000000..ef9d249
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/toPrimitive.js
@@ -0,0 +1,12 @@
+var _typeof = require("./typeof.js")["default"];
+function toPrimitive(t, r) {
+  if ("object" != _typeof(t) || !t) return t;
+  var e = t[Symbol.toPrimitive];
+  if (void 0 !== e) {
+    var i = e.call(t, r || "default");
+    if ("object" != _typeof(i)) return i;
+    throw new TypeError("@@toPrimitive must return a primitive value.");
+  }
+  return ("string" === r ? String : Number)(t);
+}
+module.exports = toPrimitive, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/toPropertyKey.js b/node_modules/@babel/runtime/helpers/toPropertyKey.js
new file mode 100644
index 0000000..3ca3d4f
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/toPropertyKey.js
@@ -0,0 +1,7 @@
+var _typeof = require("./typeof.js")["default"];
+var toPrimitive = require("./toPrimitive.js");
+function toPropertyKey(t) {
+  var i = toPrimitive(t, "string");
+  return "symbol" == _typeof(i) ? i : i + "";
+}
+module.exports = toPropertyKey, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/toSetter.js b/node_modules/@babel/runtime/helpers/toSetter.js
new file mode 100644
index 0000000..e0012a8
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/toSetter.js
@@ -0,0 +1,10 @@
+function _toSetter(t, e, n) {
+  e || (e = []);
+  var r = e.length++;
+  return Object.defineProperty({}, "_", {
+    set: function set(o) {
+      e[r] = o, t.apply(n, e);
+    }
+  });
+}
+module.exports = _toSetter, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/typeof.js b/node_modules/@babel/runtime/helpers/typeof.js
new file mode 100644
index 0000000..b6fbfaf
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/typeof.js
@@ -0,0 +1,10 @@
+function _typeof(o) {
+  "@babel/helpers - typeof";
+
+  return module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
+    return typeof o;
+  } : function (o) {
+    return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
+  }, module.exports.__esModule = true, module.exports["default"] = module.exports, _typeof(o);
+}
+module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js b/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js
new file mode 100644
index 0000000..8fb1a71
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js
@@ -0,0 +1,9 @@
+var arrayLikeToArray = require("./arrayLikeToArray.js");
+function _unsupportedIterableToArray(r, a) {
+  if (r) {
+    if ("string" == typeof r) return arrayLikeToArray(r, a);
+    var t = {}.toString.call(r).slice(8, -1);
+    return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;
+  }
+}
+module.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/using.js b/node_modules/@babel/runtime/helpers/using.js
new file mode 100644
index 0000000..37c79e2
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/using.js
@@ -0,0 +1,12 @@
+function _using(o, n, e) {
+  if (null == n) return n;
+  if (Object(n) !== n) throw new TypeError("using declarations can only be used with objects, functions, null, or undefined.");
+  if (e) var r = n[Symbol.asyncDispose || Symbol["for"]("Symbol.asyncDispose")];
+  if (null == r && (r = n[Symbol.dispose || Symbol["for"]("Symbol.dispose")]), "function" != typeof r) throw new TypeError("Property [Symbol.dispose] is not a function.");
+  return o.push({
+    v: n,
+    d: r,
+    a: e
+  }), n;
+}
+module.exports = _using, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/usingCtx.js b/node_modules/@babel/runtime/helpers/usingCtx.js
new file mode 100644
index 0000000..652ab15
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/usingCtx.js
@@ -0,0 +1,59 @@
+function _usingCtx() {
+  var r = "function" == typeof SuppressedError ? SuppressedError : function (r, e) {
+      var n = Error();
+      return n.name = "SuppressedError", n.error = r, n.suppressed = e, n;
+    },
+    e = {},
+    n = [];
+  function using(r, e) {
+    if (null != e) {
+      if (Object(e) !== e) throw new TypeError("using declarations can only be used with objects, functions, null, or undefined.");
+      if (r) var o = e[Symbol.asyncDispose || Symbol["for"]("Symbol.asyncDispose")];
+      if (void 0 === o && (o = e[Symbol.dispose || Symbol["for"]("Symbol.dispose")], r)) var t = o;
+      if ("function" != typeof o) throw new TypeError("Object is not disposable.");
+      t && (o = function o() {
+        try {
+          t.call(e);
+        } catch (r) {
+          return Promise.reject(r);
+        }
+      }), n.push({
+        v: e,
+        d: o,
+        a: r
+      });
+    } else r && n.push({
+      d: e,
+      a: r
+    });
+    return e;
+  }
+  return {
+    e: e,
+    u: using.bind(null, !1),
+    a: using.bind(null, !0),
+    d: function d() {
+      var o,
+        t = this.e,
+        s = 0;
+      function next() {
+        for (; o = n.pop();) try {
+          if (!o.a && 1 === s) return s = 0, n.push(o), Promise.resolve().then(next);
+          if (o.d) {
+            var r = o.d.call(o.v);
+            if (o.a) return s |= 2, Promise.resolve(r).then(next, err);
+          } else s |= 1;
+        } catch (r) {
+          return err(r);
+        }
+        if (1 === s) return t !== e ? Promise.reject(t) : Promise.resolve();
+        if (t !== e) throw t;
+      }
+      function err(n) {
+        return t = t !== e ? new r(n, t) : n, next();
+      }
+      return next();
+    }
+  };
+}
+module.exports = _usingCtx, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/wrapAsyncGenerator.js b/node_modules/@babel/runtime/helpers/wrapAsyncGenerator.js
new file mode 100644
index 0000000..b818e2e
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/wrapAsyncGenerator.js
@@ -0,0 +1,69 @@
+var OverloadYield = require("./OverloadYield.js");
+function _wrapAsyncGenerator(e) {
+  return function () {
+    return new AsyncGenerator(e.apply(this, arguments));
+  };
+}
+function AsyncGenerator(e) {
+  var r, t;
+  function resume(r, t) {
+    try {
+      var n = e[r](t),
+        o = n.value,
+        u = o instanceof OverloadYield;
+      Promise.resolve(u ? o.v : o).then(function (t) {
+        if (u) {
+          var i = "return" === r ? "return" : "next";
+          if (!o.k || t.done) return resume(i, t);
+          t = e[i](t).value;
+        }
+        settle(n.done ? "return" : "normal", t);
+      }, function (e) {
+        resume("throw", e);
+      });
+    } catch (e) {
+      settle("throw", e);
+    }
+  }
+  function settle(e, n) {
+    switch (e) {
+      case "return":
+        r.resolve({
+          value: n,
+          done: !0
+        });
+        break;
+      case "throw":
+        r.reject(n);
+        break;
+      default:
+        r.resolve({
+          value: n,
+          done: !1
+        });
+    }
+    (r = r.next) ? resume(r.key, r.arg) : t = null;
+  }
+  this._invoke = function (e, n) {
+    return new Promise(function (o, u) {
+      var i = {
+        key: e,
+        arg: n,
+        resolve: o,
+        reject: u,
+        next: null
+      };
+      t ? t = t.next = i : (r = t = i, resume(e, n));
+    });
+  }, "function" != typeof e["return"] && (this["return"] = void 0);
+}
+AsyncGenerator.prototype["function" == typeof Symbol && Symbol.asyncIterator || "@@asyncIterator"] = function () {
+  return this;
+}, AsyncGenerator.prototype.next = function (e) {
+  return this._invoke("next", e);
+}, AsyncGenerator.prototype["throw"] = function (e) {
+  return this._invoke("throw", e);
+}, AsyncGenerator.prototype["return"] = function (e) {
+  return this._invoke("return", e);
+};
+module.exports = _wrapAsyncGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/wrapNativeSuper.js b/node_modules/@babel/runtime/helpers/wrapNativeSuper.js
new file mode 100644
index 0000000..acd87ab
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/wrapNativeSuper.js
@@ -0,0 +1,27 @@
+var getPrototypeOf = require("./getPrototypeOf.js");
+var setPrototypeOf = require("./setPrototypeOf.js");
+var isNativeFunction = require("./isNativeFunction.js");
+var construct = require("./construct.js");
+function _wrapNativeSuper(t) {
+  var r = "function" == typeof Map ? new Map() : void 0;
+  return module.exports = _wrapNativeSuper = function _wrapNativeSuper(t) {
+    if (null === t || !isNativeFunction(t)) return t;
+    if ("function" != typeof t) throw new TypeError("Super expression must either be null or a function");
+    if (void 0 !== r) {
+      if (r.has(t)) return r.get(t);
+      r.set(t, Wrapper);
+    }
+    function Wrapper() {
+      return construct(t, arguments, getPrototypeOf(this).constructor);
+    }
+    return Wrapper.prototype = Object.create(t.prototype, {
+      constructor: {
+        value: Wrapper,
+        enumerable: !1,
+        writable: !0,
+        configurable: !0
+      }
+    }), setPrototypeOf(Wrapper, t);
+  }, module.exports.__esModule = true, module.exports["default"] = module.exports, _wrapNativeSuper(t);
+}
+module.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/wrapRegExp.js b/node_modules/@babel/runtime/helpers/wrapRegExp.js
new file mode 100644
index 0000000..c527168
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/wrapRegExp.js
@@ -0,0 +1,51 @@
+var _typeof = require("./typeof.js")["default"];
+var setPrototypeOf = require("./setPrototypeOf.js");
+var inherits = require("./inherits.js");
+function _wrapRegExp() {
+  module.exports = _wrapRegExp = function _wrapRegExp(e, r) {
+    return new BabelRegExp(e, void 0, r);
+  }, module.exports.__esModule = true, module.exports["default"] = module.exports;
+  var e = RegExp.prototype,
+    r = new WeakMap();
+  function BabelRegExp(e, t, p) {
+    var o = RegExp(e, t);
+    return r.set(o, p || r.get(e)), setPrototypeOf(o, BabelRegExp.prototype);
+  }
+  function buildGroups(e, t) {
+    var p = r.get(t);
+    return Object.keys(p).reduce(function (r, t) {
+      var o = p[t];
+      if ("number" == typeof o) r[t] = e[o];else {
+        for (var i = 0; void 0 === e[o[i]] && i + 1 < o.length;) i++;
+        r[t] = e[o[i]];
+      }
+      return r;
+    }, Object.create(null));
+  }
+  return inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (r) {
+    var t = e.exec.call(this, r);
+    if (t) {
+      t.groups = buildGroups(t, this);
+      var p = t.indices;
+      p && (p.groups = buildGroups(p, this));
+    }
+    return t;
+  }, BabelRegExp.prototype[Symbol.replace] = function (t, p) {
+    if ("string" == typeof p) {
+      var o = r.get(this);
+      return e[Symbol.replace].call(this, t, p.replace(/\$<([^>]+)>/g, function (e, r) {
+        var t = o[r];
+        return "$" + (Array.isArray(t) ? t.join("$") : t);
+      }));
+    }
+    if ("function" == typeof p) {
+      var i = this;
+      return e[Symbol.replace].call(this, t, function () {
+        var e = arguments;
+        return "object" != _typeof(e[e.length - 1]) && (e = [].slice.call(e)).push(buildGroups(e, i)), p.apply(this, e);
+      });
+    }
+    return e[Symbol.replace].call(this, t, p);
+  }, _wrapRegExp.apply(this, arguments);
+}
+module.exports = _wrapRegExp, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/writeOnlyError.js b/node_modules/@babel/runtime/helpers/writeOnlyError.js
new file mode 100644
index 0000000..c98ee82
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/writeOnlyError.js
@@ -0,0 +1,4 @@
+function _writeOnlyError(r) {
+  throw new TypeError('"' + r + '" is write-only');
+}
+module.exports = _writeOnlyError, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/package.json b/node_modules/@babel/runtime/package.json
new file mode 100644
index 0000000..76ecb37
--- /dev/null
+++ b/node_modules/@babel/runtime/package.json
@@ -0,0 +1,1056 @@
+{
+  "name": "@babel/runtime",
+  "version": "7.26.9",
+  "description": "babel's modular runtime helpers",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-runtime"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-runtime",
+  "author": "The Babel Team (https://babel.dev/team)",
+  "dependencies": {
+    "regenerator-runtime": "^0.14.0"
+  },
+  "exports": {
+    "./helpers/OverloadYield": [
+      {
+        "node": "./helpers/OverloadYield.js",
+        "import": "./helpers/esm/OverloadYield.js",
+        "default": "./helpers/OverloadYield.js"
+      },
+      "./helpers/OverloadYield.js"
+    ],
+    "./helpers/esm/OverloadYield": "./helpers/esm/OverloadYield.js",
+    "./helpers/applyDecoratedDescriptor": [
+      {
+        "node": "./helpers/applyDecoratedDescriptor.js",
+        "import": "./helpers/esm/applyDecoratedDescriptor.js",
+        "default": "./helpers/applyDecoratedDescriptor.js"
+      },
+      "./helpers/applyDecoratedDescriptor.js"
+    ],
+    "./helpers/esm/applyDecoratedDescriptor": "./helpers/esm/applyDecoratedDescriptor.js",
+    "./helpers/applyDecs2311": [
+      {
+        "node": "./helpers/applyDecs2311.js",
+        "import": "./helpers/esm/applyDecs2311.js",
+        "default": "./helpers/applyDecs2311.js"
+      },
+      "./helpers/applyDecs2311.js"
+    ],
+    "./helpers/esm/applyDecs2311": "./helpers/esm/applyDecs2311.js",
+    "./helpers/arrayLikeToArray": [
+      {
+        "node": "./helpers/arrayLikeToArray.js",
+        "import": "./helpers/esm/arrayLikeToArray.js",
+        "default": "./helpers/arrayLikeToArray.js"
+      },
+      "./helpers/arrayLikeToArray.js"
+    ],
+    "./helpers/esm/arrayLikeToArray": "./helpers/esm/arrayLikeToArray.js",
+    "./helpers/arrayWithHoles": [
+      {
+        "node": "./helpers/arrayWithHoles.js",
+        "import": "./helpers/esm/arrayWithHoles.js",
+        "default": "./helpers/arrayWithHoles.js"
+      },
+      "./helpers/arrayWithHoles.js"
+    ],
+    "./helpers/esm/arrayWithHoles": "./helpers/esm/arrayWithHoles.js",
+    "./helpers/arrayWithoutHoles": [
+      {
+        "node": "./helpers/arrayWithoutHoles.js",
+        "import": "./helpers/esm/arrayWithoutHoles.js",
+        "default": "./helpers/arrayWithoutHoles.js"
+      },
+      "./helpers/arrayWithoutHoles.js"
+    ],
+    "./helpers/esm/arrayWithoutHoles": "./helpers/esm/arrayWithoutHoles.js",
+    "./helpers/assertClassBrand": [
+      {
+        "node": "./helpers/assertClassBrand.js",
+        "import": "./helpers/esm/assertClassBrand.js",
+        "default": "./helpers/assertClassBrand.js"
+      },
+      "./helpers/assertClassBrand.js"
+    ],
+    "./helpers/esm/assertClassBrand": "./helpers/esm/assertClassBrand.js",
+    "./helpers/assertThisInitialized": [
+      {
+        "node": "./helpers/assertThisInitialized.js",
+        "import": "./helpers/esm/assertThisInitialized.js",
+        "default": "./helpers/assertThisInitialized.js"
+      },
+      "./helpers/assertThisInitialized.js"
+    ],
+    "./helpers/esm/assertThisInitialized": "./helpers/esm/assertThisInitialized.js",
+    "./helpers/asyncGeneratorDelegate": [
+      {
+        "node": "./helpers/asyncGeneratorDelegate.js",
+        "import": "./helpers/esm/asyncGeneratorDelegate.js",
+        "default": "./helpers/asyncGeneratorDelegate.js"
+      },
+      "./helpers/asyncGeneratorDelegate.js"
+    ],
+    "./helpers/esm/asyncGeneratorDelegate": "./helpers/esm/asyncGeneratorDelegate.js",
+    "./helpers/asyncIterator": [
+      {
+        "node": "./helpers/asyncIterator.js",
+        "import": "./helpers/esm/asyncIterator.js",
+        "default": "./helpers/asyncIterator.js"
+      },
+      "./helpers/asyncIterator.js"
+    ],
+    "./helpers/esm/asyncIterator": "./helpers/esm/asyncIterator.js",
+    "./helpers/asyncToGenerator": [
+      {
+        "node": "./helpers/asyncToGenerator.js",
+        "import": "./helpers/esm/asyncToGenerator.js",
+        "default": "./helpers/asyncToGenerator.js"
+      },
+      "./helpers/asyncToGenerator.js"
+    ],
+    "./helpers/esm/asyncToGenerator": "./helpers/esm/asyncToGenerator.js",
+    "./helpers/awaitAsyncGenerator": [
+      {
+        "node": "./helpers/awaitAsyncGenerator.js",
+        "import": "./helpers/esm/awaitAsyncGenerator.js",
+        "default": "./helpers/awaitAsyncGenerator.js"
+      },
+      "./helpers/awaitAsyncGenerator.js"
+    ],
+    "./helpers/esm/awaitAsyncGenerator": "./helpers/esm/awaitAsyncGenerator.js",
+    "./helpers/callSuper": [
+      {
+        "node": "./helpers/callSuper.js",
+        "import": "./helpers/esm/callSuper.js",
+        "default": "./helpers/callSuper.js"
+      },
+      "./helpers/callSuper.js"
+    ],
+    "./helpers/esm/callSuper": "./helpers/esm/callSuper.js",
+    "./helpers/checkInRHS": [
+      {
+        "node": "./helpers/checkInRHS.js",
+        "import": "./helpers/esm/checkInRHS.js",
+        "default": "./helpers/checkInRHS.js"
+      },
+      "./helpers/checkInRHS.js"
+    ],
+    "./helpers/esm/checkInRHS": "./helpers/esm/checkInRHS.js",
+    "./helpers/checkPrivateRedeclaration": [
+      {
+        "node": "./helpers/checkPrivateRedeclaration.js",
+        "import": "./helpers/esm/checkPrivateRedeclaration.js",
+        "default": "./helpers/checkPrivateRedeclaration.js"
+      },
+      "./helpers/checkPrivateRedeclaration.js"
+    ],
+    "./helpers/esm/checkPrivateRedeclaration": "./helpers/esm/checkPrivateRedeclaration.js",
+    "./helpers/classCallCheck": [
+      {
+        "node": "./helpers/classCallCheck.js",
+        "import": "./helpers/esm/classCallCheck.js",
+        "default": "./helpers/classCallCheck.js"
+      },
+      "./helpers/classCallCheck.js"
+    ],
+    "./helpers/esm/classCallCheck": "./helpers/esm/classCallCheck.js",
+    "./helpers/classNameTDZError": [
+      {
+        "node": "./helpers/classNameTDZError.js",
+        "import": "./helpers/esm/classNameTDZError.js",
+        "default": "./helpers/classNameTDZError.js"
+      },
+      "./helpers/classNameTDZError.js"
+    ],
+    "./helpers/esm/classNameTDZError": "./helpers/esm/classNameTDZError.js",
+    "./helpers/classPrivateFieldGet2": [
+      {
+        "node": "./helpers/classPrivateFieldGet2.js",
+        "import": "./helpers/esm/classPrivateFieldGet2.js",
+        "default": "./helpers/classPrivateFieldGet2.js"
+      },
+      "./helpers/classPrivateFieldGet2.js"
+    ],
+    "./helpers/esm/classPrivateFieldGet2": "./helpers/esm/classPrivateFieldGet2.js",
+    "./helpers/classPrivateFieldInitSpec": [
+      {
+        "node": "./helpers/classPrivateFieldInitSpec.js",
+        "import": "./helpers/esm/classPrivateFieldInitSpec.js",
+        "default": "./helpers/classPrivateFieldInitSpec.js"
+      },
+      "./helpers/classPrivateFieldInitSpec.js"
+    ],
+    "./helpers/esm/classPrivateFieldInitSpec": "./helpers/esm/classPrivateFieldInitSpec.js",
+    "./helpers/classPrivateFieldLooseBase": [
+      {
+        "node": "./helpers/classPrivateFieldLooseBase.js",
+        "import": "./helpers/esm/classPrivateFieldLooseBase.js",
+        "default": "./helpers/classPrivateFieldLooseBase.js"
+      },
+      "./helpers/classPrivateFieldLooseBase.js"
+    ],
+    "./helpers/esm/classPrivateFieldLooseBase": "./helpers/esm/classPrivateFieldLooseBase.js",
+    "./helpers/classPrivateFieldLooseKey": [
+      {
+        "node": "./helpers/classPrivateFieldLooseKey.js",
+        "import": "./helpers/esm/classPrivateFieldLooseKey.js",
+        "default": "./helpers/classPrivateFieldLooseKey.js"
+      },
+      "./helpers/classPrivateFieldLooseKey.js"
+    ],
+    "./helpers/esm/classPrivateFieldLooseKey": "./helpers/esm/classPrivateFieldLooseKey.js",
+    "./helpers/classPrivateFieldSet2": [
+      {
+        "node": "./helpers/classPrivateFieldSet2.js",
+        "import": "./helpers/esm/classPrivateFieldSet2.js",
+        "default": "./helpers/classPrivateFieldSet2.js"
+      },
+      "./helpers/classPrivateFieldSet2.js"
+    ],
+    "./helpers/esm/classPrivateFieldSet2": "./helpers/esm/classPrivateFieldSet2.js",
+    "./helpers/classPrivateGetter": [
+      {
+        "node": "./helpers/classPrivateGetter.js",
+        "import": "./helpers/esm/classPrivateGetter.js",
+        "default": "./helpers/classPrivateGetter.js"
+      },
+      "./helpers/classPrivateGetter.js"
+    ],
+    "./helpers/esm/classPrivateGetter": "./helpers/esm/classPrivateGetter.js",
+    "./helpers/classPrivateMethodInitSpec": [
+      {
+        "node": "./helpers/classPrivateMethodInitSpec.js",
+        "import": "./helpers/esm/classPrivateMethodInitSpec.js",
+        "default": "./helpers/classPrivateMethodInitSpec.js"
+      },
+      "./helpers/classPrivateMethodInitSpec.js"
+    ],
+    "./helpers/esm/classPrivateMethodInitSpec": "./helpers/esm/classPrivateMethodInitSpec.js",
+    "./helpers/classPrivateSetter": [
+      {
+        "node": "./helpers/classPrivateSetter.js",
+        "import": "./helpers/esm/classPrivateSetter.js",
+        "default": "./helpers/classPrivateSetter.js"
+      },
+      "./helpers/classPrivateSetter.js"
+    ],
+    "./helpers/esm/classPrivateSetter": "./helpers/esm/classPrivateSetter.js",
+    "./helpers/classStaticPrivateMethodGet": [
+      {
+        "node": "./helpers/classStaticPrivateMethodGet.js",
+        "import": "./helpers/esm/classStaticPrivateMethodGet.js",
+        "default": "./helpers/classStaticPrivateMethodGet.js"
+      },
+      "./helpers/classStaticPrivateMethodGet.js"
+    ],
+    "./helpers/esm/classStaticPrivateMethodGet": "./helpers/esm/classStaticPrivateMethodGet.js",
+    "./helpers/construct": [
+      {
+        "node": "./helpers/construct.js",
+        "import": "./helpers/esm/construct.js",
+        "default": "./helpers/construct.js"
+      },
+      "./helpers/construct.js"
+    ],
+    "./helpers/esm/construct": "./helpers/esm/construct.js",
+    "./helpers/createClass": [
+      {
+        "node": "./helpers/createClass.js",
+        "import": "./helpers/esm/createClass.js",
+        "default": "./helpers/createClass.js"
+      },
+      "./helpers/createClass.js"
+    ],
+    "./helpers/esm/createClass": "./helpers/esm/createClass.js",
+    "./helpers/createForOfIteratorHelper": [
+      {
+        "node": "./helpers/createForOfIteratorHelper.js",
+        "import": "./helpers/esm/createForOfIteratorHelper.js",
+        "default": "./helpers/createForOfIteratorHelper.js"
+      },
+      "./helpers/createForOfIteratorHelper.js"
+    ],
+    "./helpers/esm/createForOfIteratorHelper": "./helpers/esm/createForOfIteratorHelper.js",
+    "./helpers/createForOfIteratorHelperLoose": [
+      {
+        "node": "./helpers/createForOfIteratorHelperLoose.js",
+        "import": "./helpers/esm/createForOfIteratorHelperLoose.js",
+        "default": "./helpers/createForOfIteratorHelperLoose.js"
+      },
+      "./helpers/createForOfIteratorHelperLoose.js"
+    ],
+    "./helpers/esm/createForOfIteratorHelperLoose": "./helpers/esm/createForOfIteratorHelperLoose.js",
+    "./helpers/createSuper": [
+      {
+        "node": "./helpers/createSuper.js",
+        "import": "./helpers/esm/createSuper.js",
+        "default": "./helpers/createSuper.js"
+      },
+      "./helpers/createSuper.js"
+    ],
+    "./helpers/esm/createSuper": "./helpers/esm/createSuper.js",
+    "./helpers/decorate": [
+      {
+        "node": "./helpers/decorate.js",
+        "import": "./helpers/esm/decorate.js",
+        "default": "./helpers/decorate.js"
+      },
+      "./helpers/decorate.js"
+    ],
+    "./helpers/esm/decorate": "./helpers/esm/decorate.js",
+    "./helpers/defaults": [
+      {
+        "node": "./helpers/defaults.js",
+        "import": "./helpers/esm/defaults.js",
+        "default": "./helpers/defaults.js"
+      },
+      "./helpers/defaults.js"
+    ],
+    "./helpers/esm/defaults": "./helpers/esm/defaults.js",
+    "./helpers/defineAccessor": [
+      {
+        "node": "./helpers/defineAccessor.js",
+        "import": "./helpers/esm/defineAccessor.js",
+        "default": "./helpers/defineAccessor.js"
+      },
+      "./helpers/defineAccessor.js"
+    ],
+    "./helpers/esm/defineAccessor": "./helpers/esm/defineAccessor.js",
+    "./helpers/defineProperty": [
+      {
+        "node": "./helpers/defineProperty.js",
+        "import": "./helpers/esm/defineProperty.js",
+        "default": "./helpers/defineProperty.js"
+      },
+      "./helpers/defineProperty.js"
+    ],
+    "./helpers/esm/defineProperty": "./helpers/esm/defineProperty.js",
+    "./helpers/extends": [
+      {
+        "node": "./helpers/extends.js",
+        "import": "./helpers/esm/extends.js",
+        "default": "./helpers/extends.js"
+      },
+      "./helpers/extends.js"
+    ],
+    "./helpers/esm/extends": "./helpers/esm/extends.js",
+    "./helpers/get": [
+      {
+        "node": "./helpers/get.js",
+        "import": "./helpers/esm/get.js",
+        "default": "./helpers/get.js"
+      },
+      "./helpers/get.js"
+    ],
+    "./helpers/esm/get": "./helpers/esm/get.js",
+    "./helpers/getPrototypeOf": [
+      {
+        "node": "./helpers/getPrototypeOf.js",
+        "import": "./helpers/esm/getPrototypeOf.js",
+        "default": "./helpers/getPrototypeOf.js"
+      },
+      "./helpers/getPrototypeOf.js"
+    ],
+    "./helpers/esm/getPrototypeOf": "./helpers/esm/getPrototypeOf.js",
+    "./helpers/identity": [
+      {
+        "node": "./helpers/identity.js",
+        "import": "./helpers/esm/identity.js",
+        "default": "./helpers/identity.js"
+      },
+      "./helpers/identity.js"
+    ],
+    "./helpers/esm/identity": "./helpers/esm/identity.js",
+    "./helpers/importDeferProxy": [
+      {
+        "node": "./helpers/importDeferProxy.js",
+        "import": "./helpers/esm/importDeferProxy.js",
+        "default": "./helpers/importDeferProxy.js"
+      },
+      "./helpers/importDeferProxy.js"
+    ],
+    "./helpers/esm/importDeferProxy": "./helpers/esm/importDeferProxy.js",
+    "./helpers/inherits": [
+      {
+        "node": "./helpers/inherits.js",
+        "import": "./helpers/esm/inherits.js",
+        "default": "./helpers/inherits.js"
+      },
+      "./helpers/inherits.js"
+    ],
+    "./helpers/esm/inherits": "./helpers/esm/inherits.js",
+    "./helpers/inheritsLoose": [
+      {
+        "node": "./helpers/inheritsLoose.js",
+        "import": "./helpers/esm/inheritsLoose.js",
+        "default": "./helpers/inheritsLoose.js"
+      },
+      "./helpers/inheritsLoose.js"
+    ],
+    "./helpers/esm/inheritsLoose": "./helpers/esm/inheritsLoose.js",
+    "./helpers/initializerDefineProperty": [
+      {
+        "node": "./helpers/initializerDefineProperty.js",
+        "import": "./helpers/esm/initializerDefineProperty.js",
+        "default": "./helpers/initializerDefineProperty.js"
+      },
+      "./helpers/initializerDefineProperty.js"
+    ],
+    "./helpers/esm/initializerDefineProperty": "./helpers/esm/initializerDefineProperty.js",
+    "./helpers/initializerWarningHelper": [
+      {
+        "node": "./helpers/initializerWarningHelper.js",
+        "import": "./helpers/esm/initializerWarningHelper.js",
+        "default": "./helpers/initializerWarningHelper.js"
+      },
+      "./helpers/initializerWarningHelper.js"
+    ],
+    "./helpers/esm/initializerWarningHelper": "./helpers/esm/initializerWarningHelper.js",
+    "./helpers/instanceof": [
+      {
+        "node": "./helpers/instanceof.js",
+        "import": "./helpers/esm/instanceof.js",
+        "default": "./helpers/instanceof.js"
+      },
+      "./helpers/instanceof.js"
+    ],
+    "./helpers/esm/instanceof": "./helpers/esm/instanceof.js",
+    "./helpers/interopRequireDefault": [
+      {
+        "node": "./helpers/interopRequireDefault.js",
+        "import": "./helpers/esm/interopRequireDefault.js",
+        "default": "./helpers/interopRequireDefault.js"
+      },
+      "./helpers/interopRequireDefault.js"
+    ],
+    "./helpers/esm/interopRequireDefault": "./helpers/esm/interopRequireDefault.js",
+    "./helpers/interopRequireWildcard": [
+      {
+        "node": "./helpers/interopRequireWildcard.js",
+        "import": "./helpers/esm/interopRequireWildcard.js",
+        "default": "./helpers/interopRequireWildcard.js"
+      },
+      "./helpers/interopRequireWildcard.js"
+    ],
+    "./helpers/esm/interopRequireWildcard": "./helpers/esm/interopRequireWildcard.js",
+    "./helpers/isNativeFunction": [
+      {
+        "node": "./helpers/isNativeFunction.js",
+        "import": "./helpers/esm/isNativeFunction.js",
+        "default": "./helpers/isNativeFunction.js"
+      },
+      "./helpers/isNativeFunction.js"
+    ],
+    "./helpers/esm/isNativeFunction": "./helpers/esm/isNativeFunction.js",
+    "./helpers/isNativeReflectConstruct": [
+      {
+        "node": "./helpers/isNativeReflectConstruct.js",
+        "import": "./helpers/esm/isNativeReflectConstruct.js",
+        "default": "./helpers/isNativeReflectConstruct.js"
+      },
+      "./helpers/isNativeReflectConstruct.js"
+    ],
+    "./helpers/esm/isNativeReflectConstruct": "./helpers/esm/isNativeReflectConstruct.js",
+    "./helpers/iterableToArray": [
+      {
+        "node": "./helpers/iterableToArray.js",
+        "import": "./helpers/esm/iterableToArray.js",
+        "default": "./helpers/iterableToArray.js"
+      },
+      "./helpers/iterableToArray.js"
+    ],
+    "./helpers/esm/iterableToArray": "./helpers/esm/iterableToArray.js",
+    "./helpers/iterableToArrayLimit": [
+      {
+        "node": "./helpers/iterableToArrayLimit.js",
+        "import": "./helpers/esm/iterableToArrayLimit.js",
+        "default": "./helpers/iterableToArrayLimit.js"
+      },
+      "./helpers/iterableToArrayLimit.js"
+    ],
+    "./helpers/esm/iterableToArrayLimit": "./helpers/esm/iterableToArrayLimit.js",
+    "./helpers/jsx": [
+      {
+        "node": "./helpers/jsx.js",
+        "import": "./helpers/esm/jsx.js",
+        "default": "./helpers/jsx.js"
+      },
+      "./helpers/jsx.js"
+    ],
+    "./helpers/esm/jsx": "./helpers/esm/jsx.js",
+    "./helpers/maybeArrayLike": [
+      {
+        "node": "./helpers/maybeArrayLike.js",
+        "import": "./helpers/esm/maybeArrayLike.js",
+        "default": "./helpers/maybeArrayLike.js"
+      },
+      "./helpers/maybeArrayLike.js"
+    ],
+    "./helpers/esm/maybeArrayLike": "./helpers/esm/maybeArrayLike.js",
+    "./helpers/newArrowCheck": [
+      {
+        "node": "./helpers/newArrowCheck.js",
+        "import": "./helpers/esm/newArrowCheck.js",
+        "default": "./helpers/newArrowCheck.js"
+      },
+      "./helpers/newArrowCheck.js"
+    ],
+    "./helpers/esm/newArrowCheck": "./helpers/esm/newArrowCheck.js",
+    "./helpers/nonIterableRest": [
+      {
+        "node": "./helpers/nonIterableRest.js",
+        "import": "./helpers/esm/nonIterableRest.js",
+        "default": "./helpers/nonIterableRest.js"
+      },
+      "./helpers/nonIterableRest.js"
+    ],
+    "./helpers/esm/nonIterableRest": "./helpers/esm/nonIterableRest.js",
+    "./helpers/nonIterableSpread": [
+      {
+        "node": "./helpers/nonIterableSpread.js",
+        "import": "./helpers/esm/nonIterableSpread.js",
+        "default": "./helpers/nonIterableSpread.js"
+      },
+      "./helpers/nonIterableSpread.js"
+    ],
+    "./helpers/esm/nonIterableSpread": "./helpers/esm/nonIterableSpread.js",
+    "./helpers/nullishReceiverError": [
+      {
+        "node": "./helpers/nullishReceiverError.js",
+        "import": "./helpers/esm/nullishReceiverError.js",
+        "default": "./helpers/nullishReceiverError.js"
+      },
+      "./helpers/nullishReceiverError.js"
+    ],
+    "./helpers/esm/nullishReceiverError": "./helpers/esm/nullishReceiverError.js",
+    "./helpers/objectDestructuringEmpty": [
+      {
+        "node": "./helpers/objectDestructuringEmpty.js",
+        "import": "./helpers/esm/objectDestructuringEmpty.js",
+        "default": "./helpers/objectDestructuringEmpty.js"
+      },
+      "./helpers/objectDestructuringEmpty.js"
+    ],
+    "./helpers/esm/objectDestructuringEmpty": "./helpers/esm/objectDestructuringEmpty.js",
+    "./helpers/objectSpread2": [
+      {
+        "node": "./helpers/objectSpread2.js",
+        "import": "./helpers/esm/objectSpread2.js",
+        "default": "./helpers/objectSpread2.js"
+      },
+      "./helpers/objectSpread2.js"
+    ],
+    "./helpers/esm/objectSpread2": "./helpers/esm/objectSpread2.js",
+    "./helpers/objectWithoutProperties": [
+      {
+        "node": "./helpers/objectWithoutProperties.js",
+        "import": "./helpers/esm/objectWithoutProperties.js",
+        "default": "./helpers/objectWithoutProperties.js"
+      },
+      "./helpers/objectWithoutProperties.js"
+    ],
+    "./helpers/esm/objectWithoutProperties": "./helpers/esm/objectWithoutProperties.js",
+    "./helpers/objectWithoutPropertiesLoose": [
+      {
+        "node": "./helpers/objectWithoutPropertiesLoose.js",
+        "import": "./helpers/esm/objectWithoutPropertiesLoose.js",
+        "default": "./helpers/objectWithoutPropertiesLoose.js"
+      },
+      "./helpers/objectWithoutPropertiesLoose.js"
+    ],
+    "./helpers/esm/objectWithoutPropertiesLoose": "./helpers/esm/objectWithoutPropertiesLoose.js",
+    "./helpers/possibleConstructorReturn": [
+      {
+        "node": "./helpers/possibleConstructorReturn.js",
+        "import": "./helpers/esm/possibleConstructorReturn.js",
+        "default": "./helpers/possibleConstructorReturn.js"
+      },
+      "./helpers/possibleConstructorReturn.js"
+    ],
+    "./helpers/esm/possibleConstructorReturn": "./helpers/esm/possibleConstructorReturn.js",
+    "./helpers/readOnlyError": [
+      {
+        "node": "./helpers/readOnlyError.js",
+        "import": "./helpers/esm/readOnlyError.js",
+        "default": "./helpers/readOnlyError.js"
+      },
+      "./helpers/readOnlyError.js"
+    ],
+    "./helpers/esm/readOnlyError": "./helpers/esm/readOnlyError.js",
+    "./helpers/regeneratorRuntime": [
+      {
+        "node": "./helpers/regeneratorRuntime.js",
+        "import": "./helpers/esm/regeneratorRuntime.js",
+        "default": "./helpers/regeneratorRuntime.js"
+      },
+      "./helpers/regeneratorRuntime.js"
+    ],
+    "./helpers/esm/regeneratorRuntime": "./helpers/esm/regeneratorRuntime.js",
+    "./helpers/set": [
+      {
+        "node": "./helpers/set.js",
+        "import": "./helpers/esm/set.js",
+        "default": "./helpers/set.js"
+      },
+      "./helpers/set.js"
+    ],
+    "./helpers/esm/set": "./helpers/esm/set.js",
+    "./helpers/setFunctionName": [
+      {
+        "node": "./helpers/setFunctionName.js",
+        "import": "./helpers/esm/setFunctionName.js",
+        "default": "./helpers/setFunctionName.js"
+      },
+      "./helpers/setFunctionName.js"
+    ],
+    "./helpers/esm/setFunctionName": "./helpers/esm/setFunctionName.js",
+    "./helpers/setPrototypeOf": [
+      {
+        "node": "./helpers/setPrototypeOf.js",
+        "import": "./helpers/esm/setPrototypeOf.js",
+        "default": "./helpers/setPrototypeOf.js"
+      },
+      "./helpers/setPrototypeOf.js"
+    ],
+    "./helpers/esm/setPrototypeOf": "./helpers/esm/setPrototypeOf.js",
+    "./helpers/skipFirstGeneratorNext": [
+      {
+        "node": "./helpers/skipFirstGeneratorNext.js",
+        "import": "./helpers/esm/skipFirstGeneratorNext.js",
+        "default": "./helpers/skipFirstGeneratorNext.js"
+      },
+      "./helpers/skipFirstGeneratorNext.js"
+    ],
+    "./helpers/esm/skipFirstGeneratorNext": "./helpers/esm/skipFirstGeneratorNext.js",
+    "./helpers/slicedToArray": [
+      {
+        "node": "./helpers/slicedToArray.js",
+        "import": "./helpers/esm/slicedToArray.js",
+        "default": "./helpers/slicedToArray.js"
+      },
+      "./helpers/slicedToArray.js"
+    ],
+    "./helpers/esm/slicedToArray": "./helpers/esm/slicedToArray.js",
+    "./helpers/superPropBase": [
+      {
+        "node": "./helpers/superPropBase.js",
+        "import": "./helpers/esm/superPropBase.js",
+        "default": "./helpers/superPropBase.js"
+      },
+      "./helpers/superPropBase.js"
+    ],
+    "./helpers/esm/superPropBase": "./helpers/esm/superPropBase.js",
+    "./helpers/superPropGet": [
+      {
+        "node": "./helpers/superPropGet.js",
+        "import": "./helpers/esm/superPropGet.js",
+        "default": "./helpers/superPropGet.js"
+      },
+      "./helpers/superPropGet.js"
+    ],
+    "./helpers/esm/superPropGet": "./helpers/esm/superPropGet.js",
+    "./helpers/superPropSet": [
+      {
+        "node": "./helpers/superPropSet.js",
+        "import": "./helpers/esm/superPropSet.js",
+        "default": "./helpers/superPropSet.js"
+      },
+      "./helpers/superPropSet.js"
+    ],
+    "./helpers/esm/superPropSet": "./helpers/esm/superPropSet.js",
+    "./helpers/taggedTemplateLiteral": [
+      {
+        "node": "./helpers/taggedTemplateLiteral.js",
+        "import": "./helpers/esm/taggedTemplateLiteral.js",
+        "default": "./helpers/taggedTemplateLiteral.js"
+      },
+      "./helpers/taggedTemplateLiteral.js"
+    ],
+    "./helpers/esm/taggedTemplateLiteral": "./helpers/esm/taggedTemplateLiteral.js",
+    "./helpers/taggedTemplateLiteralLoose": [
+      {
+        "node": "./helpers/taggedTemplateLiteralLoose.js",
+        "import": "./helpers/esm/taggedTemplateLiteralLoose.js",
+        "default": "./helpers/taggedTemplateLiteralLoose.js"
+      },
+      "./helpers/taggedTemplateLiteralLoose.js"
+    ],
+    "./helpers/esm/taggedTemplateLiteralLoose": "./helpers/esm/taggedTemplateLiteralLoose.js",
+    "./helpers/tdz": [
+      {
+        "node": "./helpers/tdz.js",
+        "import": "./helpers/esm/tdz.js",
+        "default": "./helpers/tdz.js"
+      },
+      "./helpers/tdz.js"
+    ],
+    "./helpers/esm/tdz": "./helpers/esm/tdz.js",
+    "./helpers/temporalRef": [
+      {
+        "node": "./helpers/temporalRef.js",
+        "import": "./helpers/esm/temporalRef.js",
+        "default": "./helpers/temporalRef.js"
+      },
+      "./helpers/temporalRef.js"
+    ],
+    "./helpers/esm/temporalRef": "./helpers/esm/temporalRef.js",
+    "./helpers/temporalUndefined": [
+      {
+        "node": "./helpers/temporalUndefined.js",
+        "import": "./helpers/esm/temporalUndefined.js",
+        "default": "./helpers/temporalUndefined.js"
+      },
+      "./helpers/temporalUndefined.js"
+    ],
+    "./helpers/esm/temporalUndefined": "./helpers/esm/temporalUndefined.js",
+    "./helpers/toArray": [
+      {
+        "node": "./helpers/toArray.js",
+        "import": "./helpers/esm/toArray.js",
+        "default": "./helpers/toArray.js"
+      },
+      "./helpers/toArray.js"
+    ],
+    "./helpers/esm/toArray": "./helpers/esm/toArray.js",
+    "./helpers/toConsumableArray": [
+      {
+        "node": "./helpers/toConsumableArray.js",
+        "import": "./helpers/esm/toConsumableArray.js",
+        "default": "./helpers/toConsumableArray.js"
+      },
+      "./helpers/toConsumableArray.js"
+    ],
+    "./helpers/esm/toConsumableArray": "./helpers/esm/toConsumableArray.js",
+    "./helpers/toPrimitive": [
+      {
+        "node": "./helpers/toPrimitive.js",
+        "import": "./helpers/esm/toPrimitive.js",
+        "default": "./helpers/toPrimitive.js"
+      },
+      "./helpers/toPrimitive.js"
+    ],
+    "./helpers/esm/toPrimitive": "./helpers/esm/toPrimitive.js",
+    "./helpers/toPropertyKey": [
+      {
+        "node": "./helpers/toPropertyKey.js",
+        "import": "./helpers/esm/toPropertyKey.js",
+        "default": "./helpers/toPropertyKey.js"
+      },
+      "./helpers/toPropertyKey.js"
+    ],
+    "./helpers/esm/toPropertyKey": "./helpers/esm/toPropertyKey.js",
+    "./helpers/toSetter": [
+      {
+        "node": "./helpers/toSetter.js",
+        "import": "./helpers/esm/toSetter.js",
+        "default": "./helpers/toSetter.js"
+      },
+      "./helpers/toSetter.js"
+    ],
+    "./helpers/esm/toSetter": "./helpers/esm/toSetter.js",
+    "./helpers/typeof": [
+      {
+        "node": "./helpers/typeof.js",
+        "import": "./helpers/esm/typeof.js",
+        "default": "./helpers/typeof.js"
+      },
+      "./helpers/typeof.js"
+    ],
+    "./helpers/esm/typeof": "./helpers/esm/typeof.js",
+    "./helpers/unsupportedIterableToArray": [
+      {
+        "node": "./helpers/unsupportedIterableToArray.js",
+        "import": "./helpers/esm/unsupportedIterableToArray.js",
+        "default": "./helpers/unsupportedIterableToArray.js"
+      },
+      "./helpers/unsupportedIterableToArray.js"
+    ],
+    "./helpers/esm/unsupportedIterableToArray": "./helpers/esm/unsupportedIterableToArray.js",
+    "./helpers/usingCtx": [
+      {
+        "node": "./helpers/usingCtx.js",
+        "import": "./helpers/esm/usingCtx.js",
+        "default": "./helpers/usingCtx.js"
+      },
+      "./helpers/usingCtx.js"
+    ],
+    "./helpers/esm/usingCtx": "./helpers/esm/usingCtx.js",
+    "./helpers/wrapAsyncGenerator": [
+      {
+        "node": "./helpers/wrapAsyncGenerator.js",
+        "import": "./helpers/esm/wrapAsyncGenerator.js",
+        "default": "./helpers/wrapAsyncGenerator.js"
+      },
+      "./helpers/wrapAsyncGenerator.js"
+    ],
+    "./helpers/esm/wrapAsyncGenerator": "./helpers/esm/wrapAsyncGenerator.js",
+    "./helpers/wrapNativeSuper": [
+      {
+        "node": "./helpers/wrapNativeSuper.js",
+        "import": "./helpers/esm/wrapNativeSuper.js",
+        "default": "./helpers/wrapNativeSuper.js"
+      },
+      "./helpers/wrapNativeSuper.js"
+    ],
+    "./helpers/esm/wrapNativeSuper": "./helpers/esm/wrapNativeSuper.js",
+    "./helpers/wrapRegExp": [
+      {
+        "node": "./helpers/wrapRegExp.js",
+        "import": "./helpers/esm/wrapRegExp.js",
+        "default": "./helpers/wrapRegExp.js"
+      },
+      "./helpers/wrapRegExp.js"
+    ],
+    "./helpers/esm/wrapRegExp": "./helpers/esm/wrapRegExp.js",
+    "./helpers/writeOnlyError": [
+      {
+        "node": "./helpers/writeOnlyError.js",
+        "import": "./helpers/esm/writeOnlyError.js",
+        "default": "./helpers/writeOnlyError.js"
+      },
+      "./helpers/writeOnlyError.js"
+    ],
+    "./helpers/esm/writeOnlyError": "./helpers/esm/writeOnlyError.js",
+    "./helpers/AwaitValue": [
+      {
+        "node": "./helpers/AwaitValue.js",
+        "import": "./helpers/esm/AwaitValue.js",
+        "default": "./helpers/AwaitValue.js"
+      },
+      "./helpers/AwaitValue.js"
+    ],
+    "./helpers/esm/AwaitValue": "./helpers/esm/AwaitValue.js",
+    "./helpers/applyDecs": [
+      {
+        "node": "./helpers/applyDecs.js",
+        "import": "./helpers/esm/applyDecs.js",
+        "default": "./helpers/applyDecs.js"
+      },
+      "./helpers/applyDecs.js"
+    ],
+    "./helpers/esm/applyDecs": "./helpers/esm/applyDecs.js",
+    "./helpers/applyDecs2203": [
+      {
+        "node": "./helpers/applyDecs2203.js",
+        "import": "./helpers/esm/applyDecs2203.js",
+        "default": "./helpers/applyDecs2203.js"
+      },
+      "./helpers/applyDecs2203.js"
+    ],
+    "./helpers/esm/applyDecs2203": "./helpers/esm/applyDecs2203.js",
+    "./helpers/applyDecs2203R": [
+      {
+        "node": "./helpers/applyDecs2203R.js",
+        "import": "./helpers/esm/applyDecs2203R.js",
+        "default": "./helpers/applyDecs2203R.js"
+      },
+      "./helpers/applyDecs2203R.js"
+    ],
+    "./helpers/esm/applyDecs2203R": "./helpers/esm/applyDecs2203R.js",
+    "./helpers/applyDecs2301": [
+      {
+        "node": "./helpers/applyDecs2301.js",
+        "import": "./helpers/esm/applyDecs2301.js",
+        "default": "./helpers/applyDecs2301.js"
+      },
+      "./helpers/applyDecs2301.js"
+    ],
+    "./helpers/esm/applyDecs2301": "./helpers/esm/applyDecs2301.js",
+    "./helpers/applyDecs2305": [
+      {
+        "node": "./helpers/applyDecs2305.js",
+        "import": "./helpers/esm/applyDecs2305.js",
+        "default": "./helpers/applyDecs2305.js"
+      },
+      "./helpers/applyDecs2305.js"
+    ],
+    "./helpers/esm/applyDecs2305": "./helpers/esm/applyDecs2305.js",
+    "./helpers/classApplyDescriptorDestructureSet": [
+      {
+        "node": "./helpers/classApplyDescriptorDestructureSet.js",
+        "import": "./helpers/esm/classApplyDescriptorDestructureSet.js",
+        "default": "./helpers/classApplyDescriptorDestructureSet.js"
+      },
+      "./helpers/classApplyDescriptorDestructureSet.js"
+    ],
+    "./helpers/esm/classApplyDescriptorDestructureSet": "./helpers/esm/classApplyDescriptorDestructureSet.js",
+    "./helpers/classApplyDescriptorGet": [
+      {
+        "node": "./helpers/classApplyDescriptorGet.js",
+        "import": "./helpers/esm/classApplyDescriptorGet.js",
+        "default": "./helpers/classApplyDescriptorGet.js"
+      },
+      "./helpers/classApplyDescriptorGet.js"
+    ],
+    "./helpers/esm/classApplyDescriptorGet": "./helpers/esm/classApplyDescriptorGet.js",
+    "./helpers/classApplyDescriptorSet": [
+      {
+        "node": "./helpers/classApplyDescriptorSet.js",
+        "import": "./helpers/esm/classApplyDescriptorSet.js",
+        "default": "./helpers/classApplyDescriptorSet.js"
+      },
+      "./helpers/classApplyDescriptorSet.js"
+    ],
+    "./helpers/esm/classApplyDescriptorSet": "./helpers/esm/classApplyDescriptorSet.js",
+    "./helpers/classCheckPrivateStaticAccess": [
+      {
+        "node": "./helpers/classCheckPrivateStaticAccess.js",
+        "import": "./helpers/esm/classCheckPrivateStaticAccess.js",
+        "default": "./helpers/classCheckPrivateStaticAccess.js"
+      },
+      "./helpers/classCheckPrivateStaticAccess.js"
+    ],
+    "./helpers/esm/classCheckPrivateStaticAccess": "./helpers/esm/classCheckPrivateStaticAccess.js",
+    "./helpers/classCheckPrivateStaticFieldDescriptor": [
+      {
+        "node": "./helpers/classCheckPrivateStaticFieldDescriptor.js",
+        "import": "./helpers/esm/classCheckPrivateStaticFieldDescriptor.js",
+        "default": "./helpers/classCheckPrivateStaticFieldDescriptor.js"
+      },
+      "./helpers/classCheckPrivateStaticFieldDescriptor.js"
+    ],
+    "./helpers/esm/classCheckPrivateStaticFieldDescriptor": "./helpers/esm/classCheckPrivateStaticFieldDescriptor.js",
+    "./helpers/classExtractFieldDescriptor": [
+      {
+        "node": "./helpers/classExtractFieldDescriptor.js",
+        "import": "./helpers/esm/classExtractFieldDescriptor.js",
+        "default": "./helpers/classExtractFieldDescriptor.js"
+      },
+      "./helpers/classExtractFieldDescriptor.js"
+    ],
+    "./helpers/esm/classExtractFieldDescriptor": "./helpers/esm/classExtractFieldDescriptor.js",
+    "./helpers/classPrivateFieldDestructureSet": [
+      {
+        "node": "./helpers/classPrivateFieldDestructureSet.js",
+        "import": "./helpers/esm/classPrivateFieldDestructureSet.js",
+        "default": "./helpers/classPrivateFieldDestructureSet.js"
+      },
+      "./helpers/classPrivateFieldDestructureSet.js"
+    ],
+    "./helpers/esm/classPrivateFieldDestructureSet": "./helpers/esm/classPrivateFieldDestructureSet.js",
+    "./helpers/classPrivateFieldGet": [
+      {
+        "node": "./helpers/classPrivateFieldGet.js",
+        "import": "./helpers/esm/classPrivateFieldGet.js",
+        "default": "./helpers/classPrivateFieldGet.js"
+      },
+      "./helpers/classPrivateFieldGet.js"
+    ],
+    "./helpers/esm/classPrivateFieldGet": "./helpers/esm/classPrivateFieldGet.js",
+    "./helpers/classPrivateFieldSet": [
+      {
+        "node": "./helpers/classPrivateFieldSet.js",
+        "import": "./helpers/esm/classPrivateFieldSet.js",
+        "default": "./helpers/classPrivateFieldSet.js"
+      },
+      "./helpers/classPrivateFieldSet.js"
+    ],
+    "./helpers/esm/classPrivateFieldSet": "./helpers/esm/classPrivateFieldSet.js",
+    "./helpers/classPrivateMethodGet": [
+      {
+        "node": "./helpers/classPrivateMethodGet.js",
+        "import": "./helpers/esm/classPrivateMethodGet.js",
+        "default": "./helpers/classPrivateMethodGet.js"
+      },
+      "./helpers/classPrivateMethodGet.js"
+    ],
+    "./helpers/esm/classPrivateMethodGet": "./helpers/esm/classPrivateMethodGet.js",
+    "./helpers/classPrivateMethodSet": [
+      {
+        "node": "./helpers/classPrivateMethodSet.js",
+        "import": "./helpers/esm/classPrivateMethodSet.js",
+        "default": "./helpers/classPrivateMethodSet.js"
+      },
+      "./helpers/classPrivateMethodSet.js"
+    ],
+    "./helpers/esm/classPrivateMethodSet": "./helpers/esm/classPrivateMethodSet.js",
+    "./helpers/classStaticPrivateFieldDestructureSet": [
+      {
+        "node": "./helpers/classStaticPrivateFieldDestructureSet.js",
+        "import": "./helpers/esm/classStaticPrivateFieldDestructureSet.js",
+        "default": "./helpers/classStaticPrivateFieldDestructureSet.js"
+      },
+      "./helpers/classStaticPrivateFieldDestructureSet.js"
+    ],
+    "./helpers/esm/classStaticPrivateFieldDestructureSet": "./helpers/esm/classStaticPrivateFieldDestructureSet.js",
+    "./helpers/classStaticPrivateFieldSpecGet": [
+      {
+        "node": "./helpers/classStaticPrivateFieldSpecGet.js",
+        "import": "./helpers/esm/classStaticPrivateFieldSpecGet.js",
+        "default": "./helpers/classStaticPrivateFieldSpecGet.js"
+      },
+      "./helpers/classStaticPrivateFieldSpecGet.js"
+    ],
+    "./helpers/esm/classStaticPrivateFieldSpecGet": "./helpers/esm/classStaticPrivateFieldSpecGet.js",
+    "./helpers/classStaticPrivateFieldSpecSet": [
+      {
+        "node": "./helpers/classStaticPrivateFieldSpecSet.js",
+        "import": "./helpers/esm/classStaticPrivateFieldSpecSet.js",
+        "default": "./helpers/classStaticPrivateFieldSpecSet.js"
+      },
+      "./helpers/classStaticPrivateFieldSpecSet.js"
+    ],
+    "./helpers/esm/classStaticPrivateFieldSpecSet": "./helpers/esm/classStaticPrivateFieldSpecSet.js",
+    "./helpers/classStaticPrivateMethodSet": [
+      {
+        "node": "./helpers/classStaticPrivateMethodSet.js",
+        "import": "./helpers/esm/classStaticPrivateMethodSet.js",
+        "default": "./helpers/classStaticPrivateMethodSet.js"
+      },
+      "./helpers/classStaticPrivateMethodSet.js"
+    ],
+    "./helpers/esm/classStaticPrivateMethodSet": "./helpers/esm/classStaticPrivateMethodSet.js",
+    "./helpers/defineEnumerableProperties": [
+      {
+        "node": "./helpers/defineEnumerableProperties.js",
+        "import": "./helpers/esm/defineEnumerableProperties.js",
+        "default": "./helpers/defineEnumerableProperties.js"
+      },
+      "./helpers/defineEnumerableProperties.js"
+    ],
+    "./helpers/esm/defineEnumerableProperties": "./helpers/esm/defineEnumerableProperties.js",
+    "./helpers/dispose": [
+      {
+        "node": "./helpers/dispose.js",
+        "import": "./helpers/esm/dispose.js",
+        "default": "./helpers/dispose.js"
+      },
+      "./helpers/dispose.js"
+    ],
+    "./helpers/esm/dispose": "./helpers/esm/dispose.js",
+    "./helpers/objectSpread": [
+      {
+        "node": "./helpers/objectSpread.js",
+        "import": "./helpers/esm/objectSpread.js",
+        "default": "./helpers/objectSpread.js"
+      },
+      "./helpers/objectSpread.js"
+    ],
+    "./helpers/esm/objectSpread": "./helpers/esm/objectSpread.js",
+    "./helpers/using": [
+      {
+        "node": "./helpers/using.js",
+        "import": "./helpers/esm/using.js",
+        "default": "./helpers/using.js"
+      },
+      "./helpers/using.js"
+    ],
+    "./helpers/esm/using": "./helpers/esm/using.js",
+    "./package": "./package.json",
+    "./package.json": "./package.json",
+    "./regenerator": "./regenerator/index.js",
+    "./regenerator/*.js": "./regenerator/*.js",
+    "./regenerator/": "./regenerator/"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "type": "commonjs"
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/regenerator/index.js b/node_modules/@babel/runtime/regenerator/index.js
new file mode 100644
index 0000000..5881357
--- /dev/null
+++ b/node_modules/@babel/runtime/regenerator/index.js
@@ -0,0 +1,15 @@
+// TODO(Babel 8): Remove this file.
+
+var runtime = require("../helpers/regeneratorRuntime")();
+module.exports = runtime;
+
+// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=
+try {
+  regeneratorRuntime = runtime;
+} catch (accidentalStrictMode) {
+  if (typeof globalThis === "object") {
+    globalThis.regeneratorRuntime = runtime;
+  } else {
+    Function("r", "regeneratorRuntime = r")(runtime);
+  }
+}
diff --git a/node_modules/@types/raf/LICENSE b/node_modules/@types/raf/LICENSE
new file mode 100644
index 0000000..9e841e7
--- /dev/null
+++ b/node_modules/@types/raf/LICENSE
@@ -0,0 +1,21 @@
+    MIT License
+
+    Copyright (c) Microsoft Corporation.
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE
diff --git a/node_modules/@types/raf/README.md b/node_modules/@types/raf/README.md
new file mode 100644
index 0000000..599c467
--- /dev/null
+++ b/node_modules/@types/raf/README.md
@@ -0,0 +1,26 @@
+# Installation
+> `npm install --save @types/raf`
+
+# Summary
+This package contains type definitions for raf (https://github.com/chrisdickinson/raf#readme).
+
+# Details
+Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/raf.
+## [index.d.ts](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/raf/index.d.ts)
+````ts
+declare const raf: {
+    (callback: (timestamp: number) => void): number;
+    cancel: (handle: number) => void;
+    polyfill: (globalObject?: any) => void;
+};
+
+export = raf;
+
+````
+
+### Additional Details
+ * Last updated: Tue, 07 Nov 2023 09:09:39 GMT
+ * Dependencies: none
+
+# Credits
+These definitions were written by [Ben Lorantfy](https://github.com/BenLorantfy).
diff --git a/node_modules/@types/raf/index.d.ts b/node_modules/@types/raf/index.d.ts
new file mode 100644
index 0000000..9045311
--- /dev/null
+++ b/node_modules/@types/raf/index.d.ts
@@ -0,0 +1,7 @@
+declare const raf: {
+    (callback: (timestamp: number) => void): number;
+    cancel: (handle: number) => void;
+    polyfill: (globalObject?: any) => void;
+};
+
+export = raf;
diff --git a/node_modules/@types/raf/package.json b/node_modules/@types/raf/package.json
new file mode 100644
index 0000000..5760c39
--- /dev/null
+++ b/node_modules/@types/raf/package.json
@@ -0,0 +1,25 @@
+{
+    "name": "@types/raf",
+    "version": "3.4.3",
+    "description": "TypeScript definitions for raf",
+    "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/raf",
+    "license": "MIT",
+    "contributors": [
+        {
+            "name": "Ben Lorantfy",
+            "githubUsername": "BenLorantfy",
+            "url": "https://github.com/BenLorantfy"
+        }
+    ],
+    "main": "",
+    "types": "index.d.ts",
+    "repository": {
+        "type": "git",
+        "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
+        "directory": "types/raf"
+    },
+    "scripts": {},
+    "dependencies": {},
+    "typesPublisherContentHash": "c21796c8334d2e3ffe799f3011382988b3ef7ee37118005878a3ca9ea1fca5bb",
+    "typeScriptVersion": "4.5"
+}
\ No newline at end of file
diff --git a/node_modules/@types/trusted-types/LICENSE b/node_modules/@types/trusted-types/LICENSE
new file mode 100644
index 0000000..9e841e7
--- /dev/null
+++ b/node_modules/@types/trusted-types/LICENSE
@@ -0,0 +1,21 @@
+    MIT License
+
+    Copyright (c) Microsoft Corporation.
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE
diff --git a/node_modules/@types/trusted-types/README.md b/node_modules/@types/trusted-types/README.md
new file mode 100644
index 0000000..251cfea
--- /dev/null
+++ b/node_modules/@types/trusted-types/README.md
@@ -0,0 +1,15 @@
+# Installation
+> `npm install --save @types/trusted-types`
+
+# Summary
+This package contains type definitions for trusted-types (https://github.com/WICG/trusted-types).
+
+# Details
+Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/trusted-types.
+
+### Additional Details
+ * Last updated: Mon, 20 Nov 2023 23:36:24 GMT
+ * Dependencies: none
+
+# Credits
+These definitions were written by [Jakub Vrana](https://github.com/vrana), [Damien Engels](https://github.com/engelsdamien), [Emanuel Tesar](https://github.com/siegrift), [Bjarki](https://github.com/bjarkler), and [Sebastian Silbermann](https://github.com/eps1lon).
diff --git a/node_modules/@types/trusted-types/index.d.ts b/node_modules/@types/trusted-types/index.d.ts
new file mode 100644
index 0000000..18ab043
--- /dev/null
+++ b/node_modules/@types/trusted-types/index.d.ts
@@ -0,0 +1,53 @@
+import * as lib from "./lib";
+
+// Re-export the type definitions globally.
+declare global {
+    // eslint-disable-next-line @typescript-eslint/no-empty-interface -- interface to allow module augmentation
+    interface TrustedHTML extends lib.TrustedHTML {}
+    // eslint-disable-next-line @typescript-eslint/no-empty-interface -- interface to allow module augmentation
+    interface TrustedScript extends lib.TrustedScript {}
+    // eslint-disable-next-line @typescript-eslint/no-empty-interface -- interface to allow module augmentation
+    interface TrustedScriptURL extends lib.TrustedScriptURL {}
+
+    // eslint-disable-next-line @typescript-eslint/no-empty-interface -- interface to allow module augmentation
+    interface TrustedTypePolicy extends lib.TrustedTypePolicy {}
+
+    // eslint-disable-next-line @typescript-eslint/no-empty-interface -- interface to allow module augmentation
+    interface TrustedTypePolicyFactory extends lib.TrustedTypePolicyFactory {}
+
+    // eslint-disable-next-line @typescript-eslint/no-empty-interface -- interface to allow module augmentation
+    interface TrustedTypePolicyOptions extends lib.TrustedTypePolicyOptions {}
+
+    // Attach the relevant Trusted Types properties to the Window object.
+    // eslint-disable-next-line @typescript-eslint/no-empty-interface -- interface to allow module augmentation
+    interface Window extends lib.TrustedTypesWindow {}
+}
+
+// These are the available exports when using the polyfill as npm package (e.g. in nodejs)
+interface InternalTrustedTypePolicyFactory extends lib.TrustedTypePolicyFactory {
+    TrustedHTML: typeof lib.TrustedHTML;
+    TrustedScript: typeof lib.TrustedScript;
+    TrustedScriptURL: typeof lib.TrustedScriptURL;
+}
+
+declare const trustedTypes: InternalTrustedTypePolicyFactory;
+
+declare class TrustedTypesEnforcer {
+    constructor(config: TrustedTypeConfig);
+    install: () => void;
+    uninstall: () => void;
+}
+
+// tslint:disable-next-line no-unnecessary-class
+declare class TrustedTypeConfig {
+    constructor(
+        isLoggingEnabled: boolean,
+        isEnforcementEnabled: boolean,
+        allowedPolicyNames: string[],
+        allowDuplicates: boolean,
+        cspString?: string | null,
+        windowObject?: Window,
+    );
+}
+
+export { TrustedTypeConfig, TrustedTypePolicy, TrustedTypePolicyFactory, trustedTypes, TrustedTypesEnforcer };
diff --git a/node_modules/@types/trusted-types/lib/index.d.ts b/node_modules/@types/trusted-types/lib/index.d.ts
new file mode 100644
index 0000000..2c7ccd4
--- /dev/null
+++ b/node_modules/@types/trusted-types/lib/index.d.ts
@@ -0,0 +1,64 @@
+// The main type definitions. Packages that do not want to pollute the global
+// scope with Trusted Types (e.g. libraries whose users may not be using Trusted
+// Types) can import the types directly from 'trusted-types/lib'.
+
+export type FnNames = keyof TrustedTypePolicyOptions;
+export type Args<Options extends TrustedTypePolicyOptions, K extends FnNames> = Parameters<NonNullable<Options[K]>>;
+
+export class TrustedHTML {
+    private constructor(); // To prevent instantiting with 'new'.
+    private brand: true; // To prevent structural typing.
+}
+
+export class TrustedScript {
+    private constructor(); // To prevent instantiting with 'new'.
+    private brand: true; // To prevent structural typing.
+}
+
+export class TrustedScriptURL {
+    private constructor(); // To prevent instantiting with 'new'.
+    private brand: true; // To prevent structural typing.
+}
+
+export abstract class TrustedTypePolicyFactory {
+    createPolicy<Options extends TrustedTypePolicyOptions>(
+        policyName: string,
+        policyOptions?: Options,
+    ): Pick<TrustedTypePolicy<Options>, "name" | Extract<keyof Options, FnNames>>;
+    isHTML(value: unknown): value is TrustedHTML;
+    isScript(value: unknown): value is TrustedScript;
+    isScriptURL(value: unknown): value is TrustedScriptURL;
+    readonly emptyHTML: TrustedHTML;
+    readonly emptyScript: TrustedScript;
+    getAttributeType(tagName: string, attribute: string, elementNs?: string, attrNs?: string): string | null;
+    getPropertyType(tagName: string, property: string, elementNs?: string): string | null;
+    readonly defaultPolicy: TrustedTypePolicy | null;
+}
+
+export abstract class TrustedTypePolicy<Options extends TrustedTypePolicyOptions = TrustedTypePolicyOptions> {
+    readonly name: string;
+    createHTML(...args: Args<Options, "createHTML">): TrustedHTML;
+    createScript(...args: Args<Options, "createScript">): TrustedScript;
+    createScriptURL(...args: Args<Options, "createScriptURL">): TrustedScriptURL;
+}
+
+export interface TrustedTypePolicyOptions {
+    createHTML?: ((input: string, ...arguments: any[]) => string) | undefined;
+    createScript?: ((input: string, ...arguments: any[]) => string) | undefined;
+    createScriptURL?: ((input: string, ...arguments: any[]) => string) | undefined;
+}
+
+// The Window object is augmented with the following properties in browsers that
+// support Trusted Types. Users of the 'trusted-types/lib' entrypoint can cast
+// window as TrustedTypesWindow to access these properties.
+export interface TrustedTypesWindow {
+    // `trustedTypes` is left intentionally optional to make sure that
+    // people handle the case when their code is running in a browser not
+    // supporting trustedTypes.
+    trustedTypes?: TrustedTypePolicyFactory | undefined;
+    TrustedHTML: typeof TrustedHTML;
+    TrustedScript: typeof TrustedScript;
+    TrustedScriptURL: typeof TrustedScriptURL;
+    TrustedTypePolicyFactory: typeof TrustedTypePolicyFactory;
+    TrustedTypePolicy: typeof TrustedTypePolicy;
+}
diff --git a/node_modules/@types/trusted-types/package.json b/node_modules/@types/trusted-types/package.json
new file mode 100644
index 0000000..eda8c73
--- /dev/null
+++ b/node_modules/@types/trusted-types/package.json
@@ -0,0 +1,45 @@
+{
+    "name": "@types/trusted-types",
+    "version": "2.0.7",
+    "description": "TypeScript definitions for trusted-types",
+    "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/trusted-types",
+    "license": "MIT",
+    "contributors": [
+        {
+            "name": "Jakub Vrana",
+            "githubUsername": "vrana",
+            "url": "https://github.com/vrana"
+        },
+        {
+            "name": "Damien Engels",
+            "githubUsername": "engelsdamien",
+            "url": "https://github.com/engelsdamien"
+        },
+        {
+            "name": "Emanuel Tesar",
+            "githubUsername": "siegrift",
+            "url": "https://github.com/siegrift"
+        },
+        {
+            "name": "Bjarki",
+            "githubUsername": "bjarkler",
+            "url": "https://github.com/bjarkler"
+        },
+        {
+            "name": "Sebastian Silbermann",
+            "githubUsername": "eps1lon",
+            "url": "https://github.com/eps1lon"
+        }
+    ],
+    "main": "",
+    "types": "index.d.ts",
+    "repository": {
+        "type": "git",
+        "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
+        "directory": "types/trusted-types"
+    },
+    "scripts": {},
+    "dependencies": {},
+    "typesPublisherContentHash": "20982c5e0452e662515e29b41f7be5a3c69e5918a9228929a563d9f1dfdfbbc5",
+    "typeScriptVersion": "4.5"
+}
\ No newline at end of file
diff --git a/node_modules/atob/LICENSE b/node_modules/atob/LICENSE
new file mode 100644
index 0000000..2d9338b
--- /dev/null
+++ b/node_modules/atob/LICENSE
@@ -0,0 +1,230 @@
+At your option you may choose either of the following licenses:
+
+  * The MIT License (MIT)
+  * The Apache License 2.0 (Apache-2.0)
+
+
+The MIT License (MIT)
+
+Copyright (c) 2015 AJ ONeal
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "{}"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright 2015 AJ ONeal
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/node_modules/atob/LICENSE.DOCS b/node_modules/atob/LICENSE.DOCS
new file mode 100644
index 0000000..1d658d6
--- /dev/null
+++ b/node_modules/atob/LICENSE.DOCS
@@ -0,0 +1,319 @@
+Creative Commons Legal Code
+
+Attribution 3.0 Unported
+
+    CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
+    LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN
+    ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
+    INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
+    REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR
+    DAMAGES RESULTING FROM ITS USE.
+
+License
+
+THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
+COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY
+COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS
+AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
+
+BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE
+TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY
+BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS
+CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND
+CONDITIONS.
+
+1. Definitions
+
+ a. "Adaptation" means a work based upon the Work, or upon the Work and
+    other pre-existing works, such as a translation, adaptation,
+    derivative work, arrangement of music or other alterations of a
+    literary or artistic work, or phonogram or performance and includes
+    cinematographic adaptations or any other form in which the Work may be
+    recast, transformed, or adapted including in any form recognizably
+    derived from the original, except that a work that constitutes a
+    Collection will not be considered an Adaptation for the purpose of
+    this License. For the avoidance of doubt, where the Work is a musical
+    work, performance or phonogram, the synchronization of the Work in
+    timed-relation with a moving image ("synching") will be considered an
+    Adaptation for the purpose of this License.
+ b. "Collection" means a collection of literary or artistic works, such as
+    encyclopedias and anthologies, or performances, phonograms or
+    broadcasts, or other works or subject matter other than works listed
+    in Section 1(f) below, which, by reason of the selection and
+    arrangement of their contents, constitute intellectual creations, in
+    which the Work is included in its entirety in unmodified form along
+    with one or more other contributions, each constituting separate and
+    independent works in themselves, which together are assembled into a
+    collective whole. A work that constitutes a Collection will not be
+    considered an Adaptation (as defined above) for the purposes of this
+    License.
+ c. "Distribute" means to make available to the public the original and
+    copies of the Work or Adaptation, as appropriate, through sale or
+    other transfer of ownership.
+ d. "Licensor" means the individual, individuals, entity or entities that
+    offer(s) the Work under the terms of this License.
+ e. "Original Author" means, in the case of a literary or artistic work,
+    the individual, individuals, entity or entities who created the Work
+    or if no individual or entity can be identified, the publisher; and in
+    addition (i) in the case of a performance the actors, singers,
+    musicians, dancers, and other persons who act, sing, deliver, declaim,
+    play in, interpret or otherwise perform literary or artistic works or
+    expressions of folklore; (ii) in the case of a phonogram the producer
+    being the person or legal entity who first fixes the sounds of a
+    performance or other sounds; and, (iii) in the case of broadcasts, the
+    organization that transmits the broadcast.
+ f. "Work" means the literary and/or artistic work offered under the terms
+    of this License including without limitation any production in the
+    literary, scientific and artistic domain, whatever may be the mode or
+    form of its expression including digital form, such as a book,
+    pamphlet and other writing; a lecture, address, sermon or other work
+    of the same nature; a dramatic or dramatico-musical work; a
+    choreographic work or entertainment in dumb show; a musical
+    composition with or without words; a cinematographic work to which are
+    assimilated works expressed by a process analogous to cinematography;
+    a work of drawing, painting, architecture, sculpture, engraving or
+    lithography; a photographic work to which are assimilated works
+    expressed by a process analogous to photography; a work of applied
+    art; an illustration, map, plan, sketch or three-dimensional work
+    relative to geography, topography, architecture or science; a
+    performance; a broadcast; a phonogram; a compilation of data to the
+    extent it is protected as a copyrightable work; or a work performed by
+    a variety or circus performer to the extent it is not otherwise
+    considered a literary or artistic work.
+ g. "You" means an individual or entity exercising rights under this
+    License who has not previously violated the terms of this License with
+    respect to the Work, or who has received express permission from the
+    Licensor to exercise rights under this License despite a previous
+    violation.
+ h. "Publicly Perform" means to perform public recitations of the Work and
+    to communicate to the public those public recitations, by any means or
+    process, including by wire or wireless means or public digital
+    performances; to make available to the public Works in such a way that
+    members of the public may access these Works from a place and at a
+    place individually chosen by them; to perform the Work to the public
+    by any means or process and the communication to the public of the
+    performances of the Work, including by public digital performance; to
+    broadcast and rebroadcast the Work by any means including signs,
+    sounds or images.
+ i. "Reproduce" means to make copies of the Work by any means including
+    without limitation by sound or visual recordings and the right of
+    fixation and reproducing fixations of the Work, including storage of a
+    protected performance or phonogram in digital form or other electronic
+    medium.
+
+2. Fair Dealing Rights. Nothing in this License is intended to reduce,
+limit, or restrict any uses free from copyright or rights arising from
+limitations or exceptions that are provided for in connection with the
+copyright protection under copyright law or other applicable laws.
+
+3. License Grant. Subject to the terms and conditions of this License,
+Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
+perpetual (for the duration of the applicable copyright) license to
+exercise the rights in the Work as stated below:
+
+ a. to Reproduce the Work, to incorporate the Work into one or more
+    Collections, and to Reproduce the Work as incorporated in the
+    Collections;
+ b. to create and Reproduce Adaptations provided that any such Adaptation,
+    including any translation in any medium, takes reasonable steps to
+    clearly label, demarcate or otherwise identify that changes were made
+    to the original Work. For example, a translation could be marked "The
+    original work was translated from English to Spanish," or a
+    modification could indicate "The original work has been modified.";
+ c. to Distribute and Publicly Perform the Work including as incorporated
+    in Collections; and,
+ d. to Distribute and Publicly Perform Adaptations.
+ e. For the avoidance of doubt:
+
+     i. Non-waivable Compulsory License Schemes. In those jurisdictions in
+        which the right to collect royalties through any statutory or
+        compulsory licensing scheme cannot be waived, the Licensor
+        reserves the exclusive right to collect such royalties for any
+        exercise by You of the rights granted under this License;
+    ii. Waivable Compulsory License Schemes. In those jurisdictions in
+        which the right to collect royalties through any statutory or
+        compulsory licensing scheme can be waived, the Licensor waives the
+        exclusive right to collect such royalties for any exercise by You
+        of the rights granted under this License; and,
+   iii. Voluntary License Schemes. The Licensor waives the right to
+        collect royalties, whether individually or, in the event that the
+        Licensor is a member of a collecting society that administers
+        voluntary licensing schemes, via that society, from any exercise
+        by You of the rights granted under this License.
+
+The above rights may be exercised in all media and formats whether now
+known or hereafter devised. The above rights include the right to make
+such modifications as are technically necessary to exercise the rights in
+other media and formats. Subject to Section 8(f), all rights not expressly
+granted by Licensor are hereby reserved.
+
+4. Restrictions. The license granted in Section 3 above is expressly made
+subject to and limited by the following restrictions:
+
+ a. You may Distribute or Publicly Perform the Work only under the terms
+    of this License. You must include a copy of, or the Uniform Resource
+    Identifier (URI) for, this License with every copy of the Work You
+    Distribute or Publicly Perform. You may not offer or impose any terms
+    on the Work that restrict the terms of this License or the ability of
+    the recipient of the Work to exercise the rights granted to that
+    recipient under the terms of the License. You may not sublicense the
+    Work. You must keep intact all notices that refer to this License and
+    to the disclaimer of warranties with every copy of the Work You
+    Distribute or Publicly Perform. When You Distribute or Publicly
+    Perform the Work, You may not impose any effective technological
+    measures on the Work that restrict the ability of a recipient of the
+    Work from You to exercise the rights granted to that recipient under
+    the terms of the License. This Section 4(a) applies to the Work as
+    incorporated in a Collection, but this does not require the Collection
+    apart from the Work itself to be made subject to the terms of this
+    License. If You create a Collection, upon notice from any Licensor You
+    must, to the extent practicable, remove from the Collection any credit
+    as required by Section 4(b), as requested. If You create an
+    Adaptation, upon notice from any Licensor You must, to the extent
+    practicable, remove from the Adaptation any credit as required by
+    Section 4(b), as requested.
+ b. If You Distribute, or Publicly Perform the Work or any Adaptations or
+    Collections, You must, unless a request has been made pursuant to
+    Section 4(a), keep intact all copyright notices for the Work and
+    provide, reasonable to the medium or means You are utilizing: (i) the
+    name of the Original Author (or pseudonym, if applicable) if supplied,
+    and/or if the Original Author and/or Licensor designate another party
+    or parties (e.g., a sponsor institute, publishing entity, journal) for
+    attribution ("Attribution Parties") in Licensor's copyright notice,
+    terms of service or by other reasonable means, the name of such party
+    or parties; (ii) the title of the Work if supplied; (iii) to the
+    extent reasonably practicable, the URI, if any, that Licensor
+    specifies to be associated with the Work, unless such URI does not
+    refer to the copyright notice or licensing information for the Work;
+    and (iv) , consistent with Section 3(b), in the case of an Adaptation,
+    a credit identifying the use of the Work in the Adaptation (e.g.,
+    "French translation of the Work by Original Author," or "Screenplay
+    based on original Work by Original Author"). The credit required by
+    this Section 4 (b) may be implemented in any reasonable manner;
+    provided, however, that in the case of a Adaptation or Collection, at
+    a minimum such credit will appear, if a credit for all contributing
+    authors of the Adaptation or Collection appears, then as part of these
+    credits and in a manner at least as prominent as the credits for the
+    other contributing authors. For the avoidance of doubt, You may only
+    use the credit required by this Section for the purpose of attribution
+    in the manner set out above and, by exercising Your rights under this
+    License, You may not implicitly or explicitly assert or imply any
+    connection with, sponsorship or endorsement by the Original Author,
+    Licensor and/or Attribution Parties, as appropriate, of You or Your
+    use of the Work, without the separate, express prior written
+    permission of the Original Author, Licensor and/or Attribution
+    Parties.
+ c. Except as otherwise agreed in writing by the Licensor or as may be
+    otherwise permitted by applicable law, if You Reproduce, Distribute or
+    Publicly Perform the Work either by itself or as part of any
+    Adaptations or Collections, You must not distort, mutilate, modify or
+    take other derogatory action in relation to the Work which would be
+    prejudicial to the Original Author's honor or reputation. Licensor
+    agrees that in those jurisdictions (e.g. Japan), in which any exercise
+    of the right granted in Section 3(b) of this License (the right to
+    make Adaptations) would be deemed to be a distortion, mutilation,
+    modification or other derogatory action prejudicial to the Original
+    Author's honor and reputation, the Licensor will waive or not assert,
+    as appropriate, this Section, to the fullest extent permitted by the
+    applicable national law, to enable You to reasonably exercise Your
+    right under Section 3(b) of this License (right to make Adaptations)
+    but not otherwise.
+
+5. Representations, Warranties and Disclaimer
+
+UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR
+OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY
+KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE,
+INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY,
+FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF
+LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS,
+WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION
+OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
+
+6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE
+LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR
+ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES
+ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS
+BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. Termination
+
+ a. This License and the rights granted hereunder will terminate
+    automatically upon any breach by You of the terms of this License.
+    Individuals or entities who have received Adaptations or Collections
+    from You under this License, however, will not have their licenses
+    terminated provided such individuals or entities remain in full
+    compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will
+    survive any termination of this License.
+ b. Subject to the above terms and conditions, the license granted here is
+    perpetual (for the duration of the applicable copyright in the Work).
+    Notwithstanding the above, Licensor reserves the right to release the
+    Work under different license terms or to stop distributing the Work at
+    any time; provided, however that any such election will not serve to
+    withdraw this License (or any other license that has been, or is
+    required to be, granted under the terms of this License), and this
+    License will continue in full force and effect unless terminated as
+    stated above.
+
+8. Miscellaneous
+
+ a. Each time You Distribute or Publicly Perform the Work or a Collection,
+    the Licensor offers to the recipient a license to the Work on the same
+    terms and conditions as the license granted to You under this License.
+ b. Each time You Distribute or Publicly Perform an Adaptation, Licensor
+    offers to the recipient a license to the original Work on the same
+    terms and conditions as the license granted to You under this License.
+ c. If any provision of this License is invalid or unenforceable under
+    applicable law, it shall not affect the validity or enforceability of
+    the remainder of the terms of this License, and without further action
+    by the parties to this agreement, such provision shall be reformed to
+    the minimum extent necessary to make such provision valid and
+    enforceable.
+ d. No term or provision of this License shall be deemed waived and no
+    breach consented to unless such waiver or consent shall be in writing
+    and signed by the party to be charged with such waiver or consent.
+ e. This License constitutes the entire agreement between the parties with
+    respect to the Work licensed here. There are no understandings,
+    agreements or representations with respect to the Work not specified
+    here. Licensor shall not be bound by any additional provisions that
+    may appear in any communication from You. This License may not be
+    modified without the mutual written agreement of the Licensor and You.
+ f. The rights granted under, and the subject matter referenced, in this
+    License were drafted utilizing the terminology of the Berne Convention
+    for the Protection of Literary and Artistic Works (as amended on
+    September 28, 1979), the Rome Convention of 1961, the WIPO Copyright
+    Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996
+    and the Universal Copyright Convention (as revised on July 24, 1971).
+    These rights and subject matter take effect in the relevant
+    jurisdiction in which the License terms are sought to be enforced
+    according to the corresponding provisions of the implementation of
+    those treaty provisions in the applicable national law. If the
+    standard suite of rights granted under applicable copyright law
+    includes additional rights not granted under this License, such
+    additional rights are deemed to be included in the License; this
+    License is not intended to restrict the license of any rights under
+    applicable law.
+
+
+Creative Commons Notice
+
+    Creative Commons is not a party to this License, and makes no warranty
+    whatsoever in connection with the Work. Creative Commons will not be
+    liable to You or any party on any legal theory for any damages
+    whatsoever, including without limitation any general, special,
+    incidental or consequential damages arising in connection to this
+    license. Notwithstanding the foregoing two (2) sentences, if Creative
+    Commons has expressly identified itself as the Licensor hereunder, it
+    shall have all rights and obligations of Licensor.
+
+    Except for the limited purpose of indicating to the public that the
+    Work is licensed under the CCPL, Creative Commons does not authorize
+    the use by either party of the trademark "Creative Commons" or any
+    related trademark or logo of Creative Commons without the prior
+    written consent of Creative Commons. Any permitted use will be in
+    compliance with Creative Commons' then-current trademark usage
+    guidelines, as may be published on its website or otherwise made
+    available upon request from time to time. For the avoidance of doubt,
+    this trademark restriction does not form part of this License.
+
+    Creative Commons may be contacted at http://creativecommons.org/.
diff --git a/node_modules/atob/README.md b/node_modules/atob/README.md
new file mode 100644
index 0000000..e15ef86
--- /dev/null
+++ b/node_modules/atob/README.md
@@ -0,0 +1,49 @@
+atob
+===
+
+| **atob**
+| [btoa](https://git.coolaj86.com/coolaj86/btoa.js)
+| [unibabel.js](https://git.coolaj86.com/coolaj86/unibabel.js)
+| Sponsored by [ppl](https://ppl.family)
+
+Uses `Buffer` to emulate the exact functionality of the browser's atob.
+
+Note: Unicode may be handled incorrectly (like the browser).
+
+It turns base64-encoded <strong>a</strong>scii data back **to** <strong>b</strong>inary.
+
+```javascript
+(function () {
+  "use strict";
+
+  var atob = require('atob');
+  var b64 = "SGVsbG8sIFdvcmxkIQ==";
+  var bin = atob(b64);
+
+  console.log(bin); // "Hello, World!"
+}());
+```
+
+### Need Unicode and Binary Support in the Browser?
+
+Check out [unibabel.js](https://git.coolaj86.com/coolaj86/unibabel.js)
+
+Changelog
+=======
+
+  * v2.1.0 address a few issues and PRs, update URLs
+  * v2.0.0 provide browser version for ios web workers
+  * v1.2.0 provide (empty) browser version
+  * v1.1.3 add MIT license
+  * v1.1.2 node only
+
+LICENSE
+=======
+
+Code copyright 2012-2018 AJ ONeal
+
+Dual-licensed MIT and Apache-2.0
+
+Docs copyright 2012-2018 AJ ONeal
+
+Docs released under [Creative Commons](https://git.coolaj86.com/coolaj86/atob.js/blob/master/LICENSE.DOCS).
diff --git a/node_modules/atob/bin/atob.js b/node_modules/atob/bin/atob.js
new file mode 100644
index 0000000..a56ac2e
--- /dev/null
+++ b/node_modules/atob/bin/atob.js
@@ -0,0 +1,6 @@
+#!/usr/bin/env node
+'use strict';
+
+var atob = require('../node-atob');
+var str = process.argv[2];
+console.log(atob(str));
diff --git a/node_modules/atob/bower.json b/node_modules/atob/bower.json
new file mode 100644
index 0000000..e3ef66e
--- /dev/null
+++ b/node_modules/atob/bower.json
@@ -0,0 +1,24 @@
+{
+  "name": "atob",
+  "description": "atob for isomorphic environments",
+  "main": "browser-atob.js",
+  "authors": [
+    "AJ ONeal <coolaj86@gmail.com> (https://coolaj86.com)"
+  ],
+  "license": "(MIT OR Apache-2.0)",
+  "keywords": [
+    "atob",
+    "browser"
+  ],
+  "homepage": "https://github.com/node-browser-compat/atob",
+  "moduleType": [
+    "globals"
+  ],
+  "ignore": [
+    "**/.*",
+    "node_modules",
+    "bower_components",
+    "test",
+    "tests"
+  ]
+}
diff --git a/node_modules/atob/browser-atob.js b/node_modules/atob/browser-atob.js
new file mode 100644
index 0000000..af4f357
--- /dev/null
+++ b/node_modules/atob/browser-atob.js
@@ -0,0 +1,44 @@
+(function (w) {
+  "use strict";
+
+  function findBest(atobNative) {
+    // normal window
+    if ('function' === typeof atobNative) { return atobNative; }
+
+
+    // browserify (web worker)
+    if ('function' === typeof Buffer) {
+      return function atobBrowserify(a) {
+        //!! Deliberately using an API that's deprecated in node.js because
+        //!! this file is for browsers and we expect them to cope with it.
+        //!! Discussion: github.com/node-browser-compat/atob/pull/9
+        return new Buffer(a, 'base64').toString('binary');
+      };
+    }
+
+    // ios web worker with base64js
+    if ('object' === typeof w.base64js) {
+      // bufferToBinaryString
+      // https://git.coolaj86.com/coolaj86/unibabel.js/blob/master/index.js#L50
+      return function atobWebWorker_iOS(a) {
+        var buf = w.base64js.b64ToByteArray(a);
+        return Array.prototype.map.call(buf, function (ch) {
+          return String.fromCharCode(ch);
+        }).join('');
+      };
+    }
+
+		return function () {
+			// ios web worker without base64js
+			throw new Error("You're probably in an old browser or an iOS webworker." +
+				" It might help to include beatgammit's base64-js.");
+    };
+  }
+
+  var atobBest = findBest(w.atob);
+  w.atob = atobBest;
+
+  if ((typeof module === 'object') && module && module.exports) {
+    module.exports = atobBest;
+  }
+}(window));
diff --git a/node_modules/atob/node-atob.js b/node_modules/atob/node-atob.js
new file mode 100644
index 0000000..d7305a3
--- /dev/null
+++ b/node_modules/atob/node-atob.js
@@ -0,0 +1,7 @@
+"use strict";
+
+function atob(str) {
+  return Buffer.from(str, 'base64').toString('binary');
+}
+
+module.exports = atob.atob = atob;
diff --git a/node_modules/atob/package.json b/node_modules/atob/package.json
new file mode 100644
index 0000000..79bfd9b
--- /dev/null
+++ b/node_modules/atob/package.json
@@ -0,0 +1,24 @@
+{
+  "name": "atob",
+  "homepage": "https://git.coolaj86.com/coolaj86/atob.js.git",
+  "description": "atob for Node.JS and Linux / Mac / Windows CLI (it's a one-liner)",
+  "repository": {
+    "type": "git",
+    "url": "git://git.coolaj86.com/coolaj86/atob.js.git"
+  },
+  "keywords": [
+    "atob",
+    "browser"
+  ],
+  "author": "AJ ONeal <coolaj86@gmail.com> (https://coolaj86.com)",
+  "engines": {
+    "node": ">= 4.5.0"
+  },
+  "main": "node-atob.js",
+  "browser": "browser-atob.js",
+  "bin": {
+    "atob": "bin/atob.js"
+  },
+  "license": "(MIT OR Apache-2.0)",
+  "version": "2.1.2"
+}
diff --git a/node_modules/atob/test.js b/node_modules/atob/test.js
new file mode 100644
index 0000000..bd80a4e
--- /dev/null
+++ b/node_modules/atob/test.js
@@ -0,0 +1,18 @@
+(function () {
+  "use strict";
+
+  var atob = require('.');
+  var encoded = "SGVsbG8sIFdvcmxkIQ=="
+  var unencoded = "Hello, World!";
+  /*
+    , encoded = "SGVsbG8sIBZM"
+    , unencoded = "Hello, 世界"
+  */
+
+  if (unencoded !== atob(encoded)) {
+    console.log('[FAIL]', unencoded, atob(encoded));
+    return;
+  }
+
+  console.log('[PASS] all tests pass');
+}());
diff --git a/node_modules/base64-arraybuffer/CHANGELOG.md b/node_modules/base64-arraybuffer/CHANGELOG.md
new file mode 100644
index 0000000..ba33f23
--- /dev/null
+++ b/node_modules/base64-arraybuffer/CHANGELOG.md
@@ -0,0 +1,28 @@
+# Changelog
+
+All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+
+## [1.0.2](https://github.com/niklasvh/base64-arraybuffer/compare/v1.0.1...v1.0.2) (2022-01-22)
+
+
+### fix
+
+* source maps (#33) ([bd5a8ef](https://github.com/niklasvh/base64-arraybuffer/commit/bd5a8eff3a44ea07f9b68533c477076124220ddd)), closes [#33](https://github.com/niklasvh/base64-arraybuffer/issues/33)
+
+
+
+## [1.0.1](https://github.com/niklasvh/base64-arraybuffer/compare/v1.0.0...v1.0.1) (2021-08-10)
+
+
+### fix
+
+* make lib loadable on ie9 (#30) ([a618d14](https://github.com/niklasvh/base64-arraybuffer/commit/a618d14d323f4eb230321a3609bfbc9f23f430c0)), closes [#30](https://github.com/niklasvh/base64-arraybuffer/issues/30)
+
+
+
+# [1.0.0](https://github.com/niklasvh/base64-arraybuffer/compare/v0.2.0...v1.0.0) (2021-08-10)
+
+
+### docs
+
+* update readme (#29) ([0a0253d](https://github.com/niklasvh/base64-arraybuffer/commit/0a0253dcc2e3f01a1f6d04fa81d578f714fce27f)), closes [#29](https://github.com/niklasvh/base64-arraybuffer/issues/29)
diff --git a/node_modules/base64-arraybuffer/LICENSE b/node_modules/base64-arraybuffer/LICENSE
new file mode 100644
index 0000000..ed27b41
--- /dev/null
+++ b/node_modules/base64-arraybuffer/LICENSE
@@ -0,0 +1,22 @@
+Copyright (c) 2012 Niklas von Hertzen
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/base64-arraybuffer/README.md b/node_modules/base64-arraybuffer/README.md
new file mode 100644
index 0000000..4d6ae71
--- /dev/null
+++ b/node_modules/base64-arraybuffer/README.md
@@ -0,0 +1,27 @@
+# base64-arraybuffer
+
+![CI](https://github.com/niklasvh/base64-arraybuffer/workflows/CI/badge.svg?branch=master)
+[![NPM Downloads](https://img.shields.io/npm/dm/base64-arraybuffer.svg)](https://www.npmjs.org/package/base64-arraybuffer)
+[![NPM Version](https://img.shields.io/npm/v/base64-arraybuffer.svg)](https://www.npmjs.org/package/base64-arraybuffer)
+
+Encode/decode base64 data into ArrayBuffers
+
+### Installing
+You can install the module via npm:
+
+    npm install base64-arraybuffer
+  
+## API
+The library encodes and decodes base64 to and from ArrayBuffers
+
+ - __encode(buffer)__ - Encodes `ArrayBuffer` into base64 string
+ - __decode(str)__ - Decodes base64 string to `ArrayBuffer`
+
+### Testing
+You can run the test suite with:
+
+    npm test
+
+## License
+Copyright (c) 2012 Niklas von Hertzen
+Licensed under the MIT license.
diff --git a/node_modules/base64-arraybuffer/package.json b/node_modules/base64-arraybuffer/package.json
new file mode 100644
index 0000000..2e3967c
--- /dev/null
+++ b/node_modules/base64-arraybuffer/package.json
@@ -0,0 +1,54 @@
+{
+  "name": "base64-arraybuffer",
+  "description": "Encode/decode base64 data into ArrayBuffers",
+  "main": "dist/base64-arraybuffer.umd.js",
+  "module": "dist/base64-arraybuffer.es5.js",
+  "typings": "dist/types/index.d.ts",
+  "version": "1.0.2",
+  "homepage": "https://github.com/niklasvh/base64-arraybuffer",
+  "author": {
+    "name": "Niklas von Hertzen",
+    "email": "niklasvh@gmail.com",
+    "url": "https://hertzen.com"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/niklasvh/base64-arraybuffer"
+  },
+  "bugs": {
+    "url": "https://github.com/niklasvh/base64-arraybuffer/issues"
+  },
+  "license": "MIT",
+  "engines": {
+    "node": ">= 0.6.0"
+  },
+  "scripts": {
+    "prebuild": "rimraf dist/",
+    "build": "tsc --module commonjs && rollup -c rollup.config.ts",
+    "format": "prettier --write \"{src,test}/**/*.ts\"",
+    "lint": "tslint -c tslint.json --project tsconfig.json -t codeFrame src/**/*.ts test/**/*.ts",
+    "mocha": "mocha --require ts-node/register test/*.ts",
+    "test": "npm run lint && npm run mocha",
+    "release": "standard-version"
+  },
+  "devDependencies": {
+    "@rollup/plugin-commonjs": "^19.0.0",
+    "@rollup/plugin-node-resolve": "^13.0.0",
+    "@rollup/plugin-typescript": "^8.2.1",
+    "@types/mocha": "^8.2.2",
+    "@types/node": "^16.0.0",
+    "mocha": "9.0.2",
+    "prettier": "^2.3.2",
+    "rimraf": "3.0.2",
+    "rollup": "^2.52.7",
+    "rollup-plugin-json": "^4.0.0",
+    "rollup-plugin-sourcemaps": "^0.6.3",
+    "standard-version": "^9.3.0",
+    "ts-node": "^10.0.0",
+    "tslib": "^2.3.0",
+    "tslint": "^6.1.3",
+    "tslint-config-prettier": "^1.18.0",
+    "typescript": "^4.3.5"
+  },
+  "keywords": []
+}
diff --git a/node_modules/base64-arraybuffer/rollup.config.ts b/node_modules/base64-arraybuffer/rollup.config.ts
new file mode 100644
index 0000000..652fe03
--- /dev/null
+++ b/node_modules/base64-arraybuffer/rollup.config.ts
@@ -0,0 +1,40 @@
+import resolve from '@rollup/plugin-node-resolve';
+import commonjs from '@rollup/plugin-commonjs';
+import sourceMaps from 'rollup-plugin-sourcemaps';
+import typescript from '@rollup/plugin-typescript';
+import json from 'rollup-plugin-json';
+
+const pkg = require('./package.json');
+
+const banner = `/*
+ * ${pkg.name} ${pkg.version} <${pkg.homepage}>
+ * Copyright (c) ${(new Date()).getFullYear()} ${pkg.author.name} <${pkg.author.url}>
+ * Released under ${pkg.license} License
+ */`;
+
+export default {
+    input: `src/index.ts`,
+    output: [
+        { file: pkg.main, name: pkg.name, format: 'umd', banner, sourcemap: true },
+        { file: pkg.module, format: 'esm', banner, sourcemap: true },
+    ],
+    external: [],
+    watch: {
+        include: 'src/**',
+    },
+    plugins: [
+        // Allow node_modules resolution, so you can use 'external' to control
+        // which external modules to include in the bundle
+        // https://github.com/rollup/rollup-plugin-node-resolve#usage
+        resolve(),
+        // Allow json resolution
+        json(),
+        // Compile TypeScript files
+        typescript({ sourceMap: true, inlineSources: true }),
+        // Allow bundling cjs modules (unlike webpack, rollup doesn't understand cjs)
+        commonjs(),
+
+        // Resolve source maps to the original source
+        sourceMaps(),
+    ],
+}
diff --git a/node_modules/btoa/LICENSE b/node_modules/btoa/LICENSE
new file mode 100644
index 0000000..37ec93a
--- /dev/null
+++ b/node_modules/btoa/LICENSE
@@ -0,0 +1,191 @@
+Apache License
+Version 2.0, January 2004
+http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction, and
+distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by the copyright
+owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and all other entities
+that control, are controlled by, or are under common control with that entity.
+For the purposes of this definition, "control" means (i) the power, direct or
+indirect, to cause the direction or management of such entity, whether by
+contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the
+outstanding shares, or (iii) beneficial ownership of such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity exercising
+permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications, including
+but not limited to software source code, documentation source, and configuration
+files.
+
+"Object" form shall mean any form resulting from mechanical transformation or
+translation of a Source form, including but not limited to compiled object code,
+generated documentation, and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form, made
+available under the License, as indicated by a copyright notice that is included
+in or attached to the work (an example is provided in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form, that
+is based on (or derived from) the Work and for which the editorial revisions,
+annotations, elaborations, or other modifications represent, as a whole, an
+original work of authorship. For the purposes of this License, Derivative Works
+shall not include works that remain separable from, or merely link (or bind by
+name) to the interfaces of, the Work and Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original version
+of the Work and any modifications or additions to that Work or Derivative Works
+thereof, that is intentionally submitted to Licensor for inclusion in the Work
+by the copyright owner or by an individual or Legal Entity authorized to submit
+on behalf of the copyright owner. For the purposes of this definition,
+"submitted" means any form of electronic, verbal, or written communication sent
+to the Licensor or its representatives, including but not limited to
+communication on electronic mailing lists, source code control systems, and
+issue tracking systems that are managed by, or on behalf of, the Licensor for
+the purpose of discussing and improving the Work, but excluding communication
+that is conspicuously marked or otherwise designated in writing by the copyright
+owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on behalf
+of whom a Contribution has been received by Licensor and subsequently
+incorporated within the Work.
+
+2. Grant of Copyright License.
+
+Subject to the terms and conditions of this License, each Contributor hereby
+grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
+irrevocable copyright license to reproduce, prepare Derivative Works of,
+publicly display, publicly perform, sublicense, and distribute the Work and such
+Derivative Works in Source or Object form.
+
+3. Grant of Patent License.
+
+Subject to the terms and conditions of this License, each Contributor hereby
+grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
+irrevocable (except as stated in this section) patent license to make, have
+made, use, offer to sell, sell, import, and otherwise transfer the Work, where
+such license applies only to those patent claims licensable by such Contributor
+that are necessarily infringed by their Contribution(s) alone or by combination
+of their Contribution(s) with the Work to which such Contribution(s) was
+submitted. If You institute patent litigation against any entity (including a
+cross-claim or counterclaim in a lawsuit) alleging that the Work or a
+Contribution incorporated within the Work constitutes direct or contributory
+patent infringement, then any patent licenses granted to You under this License
+for that Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution.
+
+You may reproduce and distribute copies of the Work or Derivative Works thereof
+in any medium, with or without modifications, and in Source or Object form,
+provided that You meet the following conditions:
+
+You must give any other recipients of the Work or Derivative Works a copy of
+this License; and
+You must cause any modified files to carry prominent notices stating that You
+changed the files; and
+You must retain, in the Source form of any Derivative Works that You distribute,
+all copyright, patent, trademark, and attribution notices from the Source form
+of the Work, excluding those notices that do not pertain to any part of the
+Derivative Works; and
+If the Work includes a "NOTICE" text file as part of its distribution, then any
+Derivative Works that You distribute must include a readable copy of the
+attribution notices contained within such NOTICE file, excluding those notices
+that do not pertain to any part of the Derivative Works, in at least one of the
+following places: within a NOTICE text file distributed as part of the
+Derivative Works; within the Source form or documentation, if provided along
+with the Derivative Works; or, within a display generated by the Derivative
+Works, if and wherever such third-party notices normally appear. The contents of
+the NOTICE file are for informational purposes only and do not modify the
+License. You may add Your own attribution notices within Derivative Works that
+You distribute, alongside or as an addendum to the NOTICE text from the Work,
+provided that such additional attribution notices cannot be construed as
+modifying the License.
+You may add Your own copyright statement to Your modifications and may provide
+additional or different license terms and conditions for use, reproduction, or
+distribution of Your modifications, or for any such Derivative Works as a whole,
+provided Your use, reproduction, and distribution of the Work otherwise complies
+with the conditions stated in this License.
+
+5. Submission of Contributions.
+
+Unless You explicitly state otherwise, any Contribution intentionally submitted
+for inclusion in the Work by You to the Licensor shall be under the terms and
+conditions of this License, without any additional terms or conditions.
+Notwithstanding the above, nothing herein shall supersede or modify the terms of
+any separate license agreement you may have executed with Licensor regarding
+such Contributions.
+
+6. Trademarks.
+
+This License does not grant permission to use the trade names, trademarks,
+service marks, or product names of the Licensor, except as required for
+reasonable and customary use in describing the origin of the Work and
+reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty.
+
+Unless required by applicable law or agreed to in writing, Licensor provides the
+Work (and each Contributor provides its Contributions) on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
+including, without limitation, any warranties or conditions of TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
+solely responsible for determining the appropriateness of using or
+redistributing the Work and assume any risks associated with Your exercise of
+permissions under this License.
+
+8. Limitation of Liability.
+
+In no event and under no legal theory, whether in tort (including negligence),
+contract, or otherwise, unless required by applicable law (such as deliberate
+and grossly negligent acts) or agreed to in writing, shall any Contributor be
+liable to You for damages, including any direct, indirect, special, incidental,
+or consequential damages of any character arising as a result of this License or
+out of the use or inability to use the Work (including but not limited to
+damages for loss of goodwill, work stoppage, computer failure or malfunction, or
+any and all other commercial damages or losses), even if such Contributor has
+been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability.
+
+While redistributing the Work or Derivative Works thereof, You may choose to
+offer, and charge a fee for, acceptance of support, warranty, indemnity, or
+other liability obligations and/or rights consistent with this License. However,
+in accepting such obligations, You may act only on Your own behalf and on Your
+sole responsibility, not on behalf of any other Contributor, and only if You
+agree to indemnify, defend, and hold each Contributor harmless for any liability
+incurred by, or claims asserted against, such Contributor by reason of your
+accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work
+
+To apply the Apache License to your work, attach the following boilerplate
+notice, with the fields enclosed by brackets "[]" replaced with your own
+identifying information. (Don't include the brackets!) The text should be
+enclosed in the appropriate comment syntax for the file format. We also
+recommend that a file or class name and description of purpose be included on
+the same "printed page" as the copyright notice for easier identification within
+third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/node_modules/btoa/LICENSE.DOCS b/node_modules/btoa/LICENSE.DOCS
new file mode 100644
index 0000000..1d658d6
--- /dev/null
+++ b/node_modules/btoa/LICENSE.DOCS
@@ -0,0 +1,319 @@
+Creative Commons Legal Code
+
+Attribution 3.0 Unported
+
+    CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
+    LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN
+    ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
+    INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
+    REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR
+    DAMAGES RESULTING FROM ITS USE.
+
+License
+
+THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
+COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY
+COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS
+AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
+
+BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE
+TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY
+BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS
+CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND
+CONDITIONS.
+
+1. Definitions
+
+ a. "Adaptation" means a work based upon the Work, or upon the Work and
+    other pre-existing works, such as a translation, adaptation,
+    derivative work, arrangement of music or other alterations of a
+    literary or artistic work, or phonogram or performance and includes
+    cinematographic adaptations or any other form in which the Work may be
+    recast, transformed, or adapted including in any form recognizably
+    derived from the original, except that a work that constitutes a
+    Collection will not be considered an Adaptation for the purpose of
+    this License. For the avoidance of doubt, where the Work is a musical
+    work, performance or phonogram, the synchronization of the Work in
+    timed-relation with a moving image ("synching") will be considered an
+    Adaptation for the purpose of this License.
+ b. "Collection" means a collection of literary or artistic works, such as
+    encyclopedias and anthologies, or performances, phonograms or
+    broadcasts, or other works or subject matter other than works listed
+    in Section 1(f) below, which, by reason of the selection and
+    arrangement of their contents, constitute intellectual creations, in
+    which the Work is included in its entirety in unmodified form along
+    with one or more other contributions, each constituting separate and
+    independent works in themselves, which together are assembled into a
+    collective whole. A work that constitutes a Collection will not be
+    considered an Adaptation (as defined above) for the purposes of this
+    License.
+ c. "Distribute" means to make available to the public the original and
+    copies of the Work or Adaptation, as appropriate, through sale or
+    other transfer of ownership.
+ d. "Licensor" means the individual, individuals, entity or entities that
+    offer(s) the Work under the terms of this License.
+ e. "Original Author" means, in the case of a literary or artistic work,
+    the individual, individuals, entity or entities who created the Work
+    or if no individual or entity can be identified, the publisher; and in
+    addition (i) in the case of a performance the actors, singers,
+    musicians, dancers, and other persons who act, sing, deliver, declaim,
+    play in, interpret or otherwise perform literary or artistic works or
+    expressions of folklore; (ii) in the case of a phonogram the producer
+    being the person or legal entity who first fixes the sounds of a
+    performance or other sounds; and, (iii) in the case of broadcasts, the
+    organization that transmits the broadcast.
+ f. "Work" means the literary and/or artistic work offered under the terms
+    of this License including without limitation any production in the
+    literary, scientific and artistic domain, whatever may be the mode or
+    form of its expression including digital form, such as a book,
+    pamphlet and other writing; a lecture, address, sermon or other work
+    of the same nature; a dramatic or dramatico-musical work; a
+    choreographic work or entertainment in dumb show; a musical
+    composition with or without words; a cinematographic work to which are
+    assimilated works expressed by a process analogous to cinematography;
+    a work of drawing, painting, architecture, sculpture, engraving or
+    lithography; a photographic work to which are assimilated works
+    expressed by a process analogous to photography; a work of applied
+    art; an illustration, map, plan, sketch or three-dimensional work
+    relative to geography, topography, architecture or science; a
+    performance; a broadcast; a phonogram; a compilation of data to the
+    extent it is protected as a copyrightable work; or a work performed by
+    a variety or circus performer to the extent it is not otherwise
+    considered a literary or artistic work.
+ g. "You" means an individual or entity exercising rights under this
+    License who has not previously violated the terms of this License with
+    respect to the Work, or who has received express permission from the
+    Licensor to exercise rights under this License despite a previous
+    violation.
+ h. "Publicly Perform" means to perform public recitations of the Work and
+    to communicate to the public those public recitations, by any means or
+    process, including by wire or wireless means or public digital
+    performances; to make available to the public Works in such a way that
+    members of the public may access these Works from a place and at a
+    place individually chosen by them; to perform the Work to the public
+    by any means or process and the communication to the public of the
+    performances of the Work, including by public digital performance; to
+    broadcast and rebroadcast the Work by any means including signs,
+    sounds or images.
+ i. "Reproduce" means to make copies of the Work by any means including
+    without limitation by sound or visual recordings and the right of
+    fixation and reproducing fixations of the Work, including storage of a
+    protected performance or phonogram in digital form or other electronic
+    medium.
+
+2. Fair Dealing Rights. Nothing in this License is intended to reduce,
+limit, or restrict any uses free from copyright or rights arising from
+limitations or exceptions that are provided for in connection with the
+copyright protection under copyright law or other applicable laws.
+
+3. License Grant. Subject to the terms and conditions of this License,
+Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
+perpetual (for the duration of the applicable copyright) license to
+exercise the rights in the Work as stated below:
+
+ a. to Reproduce the Work, to incorporate the Work into one or more
+    Collections, and to Reproduce the Work as incorporated in the
+    Collections;
+ b. to create and Reproduce Adaptations provided that any such Adaptation,
+    including any translation in any medium, takes reasonable steps to
+    clearly label, demarcate or otherwise identify that changes were made
+    to the original Work. For example, a translation could be marked "The
+    original work was translated from English to Spanish," or a
+    modification could indicate "The original work has been modified.";
+ c. to Distribute and Publicly Perform the Work including as incorporated
+    in Collections; and,
+ d. to Distribute and Publicly Perform Adaptations.
+ e. For the avoidance of doubt:
+
+     i. Non-waivable Compulsory License Schemes. In those jurisdictions in
+        which the right to collect royalties through any statutory or
+        compulsory licensing scheme cannot be waived, the Licensor
+        reserves the exclusive right to collect such royalties for any
+        exercise by You of the rights granted under this License;
+    ii. Waivable Compulsory License Schemes. In those jurisdictions in
+        which the right to collect royalties through any statutory or
+        compulsory licensing scheme can be waived, the Licensor waives the
+        exclusive right to collect such royalties for any exercise by You
+        of the rights granted under this License; and,
+   iii. Voluntary License Schemes. The Licensor waives the right to
+        collect royalties, whether individually or, in the event that the
+        Licensor is a member of a collecting society that administers
+        voluntary licensing schemes, via that society, from any exercise
+        by You of the rights granted under this License.
+
+The above rights may be exercised in all media and formats whether now
+known or hereafter devised. The above rights include the right to make
+such modifications as are technically necessary to exercise the rights in
+other media and formats. Subject to Section 8(f), all rights not expressly
+granted by Licensor are hereby reserved.
+
+4. Restrictions. The license granted in Section 3 above is expressly made
+subject to and limited by the following restrictions:
+
+ a. You may Distribute or Publicly Perform the Work only under the terms
+    of this License. You must include a copy of, or the Uniform Resource
+    Identifier (URI) for, this License with every copy of the Work You
+    Distribute or Publicly Perform. You may not offer or impose any terms
+    on the Work that restrict the terms of this License or the ability of
+    the recipient of the Work to exercise the rights granted to that
+    recipient under the terms of the License. You may not sublicense the
+    Work. You must keep intact all notices that refer to this License and
+    to the disclaimer of warranties with every copy of the Work You
+    Distribute or Publicly Perform. When You Distribute or Publicly
+    Perform the Work, You may not impose any effective technological
+    measures on the Work that restrict the ability of a recipient of the
+    Work from You to exercise the rights granted to that recipient under
+    the terms of the License. This Section 4(a) applies to the Work as
+    incorporated in a Collection, but this does not require the Collection
+    apart from the Work itself to be made subject to the terms of this
+    License. If You create a Collection, upon notice from any Licensor You
+    must, to the extent practicable, remove from the Collection any credit
+    as required by Section 4(b), as requested. If You create an
+    Adaptation, upon notice from any Licensor You must, to the extent
+    practicable, remove from the Adaptation any credit as required by
+    Section 4(b), as requested.
+ b. If You Distribute, or Publicly Perform the Work or any Adaptations or
+    Collections, You must, unless a request has been made pursuant to
+    Section 4(a), keep intact all copyright notices for the Work and
+    provide, reasonable to the medium or means You are utilizing: (i) the
+    name of the Original Author (or pseudonym, if applicable) if supplied,
+    and/or if the Original Author and/or Licensor designate another party
+    or parties (e.g., a sponsor institute, publishing entity, journal) for
+    attribution ("Attribution Parties") in Licensor's copyright notice,
+    terms of service or by other reasonable means, the name of such party
+    or parties; (ii) the title of the Work if supplied; (iii) to the
+    extent reasonably practicable, the URI, if any, that Licensor
+    specifies to be associated with the Work, unless such URI does not
+    refer to the copyright notice or licensing information for the Work;
+    and (iv) , consistent with Section 3(b), in the case of an Adaptation,
+    a credit identifying the use of the Work in the Adaptation (e.g.,
+    "French translation of the Work by Original Author," or "Screenplay
+    based on original Work by Original Author"). The credit required by
+    this Section 4 (b) may be implemented in any reasonable manner;
+    provided, however, that in the case of a Adaptation or Collection, at
+    a minimum such credit will appear, if a credit for all contributing
+    authors of the Adaptation or Collection appears, then as part of these
+    credits and in a manner at least as prominent as the credits for the
+    other contributing authors. For the avoidance of doubt, You may only
+    use the credit required by this Section for the purpose of attribution
+    in the manner set out above and, by exercising Your rights under this
+    License, You may not implicitly or explicitly assert or imply any
+    connection with, sponsorship or endorsement by the Original Author,
+    Licensor and/or Attribution Parties, as appropriate, of You or Your
+    use of the Work, without the separate, express prior written
+    permission of the Original Author, Licensor and/or Attribution
+    Parties.
+ c. Except as otherwise agreed in writing by the Licensor or as may be
+    otherwise permitted by applicable law, if You Reproduce, Distribute or
+    Publicly Perform the Work either by itself or as part of any
+    Adaptations or Collections, You must not distort, mutilate, modify or
+    take other derogatory action in relation to the Work which would be
+    prejudicial to the Original Author's honor or reputation. Licensor
+    agrees that in those jurisdictions (e.g. Japan), in which any exercise
+    of the right granted in Section 3(b) of this License (the right to
+    make Adaptations) would be deemed to be a distortion, mutilation,
+    modification or other derogatory action prejudicial to the Original
+    Author's honor and reputation, the Licensor will waive or not assert,
+    as appropriate, this Section, to the fullest extent permitted by the
+    applicable national law, to enable You to reasonably exercise Your
+    right under Section 3(b) of this License (right to make Adaptations)
+    but not otherwise.
+
+5. Representations, Warranties and Disclaimer
+
+UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR
+OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY
+KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE,
+INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY,
+FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF
+LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS,
+WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION
+OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
+
+6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE
+LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR
+ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES
+ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS
+BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. Termination
+
+ a. This License and the rights granted hereunder will terminate
+    automatically upon any breach by You of the terms of this License.
+    Individuals or entities who have received Adaptations or Collections
+    from You under this License, however, will not have their licenses
+    terminated provided such individuals or entities remain in full
+    compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will
+    survive any termination of this License.
+ b. Subject to the above terms and conditions, the license granted here is
+    perpetual (for the duration of the applicable copyright in the Work).
+    Notwithstanding the above, Licensor reserves the right to release the
+    Work under different license terms or to stop distributing the Work at
+    any time; provided, however that any such election will not serve to
+    withdraw this License (or any other license that has been, or is
+    required to be, granted under the terms of this License), and this
+    License will continue in full force and effect unless terminated as
+    stated above.
+
+8. Miscellaneous
+
+ a. Each time You Distribute or Publicly Perform the Work or a Collection,
+    the Licensor offers to the recipient a license to the Work on the same
+    terms and conditions as the license granted to You under this License.
+ b. Each time You Distribute or Publicly Perform an Adaptation, Licensor
+    offers to the recipient a license to the original Work on the same
+    terms and conditions as the license granted to You under this License.
+ c. If any provision of this License is invalid or unenforceable under
+    applicable law, it shall not affect the validity or enforceability of
+    the remainder of the terms of this License, and without further action
+    by the parties to this agreement, such provision shall be reformed to
+    the minimum extent necessary to make such provision valid and
+    enforceable.
+ d. No term or provision of this License shall be deemed waived and no
+    breach consented to unless such waiver or consent shall be in writing
+    and signed by the party to be charged with such waiver or consent.
+ e. This License constitutes the entire agreement between the parties with
+    respect to the Work licensed here. There are no understandings,
+    agreements or representations with respect to the Work not specified
+    here. Licensor shall not be bound by any additional provisions that
+    may appear in any communication from You. This License may not be
+    modified without the mutual written agreement of the Licensor and You.
+ f. The rights granted under, and the subject matter referenced, in this
+    License were drafted utilizing the terminology of the Berne Convention
+    for the Protection of Literary and Artistic Works (as amended on
+    September 28, 1979), the Rome Convention of 1961, the WIPO Copyright
+    Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996
+    and the Universal Copyright Convention (as revised on July 24, 1971).
+    These rights and subject matter take effect in the relevant
+    jurisdiction in which the License terms are sought to be enforced
+    according to the corresponding provisions of the implementation of
+    those treaty provisions in the applicable national law. If the
+    standard suite of rights granted under applicable copyright law
+    includes additional rights not granted under this License, such
+    additional rights are deemed to be included in the License; this
+    License is not intended to restrict the license of any rights under
+    applicable law.
+
+
+Creative Commons Notice
+
+    Creative Commons is not a party to this License, and makes no warranty
+    whatsoever in connection with the Work. Creative Commons will not be
+    liable to You or any party on any legal theory for any damages
+    whatsoever, including without limitation any general, special,
+    incidental or consequential damages arising in connection to this
+    license. Notwithstanding the foregoing two (2) sentences, if Creative
+    Commons has expressly identified itself as the Licensor hereunder, it
+    shall have all rights and obligations of Licensor.
+
+    Except for the limited purpose of indicating to the public that the
+    Work is licensed under the CCPL, Creative Commons does not authorize
+    the use by either party of the trademark "Creative Commons" or any
+    related trademark or logo of Creative Commons without the prior
+    written consent of Creative Commons. Any permitted use will be in
+    compliance with Creative Commons' then-current trademark usage
+    guidelines, as may be published on its website or otherwise made
+    available upon request from time to time. For the avoidance of doubt,
+    this trademark restriction does not form part of this License.
+
+    Creative Commons may be contacted at http://creativecommons.org/.
diff --git a/node_modules/btoa/README.md b/node_modules/btoa/README.md
new file mode 100644
index 0000000..073691d
--- /dev/null
+++ b/node_modules/btoa/README.md
@@ -0,0 +1,40 @@
+btoa
+===
+
+| [atob](https://git.coolaj86.com/coolaj86/atob.js)
+| **btoa**
+| [unibabel.js](https://git.coolaj86.com/coolaj86/unibabel.js)
+| Sponsored by [ppl](https://ppl.family)
+
+A port of the browser's `btoa` function.
+
+Uses `Buffer` to emulate the exact functionality of the browser's btoa
+(except that it supports some unicode that the browser may not).
+
+It turns <strong>b</strong>inary data __to__ base64-encoded <strong>a</strong>scii.
+
+```js
+(function () {
+  "use strict";
+
+  var btoa = require('btoa');
+  var bin = "Hello, 世界";
+  var b64 = btoa(bin);
+
+  console.log(b64); // "SGVsbG8sIBZM"
+}());
+```
+
+**Note**: Unicode may or may not be handled incorrectly.
+This module is intended to provide exact compatibility with the browser.
+
+Copyright and License
+===
+
+Code copyright 2012-2018 AJ ONeal
+
+Dual-licensed MIT and Apache-2.0
+
+Docs copyright 2012-2018 AJ ONeal
+
+Docs released under [Creative Commons](https://git.coolaj86.com/coolaj86/btoa.js/blob/master/LICENSE.DOCS).
diff --git a/node_modules/btoa/bin/btoa.js b/node_modules/btoa/bin/btoa.js
new file mode 100644
index 0000000..a237ce2
--- /dev/null
+++ b/node_modules/btoa/bin/btoa.js
@@ -0,0 +1,8 @@
+#!/usr/bin/env node
+(function () {
+  "use strict";
+
+  var btoa = require('../index');
+
+  console.log(btoa(process.argv[2]));
+}());
diff --git a/node_modules/btoa/index.js b/node_modules/btoa/index.js
new file mode 100644
index 0000000..34b8f15
--- /dev/null
+++ b/node_modules/btoa/index.js
@@ -0,0 +1,17 @@
+(function () {
+  "use strict";
+
+  function btoa(str) {
+    var buffer;
+
+    if (str instanceof Buffer) {
+      buffer = str;
+    } else {
+      buffer = Buffer.from(str.toString(), 'binary');
+    }
+
+    return buffer.toString('base64');
+  }
+
+  module.exports = btoa;
+}());
diff --git a/node_modules/btoa/package.json b/node_modules/btoa/package.json
new file mode 100644
index 0000000..e38902b
--- /dev/null
+++ b/node_modules/btoa/package.json
@@ -0,0 +1,23 @@
+{
+  "name": "btoa",
+  "homepage": "https://git.coolaj86.com/coolaj86/btoa.js.git",
+  "description": "btoa for Node.JS (it's a one-liner)",
+  "repository": {
+    "type": "git",
+    "url": "git://git.coolaj86.com/coolaj86/btoa.js.git"
+  },
+  "keywords": [
+    "btoa",
+    "browser"
+  ],
+  "author": "AJ ONeal <coolaj86@gmail.com> (https://coolaj86.com)",
+  "engines": {
+    "node": ">= 0.4.0"
+  },
+  "bin": {
+    "btoa": "bin/btoa.js"
+  },
+  "main": "index",
+  "license": "(MIT OR Apache-2.0)",
+  "version": "1.2.1"
+}
diff --git a/node_modules/btoa/test.js b/node_modules/btoa/test.js
new file mode 100644
index 0000000..d57f94e
--- /dev/null
+++ b/node_modules/btoa/test.js
@@ -0,0 +1,16 @@
+/*jshint strict:true node:true es5:true onevar:true laxcomma:true laxbreak:true eqeqeq:true immed:true latedef:true*/
+(function () {
+  "use strict";
+
+  var btoa = require('./index')
+    , encoded = "SGVsbG8sIBZM"
+    , unencoded = "Hello, 世界"
+    ;
+
+  if (encoded !== btoa(unencoded)) {
+    console.error('[FAIL]', encoded, btoa(unencoded));
+    return;
+  }
+
+  console.log('[PASS] all tests pass');
+}());
diff --git a/node_modules/canvg/LICENSE b/node_modules/canvg/LICENSE
new file mode 100644
index 0000000..9e2d890
--- /dev/null
+++ b/node_modules/canvg/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2010 - present Gabe Lerner (gabelerner@gmail.com) - https://github.com/canvg/canvg
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/canvg/README.md b/node_modules/canvg/README.md
new file mode 100644
index 0000000..e1d8a4c
--- /dev/null
+++ b/node_modules/canvg/README.md
@@ -0,0 +1,314 @@
+# canvg
+
+[![NPM version][npm]][npm-url]
+[![Dependencies status][deps]][deps-url]
+[![Build status][build]][build-url]
+[![Coverage status][coverage]][coverage-url]
+[![Dependabot badge][dependabot]][dependabot-url]
+[![Documentation badge][documentation]][documentation-url]
+
+[npm]: https://img.shields.io/npm/v/canvg.svg
+[npm-url]: https://npmjs.com/package/canvg
+
+[deps]: https://david-dm.org/canvg/canvg.svg
+[deps-url]: https://david-dm.org/canvg/canvg
+
+[build]: https://img.shields.io/github/workflow/status/canvg/canvg/CI.svg
+[build-url]: https://github.com/canvg/canvg/actions
+
+[coverage]: https://img.shields.io/coveralls/canvg/canvg.svg
+[coverage-url]: https://coveralls.io/r/canvg/canvg
+
+[dependabot]: https://api.dependabot.com/badges/status?host=github&repo=canvg/canvg
+[dependabot-url]: https://dependabot.com/
+
+[documentation]: https://img.shields.io/badge/API-Documentation-2b7489.svg
+[documentation-url]: https://canvg.github.io/canvg
+
+JavaScript SVG parser and renderer on Canvas. It takes the URL to the SVG file or the text of the SVG file, parses it in JavaScript and renders the result on Canvas.
+
+[Demo](https://canvg.github.io/canvg/demo/index.html)
+
+[Playground](https://jsfiddle.net/0q1vrjxk/)
+
+## Install
+
+```sh
+npm i canvg
+# or
+yarn add canvg
+```
+
+## Usage
+
+Basic module exports:
+
+```js
+export default Canvg;
+export {
+    presets
+};
+```
+
+[Description of all exports you can find in Documentation.](https://canvg.github.io/canvg/index.html)
+
+### Example
+
+```js
+import Canvg from 'canvg';
+
+let v = null;
+
+window.onload = async () => {
+    const canvas = document.querySelector('canvas');
+    const ctx = canvas.getContext('2d');
+    
+    v = await Canvg.from(ctx, './svgs/1.svg');
+
+    // Start SVG rendering with animations and mouse handling.
+    v.start();
+};
+
+window.onbeforeunload = () => {
+    v.stop();
+};
+```
+
+<details>
+    <summary>
+        <b>OffscreenCanvas</b>
+    </summary>
+
+```js
+import Canvg, {
+    presets
+} from 'canvg';
+
+self.onmessage = async (event) => {
+    const {
+        width,
+        height,
+        svg
+    } = event.data;
+    const canvas = new OffscreenCanvas(width, height);
+    const ctx = canvas.getContext('2d');
+    const v = await Canvg.from(ctx, svg, presets.offscreen());
+
+    // Render only first frame, ignoring animations and mouse.
+    await v.render();
+
+    const blob = await canvas.convertToBlob();
+    const pngUrl = URL.createObjectURL(blob);
+
+    self.postMessage({
+        pngUrl
+    });
+};
+```
+
+[`OffscreenCanvas` browsers compatibility.](https://caniuse.com/offscreencanvas)
+
+</details>
+
+<details>
+    <summary>
+        <b>NodeJS</b>
+    </summary>
+
+```js
+import {
+    promises as fs
+} from 'fs';
+import {
+    DOMParser
+} from 'xmldom';
+import * as canvas from 'canvas';
+import fetch from 'node-fetch';
+import Canvg, {
+    presets
+} from 'canvg';
+
+const preset = presets.node({
+    DOMParser,
+    canvas,
+    fetch
+});
+
+(async (output, input) => {
+    const svg = await fs.readFile(input, 'utf8');
+    const canvas = preset.createCanvas(800, 600);
+    const ctx = canvas.getContext('2d');
+    const v = Canvg.fromString(ctx, svg, preset);
+
+    // Render only first frame, ignoring animations.
+    await v.render();
+
+    const png = canvas.toBuffer();
+
+    await fs.writeFile(output, png);
+
+})(
+    process.argv.pop(),
+    process.argv.pop()
+);
+```
+
+</details>
+
+<details>
+    <summary>
+        <b>Resize</b>
+    </summary>
+
+```js
+import Canvg, {
+    presets
+} from 'canvg';
+
+self.onmessage = async (event) => {
+    const {
+        width,
+        height,
+        svg
+    } = event.data;
+    const canvas = new OffscreenCanvas(width, height);
+    const ctx = canvas.getContext('2d');
+    const v = await Canvg.from(ctx, svg, presets.offscreen());
+
+    /**
+     * Resize SVG to fit in given size.
+     * @param width
+     * @param height
+     * @param preserveAspectRatio
+     */
+    v.resize(width, height, 'xMidYMid meet');
+
+    // Render only first frame, ignoring animations and mouse.
+    await v.render();
+
+    const blob = await canvas.convertToBlob();
+    const pngUrl = URL.createObjectURL(blob);
+
+    self.postMessage({
+        pngUrl
+    });
+};
+```
+
+</details>
+
+<details>
+    <summary>
+        <b>Browser</b>
+    </summary>
+
+```html
+<script type="text/javascript" src="https://unpkg.com/canvg@3.0.4/lib/umd.js"></script>
+<script type="text/javascript">
+window.onload = () => {
+    const canvas = document.querySelector('canvas');
+    const ctx = canvas.getContext('2d');
+    
+    v = canvg.Canvg.fromString(ctx, '<svg width="600" height="600"><text x="50" y="50">Hello World!</text></svg>');
+
+    // Start SVG rendering with animations and mouse handling.
+    v.start();
+
+};
+</script>
+<canvas />
+```
+
+</details>
+
+### Options
+
+The third parameter of `new Canvg(...)`, `Canvg.from(...)` and `Canvg.fromString(...)` is options:
+
+```ts
+interface IOptions {
+    /**
+     * WHATWG-compatible `fetch` function.
+     */
+    fetch?: typeof fetch;
+    /**
+     * XML/HTML parser from string into DOM Document.
+     */
+    DOMParser?: typeof DOMParser;
+    /**
+     * Window object.
+     */
+    window?: Window;
+    /**
+     * Whether enable the redraw.
+     */
+    enableRedraw?: boolean;
+    /**
+     * Ignore mouse events.
+     */
+    ignoreMouse?: boolean;
+    /**
+     * Ignore animations.
+     */
+    ignoreAnimation?: boolean;
+    /**
+     * Does not try to resize canvas.
+     */
+    ignoreDimensions?: boolean;
+    /**
+     * Does not clear canvas.
+     */
+    ignoreClear?: boolean;
+    /**
+     * Scales horizontally to width.
+     */
+    scaleWidth?: number;
+    /**
+     * Scales vertically to height.
+     */
+    scaleHeight?: number;
+    /**
+     * Draws at a x offset.
+     */
+    offsetX?: number;
+    /**
+     * Draws at a y offset.
+     */
+    offsetY?: number;
+    /**
+     * Will call the function on every frame, if it returns true, will redraw.
+     */
+    forceRedraw?(): boolean;
+    /**
+     * Default `rem` size.
+     */
+    rootEmSize?: number;
+    /**
+     * Default `em` size.
+     */
+    emSize?: number;
+    /**
+     * Function to create new canvas.
+     */
+    createCanvas?: (width: number, height: number) => HTMLCanvasElement | OffscreenCanvas;
+    /**
+     * Function to create new image.
+     */
+    createImage?: (src: string, anonymousCrossOrigin?: boolean) => Promise<CanvasImageSource>;
+    /**
+     * Load images anonymously.
+     */
+    anonymousCrossOrigin?: boolean;
+}
+```
+
+#### Options presets
+
+There are two options presets:
+
+- `presets.offscreen()`: options for [`OffscreenCanvas`](https://developer.mozilla.org/en-US/docs/Web/API/OffscreenCanvas);
+- `presets.node({ DOMParser, canvas, fetch })`: options for NodeJS with [`node-canvas`](https://github.com/Automattic/node-canvas).
+
+## What's implemented?
+
+The end goal is everything from the [SVG spec](http://www.w3.org/TR/SVG/). The majority of the rendering and animation is working. If you would like to see a feature implemented, don't hesitate to add it to the issues list, or better is to create pull request 😎
diff --git a/node_modules/canvg/lib/BoundingBox.d.ts b/node_modules/canvg/lib/BoundingBox.d.ts
new file mode 100644
index 0000000..317ba1f
--- /dev/null
+++ b/node_modules/canvg/lib/BoundingBox.d.ts
@@ -0,0 +1,21 @@
+export default class BoundingBox {
+    x1: number;
+    y1: number;
+    x2: number;
+    y2: number;
+    constructor(x1?: number, y1?: number, x2?: number, y2?: number);
+    get x(): number;
+    get y(): number;
+    get width(): number;
+    get height(): number;
+    addPoint(x: number, y: number): void;
+    addX(x: number): void;
+    addY(y: number): void;
+    addBoundingBox(boundingBox: BoundingBox): void;
+    private sumCubic;
+    private bezierCurveAdd;
+    addBezierCurve(p0x: number, p0y: number, p1x: number, p1y: number, p2x: number, p2y: number, p3x: number, p3y: number): void;
+    addQuadraticCurve(p0x: number, p0y: number, p1x: number, p1y: number, p2x: number, p2y: number): void;
+    isPointInBox(x: number, y: number): boolean;
+}
+//# sourceMappingURL=BoundingBox.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/BoundingBox.d.ts.map b/node_modules/canvg/lib/BoundingBox.d.ts.map
new file mode 100644
index 0000000..b492992
--- /dev/null
+++ b/node_modules/canvg/lib/BoundingBox.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"BoundingBox.d.ts","sourceRoot":"","sources":["../src/BoundingBox.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,OAAO,OAAO,WAAW;IAEvB,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;gBAHF,EAAE,SAAa,EACf,EAAE,SAAa,EACf,EAAE,SAAa,EACf,EAAE,SAAa;IAMvB,IAAI,CAAC,WAEJ;IAED,IAAI,CAAC,WAEJ;IAED,IAAI,KAAK,WAER;IAED,IAAI,MAAM,WAET;IAED,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAgC7B,IAAI,CAAC,CAAC,EAAE,MAAM;IAId,IAAI,CAAC,CAAC,EAAE,MAAM;IAId,cAAc,CAAC,WAAW,EAAE,WAAW;IAgBvC,OAAO,CAAC,QAAQ;IAehB,OAAO,CAAC,cAAc;IA6DtB,cAAc,CACb,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM;IAQZ,iBAAiB,CAChB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM;IAUZ,YAAY,CACX,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM;CAgBV"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Canvg.d.ts b/node_modules/canvg/lib/Canvg.d.ts
new file mode 100644
index 0000000..ed7caf3
--- /dev/null
+++ b/node_modules/canvg/lib/Canvg.d.ts
@@ -0,0 +1,98 @@
+import { RenderingContext2D } from './types';
+import Parser, { IParserOptions } from './Parser';
+import Screen, { IScreenOptions, IScreenStartOptions } from './Screen';
+import Document, { IDocumentOptions } from './Document';
+declare type DOMDocument = typeof window.document;
+export interface IOptions extends IParserOptions, IScreenOptions, IScreenStartOptions, IDocumentOptions {
+}
+/**
+ * SVG renderer on canvas.
+ */
+export default class Canvg {
+    /**
+     * Create Canvg instance from SVG source string or URL.
+     * @param ctx - Rendering context.
+     * @param svg - SVG source string or URL.
+     * @param options - Rendering options.
+     * @returns Canvg instance.
+     */
+    static from(ctx: RenderingContext2D, svg: string, options?: IOptions): Promise<Canvg>;
+    /**
+     * Create Canvg instance from SVG source string.
+     * @param ctx - Rendering context.
+     * @param svg - SVG source string.
+     * @param options - Rendering options.
+     * @returns Canvg instance.
+     */
+    static fromString(ctx: RenderingContext2D, svg: string, options?: IOptions): Canvg;
+    /**
+     * XML/HTML parser instance.
+     */
+    readonly parser: Parser;
+    /**
+     * Screen instance.
+     */
+    readonly screen: Screen;
+    /**
+     * Canvg Document.
+     */
+    readonly document: Document;
+    private readonly documentElement;
+    private readonly options;
+    /**
+     * Main constructor.
+     * @param ctx - Rendering context.
+     * @param svg - SVG Document.
+     * @param options - Rendering options.
+     */
+    constructor(ctx: RenderingContext2D, svg: DOMDocument, options?: IOptions);
+    /**
+     * Create new Canvg instance with inherited options.
+     * @param ctx - Rendering context.
+     * @param svg - SVG source string or URL.
+     * @param options - Rendering options.
+     * @returns Canvg instance.
+     */
+    fork(ctx: RenderingContext2D, svg: string, options?: IOptions): Promise<Canvg>;
+    /**
+     * Create new Canvg instance with inherited options.
+     * @param ctx - Rendering context.
+     * @param svg - SVG source string.
+     * @param options - Rendering options.
+     * @returns Canvg instance.
+     */
+    forkString(ctx: RenderingContext2D, svg: string, options?: IOptions): Canvg;
+    /**
+     * Document is ready promise.
+     * @returns Ready promise.
+     */
+    ready(): Promise<void>;
+    /**
+     * Document is ready value.
+     * @returns Is ready or not.
+     */
+    isReady(): boolean;
+    /**
+     * Render only first frame, ignoring animations and mouse.
+     * @param options - Rendering options.
+     */
+    render(options?: IScreenStartOptions): Promise<void>;
+    /**
+     * Start rendering.
+     * @param options - Render options.
+     */
+    start(options?: IScreenStartOptions): void;
+    /**
+     * Stop rendering.
+     */
+    stop(): void;
+    /**
+     * Resize SVG to fit in given size.
+     * @param width
+     * @param height
+     * @param preserveAspectRatio
+     */
+    resize(width: number, height?: number, preserveAspectRatio?: boolean | string): void;
+}
+export {};
+//# sourceMappingURL=Canvg.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Canvg.d.ts.map b/node_modules/canvg/lib/Canvg.d.ts.map
new file mode 100644
index 0000000..704b287
--- /dev/null
+++ b/node_modules/canvg/lib/Canvg.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"Canvg.d.ts","sourceRoot":"","sources":["../src/Canvg.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,SAAS,CAAC;AACjB,OAAO,MAAM,EAAE,EACd,cAAc,EACd,MAAM,UAAU,CAAC;AAClB,OAAO,MAAM,EAAE,EACd,cAAc,EACd,mBAAmB,EACnB,MAAM,UAAU,CAAC;AAClB,OAAO,QAAQ,EAAE,EAChB,gBAAgB,EAEhB,MAAM,YAAY,CAAC;AAEpB,aAAK,WAAW,GAAG,OAAO,MAAM,CAAC,QAAQ,CAAC;AAE1C,MAAM,WAAW,QAAS,SAAQ,cAAc,EAC/C,cAAc,EACd,mBAAmB,EACnB,gBAAgB;CAAG;AAEpB;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,KAAK;IACzB;;;;;;OAMG;WACU,IAAI,CAChB,GAAG,EAAE,kBAAkB,EACvB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,QAAa;IAQvB;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAChB,GAAG,EAAE,kBAAkB,EACvB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,QAAa;IAQvB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAa;IAC7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAW;IAEnC;;;;;OAKG;gBAEF,GAAG,EAAE,kBAAkB,EACvB,GAAG,EAAE,WAAW,EAChB,OAAO,GAAE,QAAa;IAavB;;;;;;OAMG;IACH,IAAI,CACH,GAAG,EAAE,kBAAkB,EACvB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,QAAa;IAQvB;;;;;;OAMG;IACH,UAAU,CACT,GAAG,EAAE,kBAAkB,EACvB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,QAAa;IAQvB;;;OAGG;IACH,KAAK;IAIL;;;OAGG;IACH,OAAO;IAIP;;;OAGG;IACG,MAAM,CAAC,OAAO,GAAE,mBAAwB;IAa9C;;;OAGG;IACH,KAAK,CAAC,OAAO,GAAE,mBAAwB;IAcvC;;OAEG;IACH,IAAI;IAIJ;;;;;OAKG;IACH,MAAM,CACL,KAAK,EAAE,MAAM,EACb,MAAM,SAAQ,EACd,mBAAmB,GAAE,OAAO,GAAC,MAAc;CAI5C"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/AElement.d.ts b/node_modules/canvg/lib/Document/AElement.d.ts
new file mode 100644
index 0000000..402c9d5
--- /dev/null
+++ b/node_modules/canvg/lib/Document/AElement.d.ts
@@ -0,0 +1,14 @@
+import { RenderingContext2D } from '../types';
+import Document from './Document';
+import TextElement from './TextElement';
+export default class AElement extends TextElement {
+    type: string;
+    protected readonly hasText: boolean;
+    protected readonly text: string;
+    constructor(document: Document, node: HTMLElement, captureTextNodes?: boolean);
+    getText(): string;
+    renderChildren(ctx: RenderingContext2D): void;
+    onClick(): void;
+    onMouseMove(): void;
+}
+//# sourceMappingURL=AElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/AElement.d.ts.map b/node_modules/canvg/lib/Document/AElement.d.ts.map
new file mode 100644
index 0000000..82d6b7f
--- /dev/null
+++ b/node_modules/canvg/lib/Document/AElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"AElement.d.ts","sourceRoot":"","sources":["../../src/Document/AElement.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAIlB,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,WAAW,MAAM,eAAe,CAAC;AAGxC,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,WAAW;IAChD,IAAI,SAAO;IACX,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IACpC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAG/B,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,WAAW,EACjB,gBAAgB,CAAC,EAAE,OAAO;IAiB3B,OAAO;IAIP,cAAc,CAAC,GAAG,EAAE,kBAAkB;IA6CtC,OAAO;IAUP,WAAW;CAKX"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/AnimateColorElement.d.ts b/node_modules/canvg/lib/Document/AnimateColorElement.d.ts
new file mode 100644
index 0000000..8a96200
--- /dev/null
+++ b/node_modules/canvg/lib/Document/AnimateColorElement.d.ts
@@ -0,0 +1,6 @@
+import AnimateElement from './AnimateElement';
+export default class AnimateColorElement extends AnimateElement {
+    type: string;
+    calcValue(): string;
+}
+//# sourceMappingURL=AnimateColorElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/AnimateColorElement.d.ts.map b/node_modules/canvg/lib/Document/AnimateColorElement.d.ts.map
new file mode 100644
index 0000000..7a69c79
--- /dev/null
+++ b/node_modules/canvg/lib/Document/AnimateColorElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"AnimateColorElement.d.ts","sourceRoot":"","sources":["../../src/Document/AnimateColorElement.ts"],"names":[],"mappings":"AACA,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAE9C,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,cAAc;IAC9D,IAAI,SAAkB;IAEtB,SAAS;CA2BT"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/AnimateElement.d.ts b/node_modules/canvg/lib/Document/AnimateElement.d.ts
new file mode 100644
index 0000000..341ffd2
--- /dev/null
+++ b/node_modules/canvg/lib/Document/AnimateElement.d.ts
@@ -0,0 +1,27 @@
+import Property from '../Property';
+import Document from './Document';
+import Element from './Element';
+export interface IProgress {
+    from?: Property;
+    to?: Property;
+    progress: number;
+}
+export default class AnimateElement extends Element {
+    type: string;
+    protected readonly begin: number;
+    protected readonly maxDuration: number;
+    protected readonly from: Property;
+    protected readonly to: Property;
+    protected readonly values: Property<string[]>;
+    protected duration: number;
+    protected initialValue: string;
+    protected initialUnits: string;
+    protected removed: boolean;
+    protected frozen: boolean;
+    constructor(document: Document, node: HTMLElement, captureTextNodes?: boolean);
+    protected getProperty(): Property<any>;
+    calcValue(): string;
+    update(delta: number): boolean;
+    getProgress(): IProgress;
+}
+//# sourceMappingURL=AnimateElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/AnimateElement.d.ts.map b/node_modules/canvg/lib/Document/AnimateElement.d.ts.map
new file mode 100644
index 0000000..e614391
--- /dev/null
+++ b/node_modules/canvg/lib/Document/AnimateElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"AnimateElement.d.ts","sourceRoot":"","sources":["../../src/Document/AnimateElement.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,aAAa,CAAC;AACnC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,MAAM,WAAW,SAAS;IACzB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,EAAE,CAAC,EAAE,QAAQ,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,OAAO;IAClD,IAAI,SAAa;IACjB,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACjC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IACvC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAClC,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IAChC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9C,SAAS,CAAC,QAAQ,SAAK;IACvB,SAAS,CAAC,YAAY,EAAE,MAAM,CAAQ;IACtC,SAAS,CAAC,YAAY,SAAM;IAC5B,SAAS,CAAC,OAAO,UAAS;IAC1B,SAAS,CAAC,MAAM,UAAS;gBAGxB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,WAAW,EACjB,gBAAgB,CAAC,EAAE,OAAO;IAmB3B,SAAS,CAAC,WAAW;IAWrB,SAAS;IAmBT,MAAM,CAAC,KAAK,EAAE,MAAM;IA+DpB,WAAW;CAgCX"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/AnimateTransformElement.d.ts b/node_modules/canvg/lib/Document/AnimateTransformElement.d.ts
new file mode 100644
index 0000000..57286c1
--- /dev/null
+++ b/node_modules/canvg/lib/Document/AnimateTransformElement.d.ts
@@ -0,0 +1,6 @@
+import AnimateElement from './AnimateElement';
+export default class AnimateTransformElement extends AnimateElement {
+    type: string;
+    calcValue(): string;
+}
+//# sourceMappingURL=AnimateTransformElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/AnimateTransformElement.d.ts.map b/node_modules/canvg/lib/Document/AnimateTransformElement.d.ts.map
new file mode 100644
index 0000000..c967722
--- /dev/null
+++ b/node_modules/canvg/lib/Document/AnimateTransformElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"AnimateTransformElement.d.ts","sourceRoot":"","sources":["../../src/Document/AnimateTransformElement.ts"],"names":[],"mappings":"AAGA,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAE9C,MAAM,CAAC,OAAO,OAAO,uBAAwB,SAAQ,cAAc;IAClE,IAAI,SAAsB;IAE1B,SAAS;CAiBT"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/CircleElement.d.ts b/node_modules/canvg/lib/Document/CircleElement.d.ts
new file mode 100644
index 0000000..19b05b4
--- /dev/null
+++ b/node_modules/canvg/lib/Document/CircleElement.d.ts
@@ -0,0 +1,9 @@
+import { RenderingContext2D } from '../types';
+import BoundingBox from '../BoundingBox';
+import PathElement from './PathElement';
+export default class CircleElement extends PathElement {
+    type: string;
+    path(ctx: RenderingContext2D): BoundingBox;
+    getMarkers(): any;
+}
+//# sourceMappingURL=CircleElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/CircleElement.d.ts.map b/node_modules/canvg/lib/Document/CircleElement.d.ts.map
new file mode 100644
index 0000000..91e9fd1
--- /dev/null
+++ b/node_modules/canvg/lib/Document/CircleElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"CircleElement.d.ts","sourceRoot":"","sources":["../../src/Document/CircleElement.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAClB,OAAO,WAAW,MAAM,gBAAgB,CAAC;AACzC,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,WAAW;IACrD,IAAI,SAAY;IAEhB,IAAI,CAAC,GAAG,EAAE,kBAAkB;IAmB5B,UAAU;CAGV"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/ClipPathElement.d.ts b/node_modules/canvg/lib/Document/ClipPathElement.d.ts
new file mode 100644
index 0000000..4c6415e
--- /dev/null
+++ b/node_modules/canvg/lib/Document/ClipPathElement.d.ts
@@ -0,0 +1,8 @@
+import { RenderingContext2D } from '../types';
+import Element from './Element';
+export default class ClipPathElement extends Element {
+    type: string;
+    apply(ctx: RenderingContext2D): void;
+    render(_: RenderingContext2D): void;
+}
+//# sourceMappingURL=ClipPathElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/ClipPathElement.d.ts.map b/node_modules/canvg/lib/Document/ClipPathElement.d.ts.map
new file mode 100644
index 0000000..be1e430
--- /dev/null
+++ b/node_modules/canvg/lib/Document/ClipPathElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"ClipPathElement.d.ts","sourceRoot":"","sources":["../../src/Document/ClipPathElement.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAElB,OAAO,OAAO,MAAM,WAAW,CAAC;AAOhC,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,OAAO;IACnD,IAAI,SAAc;IAElB,KAAK,CAAC,GAAG,EAAE,kBAAkB;IAsD7B,MAAM,CAAC,CAAC,EAAE,kBAAkB;CAG5B"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/DefsElement.d.ts b/node_modules/canvg/lib/Document/DefsElement.d.ts
new file mode 100644
index 0000000..bc12d13
--- /dev/null
+++ b/node_modules/canvg/lib/Document/DefsElement.d.ts
@@ -0,0 +1,6 @@
+import Element from './Element';
+export default class DefsElement extends Element {
+    type: string;
+    render(): void;
+}
+//# sourceMappingURL=DefsElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/DefsElement.d.ts.map b/node_modules/canvg/lib/Document/DefsElement.d.ts.map
new file mode 100644
index 0000000..b945576
--- /dev/null
+++ b/node_modules/canvg/lib/Document/DefsElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"DefsElement.d.ts","sourceRoot":"","sources":["../../src/Document/DefsElement.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,OAAO;IAC/C,IAAI,SAAU;IAEd,MAAM;CAGN"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/DescElement.d.ts b/node_modules/canvg/lib/Document/DescElement.d.ts
new file mode 100644
index 0000000..ecc4786
--- /dev/null
+++ b/node_modules/canvg/lib/Document/DescElement.d.ts
@@ -0,0 +1,5 @@
+import Element from './Element';
+export default class DescElement extends Element {
+    type: string;
+}
+//# sourceMappingURL=DescElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/DescElement.d.ts.map b/node_modules/canvg/lib/Document/DescElement.d.ts.map
new file mode 100644
index 0000000..061cba3
--- /dev/null
+++ b/node_modules/canvg/lib/Document/DescElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"DescElement.d.ts","sourceRoot":"","sources":["../../src/Document/DescElement.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,OAAO;IAC/C,IAAI,SAAU;CACd"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/Document.d.ts b/node_modules/canvg/lib/Document/Document.d.ts
new file mode 100644
index 0000000..3aaf574
--- /dev/null
+++ b/node_modules/canvg/lib/Document/Document.d.ts
@@ -0,0 +1,119 @@
+import Canvg from '../Canvg';
+import Screen, { IScreenViewBoxConfig } from '../Screen';
+import Property from '../Property';
+import SVGFontLoader from '../SVGFontLoader';
+import Element from './Element';
+import TextNode from './TextNode';
+import ImageElement from './ImageElement';
+import SVGElement from './SVGElement';
+/**
+ * Function to create new canvas.
+ */
+export declare type CreateCanvas = (width: number, height: number) => HTMLCanvasElement | OffscreenCanvas;
+/**
+ * Function to create new image.
+ */
+export declare type CreateImage = (src: string, anonymousCrossOrigin?: boolean) => Promise<CanvasImageSource>;
+export interface IDocumentOptions {
+    /**
+     * Default `rem` size.
+     */
+    rootEmSize?: number;
+    /**
+     * Default `em` size.
+     */
+    emSize?: number;
+    /**
+     * Function to create new canvas.
+     */
+    createCanvas?: CreateCanvas;
+    /**
+     * Function to create new image.
+     */
+    createImage?: CreateImage;
+    /**
+     * Load images anonymously.
+     */
+    anonymousCrossOrigin?: boolean;
+}
+export declare type IViewBoxConfig = Omit<IScreenViewBoxConfig, 'document'>;
+declare type DOMDocument = typeof window.document;
+declare function createCanvas(width: number, height: number): HTMLCanvasElement;
+declare function createImage(src: string, anonymousCrossOrigin?: boolean): Promise<HTMLImageElement>;
+export default class Document {
+    readonly canvg: Canvg;
+    static readonly createCanvas: typeof createCanvas;
+    static readonly createImage: typeof createImage;
+    static readonly elementTypes: {
+        svg: typeof SVGElement;
+        rect: typeof import("./RectElement").default;
+        circle: typeof import("./CircleElement").default;
+        ellipse: typeof import("./EllipseElement").default;
+        line: typeof import("./LineElement").default;
+        polyline: typeof import("./PolylineElement").default;
+        polygon: typeof import("./PolygonElement").default;
+        path: typeof import("./PathElement").default;
+        pattern: typeof import("./PatternElement").default;
+        marker: typeof import("./MarkerElement").default;
+        defs: typeof import("./DefsElement").default;
+        linearGradient: typeof import("./LinearGradientElement").default;
+        radialGradient: typeof import("./RadialGradientElement").default;
+        stop: typeof import("./StopElement").default;
+        animate: typeof import("./AnimateElement").default;
+        animateColor: typeof import("./AnimateColorElement").default;
+        animateTransform: typeof import("./AnimateTransformElement").default;
+        font: typeof import("./FontElement").default;
+        'font-face': typeof import("./FontFaceElement").default;
+        'missing-glyph': typeof import("./MissingGlyphElement").default;
+        glyph: typeof import("./GlyphElement").default;
+        text: typeof import("./TextElement").default;
+        tspan: typeof import("./TSpanElement").default;
+        tref: typeof import("./TRefElement").default;
+        a: typeof import("./AElement").default;
+        textPath: typeof import("./TextPathElement").default;
+        image: typeof ImageElement;
+        g: typeof import("./GElement").default;
+        symbol: typeof import("./SymbolElement").default;
+        style: typeof import("./StyleElement").default;
+        use: typeof import("./UseElement").default;
+        mask: typeof import("./MaskElement").default;
+        clipPath: typeof import("./ClipPathElement").default;
+        filter: typeof import("./FilterElement").default;
+        feDropShadow: typeof import("./FeDropShadowElement").default;
+        feMorphology: typeof import("./FeMorphologyElement").default;
+        feComposite: typeof import("./FeCompositeElement").default;
+        feColorMatrix: typeof import("./FeColorMatrixElement").default;
+        feGaussianBlur: typeof import("./FeGaussianBlurElement").default;
+        title: typeof import("./TitleElement").default;
+        desc: typeof import("./DescElement").default;
+    };
+    rootEmSize: number;
+    documentElement: SVGElement;
+    readonly screen: Screen;
+    readonly createCanvas: CreateCanvas;
+    readonly createImage: CreateImage;
+    readonly definitions: Record<string, Element>;
+    readonly styles: Record<string, Record<string, Property>>;
+    readonly stylesSpecificity: Record<string, string>;
+    readonly images: ImageElement[];
+    readonly fonts: SVGFontLoader[];
+    private readonly emSizeStack;
+    private uniqueId;
+    constructor(canvg: Canvg, { rootEmSize, emSize, createCanvas, createImage, anonymousCrossOrigin }?: IDocumentOptions);
+    private bindCreateImage;
+    get window(): Window;
+    get fetch(): typeof fetch;
+    get ctx(): import("..").RenderingContext2D;
+    get emSize(): number;
+    set emSize(value: number);
+    popEmSize(): void;
+    getUniqueId(): string;
+    isImagesLoaded(): boolean;
+    isFontsLoaded(): boolean;
+    createDocumentElement(document: DOMDocument): SVGElement;
+    createElement<T extends Element>(node: HTMLElement): T;
+    createTextNode(node: HTMLElement): TextNode;
+    setViewBox(config: IViewBoxConfig): void;
+}
+export {};
+//# sourceMappingURL=Document.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/Document.d.ts.map b/node_modules/canvg/lib/Document/Document.d.ts.map
new file mode 100644
index 0000000..c428a0d
--- /dev/null
+++ b/node_modules/canvg/lib/Document/Document.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"Document.d.ts","sourceRoot":"","sources":["../../src/Document/Document.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,UAAU,CAAC;AAC7B,OAAO,MAAM,EAAE,EACd,oBAAoB,EACpB,MAAM,WAAW,CAAC;AACnB,OAAO,QAAQ,MAAM,aAAa,CAAC;AACnC,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAC7C,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,UAAU,MAAM,cAAc,CAAC;AAKtC;;GAEG;AACH,oBAAY,YAAY,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,iBAAiB,GAAG,eAAe,CAAC;AAElG;;GAEG;AACH,oBAAY,WAAW,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,oBAAoB,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEtG,MAAM,WAAW,gBAAgB;IAChC;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B;;OAEG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,oBAAY,cAAc,GAAG,IAAI,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;AAEpE,aAAK,WAAW,GAAG,OAAO,MAAM,CAAC,QAAQ,CAAC;AAE1C,iBAAS,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,qBAOlD;AAED,iBAAe,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,oBAAoB,UAAQ,6BAiBnE;AAED,MAAM,CAAC,OAAO,OAAO,QAAQ;IAmB3B,QAAQ,CAAC,KAAK,EAAE,KAAK;IAlBtB,MAAM,CAAC,QAAQ,CAAC,YAAY,sBAAgB;IAC5C,MAAM,CAAC,QAAQ,CAAC,WAAW,qBAAe;IAC1C,MAAM,CAAC,QAAQ,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAgB;IAE5C,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;IACnD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAM;IAC/D,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IACxD,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,CAAM;IACrC,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,CAAM;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgB;IAC5C,OAAO,CAAC,QAAQ,CAAK;gBAGX,KAAK,EAAE,KAAK,EACrB,EACC,UAAe,EACf,MAAW,EACX,YAAoC,EACpC,WAAkC,EAClC,oBAAoB,EACpB,GAAE,gBAAqB;IAYzB,OAAO,CAAC,eAAe;IAavB,IAAI,MAAM,WAET;IAED,IAAI,KAAK,iBAER;IAED,IAAI,GAAG,oCAEN;IAED,IAAI,MAAM,IAQQ,MAAM,CAFvB;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAMvB;IAED,SAAS;IAQT,WAAW;IAIX,cAAc;IAId,aAAa;IAIb,qBAAqB,CAAC,QAAQ,EAAE,WAAW;IAW3C,aAAa,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,EAAE,WAAW;IAWlD,cAAc,CAAC,IAAI,EAAE,WAAW;IAIhC,UAAU,CAAC,MAAM,EAAE,cAAc;CAMjC"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/Element.d.ts b/node_modules/canvg/lib/Document/Element.d.ts
new file mode 100644
index 0000000..5693ce3
--- /dev/null
+++ b/node_modules/canvg/lib/Document/Element.d.ts
@@ -0,0 +1,33 @@
+import { RenderingContext2D } from '../types';
+import Property from '../Property';
+import Document from './Document';
+export default abstract class Element {
+    protected readonly document: Document;
+    protected readonly node: HTMLElement;
+    protected readonly captureTextNodes: boolean;
+    static readonly ignoreChildTypes: string[];
+    readonly type: string;
+    readonly attributes: Record<string, Property>;
+    readonly styles: Record<string, Property>;
+    readonly stylesSpecificity: Record<string, string>;
+    animationFrozen: boolean;
+    animationFrozenValue: string;
+    parent: Element;
+    children: Element[];
+    constructor(document: Document, node: HTMLElement, captureTextNodes?: boolean);
+    getAttribute(name: string, createIfNotExists?: boolean): Property<any>;
+    getHrefAttribute(): Property<any>;
+    getStyle(name: string, createIfNotExists?: boolean, skipAncestors?: boolean): Property;
+    render(ctx: RenderingContext2D): void;
+    setContext(_: RenderingContext2D): void;
+    protected applyEffects(ctx: RenderingContext2D): void;
+    clearContext(_: RenderingContext2D): void;
+    renderChildren(ctx: RenderingContext2D): void;
+    protected addChild(childNode: Element | HTMLElement): void;
+    protected matchesSelector(selector: string): boolean;
+    addStylesFromStyleDefinition(): void;
+    protected removeStyles(element: Element, ignoreStyles: string[]): [string, string][];
+    protected restoreStyles(element: Element, styles: [string, string][]): void;
+    isFirstChild(): boolean;
+}
+//# sourceMappingURL=Element.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/Element.d.ts.map b/node_modules/canvg/lib/Document/Element.d.ts.map
new file mode 100644
index 0000000..1175aa4
--- /dev/null
+++ b/node_modules/canvg/lib/Document/Element.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"Element.d.ts","sourceRoot":"","sources":["../../src/Document/Element.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAIlB,OAAO,QAAQ,MAAM,aAAa,CAAC;AAEnC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAMlC,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,OAAO;IAenC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ;IACrC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW;IACpC,SAAS,CAAC,QAAQ,CAAC,gBAAgB;IAhBpC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,WAE9B;IAEF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAM;IACnD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAM;IAC/C,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IACxD,eAAe,UAAS;IACxB,oBAAoB,SAAM;IAC1B,MAAM,EAAE,OAAO,CAAQ;IACvB,QAAQ,EAAE,OAAO,EAAE,CAAM;gBAGL,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,WAAW,EACjB,gBAAgB,UAAQ;IAiE5C,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,UAAQ;IAcpD,gBAAgB;IAUhB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,UAAQ,EAAE,aAAa,UAAQ,GAAG,QAAQ;IAuClF,MAAM,CAAC,GAAG,EAAE,kBAAkB;IAmC9B,UAAU,CAAC,CAAC,EAAE,kBAAkB;IAIhC,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE,kBAAkB;IAoB9C,YAAY,CAAC,CAAC,EAAE,kBAAkB;IAIlC,cAAc,CAAC,GAAG,EAAE,kBAAkB;IAMtC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAC,WAAW;IAYjD,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM;IAkB1C,4BAA4B;IA6B5B,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE;IAqB/D,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;IASpE,YAAY;CAGZ"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/EllipseElement.d.ts b/node_modules/canvg/lib/Document/EllipseElement.d.ts
new file mode 100644
index 0000000..bf8b5ba
--- /dev/null
+++ b/node_modules/canvg/lib/Document/EllipseElement.d.ts
@@ -0,0 +1,9 @@
+import { RenderingContext2D } from '../types';
+import BoundingBox from '../BoundingBox';
+import PathElement from './PathElement';
+export default class EllipseElement extends PathElement {
+    type: string;
+    path(ctx: RenderingContext2D): BoundingBox;
+    getMarkers(): any;
+}
+//# sourceMappingURL=EllipseElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/EllipseElement.d.ts.map b/node_modules/canvg/lib/Document/EllipseElement.d.ts.map
new file mode 100644
index 0000000..ee85422
--- /dev/null
+++ b/node_modules/canvg/lib/Document/EllipseElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"EllipseElement.d.ts","sourceRoot":"","sources":["../../src/Document/EllipseElement.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAClB,OAAO,WAAW,MAAM,gBAAgB,CAAC;AACzC,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,WAAW;IACtD,IAAI,SAAa;IAEjB,IAAI,CAAC,GAAG,EAAE,kBAAkB;IAqD5B,UAAU;CAGV"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/FeColorMatrixElement.d.ts b/node_modules/canvg/lib/Document/FeColorMatrixElement.d.ts
new file mode 100644
index 0000000..fa5d85b
--- /dev/null
+++ b/node_modules/canvg/lib/Document/FeColorMatrixElement.d.ts
@@ -0,0 +1,11 @@
+import { RenderingContext2D } from '../types';
+import Document from './Document';
+import Element from './Element';
+export default class FeColorMatrixElement extends Element {
+    type: string;
+    protected readonly matrix: number[];
+    protected readonly includeOpacity: boolean;
+    constructor(document: Document, node: HTMLElement, captureTextNodes?: boolean);
+    apply(ctx: RenderingContext2D, _x: number, _y: number, width: number, height: number): void;
+}
+//# sourceMappingURL=FeColorMatrixElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/FeColorMatrixElement.d.ts.map b/node_modules/canvg/lib/Document/FeColorMatrixElement.d.ts.map
new file mode 100644
index 0000000..de18a8c
--- /dev/null
+++ b/node_modules/canvg/lib/Document/FeColorMatrixElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"FeColorMatrixElement.d.ts","sourceRoot":"","sources":["../../src/Document/FeColorMatrixElement.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAIlB,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,OAAO,MAAM,WAAW,CAAC;AA4ChC,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,OAAO;IACxD,IAAI,SAAmB;IACvB,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IACpC,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;gBAG1C,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,WAAW,EACjB,gBAAgB,CAAC,EAAE,OAAO;IAwD3B,KAAK,CACJ,GAAG,EAAE,kBAAkB,EACvB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM;CAqCf"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/FeCompositeElement.d.ts b/node_modules/canvg/lib/Document/FeCompositeElement.d.ts
new file mode 100644
index 0000000..90e0d38
--- /dev/null
+++ b/node_modules/canvg/lib/Document/FeCompositeElement.d.ts
@@ -0,0 +1,7 @@
+import { RenderingContext2D } from '../types';
+import Element from './Element';
+export default class FeCompositeElement extends Element {
+    type: string;
+    apply(_: RenderingContext2D, _x: number, _y: number, _width: number, _height: number): void;
+}
+//# sourceMappingURL=FeCompositeElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/FeCompositeElement.d.ts.map b/node_modules/canvg/lib/Document/FeCompositeElement.d.ts.map
new file mode 100644
index 0000000..ce4401f
--- /dev/null
+++ b/node_modules/canvg/lib/Document/FeCompositeElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"FeCompositeElement.d.ts","sourceRoot":"","sources":["../../src/Document/FeCompositeElement.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAClB,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,OAAO;IACtD,IAAI,SAAiB;IAErB,KAAK,CACJ,CAAC,EAAE,kBAAkB,EACrB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM;CAIhB"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/FeDropShadowElement.d.ts b/node_modules/canvg/lib/Document/FeDropShadowElement.d.ts
new file mode 100644
index 0000000..c903767
--- /dev/null
+++ b/node_modules/canvg/lib/Document/FeDropShadowElement.d.ts
@@ -0,0 +1,9 @@
+import { RenderingContext2D } from '../types';
+import Document from './Document';
+import Element from './Element';
+export default class FeDropShadowElement extends Element {
+    type: string;
+    constructor(document: Document, node: HTMLElement, captureTextNodes?: boolean);
+    apply(_: RenderingContext2D, _x: number, _y: number, _width: number, _height: number): void;
+}
+//# sourceMappingURL=FeDropShadowElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/FeDropShadowElement.d.ts.map b/node_modules/canvg/lib/Document/FeDropShadowElement.d.ts.map
new file mode 100644
index 0000000..4ae74ba
--- /dev/null
+++ b/node_modules/canvg/lib/Document/FeDropShadowElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"FeDropShadowElement.d.ts","sourceRoot":"","sources":["../../src/Document/FeDropShadowElement.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAClB,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,OAAO;IACvD,IAAI,SAAkB;gBAGrB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,WAAW,EACjB,gBAAgB,CAAC,EAAE,OAAO;IAO3B,KAAK,CACJ,CAAC,EAAE,kBAAkB,EACrB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM;CAIhB"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/FeGaussianBlurElement.d.ts b/node_modules/canvg/lib/Document/FeGaussianBlurElement.d.ts
new file mode 100644
index 0000000..e79d671
--- /dev/null
+++ b/node_modules/canvg/lib/Document/FeGaussianBlurElement.d.ts
@@ -0,0 +1,11 @@
+import { RenderingContext2D } from '../types';
+import Document from './Document';
+import Element from './Element';
+export default class FeGaussianBlurElement extends Element {
+    type: string;
+    readonly extraFilterDistance: number;
+    protected readonly blurRadius: number;
+    constructor(document: Document, node: HTMLElement, captureTextNodes?: boolean);
+    apply(ctx: RenderingContext2D, x: number, y: number, width: number, height: number): void;
+}
+//# sourceMappingURL=FeGaussianBlurElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/FeGaussianBlurElement.d.ts.map b/node_modules/canvg/lib/Document/FeGaussianBlurElement.d.ts.map
new file mode 100644
index 0000000..7486378
--- /dev/null
+++ b/node_modules/canvg/lib/Document/FeGaussianBlurElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"FeGaussianBlurElement.d.ts","sourceRoot":"","sources":["../../src/Document/FeGaussianBlurElement.ts"],"names":[],"mappings":"AAGA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAClB,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,OAAO;IACzD,IAAI,SAAoB;IACxB,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAGrC,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,WAAW,EACjB,gBAAgB,CAAC,EAAE,OAAO;IAQ3B,KAAK,CACJ,GAAG,EAAE,kBAAkB,EACvB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM;CAyBf"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/FeMorphologyElement.d.ts b/node_modules/canvg/lib/Document/FeMorphologyElement.d.ts
new file mode 100644
index 0000000..e99c1f8
--- /dev/null
+++ b/node_modules/canvg/lib/Document/FeMorphologyElement.d.ts
@@ -0,0 +1,7 @@
+import { RenderingContext2D } from '../types';
+import Element from './Element';
+export default class FeMorphologyElement extends Element {
+    type: string;
+    apply(_: RenderingContext2D, _x: number, _y: number, _width: number, _height: number): void;
+}
+//# sourceMappingURL=FeMorphologyElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/FeMorphologyElement.d.ts.map b/node_modules/canvg/lib/Document/FeMorphologyElement.d.ts.map
new file mode 100644
index 0000000..e4c219a
--- /dev/null
+++ b/node_modules/canvg/lib/Document/FeMorphologyElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"FeMorphologyElement.d.ts","sourceRoot":"","sources":["../../src/Document/FeMorphologyElement.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAClB,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,OAAO;IACvD,IAAI,SAAkB;IAEtB,KAAK,CACJ,CAAC,EAAE,kBAAkB,EACrB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM;CAIhB"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/FilterElement.d.ts b/node_modules/canvg/lib/Document/FilterElement.d.ts
new file mode 100644
index 0000000..fbdaafe
--- /dev/null
+++ b/node_modules/canvg/lib/Document/FilterElement.d.ts
@@ -0,0 +1,10 @@
+import { RenderingContext2D } from '../types';
+import Element from './Element';
+import PathElement from './PathElement';
+export default class FilterElement extends Element {
+    static ignoreStyles: string[];
+    type: string;
+    apply(ctx: RenderingContext2D, element: PathElement): void;
+    render(_: RenderingContext2D): void;
+}
+//# sourceMappingURL=FilterElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/FilterElement.d.ts.map b/node_modules/canvg/lib/Document/FilterElement.d.ts.map
new file mode 100644
index 0000000..f42e9a6
--- /dev/null
+++ b/node_modules/canvg/lib/Document/FilterElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"FilterElement.d.ts","sourceRoot":"","sources":["../../src/Document/FilterElement.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAClB,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,WAAW,MAAM,eAAe,CAAC;AAGxC,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,OAAO;IACjD,MAAM,CAAC,YAAY,WAIjB;IAEF,IAAI,SAAY;IAEhB,KAAK,CAAC,GAAG,EAAE,kBAAkB,EAAE,OAAO,EAAE,WAAW;IAsEnD,MAAM,CAAC,CAAC,EAAE,kBAAkB;CAG5B"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/FontElement.d.ts b/node_modules/canvg/lib/Document/FontElement.d.ts
new file mode 100644
index 0000000..ae0acf5
--- /dev/null
+++ b/node_modules/canvg/lib/Document/FontElement.d.ts
@@ -0,0 +1,17 @@
+import Document from './Document';
+import Element from './Element';
+import FontFaceElement from './FontFaceElement';
+import MissingGlyphElement from './MissingGlyphElement';
+import GlyphElement from './GlyphElement';
+export default class FontElement extends Element {
+    type: string;
+    readonly isArabic: boolean;
+    readonly missingGlyph: MissingGlyphElement;
+    readonly glyphs: Record<string, GlyphElement | Record<string, GlyphElement>>;
+    readonly horizAdvX: number;
+    readonly isRTL: boolean;
+    readonly fontFace: FontFaceElement;
+    constructor(document: Document, node: HTMLElement, captureTextNodes?: boolean);
+    render(): void;
+}
+//# sourceMappingURL=FontElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/FontElement.d.ts.map b/node_modules/canvg/lib/Document/FontElement.d.ts.map
new file mode 100644
index 0000000..69b87e8
--- /dev/null
+++ b/node_modules/canvg/lib/Document/FontElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"FontElement.d.ts","sourceRoot":"","sources":["../../src/Document/FontElement.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAE1C,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,OAAO;IAC/C,IAAI,SAAU;IACd,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAC;IAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAM;IAClF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;gBAGlC,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,WAAW,EACjB,gBAAgB,CAAC,EAAE,OAAO;IAuD3B,MAAM;CAGN"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/FontFaceElement.d.ts b/node_modules/canvg/lib/Document/FontFaceElement.d.ts
new file mode 100644
index 0000000..e85172a
--- /dev/null
+++ b/node_modules/canvg/lib/Document/FontFaceElement.d.ts
@@ -0,0 +1,10 @@
+import Document from './Document';
+import Element from './Element';
+export default class FontFaceElement extends Element {
+    type: string;
+    readonly ascent: number;
+    readonly descent: number;
+    readonly unitsPerEm: number;
+    constructor(document: Document, node: HTMLElement, captureTextNodes?: boolean);
+}
+//# sourceMappingURL=FontFaceElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/FontFaceElement.d.ts.map b/node_modules/canvg/lib/Document/FontFaceElement.d.ts.map
new file mode 100644
index 0000000..faff591
--- /dev/null
+++ b/node_modules/canvg/lib/Document/FontFaceElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"FontFaceElement.d.ts","sourceRoot":"","sources":["../../src/Document/FontFaceElement.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,OAAO;IACnD,IAAI,SAAe;IACnB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAG3B,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,WAAW,EACjB,gBAAgB,CAAC,EAAE,OAAO;CAQ3B"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/GElement.d.ts b/node_modules/canvg/lib/Document/GElement.d.ts
new file mode 100644
index 0000000..4d137a0
--- /dev/null
+++ b/node_modules/canvg/lib/Document/GElement.d.ts
@@ -0,0 +1,8 @@
+import { RenderingContext2D } from '../types';
+import BoundingBox from '../BoundingBox';
+import RenderedElement from './RenderedElement';
+export default class GElement extends RenderedElement {
+    type: string;
+    getBoundingBox(ctx: RenderingContext2D): BoundingBox;
+}
+//# sourceMappingURL=GElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/GElement.d.ts.map b/node_modules/canvg/lib/Document/GElement.d.ts.map
new file mode 100644
index 0000000..1906ec1
--- /dev/null
+++ b/node_modules/canvg/lib/Document/GElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"GElement.d.ts","sourceRoot":"","sources":["../../src/Document/GElement.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAClB,OAAO,WAAW,MAAM,gBAAgB,CAAC;AAEzC,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAEhD,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,eAAe;IACpD,IAAI,SAAO;IAEX,cAAc,CAAC,GAAG,EAAE,kBAAkB;CAStC"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/GlyphElement.d.ts b/node_modules/canvg/lib/Document/GlyphElement.d.ts
new file mode 100644
index 0000000..c2074e2
--- /dev/null
+++ b/node_modules/canvg/lib/Document/GlyphElement.d.ts
@@ -0,0 +1,10 @@
+import Document from './Document';
+import PathElement from './PathElement';
+export default class GlyphElement extends PathElement {
+    type: string;
+    readonly horizAdvX: number;
+    readonly unicode: string;
+    readonly arabicForm: string;
+    constructor(document: Document, node: HTMLElement, captureTextNodes?: boolean);
+}
+//# sourceMappingURL=GlyphElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/GlyphElement.d.ts.map b/node_modules/canvg/lib/Document/GlyphElement.d.ts.map
new file mode 100644
index 0000000..2d9b77f
--- /dev/null
+++ b/node_modules/canvg/lib/Document/GlyphElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"GlyphElement.d.ts","sourceRoot":"","sources":["../../src/Document/GlyphElement.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,WAAW;IACpD,IAAI,SAAW;IACf,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAG3B,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,WAAW,EACjB,gBAAgB,CAAC,EAAE,OAAO;CAQ3B"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/GradientElement.d.ts b/node_modules/canvg/lib/Document/GradientElement.d.ts
new file mode 100644
index 0000000..de6732f
--- /dev/null
+++ b/node_modules/canvg/lib/Document/GradientElement.d.ts
@@ -0,0 +1,17 @@
+import { RenderingContext2D } from '../types';
+import Property from '../Property';
+import Document from './Document';
+import Element from './Element';
+import PathElement from './PathElement';
+import StopElement from './StopElement';
+export default abstract class GradientElement extends Element {
+    readonly attributesToInherit: string[];
+    protected readonly stops: StopElement[];
+    constructor(document: Document, node: HTMLElement, captureTextNodes?: boolean);
+    abstract getGradient(ctx: RenderingContext2D, element: PathElement): CanvasGradient;
+    getGradientUnits(): string;
+    createGradient(ctx: RenderingContext2D, element: any, parentOpacityProp: Property): string | CanvasGradient | CanvasPattern;
+    protected inheritStopContainer(stopsContainer: Element): void;
+    protected addParentOpacity(parentOpacityProp: Property, color: string): string;
+}
+//# sourceMappingURL=GradientElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/GradientElement.d.ts.map b/node_modules/canvg/lib/Document/GradientElement.d.ts.map
new file mode 100644
index 0000000..992bd56
--- /dev/null
+++ b/node_modules/canvg/lib/Document/GradientElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"GradientElement.d.ts","sourceRoot":"","sources":["../../src/Document/GradientElement.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAClB,OAAO,QAAQ,MAAM,aAAa,CAAC;AACnC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,WAAW,MAAM,eAAe,CAAC;AAGxC,OAAO,WAAW,MAAM,eAAe,CAAC;AAGxC,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,eAAgB,SAAQ,OAAO;IAC5D,QAAQ,CAAC,mBAAmB,WAE1B;IAEF,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,CAAM;gBAG5C,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,WAAW,EACjB,gBAAgB,CAAC,EAAE,OAAO;IAgB3B,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,kBAAkB,EAAE,OAAO,EAAE,WAAW,GAAG,cAAc;IAEnF,gBAAgB;IAIhB,cAAc,CACb,GAAG,EAAE,kBAAkB,EACvB,OAAO,KAAA,EACP,iBAAiB,EAAE,QAAQ;IAuH5B,SAAS,CAAC,oBAAoB,CAAC,cAAc,EAAE,OAAO;IAWtD,SAAS,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM;CAarE"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/ImageElement.d.ts b/node_modules/canvg/lib/Document/ImageElement.d.ts
new file mode 100644
index 0000000..490f8ef
--- /dev/null
+++ b/node_modules/canvg/lib/Document/ImageElement.d.ts
@@ -0,0 +1,16 @@
+import { RenderingContext2D } from '../types';
+import BoundingBox from '../BoundingBox';
+import Document from './Document';
+import RenderedElement from './RenderedElement';
+export default class ImageElement extends RenderedElement {
+    type: string;
+    loaded: boolean;
+    protected readonly isSvg: boolean;
+    protected image: CanvasImageSource | string;
+    constructor(document: Document, node: HTMLElement, captureTextNodes?: boolean);
+    protected loadImage(href: string): Promise<void>;
+    protected loadSvg(href: string): Promise<void>;
+    renderChildren(ctx: RenderingContext2D): void;
+    getBoundingBox(): BoundingBox;
+}
+//# sourceMappingURL=ImageElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/ImageElement.d.ts.map b/node_modules/canvg/lib/Document/ImageElement.d.ts.map
new file mode 100644
index 0000000..e87d5f9
--- /dev/null
+++ b/node_modules/canvg/lib/Document/ImageElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"ImageElement.d.ts","sourceRoot":"","sources":["../../src/Document/ImageElement.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAClB,OAAO,WAAW,MAAM,gBAAgB,CAAC;AACzC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAKhD,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,eAAe;IACxD,IAAI,SAAW;IACf,MAAM,UAAS;IACf,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAClC,SAAS,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAAC;gBAG3C,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,WAAW,EACjB,gBAAgB,CAAC,EAAE,OAAO;cAuBX,SAAS,CAAC,IAAI,EAAE,MAAM;cAYtB,OAAO,CAAC,IAAI,EAAE,MAAM;IAyBpC,cAAc,CAAC,GAAG,EAAE,kBAAkB;IA6DtC,cAAc;CAQd"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/LineElement.d.ts b/node_modules/canvg/lib/Document/LineElement.d.ts
new file mode 100644
index 0000000..4ed685b
--- /dev/null
+++ b/node_modules/canvg/lib/Document/LineElement.d.ts
@@ -0,0 +1,11 @@
+import { RenderingContext2D } from '../types';
+import Point from '../Point';
+import BoundingBox from '../BoundingBox';
+import PathElement, { Marker } from './PathElement';
+export default class LineElement extends PathElement {
+    type: string;
+    getPoints(): Point[];
+    path(ctx: RenderingContext2D): BoundingBox;
+    getMarkers(): Marker[];
+}
+//# sourceMappingURL=LineElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/LineElement.d.ts.map b/node_modules/canvg/lib/Document/LineElement.d.ts.map
new file mode 100644
index 0000000..eafd8b8
--- /dev/null
+++ b/node_modules/canvg/lib/Document/LineElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"LineElement.d.ts","sourceRoot":"","sources":["../../src/Document/LineElement.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,MAAM,UAAU,CAAC;AAC7B,OAAO,WAAW,MAAM,gBAAgB,CAAC;AACzC,OAAO,WAAW,EAAE,EACnB,MAAM,EACN,MAAM,eAAe,CAAC;AAEvB,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,WAAW;IACnD,IAAI,SAAU;IAEd,SAAS;IAaT,IAAI,CAAC,GAAG,EAAE,kBAAkB;IA0B5B,UAAU,IAAI,MAAM,EAAE;CAYtB"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/LinearGradientElement.d.ts b/node_modules/canvg/lib/Document/LinearGradientElement.d.ts
new file mode 100644
index 0000000..631807c
--- /dev/null
+++ b/node_modules/canvg/lib/Document/LinearGradientElement.d.ts
@@ -0,0 +1,10 @@
+import { RenderingContext2D } from '../types';
+import Document from './Document';
+import PathElement from './PathElement';
+import GradientElement from './GradientElement';
+export default class LinearGradientElement extends GradientElement {
+    type: string;
+    constructor(document: Document, node: HTMLElement, captureTextNodes?: boolean);
+    getGradient(ctx: RenderingContext2D, element: PathElement): CanvasGradient;
+}
+//# sourceMappingURL=LinearGradientElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/LinearGradientElement.d.ts.map b/node_modules/canvg/lib/Document/LinearGradientElement.d.ts.map
new file mode 100644
index 0000000..3f59f37
--- /dev/null
+++ b/node_modules/canvg/lib/Document/LinearGradientElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"LinearGradientElement.d.ts","sourceRoot":"","sources":["../../src/Document/LinearGradientElement.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAClB,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAEhD,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,eAAe;IACjE,IAAI,SAAoB;gBAGvB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,WAAW,EACjB,gBAAgB,CAAC,EAAE,OAAO;IAY3B,WAAW,CAAC,GAAG,EAAE,kBAAkB,EAAE,OAAO,EAAE,WAAW;CAwCzD"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/MarkerElement.d.ts b/node_modules/canvg/lib/Document/MarkerElement.d.ts
new file mode 100644
index 0000000..d19ffe6
--- /dev/null
+++ b/node_modules/canvg/lib/Document/MarkerElement.d.ts
@@ -0,0 +1,8 @@
+import { RenderingContext2D } from '../types';
+import Point from '../Point';
+import Element from './Element';
+export default class MarkerElement extends Element {
+    type: string;
+    render(ctx: RenderingContext2D, point?: Point, angle?: number): void;
+}
+//# sourceMappingURL=MarkerElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/MarkerElement.d.ts.map b/node_modules/canvg/lib/Document/MarkerElement.d.ts.map
new file mode 100644
index 0000000..3b787e3
--- /dev/null
+++ b/node_modules/canvg/lib/Document/MarkerElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"MarkerElement.d.ts","sourceRoot":"","sources":["../../src/Document/MarkerElement.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,MAAM,UAAU,CAAC;AAE7B,OAAO,OAAO,MAAM,WAAW,CAAC;AAGhC,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,OAAO;IACjD,IAAI,SAAY;IAEhB,MAAM,CAAC,GAAG,EAAE,kBAAkB,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM;CAuF7D"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/MaskElement.d.ts b/node_modules/canvg/lib/Document/MaskElement.d.ts
new file mode 100644
index 0000000..294f28d
--- /dev/null
+++ b/node_modules/canvg/lib/Document/MaskElement.d.ts
@@ -0,0 +1,9 @@
+import { RenderingContext2D } from '../types';
+import Element from './Element';
+export default class MaskElement extends Element {
+    static ignoreStyles: string[];
+    type: string;
+    apply(ctx: RenderingContext2D, element: Element): void;
+    render(_: RenderingContext2D): void;
+}
+//# sourceMappingURL=MaskElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/MaskElement.d.ts.map b/node_modules/canvg/lib/Document/MaskElement.d.ts.map
new file mode 100644
index 0000000..eee73e9
--- /dev/null
+++ b/node_modules/canvg/lib/Document/MaskElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"MaskElement.d.ts","sourceRoot":"","sources":["../../src/Document/MaskElement.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAElB,OAAO,OAAO,MAAM,WAAW,CAAC;AAIhC,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,OAAO;IAC/C,MAAM,CAAC,YAAY,WAIjB;IAEF,IAAI,SAAU;IAEd,KAAK,CAAC,GAAG,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO;IAmE/C,MAAM,CAAC,CAAC,EAAE,kBAAkB;CAG5B"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/MissingGlyphElement.d.ts b/node_modules/canvg/lib/Document/MissingGlyphElement.d.ts
new file mode 100644
index 0000000..aaead87
--- /dev/null
+++ b/node_modules/canvg/lib/Document/MissingGlyphElement.d.ts
@@ -0,0 +1,6 @@
+import PathElement from './PathElement';
+export default class MissingGlyphElement extends PathElement {
+    type: string;
+    readonly horizAdvX = 0;
+}
+//# sourceMappingURL=MissingGlyphElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/MissingGlyphElement.d.ts.map b/node_modules/canvg/lib/Document/MissingGlyphElement.d.ts.map
new file mode 100644
index 0000000..548abf5
--- /dev/null
+++ b/node_modules/canvg/lib/Document/MissingGlyphElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"MissingGlyphElement.d.ts","sourceRoot":"","sources":["../../src/Document/MissingGlyphElement.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,WAAW;IAC3D,IAAI,SAAmB;IACvB,QAAQ,CAAC,SAAS,KAAK;CACvB"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/PathElement.d.ts b/node_modules/canvg/lib/Document/PathElement.d.ts
new file mode 100644
index 0000000..ba3737d
--- /dev/null
+++ b/node_modules/canvg/lib/Document/PathElement.d.ts
@@ -0,0 +1,75 @@
+import { RenderingContext2D } from '../types';
+import Point from '../Point';
+import BoundingBox from '../BoundingBox';
+import PathParser from '../PathParser';
+import Document from './Document';
+import RenderedElement from './RenderedElement';
+export declare type Marker = [Point, number];
+export default class PathElement extends RenderedElement {
+    type: string;
+    readonly pathParser: PathParser;
+    constructor(document: Document, node: HTMLElement, captureTextNodes?: boolean);
+    path(ctx?: RenderingContext2D): BoundingBox;
+    getBoundingBox(_?: RenderingContext2D): BoundingBox;
+    getMarkers(): Marker[];
+    renderChildren(ctx: RenderingContext2D): void;
+    static pathM(pathParser: PathParser): {
+        point: Point;
+    };
+    protected pathM(ctx: RenderingContext2D, boundingBox: BoundingBox): void;
+    static pathL(pathParser: PathParser): {
+        current: Point;
+        point: Point;
+    };
+    protected pathL(ctx: RenderingContext2D, boundingBox: BoundingBox): void;
+    static pathH(pathParser: PathParser): {
+        current: Point;
+        point: Point;
+    };
+    protected pathH(ctx: RenderingContext2D, boundingBox: BoundingBox): void;
+    static pathV(pathParser: PathParser): {
+        current: Point;
+        point: Point;
+    };
+    protected pathV(ctx: RenderingContext2D, boundingBox: BoundingBox): void;
+    static pathC(pathParser: PathParser): {
+        current: Point;
+        point: Point;
+        controlPoint: Point;
+        currentPoint: Point;
+    };
+    protected pathC(ctx: RenderingContext2D, boundingBox: BoundingBox): void;
+    static pathS(pathParser: PathParser): {
+        current: Point;
+        point: Point;
+        controlPoint: Point;
+        currentPoint: Point;
+    };
+    protected pathS(ctx: RenderingContext2D, boundingBox: BoundingBox): void;
+    static pathQ(pathParser: PathParser): {
+        current: Point;
+        controlPoint: Point;
+        currentPoint: Point;
+    };
+    protected pathQ(ctx: RenderingContext2D, boundingBox: BoundingBox): void;
+    static pathT(pathParser: PathParser): {
+        current: Point;
+        controlPoint: Point;
+        currentPoint: Point;
+    };
+    protected pathT(ctx: RenderingContext2D, boundingBox: BoundingBox): void;
+    static pathA(pathParser: PathParser): {
+        currentPoint: Point;
+        rX: number;
+        rY: number;
+        sweepFlag: 0 | 1;
+        xAxisRotation: number;
+        centp: Point;
+        a1: number;
+        ad: number;
+    };
+    protected pathA(ctx: RenderingContext2D, boundingBox: BoundingBox): void;
+    static pathZ(pathParser: PathParser): void;
+    protected pathZ(ctx: RenderingContext2D, boundingBox: BoundingBox): void;
+}
+//# sourceMappingURL=PathElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/PathElement.d.ts.map b/node_modules/canvg/lib/Document/PathElement.d.ts.map
new file mode 100644
index 0000000..1b7a3c2
--- /dev/null
+++ b/node_modules/canvg/lib/Document/PathElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"PathElement.d.ts","sourceRoot":"","sources":["../../src/Document/PathElement.ts"],"names":[],"mappings":"AACA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAKlB,OAAO,KAAK,MAAM,UAAU,CAAC;AAC7B,OAAO,WAAW,MAAM,gBAAgB,CAAC;AACzC,OAAO,UAAU,MAAM,eAAe,CAAC;AACvC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAGhD,oBAAY,MAAM,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAErC,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,eAAe;IACvD,IAAI,SAAU;IACd,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAQ;gBAGtC,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,WAAW,EACjB,gBAAgB,CAAC,EAAE,OAAO;IAO3B,IAAI,CAAC,GAAG,CAAC,EAAE,kBAAkB;IA6D7B,cAAc,CAAC,CAAC,CAAC,EAAE,kBAAkB;IAIrC,UAAU,IAAI,MAAM,EAAE;IActB,cAAc,CAAC,GAAG,EAAE,kBAAkB;IAoEtC,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU;;;IAUnC,SAAS,CAAC,KAAK,CACd,GAAG,EAAE,kBAAkB,EACvB,WAAW,EAAE,WAAW;IAqBzB,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU;;;;IAYnC,SAAS,CAAC,KAAK,CACd,GAAG,EAAE,kBAAkB,EACvB,WAAW,EAAE,WAAW;IAsBzB,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU;;;;IAkBnC,SAAS,CAAC,KAAK,CACd,GAAG,EAAE,kBAAkB,EACvB,WAAW,EAAE,WAAW;IAsBzB,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU;;;;IAkBnC,SAAS,CAAC,KAAK,CACd,GAAG,EAAE,kBAAkB,EACvB,WAAW,EAAE,WAAW;IAsBzB,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU;;;;;;IAgBnC,SAAS,CAAC,KAAK,CACd,GAAG,EAAE,kBAAkB,EACvB,WAAW,EAAE,WAAW;IAoCzB,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU;;;;;;IAgBnC,SAAS,CAAC,KAAK,CACd,GAAG,EAAE,kBAAkB,EACvB,WAAW,EAAE,WAAW;IAoCzB,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU;;;;;IAcnC,SAAS,CAAC,KAAK,CACd,GAAG,EAAE,kBAAkB,EACvB,WAAW,EAAE,WAAW;IA+BzB,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU;;;;;IAiBnC,SAAS,CAAC,KAAK,CACd,GAAG,EAAE,kBAAkB,EACvB,WAAW,EAAE,WAAW;IA+BzB,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU;;;;;;;;;;IAyFnC,SAAS,CAAC,KAAK,CACd,GAAG,EAAE,kBAAkB,EACvB,WAAW,EAAE,WAAW;IA0CzB,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU;IAInC,SAAS,CAAC,KAAK,CACd,GAAG,EAAE,kBAAkB,EACvB,WAAW,EAAE,WAAW;CAazB"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/PatternElement.d.ts b/node_modules/canvg/lib/Document/PatternElement.d.ts
new file mode 100644
index 0000000..ade6fb4
--- /dev/null
+++ b/node_modules/canvg/lib/Document/PatternElement.d.ts
@@ -0,0 +1,8 @@
+import { RenderingContext2D } from '../types';
+import Property from '../Property';
+import Element from './Element';
+export default class PatternElement extends Element {
+    type: string;
+    createPattern(ctx: RenderingContext2D, _: Element, parentOpacityProp: Property): CanvasPattern;
+}
+//# sourceMappingURL=PatternElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/PatternElement.d.ts.map b/node_modules/canvg/lib/Document/PatternElement.d.ts.map
new file mode 100644
index 0000000..5a2df56
--- /dev/null
+++ b/node_modules/canvg/lib/Document/PatternElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"PatternElement.d.ts","sourceRoot":"","sources":["../../src/Document/PatternElement.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAClB,OAAO,QAAQ,MAAM,aAAa,CAAC;AACnC,OAAO,OAAO,MAAM,WAAW,CAAC;AAGhC,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,OAAO;IAClD,IAAI,SAAa;IAEjB,aAAa,CACZ,GAAG,EAAE,kBAAkB,EACvB,CAAC,EAAE,OAAO,EACV,iBAAiB,EAAE,QAAQ;CAyE5B"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/PolygonElement.d.ts b/node_modules/canvg/lib/Document/PolygonElement.d.ts
new file mode 100644
index 0000000..a99aa79
--- /dev/null
+++ b/node_modules/canvg/lib/Document/PolygonElement.d.ts
@@ -0,0 +1,7 @@
+import { RenderingContext2D } from '../types';
+import PolylineElement from './PolylineElement';
+export default class PolygonElement extends PolylineElement {
+    type: string;
+    path(ctx: RenderingContext2D): import("..").BoundingBox;
+}
+//# sourceMappingURL=PolygonElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/PolygonElement.d.ts.map b/node_modules/canvg/lib/Document/PolygonElement.d.ts.map
new file mode 100644
index 0000000..e8a671b
--- /dev/null
+++ b/node_modules/canvg/lib/Document/PolygonElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"PolygonElement.d.ts","sourceRoot":"","sources":["../../src/Document/PolygonElement.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAClB,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAEhD,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,eAAe;IAC1D,IAAI,SAAa;IAEjB,IAAI,CAAC,GAAG,EAAE,kBAAkB;CAc5B"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/PolylineElement.d.ts b/node_modules/canvg/lib/Document/PolylineElement.d.ts
new file mode 100644
index 0000000..1542b71
--- /dev/null
+++ b/node_modules/canvg/lib/Document/PolylineElement.d.ts
@@ -0,0 +1,13 @@
+import { RenderingContext2D } from '../types';
+import Point from '../Point';
+import BoundingBox from '../BoundingBox';
+import Document from './Document';
+import PathElement, { Marker } from './PathElement';
+export default class PolylineElement extends PathElement {
+    type: string;
+    protected readonly points: Point[];
+    constructor(document: Document, node: HTMLElement, captureTextNodes?: boolean);
+    path(ctx: RenderingContext2D): BoundingBox;
+    getMarkers(): Marker[];
+}
+//# sourceMappingURL=PolylineElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/PolylineElement.d.ts.map b/node_modules/canvg/lib/Document/PolylineElement.d.ts.map
new file mode 100644
index 0000000..ca0ac39
--- /dev/null
+++ b/node_modules/canvg/lib/Document/PolylineElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"PolylineElement.d.ts","sourceRoot":"","sources":["../../src/Document/PolylineElement.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,MAAM,UAAU,CAAC;AAC7B,OAAO,WAAW,MAAM,gBAAgB,CAAC;AACzC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,WAAW,EAAE,EACnB,MAAM,EACN,MAAM,eAAe,CAAC;AAEvB,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,WAAW;IACvD,IAAI,SAAc;IAClB,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,CAAM;gBAGvC,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,WAAW,EACjB,gBAAgB,CAAC,EAAE,OAAO;IAS3B,IAAI,CAAC,GAAG,EAAE,kBAAkB;IA6B5B,UAAU;CA2BV"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/RadialGradientElement.d.ts b/node_modules/canvg/lib/Document/RadialGradientElement.d.ts
new file mode 100644
index 0000000..800cd2d
--- /dev/null
+++ b/node_modules/canvg/lib/Document/RadialGradientElement.d.ts
@@ -0,0 +1,10 @@
+import { RenderingContext2D } from '../types';
+import Document from './Document';
+import PathElement from './PathElement';
+import GradientElement from './GradientElement';
+export default class RadialGradientElement extends GradientElement {
+    type: string;
+    constructor(document: Document, node: HTMLElement, captureTextNodes?: boolean);
+    getGradient(ctx: RenderingContext2D, element: PathElement): CanvasGradient;
+}
+//# sourceMappingURL=RadialGradientElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/RadialGradientElement.d.ts.map b/node_modules/canvg/lib/Document/RadialGradientElement.d.ts.map
new file mode 100644
index 0000000..86f6800
--- /dev/null
+++ b/node_modules/canvg/lib/Document/RadialGradientElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"RadialGradientElement.d.ts","sourceRoot":"","sources":["../../src/Document/RadialGradientElement.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAClB,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAEhD,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,eAAe;IACjE,IAAI,SAAoB;gBAGvB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,WAAW,EACjB,gBAAgB,CAAC,EAAE,OAAO;IAc3B,WAAW,CAAC,GAAG,EAAE,kBAAkB,EAAE,OAAO,EAAE,WAAW;CAgDzD"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/RectElement.d.ts b/node_modules/canvg/lib/Document/RectElement.d.ts
new file mode 100644
index 0000000..2a774e1
--- /dev/null
+++ b/node_modules/canvg/lib/Document/RectElement.d.ts
@@ -0,0 +1,9 @@
+import { RenderingContext2D } from '../types';
+import BoundingBox from '../BoundingBox';
+import PathElement from './PathElement';
+export default class RectElement extends PathElement {
+    type: string;
+    path(ctx: RenderingContext2D): BoundingBox;
+    getMarkers(): any;
+}
+//# sourceMappingURL=RectElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/RectElement.d.ts.map b/node_modules/canvg/lib/Document/RectElement.d.ts.map
new file mode 100644
index 0000000..084f905
--- /dev/null
+++ b/node_modules/canvg/lib/Document/RectElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"RectElement.d.ts","sourceRoot":"","sources":["../../src/Document/RectElement.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAClB,OAAO,WAAW,MAAM,gBAAgB,CAAC;AACzC,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,WAAW;IACnD,IAAI,SAAU;IAEd,IAAI,CAAC,GAAG,EAAE,kBAAkB;IAkD5B,UAAU;CAGV"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/RenderedElement.d.ts b/node_modules/canvg/lib/Document/RenderedElement.d.ts
new file mode 100644
index 0000000..2535249
--- /dev/null
+++ b/node_modules/canvg/lib/Document/RenderedElement.d.ts
@@ -0,0 +1,9 @@
+import { RenderingContext2D } from '../types';
+import Element from './Element';
+export default abstract class RenderedElement extends Element {
+    private modifiedEmSizeStack;
+    protected calculateOpacity(): number;
+    setContext(ctx: RenderingContext2D, fromMeasure?: boolean): void;
+    clearContext(ctx: RenderingContext2D): void;
+}
+//# sourceMappingURL=RenderedElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/RenderedElement.d.ts.map b/node_modules/canvg/lib/Document/RenderedElement.d.ts.map
new file mode 100644
index 0000000..d73768c
--- /dev/null
+++ b/node_modules/canvg/lib/Document/RenderedElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"RenderedElement.d.ts","sourceRoot":"","sources":["../../src/Document/RenderedElement.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAOlB,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,eAAgB,SAAQ,OAAO;IAC5D,OAAO,CAAC,mBAAmB,CAAS;IAEpC,SAAS,CAAC,gBAAgB;IAkB1B,UAAU,CAAC,GAAG,EAAE,kBAAkB,EAAE,WAAW,UAAQ;IAwLvD,YAAY,CAAC,GAAG,EAAE,kBAAkB;CAOpC"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/SVGElement.d.ts b/node_modules/canvg/lib/Document/SVGElement.d.ts
new file mode 100644
index 0000000..3a6f382
--- /dev/null
+++ b/node_modules/canvg/lib/Document/SVGElement.d.ts
@@ -0,0 +1,16 @@
+import { RenderingContext2D } from '../types';
+import RenderedElement from './RenderedElement';
+export default class SVGElement extends RenderedElement {
+    type: string;
+    root: boolean;
+    setContext(ctx: RenderingContext2D): void;
+    clearContext(ctx: RenderingContext2D): void;
+    /**
+     * Resize SVG to fit in given size.
+     * @param width
+     * @param height
+     * @param preserveAspectRatio
+     */
+    resize(width: number, height?: number, preserveAspectRatio?: boolean | string): void;
+}
+//# sourceMappingURL=SVGElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/SVGElement.d.ts.map b/node_modules/canvg/lib/Document/SVGElement.d.ts.map
new file mode 100644
index 0000000..438a12f
--- /dev/null
+++ b/node_modules/canvg/lib/Document/SVGElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"SVGElement.d.ts","sourceRoot":"","sources":["../../src/Document/SVGElement.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAMlB,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAEhD,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,eAAe;IACtD,IAAI,SAAS;IACb,IAAI,UAAS;IAEb,UAAU,CAAC,GAAG,EAAE,kBAAkB;IAqIlC,YAAY,CAAC,GAAG,EAAE,kBAAkB;IAMpC;;;;;OAKG;IACH,MAAM,CACL,KAAK,EAAE,MAAM,EACb,MAAM,SAAQ,EACd,mBAAmB,GAAE,OAAO,GAAG,MAAc;CAyC9C"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/StopElement.d.ts b/node_modules/canvg/lib/Document/StopElement.d.ts
new file mode 100644
index 0000000..0ccb3ac
--- /dev/null
+++ b/node_modules/canvg/lib/Document/StopElement.d.ts
@@ -0,0 +1,9 @@
+import Document from './Document';
+import Element from './Element';
+export default class StopElement extends Element {
+    type: string;
+    readonly offset: number;
+    readonly color: string;
+    constructor(document: Document, node: HTMLElement, captureTextNodes?: boolean);
+}
+//# sourceMappingURL=StopElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/StopElement.d.ts.map b/node_modules/canvg/lib/Document/StopElement.d.ts.map
new file mode 100644
index 0000000..99fd755
--- /dev/null
+++ b/node_modules/canvg/lib/Document/StopElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"StopElement.d.ts","sourceRoot":"","sources":["../../src/Document/StopElement.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,OAAO;IAC/C,IAAI,SAAU;IACd,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBAGtB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,WAAW,EACjB,gBAAgB,CAAC,EAAE,OAAO;CAmB3B"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/StyleElement.d.ts b/node_modules/canvg/lib/Document/StyleElement.d.ts
new file mode 100644
index 0000000..f0398fd
--- /dev/null
+++ b/node_modules/canvg/lib/Document/StyleElement.d.ts
@@ -0,0 +1,9 @@
+import { parseExternalUrl } from '../util';
+import Document from './Document';
+import Element from './Element';
+export default class StyleElement extends Element {
+    static readonly parseExternalUrl: typeof parseExternalUrl;
+    type: string;
+    constructor(document: Document, node: HTMLElement, captureTextNodes?: boolean);
+}
+//# sourceMappingURL=StyleElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/StyleElement.d.ts.map b/node_modules/canvg/lib/Document/StyleElement.d.ts.map
new file mode 100644
index 0000000..863dc6f
--- /dev/null
+++ b/node_modules/canvg/lib/Document/StyleElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"StyleElement.d.ts","sourceRoot":"","sources":["../../src/Document/StyleElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,gBAAgB,EAChB,MAAM,SAAS,CAAC;AAGjB,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,OAAO;IAChD,MAAM,CAAC,QAAQ,CAAC,gBAAgB,0BAAoB;IAEpD,IAAI,SAAW;gBAGd,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,WAAW,EACjB,gBAAgB,CAAC,EAAE,OAAO;CAgE3B"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/SymbolElement.d.ts b/node_modules/canvg/lib/Document/SymbolElement.d.ts
new file mode 100644
index 0000000..e08ac58
--- /dev/null
+++ b/node_modules/canvg/lib/Document/SymbolElement.d.ts
@@ -0,0 +1,7 @@
+import { RenderingContext2D } from '../types';
+import RenderedElement from './RenderedElement';
+export default class SymbolElement extends RenderedElement {
+    type: string;
+    render(_: RenderingContext2D): void;
+}
+//# sourceMappingURL=SymbolElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/SymbolElement.d.ts.map b/node_modules/canvg/lib/Document/SymbolElement.d.ts.map
new file mode 100644
index 0000000..358b9e7
--- /dev/null
+++ b/node_modules/canvg/lib/Document/SymbolElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"SymbolElement.d.ts","sourceRoot":"","sources":["../../src/Document/SymbolElement.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAClB,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAEhD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,eAAe;IACzD,IAAI,SAAY;IAEhB,MAAM,CAAC,CAAC,EAAE,kBAAkB;CAG5B"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/TRefElement.d.ts b/node_modules/canvg/lib/Document/TRefElement.d.ts
new file mode 100644
index 0000000..297864c
--- /dev/null
+++ b/node_modules/canvg/lib/Document/TRefElement.d.ts
@@ -0,0 +1,6 @@
+import TextElement from './TextElement';
+export default class TRefElement extends TextElement {
+    type: string;
+    getText(): string;
+}
+//# sourceMappingURL=TRefElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/TRefElement.d.ts.map b/node_modules/canvg/lib/Document/TRefElement.d.ts.map
new file mode 100644
index 0000000..081fbd7
--- /dev/null
+++ b/node_modules/canvg/lib/Document/TRefElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"TRefElement.d.ts","sourceRoot":"","sources":["../../src/Document/TRefElement.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,WAAW;IACnD,IAAI,SAAU;IAEd,OAAO;CAaP"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/TSpanElement.d.ts b/node_modules/canvg/lib/Document/TSpanElement.d.ts
new file mode 100644
index 0000000..f7801ad
--- /dev/null
+++ b/node_modules/canvg/lib/Document/TSpanElement.d.ts
@@ -0,0 +1,9 @@
+import Document from './Document';
+import TextElement from './TextElement';
+export default class TSpanElement extends TextElement {
+    type: string;
+    protected readonly text: string;
+    constructor(document: Document, node: HTMLElement, captureTextNodes?: boolean);
+    getText(): string;
+}
+//# sourceMappingURL=TSpanElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/TSpanElement.d.ts.map b/node_modules/canvg/lib/Document/TSpanElement.d.ts.map
new file mode 100644
index 0000000..2096c94
--- /dev/null
+++ b/node_modules/canvg/lib/Document/TSpanElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"TSpanElement.d.ts","sourceRoot":"","sources":["../../src/Document/TSpanElement.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,WAAW;IACpD,IAAI,SAAW;IACf,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAG/B,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,WAAW,EACjB,gBAAgB,CAAC,EAAE,OAAO;IAgB3B,OAAO;CAGP"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/TextElement.d.ts b/node_modules/canvg/lib/Document/TextElement.d.ts
new file mode 100644
index 0000000..50db945
--- /dev/null
+++ b/node_modules/canvg/lib/Document/TextElement.d.ts
@@ -0,0 +1,44 @@
+import { RenderingContext2D } from '../types';
+import BoundingBox from '../BoundingBox';
+import Document from './Document';
+import Element from './Element';
+import FontElement from './FontElement';
+import GlyphElement from './GlyphElement';
+import RenderedElement from './RenderedElement';
+export default class TextElement extends RenderedElement {
+    type: string;
+    protected x: number;
+    protected y: number;
+    private leafTexts;
+    private textChunkStart;
+    private minX;
+    private maxX;
+    private measureCache;
+    constructor(document: Document, node: HTMLElement, captureTextNodes?: boolean);
+    setContext(ctx: RenderingContext2D, fromMeasure?: boolean): void;
+    protected initializeCoordinates(): void;
+    getBoundingBox(ctx: RenderingContext2D): BoundingBox;
+    protected getFontSize(): number;
+    protected getTElementBoundingBox(ctx: RenderingContext2D): BoundingBox;
+    getGlyph(font: FontElement, text: string, i: number): GlyphElement;
+    getText(): string;
+    protected getTextFromNode(node?: ChildNode): string;
+    renderChildren(ctx: RenderingContext2D): void;
+    protected renderTElementChildren(ctx: RenderingContext2D): void;
+    protected applyAnchoring(): void;
+    protected adjustChildCoordinatesRecursive(ctx: RenderingContext2D): void;
+    protected adjustChildCoordinatesRecursiveCore(ctx: RenderingContext2D, textParent: TextElement, parent: Element, i: number): void;
+    protected adjustChildCoordinates(ctx: RenderingContext2D, textParent: TextElement, parent: Element, i: number): TextElement;
+    protected getChildBoundingBox(ctx: RenderingContext2D, textParent: TextElement, parent: Element, i: number): BoundingBox;
+    protected renderChild(ctx: RenderingContext2D, textParent: TextElement, parent: Element, i: number): void;
+    protected measureText(ctx: RenderingContext2D): number;
+    protected measureTargetText(ctx: RenderingContext2D, targetText: string): number;
+    /**
+     * Inherits positional attributes from {@link TextElement} parent(s). Attributes
+     * are only inherited from a parent to its first child.
+     * @param name - The attribute name.
+     * @returns The attribute value or null.
+     */
+    protected getInheritedAttribute(name: string): string | null;
+}
+//# sourceMappingURL=TextElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/TextElement.d.ts.map b/node_modules/canvg/lib/Document/TextElement.d.ts.map
new file mode 100644
index 0000000..74c1231
--- /dev/null
+++ b/node_modules/canvg/lib/Document/TextElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"TextElement.d.ts","sourceRoot":"","sources":["../../src/Document/TextElement.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAQlB,OAAO,WAAW,MAAM,gBAAgB,CAAC;AAEzC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAEhD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,eAAe;IACvD,IAAI,SAAU;IACd,SAAS,CAAC,CAAC,SAAK;IAChB,SAAS,CAAC,CAAC,SAAK;IAChB,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,YAAY,CAAM;gBAGzB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,WAAW,EACjB,gBAAgB,CAAC,EAAE,OAAO;IAW3B,UAAU,CAAC,GAAG,EAAE,kBAAkB,EAAE,WAAW,UAAQ;IAWvD,SAAS,CAAC,qBAAqB;IAS/B,cAAc,CAAC,GAAG,EAAE,kBAAkB;IAyBtC,SAAS,CAAC,WAAW;IAWrB,SAAS,CAAC,sBAAsB,CAAC,GAAG,EAAE,kBAAkB;IAWxD,QAAQ,CACP,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,MAAM,EACZ,CAAC,EAAE,MAAM;IA0CV,OAAO;IAIP,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS;IAuB1C,cAAc,CAAC,GAAG,EAAE,kBAAkB;IA4BtC,SAAS,CAAC,sBAAsB,CAAC,GAAG,EAAE,kBAAkB;IAiFxD,SAAS,CAAC,cAAc;IAgCxB,SAAS,CAAC,+BAA+B,CAAC,GAAG,EAAE,kBAAkB;IAOjE,SAAS,CAAC,mCAAmC,CAC5C,GAAG,EAAE,kBAAkB,EACvB,UAAU,EAAE,WAAW,EACvB,MAAM,EAAE,OAAO,EACf,CAAC,EAAE,MAAM,GACP,IAAI;IAaP,SAAS,CAAC,sBAAsB,CAC/B,GAAG,EAAE,kBAAkB,EACvB,UAAU,EAAE,WAAW,EACvB,MAAM,EAAE,OAAO,EACf,CAAC,EAAE,MAAM;IA8FV,SAAS,CAAC,mBAAmB,CAC5B,GAAG,EAAE,kBAAkB,EACvB,UAAU,EAAE,WAAW,EACvB,MAAM,EAAE,OAAO,EACf,CAAC,EAAE,MAAM;IAwBV,SAAS,CAAC,WAAW,CACpB,GAAG,EAAE,kBAAkB,EACvB,UAAU,EAAE,WAAW,EACvB,MAAM,EAAE,OAAO,EACf,CAAC,EAAE,MAAM;IAUV,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,kBAAkB;IAiB7C,SAAS,CAAC,iBAAiB,CAC1B,GAAG,EAAE,kBAAkB,EACvB,UAAU,EAAE,MAAM;IAoDnB;;;;;OAKG;IACH,SAAS,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAgB5D"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/TextNode.d.ts b/node_modules/canvg/lib/Document/TextNode.d.ts
new file mode 100644
index 0000000..dcc137d
--- /dev/null
+++ b/node_modules/canvg/lib/Document/TextNode.d.ts
@@ -0,0 +1,5 @@
+import TSpanElement from './TSpanElement';
+export default class TextNode extends TSpanElement {
+    type: string;
+}
+//# sourceMappingURL=TextNode.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/TextNode.d.ts.map b/node_modules/canvg/lib/Document/TextNode.d.ts.map
new file mode 100644
index 0000000..eaedd3c
--- /dev/null
+++ b/node_modules/canvg/lib/Document/TextNode.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"TextNode.d.ts","sourceRoot":"","sources":["../../src/Document/TextNode.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAE1C,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,YAAY;IACjD,IAAI,SAAc;CAClB"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/TextPathElement.d.ts b/node_modules/canvg/lib/Document/TextPathElement.d.ts
new file mode 100644
index 0000000..30804a1
--- /dev/null
+++ b/node_modules/canvg/lib/Document/TextPathElement.d.ts
@@ -0,0 +1,73 @@
+import { RenderingContext2D } from '../types';
+import PathParser, { CommandType } from '../PathParser';
+import Document from './Document';
+import TextElement from './TextElement';
+import PathElement from './PathElement';
+export interface IPoint {
+    x: number;
+    y: number;
+}
+export interface IPathCommand {
+    type: CommandType;
+    points: number[];
+    start?: IPoint;
+    pathLength: number;
+}
+interface ICachedPoint extends IPoint {
+    distance: number;
+}
+interface IGlyphInfo {
+    text: string;
+    rotation: number;
+    p0: ICachedPoint;
+    p1: ICachedPoint;
+}
+export default class TextPathElement extends TextElement {
+    type: string;
+    protected textWidth: number;
+    protected textHeight: number;
+    protected pathLength: number;
+    protected glyphInfo: IGlyphInfo[];
+    protected readonly text: string;
+    protected readonly dataArray: IPathCommand[];
+    private letterSpacingCache;
+    private equidistantCache;
+    private readonly measuresCache;
+    constructor(document: Document, node: HTMLElement, captureTextNodes?: boolean);
+    getText(): string;
+    path(ctx: RenderingContext2D): void;
+    renderChildren(ctx: RenderingContext2D): void;
+    protected getLetterSpacingAt(idx?: number): number;
+    protected findSegmentToFitChar(ctx: RenderingContext2D, anchor: string, textFullWidth: number, fullPathWidth: number, spacesNumber: number, inputOffset: number, dy: number, c: string, charI: number): {
+        offset: number;
+        segment: {
+            p0: ICachedPoint;
+            p1: ICachedPoint;
+        };
+        rotation: number;
+    };
+    protected measureText(ctx: RenderingContext2D, text?: string): number;
+    protected setTextData(ctx: RenderingContext2D): void;
+    protected parsePathData(path: PathElement): IPathCommand[];
+    protected pathM(pathParser: PathParser, points: number[]): void;
+    protected pathL(pathParser: PathParser, points: number[]): 16;
+    protected pathH(pathParser: PathParser, points: number[]): 16;
+    protected pathV(pathParser: PathParser, points: number[]): 16;
+    protected pathC(pathParser: PathParser, points: number[]): void;
+    protected pathS(pathParser: PathParser, points: number[]): 32;
+    protected pathQ(pathParser: PathParser, points: number[]): void;
+    protected pathT(pathParser: PathParser, points: number[]): 128;
+    protected pathA(pathParser: PathParser): number[];
+    protected calcLength(x: number, y: number, commandType: CommandType, points: number[]): number;
+    protected getPointOnLine(dist: number, p1x: number, p1y: number, p2x: number, p2y: number, fromX?: number, fromY?: number): IPoint;
+    protected getPointOnPath(distance: number): IPoint;
+    protected getLineLength(x1: number, y1: number, x2: number, y2: number): number;
+    protected getPathLength(): number;
+    protected getPointOnCubicBezier(pct: number, p1x: number, p1y: number, p2x: number, p2y: number, p3x: number, p3y: number, p4x: number, p4y: number): IPoint;
+    protected getPointOnQuadraticBezier(pct: number, p1x: number, p1y: number, p2x: number, p2y: number, p3x: number, p3y: number): IPoint;
+    protected getPointOnEllipticalArc(cx: number, cy: number, rx: number, ry: number, theta: number, psi: number): IPoint;
+    protected buildEquidistantCache(inputStep: number, inputPrecision: number): void;
+    protected getEquidistantPointOnPath(targetDistance: number, step?: number, precision?: number): ICachedPoint;
+}
+export {};
+//# sourceMappingURL=TextPathElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/TextPathElement.d.ts.map b/node_modules/canvg/lib/Document/TextPathElement.d.ts.map
new file mode 100644
index 0000000..90d4720
--- /dev/null
+++ b/node_modules/canvg/lib/Document/TextPathElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"TextPathElement.d.ts","sourceRoot":"","sources":["../../src/Document/TextPathElement.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAWlB,OAAO,UAAU,EAAE,EAClB,WAAW,EACX,MAAM,eAAe,CAAC;AACvB,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,MAAM,WAAW,MAAM;IACtB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACV;AAED,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,YAAa,SAAQ,MAAM;IACpC,QAAQ,EAAE,MAAM,CAAC;CACjB;AAQD,UAAU,UAAU;IAGnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,YAAY,CAAC;IACjB,EAAE,EAAE,YAAY,CAAC;CACjB;AAED,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,WAAW;IACvD,IAAI,SAAc;IAClB,SAAS,CAAC,SAAS,SAAK;IACxB,SAAS,CAAC,UAAU,SAAK;IACzB,SAAS,CAAC,UAAU,SAAM;IAC1B,SAAS,CAAC,SAAS,EAAE,UAAU,EAAE,CAAQ;IACzC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,EAAE,CAAC;IAC7C,OAAO,CAAC,kBAAkB,CAAgB;IAC1C,OAAO,CAAC,gBAAgB,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsC;gBAGnE,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,WAAW,EACjB,gBAAgB,CAAC,EAAE,OAAO;IAU3B,OAAO;IAIP,IAAI,CAAC,GAAG,EAAE,kBAAkB;IAkG5B,cAAc,CAAC,GAAG,EAAE,kBAAkB;IAoEtC,SAAS,CAAC,kBAAkB,CAAC,GAAG,SAAI;IAIpC,SAAS,CAAC,oBAAoB,CAC7B,GAAG,EAAE,kBAAkB,EACvB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM;;;;;;;;IAuDd,SAAS,CAAC,WAAW,CACpB,GAAG,EAAE,kBAAkB,EACvB,IAAI,CAAC,EAAE,MAAM;IAqBd,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,kBAAkB;IA8H7C,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW;IA2FzC,SAAS,CAAC,KAAK,CACd,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EAAE;IAUjB,SAAS,CAAC,KAAK,CACd,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EAAE;IAYjB,SAAS,CAAC,KAAK,CACd,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EAAE;IAYjB,SAAS,CAAC,KAAK,CACd,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EAAE;IAYjB,SAAS,CAAC,KAAK,CACd,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EAAE;IAkBjB,SAAS,CAAC,KAAK,CACd,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EAAE;IAoBjB,SAAS,CAAC,KAAK,CACd,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EAAE;IAejB,SAAS,CAAC,KAAK,CACd,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EAAE;IAiBjB,SAAS,CAAC,KAAK,CACd,UAAU,EAAE,UAAU;IAgCvB,SAAS,CAAC,UAAU,CACnB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EAAE;IAsJjB,SAAS,CAAC,cAAc,CACvB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,KAAK,SAAM,EACX,KAAK,SAAM;IA2DZ,SAAS,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM;IAyHzC,SAAS,CAAC,aAAa,CACtB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM;IAQX,SAAS,CAAC,aAAa;IAevB,SAAS,CAAC,qBAAqB,CAC9B,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACT,MAAM;IAUT,SAAS,CAAC,yBAAyB,CAClC,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACT,MAAM;IAUT,SAAS,CAAC,uBAAuB,CAChC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,GACT,MAAM;IAeT,SAAS,CAAC,qBAAqB,CAC9B,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM;IA0CvB,SAAS,CAAC,yBAAyB,CAClC,cAAc,EAAE,MAAM,EACtB,IAAI,CAAC,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM;CAkBnB"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/TitleElement.d.ts b/node_modules/canvg/lib/Document/TitleElement.d.ts
new file mode 100644
index 0000000..c039d97
--- /dev/null
+++ b/node_modules/canvg/lib/Document/TitleElement.d.ts
@@ -0,0 +1,5 @@
+import Element from './Element';
+export default class TitleElement extends Element {
+    type: string;
+}
+//# sourceMappingURL=TitleElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/TitleElement.d.ts.map b/node_modules/canvg/lib/Document/TitleElement.d.ts.map
new file mode 100644
index 0000000..93c4183
--- /dev/null
+++ b/node_modules/canvg/lib/Document/TitleElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"TitleElement.d.ts","sourceRoot":"","sources":["../../src/Document/TitleElement.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,OAAO;IAChD,IAAI,SAAW;CACf"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/UnknownElement.d.ts b/node_modules/canvg/lib/Document/UnknownElement.d.ts
new file mode 100644
index 0000000..3ece322
--- /dev/null
+++ b/node_modules/canvg/lib/Document/UnknownElement.d.ts
@@ -0,0 +1,6 @@
+import Document from './Document';
+import Element from './Element';
+export default class UnknownElement extends Element {
+    constructor(document: Document, node: HTMLElement, captureTextNodes?: boolean);
+}
+//# sourceMappingURL=UnknownElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/UnknownElement.d.ts.map b/node_modules/canvg/lib/Document/UnknownElement.d.ts.map
new file mode 100644
index 0000000..1d0c552
--- /dev/null
+++ b/node_modules/canvg/lib/Document/UnknownElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"UnknownElement.d.ts","sourceRoot":"","sources":["../../src/Document/UnknownElement.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,OAAO;gBAEjD,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,WAAW,EACjB,gBAAgB,CAAC,EAAE,OAAO;CAQ3B"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/UseElement.d.ts b/node_modules/canvg/lib/Document/UseElement.d.ts
new file mode 100644
index 0000000..a59d4e0
--- /dev/null
+++ b/node_modules/canvg/lib/Document/UseElement.d.ts
@@ -0,0 +1,15 @@
+import { RenderingContext2D } from '../types';
+import Transform from '../Transform';
+import RenderedElement from './RenderedElement';
+import PathElement from './PathElement';
+export default class UseElement extends RenderedElement {
+    type: string;
+    private cachedElement;
+    setContext(ctx: RenderingContext2D): void;
+    path(ctx: RenderingContext2D): void;
+    renderChildren(ctx: RenderingContext2D): void;
+    getBoundingBox(ctx: RenderingContext2D): import("..").BoundingBox;
+    elementTransform(): Transform;
+    protected get element(): PathElement;
+}
+//# sourceMappingURL=UseElement.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/UseElement.d.ts.map b/node_modules/canvg/lib/Document/UseElement.d.ts.map
new file mode 100644
index 0000000..2bb8601
--- /dev/null
+++ b/node_modules/canvg/lib/Document/UseElement.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"UseElement.d.ts","sourceRoot":"","sources":["../../src/Document/UseElement.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAElB,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,WAAW,MAAM,eAAe,CAAC;AAGxC,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,eAAe;IACtD,IAAI,SAAS;IACb,OAAO,CAAC,aAAa,CAAc;IAEnC,UAAU,CAAC,GAAG,EAAE,kBAAkB;IAelC,IAAI,CAAC,GAAG,EAAE,kBAAkB;IAU5B,cAAc,CAAC,GAAG,EAAE,kBAAkB;IAsEtC,cAAc,CAAC,GAAG,EAAE,kBAAkB;IAYtC,gBAAgB;IAShB,SAAS,KAAK,OAAO,gBAMpB;CACD"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/elements.d.ts b/node_modules/canvg/lib/Document/elements.d.ts
new file mode 100644
index 0000000..b464862
--- /dev/null
+++ b/node_modules/canvg/lib/Document/elements.d.ts
@@ -0,0 +1,93 @@
+import Element from './Element';
+import UnknownElement from './UnknownElement';
+import RenderedElement from './RenderedElement';
+import PathElement from './PathElement';
+import SVGElement from './SVGElement';
+import RectElement from './RectElement';
+import CircleElement from './CircleElement';
+import EllipseElement from './EllipseElement';
+import LineElement from './LineElement';
+import PolylineElement from './PolylineElement';
+import PolygonElement from './PolygonElement';
+import PatternElement from './PatternElement';
+import MarkerElement from './MarkerElement';
+import DefsElement from './DefsElement';
+import GradientElement from './GradientElement';
+import LinearGradientElement from './LinearGradientElement';
+import RadialGradientElement from './RadialGradientElement';
+import StopElement from './StopElement';
+import AnimateElement from './AnimateElement';
+import AnimateColorElement from './AnimateColorElement';
+import AnimateTransformElement from './AnimateTransformElement';
+import FontElement from './FontElement';
+import FontFaceElement from './FontFaceElement';
+import MissingGlyphElement from './MissingGlyphElement';
+import GlyphElement from './GlyphElement';
+import TextElement from './TextElement';
+import TSpanElement from './TSpanElement';
+import TRefElement from './TRefElement';
+import AElement from './AElement';
+import TextPathElement from './TextPathElement';
+import ImageElement from './ImageElement';
+import GElement from './GElement';
+import SymbolElement from './SymbolElement';
+import StyleElement from './StyleElement';
+import UseElement from './UseElement';
+import MaskElement from './MaskElement';
+import ClipPathElement from './ClipPathElement';
+import FilterElement from './FilterElement';
+import FeDropShadowElement from './FeDropShadowElement';
+import FeMorphologyElement from './FeMorphologyElement';
+import FeCompositeElement from './FeCompositeElement';
+import FeColorMatrixElement from './FeColorMatrixElement';
+import FeGaussianBlurElement from './FeGaussianBlurElement';
+import TitleElement from './TitleElement';
+import DescElement from './DescElement';
+declare const elements: {
+    svg: typeof SVGElement;
+    rect: typeof RectElement;
+    circle: typeof CircleElement;
+    ellipse: typeof EllipseElement;
+    line: typeof LineElement;
+    polyline: typeof PolylineElement;
+    polygon: typeof PolygonElement;
+    path: typeof PathElement;
+    pattern: typeof PatternElement;
+    marker: typeof MarkerElement;
+    defs: typeof DefsElement;
+    linearGradient: typeof LinearGradientElement;
+    radialGradient: typeof RadialGradientElement;
+    stop: typeof StopElement;
+    animate: typeof AnimateElement;
+    animateColor: typeof AnimateColorElement;
+    animateTransform: typeof AnimateTransformElement;
+    font: typeof FontElement;
+    'font-face': typeof FontFaceElement;
+    'missing-glyph': typeof MissingGlyphElement;
+    glyph: typeof GlyphElement;
+    text: typeof TextElement;
+    tspan: typeof TSpanElement;
+    tref: typeof TRefElement;
+    a: typeof AElement;
+    textPath: typeof TextPathElement;
+    image: typeof ImageElement;
+    g: typeof GElement;
+    symbol: typeof SymbolElement;
+    style: typeof StyleElement;
+    use: typeof UseElement;
+    mask: typeof MaskElement;
+    clipPath: typeof ClipPathElement;
+    filter: typeof FilterElement;
+    feDropShadow: typeof FeDropShadowElement;
+    feMorphology: typeof FeMorphologyElement;
+    feComposite: typeof FeCompositeElement;
+    feColorMatrix: typeof FeColorMatrixElement;
+    feGaussianBlur: typeof FeGaussianBlurElement;
+    title: typeof TitleElement;
+    desc: typeof DescElement;
+};
+export default elements;
+declare type Elements = typeof elements;
+export declare type AnyElement = Elements[keyof Elements];
+export { Element, UnknownElement, RenderedElement, PathElement, SVGElement, RectElement, CircleElement, EllipseElement, LineElement, PolylineElement, PolygonElement, PatternElement, MarkerElement, DefsElement, GradientElement, LinearGradientElement, RadialGradientElement, StopElement, AnimateElement, AnimateColorElement, AnimateTransformElement, FontElement, FontFaceElement, MissingGlyphElement, GlyphElement, TextElement, TSpanElement, TRefElement, AElement, TextPathElement, ImageElement, GElement, SymbolElement, StyleElement, UseElement, MaskElement, ClipPathElement, FilterElement, FeDropShadowElement, FeMorphologyElement, FeCompositeElement, FeColorMatrixElement, FeGaussianBlurElement, TitleElement, DescElement };
+//# sourceMappingURL=elements.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/elements.d.ts.map b/node_modules/canvg/lib/Document/elements.d.ts.map
new file mode 100644
index 0000000..7785bf3
--- /dev/null
+++ b/node_modules/canvg/lib/Document/elements.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"elements.d.ts","sourceRoot":"","sources":["../../src/Document/elements.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,uBAAuB,MAAM,2BAA2B,CAAC;AAChE,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,QAAA,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0Cb,CAAC;AAEF,eAAe,QAAQ,CAAC;AAExB,aAAK,QAAQ,GAAG,OAAO,QAAQ,CAAC;AAEhC,oBAAY,UAAU,GAAG,QAAQ,CAAC,MAAM,QAAQ,CAAC,CAAC;AAElD,OAAO,EACN,OAAO,EACP,cAAc,EACd,eAAe,EACf,WAAW,EACX,UAAU,EACV,WAAW,EACX,aAAa,EACb,cAAc,EACd,WAAW,EACX,eAAe,EACf,cAAc,EACd,cAAc,EACd,aAAa,EACb,WAAW,EACX,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,uBAAuB,EACvB,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,UAAU,EACV,WAAW,EACX,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,WAAW,EACX,CAAC"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/index.d.ts b/node_modules/canvg/lib/Document/index.d.ts
new file mode 100644
index 0000000..b231aef
--- /dev/null
+++ b/node_modules/canvg/lib/Document/index.d.ts
@@ -0,0 +1,4 @@
+export { default } from './Document';
+export * from './Document';
+export * from './elements';
+//# sourceMappingURL=index.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Document/index.d.ts.map b/node_modules/canvg/lib/Document/index.d.ts.map
new file mode 100644
index 0000000..9ae0395
--- /dev/null
+++ b/node_modules/canvg/lib/Document/index.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Document/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,OAAO,EACP,MAAM,YAAY,CAAC;AACpB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Font.d.ts b/node_modules/canvg/lib/Font.d.ts
new file mode 100644
index 0000000..3429b2c
--- /dev/null
+++ b/node_modules/canvg/lib/Font.d.ts
@@ -0,0 +1,14 @@
+export default class Font {
+    static parse(font?: string, inherit?: string | Font): Font;
+    static readonly styles = "normal|italic|oblique|inherit";
+    static readonly variants = "normal|small-caps|inherit";
+    static readonly weights = "normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit";
+    readonly fontFamily: string;
+    readonly fontSize: string;
+    readonly fontStyle: string;
+    readonly fontWeight: string;
+    readonly fontVariant: string;
+    constructor(fontStyle: string, fontVariant: string, fontWeight: string, fontSize: string, fontFamily: string, inherit?: string | Font);
+    toString(): string;
+}
+//# sourceMappingURL=Font.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Font.d.ts.map b/node_modules/canvg/lib/Font.d.ts.map
new file mode 100644
index 0000000..fcc9219
--- /dev/null
+++ b/node_modules/canvg/lib/Font.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"Font.d.ts","sourceRoot":"","sources":["../src/Font.ts"],"names":[],"mappings":"AAqFA,MAAM,CAAC,OAAO,OAAO,IAAI;IACxB,MAAM,CAAC,KAAK,CACX,IAAI,SAAK,EACT,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IA6ExB,MAAM,CAAC,QAAQ,CAAC,MAAM,mCAAmC;IACzD,MAAM,CAAC,QAAQ,CAAC,QAAQ,+BAA+B;IACvD,MAAM,CAAC,QAAQ,CAAC,OAAO,4EAA4E;IAEnG,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBAG5B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAexB,QAAQ;CAUR"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Mouse.d.ts b/node_modules/canvg/lib/Mouse.d.ts
new file mode 100644
index 0000000..5bd5385
--- /dev/null
+++ b/node_modules/canvg/lib/Mouse.d.ts
@@ -0,0 +1,33 @@
+import { RenderingContext2D } from './types';
+import BoundingBox from './BoundingBox';
+import Screen from './Screen';
+import { Element } from './Document';
+interface IEventTarget {
+    onClick?(): void;
+    onMouseMove?(): void;
+}
+export interface IEvent {
+    type: string;
+    x: number;
+    y: number;
+    run(eventTarget: IEventTarget): void;
+}
+export default class Mouse {
+    private readonly screen;
+    private working;
+    private events;
+    private eventElements;
+    constructor(screen: Screen);
+    isWorking(): boolean;
+    start(): void;
+    stop(): void;
+    hasEvents(): boolean;
+    runEvents(): void;
+    checkPath(element: Element, ctx: RenderingContext2D): void;
+    checkBoundingBox(element: Element, boundingBox: BoundingBox): void;
+    private mapXY;
+    private onClick;
+    private onMouseMove;
+}
+export {};
+//# sourceMappingURL=Mouse.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Mouse.d.ts.map b/node_modules/canvg/lib/Mouse.d.ts.map
new file mode 100644
index 0000000..9bfdaea
--- /dev/null
+++ b/node_modules/canvg/lib/Mouse.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"Mouse.d.ts","sourceRoot":"","sources":["../src/Mouse.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,SAAS,CAAC;AACjB,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,EACN,OAAO,EACP,MAAM,YAAY,CAAC;AAEpB,UAAU,YAAY;IACrB,OAAO,CAAC,IAAI,IAAI,CAAC;IACjB,WAAW,CAAC,IAAI,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,MAAM;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,GAAG,CAAC,WAAW,EAAE,YAAY,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,CAAC,OAAO,OAAO,KAAK;IAMxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IALxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,aAAa,CAAiB;gBAGpB,MAAM,EAAE,MAAM;IAQhC,SAAS;IAIT,KAAK;IAiBL,IAAI;IAYJ,SAAS;IAIT,SAAS;IAkCT,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,kBAAkB;IAmBnD,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW;IAmB3D,OAAO,CAAC,KAAK;IAyBb,OAAO,CAAC,OAAO;IAqBf,OAAO,CAAC,WAAW;CAoBnB"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Parser.d.ts b/node_modules/canvg/lib/Parser.d.ts
new file mode 100644
index 0000000..6207fe9
--- /dev/null
+++ b/node_modules/canvg/lib/Parser.d.ts
@@ -0,0 +1,20 @@
+export interface IParserOptions {
+    /**
+     * WHATWG-compatible `fetch` function.
+     */
+    fetch?: typeof fetch;
+    /**
+     * XML/HTML parser from string into DOM Document.
+     */
+    DOMParser?: typeof DOMParser;
+}
+export default class Parser {
+    private readonly fetch;
+    private readonly DOMParser;
+    constructor({ fetch, DOMParser }?: IParserOptions);
+    parse(resource: string): Promise<Document>;
+    parseFromString(xml: string): Document;
+    private checkDocument;
+    load(url: string): Promise<Document>;
+}
+//# sourceMappingURL=Parser.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Parser.d.ts.map b/node_modules/canvg/lib/Parser.d.ts.map
new file mode 100644
index 0000000..7ce298d
--- /dev/null
+++ b/node_modules/canvg/lib/Parser.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"Parser.d.ts","sourceRoot":"","sources":["../src/Parser.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC9B;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,SAAS,CAAC;CAC7B;AASD,MAAM,CAAC,OAAO,OAAO,MAAM;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;gBAExC,EACX,KAAoB,EACpB,SAA4B,EAC5B,GAAE,cAAmB;IAKhB,KAAK,CAAC,QAAQ,EAAE,MAAM;IAQ5B,eAAe,CAAC,GAAG,EAAE,MAAM;IAc3B,OAAO,CAAC,aAAa;IAUf,IAAI,CAAC,GAAG,EAAE,MAAM;CAMtB"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/PathParser.d.ts b/node_modules/canvg/lib/PathParser.d.ts
new file mode 100644
index 0000000..08d9da7
--- /dev/null
+++ b/node_modules/canvg/lib/PathParser.d.ts
@@ -0,0 +1,32 @@
+import { SVGCommand, CommandM, CommandL, CommandH, CommandV, CommandZ, CommandQ, CommandT, CommandC, CommandS, CommandA } from 'svg-pathdata/lib/types';
+import { SVGPathData } from 'svg-pathdata';
+import Point from './Point';
+export declare type CommandType = SVGCommand['type'];
+export declare type Command = {
+    type: CommandType;
+} & Omit<CommandM, 'type'> & Omit<CommandL, 'type'> & Omit<CommandH, 'type'> & Omit<CommandV, 'type'> & Omit<CommandZ, 'type'> & Omit<CommandQ, 'type'> & Omit<CommandT, 'type'> & Omit<CommandC, 'type'> & Omit<CommandS, 'type'> & Omit<CommandA, 'type'>;
+export default class PathParser extends SVGPathData {
+    control: Point;
+    start: Point;
+    current: Point;
+    command: Command;
+    readonly commands: Command[];
+    private i;
+    private previousCommand;
+    private points;
+    private angles;
+    constructor(path: string);
+    reset(): void;
+    isEnd(): boolean;
+    next(): Command;
+    getPoint(xProp?: string, yProp?: string): Point;
+    getAsControlPoint(xProp?: string, yProp?: string): Point;
+    getAsCurrentPoint(xProp?: string, yProp?: string): Point;
+    getReflectedControlPoint(): Point;
+    makeAbsolute(point: Point): Point;
+    addMarker(point: Point, from?: Point, priorTo?: Point): void;
+    addMarkerAngle(point: Point, angle: number): void;
+    getMarkerPoints(): Point[];
+    getMarkerAngles(): number[];
+}
+//# sourceMappingURL=PathParser.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/PathParser.d.ts.map b/node_modules/canvg/lib/PathParser.d.ts.map
new file mode 100644
index 0000000..46a2caa
--- /dev/null
+++ b/node_modules/canvg/lib/PathParser.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"PathParser.d.ts","sourceRoot":"","sources":["../src/PathParser.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,WAAW,EACX,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,MAAM,SAAS,CAAC;AAE5B,oBAAY,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;AAC7C,oBAAY,OAAO,GAAG;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACxC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,GACtB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,GACtB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,GACtB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,GACtB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,GACtB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,GACtB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,GACtB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,GACtB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,GACtB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAE1B,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,WAAW;IAClD,OAAO,EAAE,KAAK,CAAQ;IACtB,KAAK,EAAE,KAAK,CAAQ;IACpB,OAAO,EAAE,KAAK,CAAQ;IACtB,OAAO,EAAE,OAAO,CAAQ;IACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAkC;IAC9D,OAAO,CAAC,CAAC,CAAM;IACf,OAAO,CAAC,eAAe,CAAiB;IACxC,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAgB;gBAElB,IAAI,EAAE,MAAM;IAUxB,KAAK;IAWL,KAAK;IASL,IAAI;IASJ,QAAQ,CAAC,KAAK,SAAM,EAAE,KAAK,SAAM;IASjC,iBAAiB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IAQhD,iBAAiB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IAQhD,wBAAwB;IA2BxB,YAAY,CAAC,KAAK,EAAE,KAAK;IAczB,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,KAAK;IAcrD,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM;IAK1C,eAAe;IAIf,eAAe;CAmBf"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Point.d.ts b/node_modules/canvg/lib/Point.d.ts
new file mode 100644
index 0000000..2092a37
--- /dev/null
+++ b/node_modules/canvg/lib/Point.d.ts
@@ -0,0 +1,11 @@
+export default class Point {
+    x: number;
+    y: number;
+    static parse(point: string, defaultValue?: number): Point;
+    static parseScale(scale: string, defaultValue?: number): Point;
+    static parsePath(path: string): Point[];
+    constructor(x: number, y: number);
+    angleTo(point: Point): number;
+    applyTransform(transform: number[]): void;
+}
+//# sourceMappingURL=Point.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Point.d.ts.map b/node_modules/canvg/lib/Point.d.ts.map
new file mode 100644
index 0000000..ce8c5bd
--- /dev/null
+++ b/node_modules/canvg/lib/Point.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"Point.d.ts","sourceRoot":"","sources":["../src/Point.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,OAAO,OAAO,KAAK;IAgCjB,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,MAAM;IAhCjB,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,SAAI;IAS5C,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,SAAI;IASjD,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM;gBAarB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM;IAGjB,OAAO,CAAC,KAAK,EAAE,KAAK;IAIpB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE;CAWlC"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Property.d.ts b/node_modules/canvg/lib/Property.d.ts
new file mode 100644
index 0000000..48aa2b4
--- /dev/null
+++ b/node_modules/canvg/lib/Property.d.ts
@@ -0,0 +1,46 @@
+import { Axis } from './ViewPort';
+import Document, { Element } from './Document';
+export default class Property<T = any> {
+    private readonly document;
+    private readonly name;
+    private value;
+    static empty(document: Document): Property<string>;
+    static readonly textBaselineMapping: {
+        baseline: string;
+        'before-edge': string;
+        'text-before-edge': string;
+        middle: string;
+        central: string;
+        'after-edge': string;
+        'text-after-edge': string;
+        ideographic: string;
+        alphabetic: string;
+        hanging: string;
+        mathematical: string;
+    };
+    private isNormalizedColor;
+    constructor(document: Document, name: string, value: T);
+    split(separator?: string): Property<string>[];
+    hasValue(zeroIsValue?: boolean): boolean;
+    isString(regexp?: RegExp): boolean;
+    isUrlDefinition(): boolean;
+    isPixels(): boolean;
+    setValue(value: T): this;
+    getValue(def?: T): T;
+    getNumber(def?: T): number;
+    getString(def?: T): string;
+    getColor(def?: T): string;
+    getDpi(): number;
+    getRem(): number;
+    getEm(): number;
+    getUnits(): string;
+    getPixels(axis?: Axis, processPercent?: boolean): number;
+    getPixels(isFontSize?: boolean): number;
+    getMilliseconds(): number;
+    getRadians(): number;
+    getDefinition<T extends Element>(): T;
+    getFillStyleDefinition(element: Element, opacity: Property): string | CanvasPattern | CanvasGradient;
+    getTextBaseline(): string;
+    addOpacity(opacity: Property): Property<string>;
+}
+//# sourceMappingURL=Property.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Property.d.ts.map b/node_modules/canvg/lib/Property.d.ts.map
new file mode 100644
index 0000000..6574a81
--- /dev/null
+++ b/node_modules/canvg/lib/Property.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"Property.d.ts","sourceRoot":"","sources":["../src/Property.ts"],"names":[],"mappings":"AAOA,OAAO,EACN,IAAI,EACJ,MAAM,YAAY,CAAC;AACpB,OAAO,QAAQ,EAAE,EAChB,OAAO,EAGP,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,OAAO,OAAO,QAAQ,CAAC,CAAC,GAAG,GAAG;IAsBnC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,KAAK;IAvBd,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ;IAI/B,MAAM,CAAC,QAAQ,CAAC,mBAAmB;;;;;;;;;;;;MAYjC;IAEF,OAAO,CAAC,iBAAiB,CAAS;gBAGhB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,MAAM,EACrB,KAAK,EAAE,CAAC;IAGjB,KAAK,CAAC,SAAS,SAAM;IAYrB,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO;IAW9B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM;IAaxB,eAAe;IAIf,QAAQ;IAiBR,QAAQ,CAAC,KAAK,EAAE,CAAC;IAKjB,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;IAQhB,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;IAqBjB,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;IAUjB,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;IAchB,MAAM;IAIN,MAAM;IAIN,KAAK;IAIL,QAAQ;IAIR,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,MAAM;IACxD,SAAS,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM;IAwFvC,eAAe;IAYf,UAAU;IAoBV,aAAa,CAAC,CAAC,SAAS,OAAO;IAe/B,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ;IA8B1D,eAAe;IAQf,UAAU,CAAC,OAAO,EAAE,QAAQ;CA2B5B"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/SVGFontLoader.d.ts b/node_modules/canvg/lib/SVGFontLoader.d.ts
new file mode 100644
index 0000000..16eacdb
--- /dev/null
+++ b/node_modules/canvg/lib/SVGFontLoader.d.ts
@@ -0,0 +1,8 @@
+import Document from './Document';
+export default class SVGFontLoader {
+    private readonly document;
+    loaded: boolean;
+    constructor(document: Document);
+    load(fontFamily: string, url: string): Promise<void>;
+}
+//# sourceMappingURL=SVGFontLoader.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/SVGFontLoader.d.ts.map b/node_modules/canvg/lib/SVGFontLoader.d.ts.map
new file mode 100644
index 0000000..5318cbb
--- /dev/null
+++ b/node_modules/canvg/lib/SVGFontLoader.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"SVGFontLoader.d.ts","sourceRoot":"","sources":["../src/SVGFontLoader.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,MAAM,CAAC,OAAO,OAAO,aAAa;IAIhC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAH1B,MAAM,UAAS;gBAGG,QAAQ,EAAE,QAAQ;IAK9B,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;CAmB1C"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Screen.d.ts b/node_modules/canvg/lib/Screen.d.ts
new file mode 100644
index 0000000..7cc84dc
--- /dev/null
+++ b/node_modules/canvg/lib/Screen.d.ts
@@ -0,0 +1,106 @@
+import { RenderingContext2D } from './types';
+import ViewPort from './ViewPort';
+import Mouse from './Mouse';
+import Document, { Element, AnimateElement } from './Document';
+export interface IScreenOptions {
+    /**
+     * Window object.
+     */
+    window?: Window;
+    /**
+     * WHATWG-compatible `fetch` function.
+     */
+    fetch?: typeof fetch;
+}
+export interface IScreenStartOptions {
+    /**
+     * Whether enable the redraw.
+     */
+    enableRedraw?: boolean;
+    /**
+     * Ignore mouse events.
+     */
+    ignoreMouse?: boolean;
+    /**
+     * Ignore animations.
+     */
+    ignoreAnimation?: boolean;
+    /**
+     * Does not try to resize canvas.
+     */
+    ignoreDimensions?: boolean;
+    /**
+     * Does not clear canvas.
+     */
+    ignoreClear?: boolean;
+    /**
+     * Scales horizontally to width.
+     */
+    scaleWidth?: number;
+    /**
+     * Scales vertically to height.
+     */
+    scaleHeight?: number;
+    /**
+     * Draws at a x offset.
+     */
+    offsetX?: number;
+    /**
+     * Draws at a y offset.
+     */
+    offsetY?: number;
+    /**
+     * Will call the function on every frame, if it returns true, will redraw.
+     */
+    forceRedraw?(): boolean;
+}
+export interface IScreenViewBoxConfig {
+    document: Document;
+    ctx: RenderingContext2D;
+    aspectRatio: string;
+    width: number;
+    desiredWidth: number;
+    height: number;
+    desiredHeight: number;
+    minX?: number;
+    minY?: number;
+    refX?: number;
+    refY?: number;
+    clip?: boolean;
+    clipX?: number;
+    clipY?: number;
+}
+declare const defaultFetch: typeof fetch;
+export default class Screen {
+    readonly ctx: RenderingContext2D;
+    static readonly defaultWindow: Window & typeof globalThis;
+    static readonly defaultFetch: typeof fetch;
+    FRAMERATE: number;
+    MAX_VIRTUAL_PIXELS: number;
+    CLIENT_WIDTH: number;
+    CLIENT_HEIGHT: number;
+    readonly window?: Window;
+    readonly fetch: typeof defaultFetch;
+    readonly viewPort: ViewPort;
+    readonly mouse: Mouse;
+    readonly animations: AnimateElement[];
+    private readyPromise;
+    private resolveReady;
+    private waits;
+    private frameDuration;
+    private isReadyLock;
+    private isFirstRender;
+    private intervalId;
+    constructor(ctx: RenderingContext2D, { fetch, window }?: IScreenOptions);
+    wait(checker: () => boolean): void;
+    ready(): Promise<void>;
+    isReady(): boolean;
+    setDefaults(ctx: RenderingContext2D): void;
+    setViewBox({ document, ctx, aspectRatio, width, desiredWidth, height, desiredHeight, minX, minY, refX, refY, clip, clipX, clipY }: IScreenViewBoxConfig): void;
+    start(element: Element, { enableRedraw, ignoreMouse, ignoreAnimation, ignoreDimensions, ignoreClear, forceRedraw, scaleWidth, scaleHeight, offsetX, offsetY }?: IScreenStartOptions): void;
+    stop(): void;
+    private shouldUpdate;
+    private render;
+}
+export {};
+//# sourceMappingURL=Screen.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Screen.d.ts.map b/node_modules/canvg/lib/Screen.d.ts.map
new file mode 100644
index 0000000..50dbac3
--- /dev/null
+++ b/node_modules/canvg/lib/Screen.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"Screen.d.ts","sourceRoot":"","sources":["../src/Screen.ts"],"names":[],"mappings":"AACA,OAAO,EACN,kBAAkB,EAClB,MAAM,SAAS,CAAC;AAMjB,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,QAAQ,EAAE,EAChB,OAAO,EACP,cAAc,EACd,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,cAAc;IAC9B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IACnC;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,WAAW,CAAC,IAAI,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACpC,QAAQ,EAAE,QAAQ,CAAC;IACnB,GAAG,EAAE,kBAAkB,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAKD,QAAA,MAAM,YAAY,cAEX,CAAC;AAER,MAAM,CAAC,OAAO,OAAO,MAAM;IAsBzB,QAAQ,CAAC,GAAG,EAAE,kBAAkB;IArBjC,MAAM,CAAC,QAAQ,CAAC,aAAa,6BAAiB;IAC9C,MAAM,CAAC,QAAQ,CAAC,YAAY,eAAgB;IAE5C,SAAS,SAAM;IACf,kBAAkB,SAAS;IAC3B,YAAY,SAAO;IACnB,aAAa,SAAO;IACpB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO,YAAY,CAAC;IACpC,QAAQ,CAAC,QAAQ,WAAkB;IACnC,QAAQ,CAAC,KAAK,QAAmB;IACjC,QAAQ,CAAC,UAAU,EAAE,cAAc,EAAE,CAAM;IAC3C,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,UAAU,CAAgB;gBAGxB,GAAG,EAAE,kBAAkB,EAChC,EACC,KAAoB,EACpB,MAAsB,EACtB,GAAE,cAAmB;IAMvB,IAAI,CAAC,OAAO,EAAE,MAAM,OAAO;IAI3B,KAAK;IASL,OAAO;IAoBP,WAAW,CAAC,GAAG,EAAE,kBAAkB;IAQnC,UAAU,CAAC,EACV,QAAQ,EACR,GAAG,EACH,WAAW,EACX,KAAK,EACL,YAAY,EACZ,MAAM,EACN,aAAa,EACb,IAAQ,EACR,IAAQ,EACR,IAAI,EACJ,IAAI,EACJ,IAAY,EACZ,KAAS,EACT,KAAS,EACT,EAAE,oBAAoB;IAuGvB,KAAK,CACJ,OAAO,EAAE,OAAO,EAChB,EACC,YAAoB,EACpB,WAAmB,EACnB,eAAuB,EACvB,gBAAwB,EACxB,WAAmB,EACnB,WAAW,EACX,UAAU,EACV,WAAW,EACX,OAAO,EACP,OAAO,EACP,GAAE,mBAAwB;IAkE5B,IAAI;IASJ,OAAO,CAAC,YAAY;IAoCpB,OAAO,CAAC,MAAM;CA6Hd"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Transform/Matrix.d.ts b/node_modules/canvg/lib/Transform/Matrix.d.ts
new file mode 100644
index 0000000..1f18f99
--- /dev/null
+++ b/node_modules/canvg/lib/Transform/Matrix.d.ts
@@ -0,0 +1,16 @@
+import { RenderingContext2D } from '../types';
+import Document from '../Document';
+import Point from '../Point';
+import Property from '../Property';
+import { ITransform } from './types';
+export default class Matrix implements ITransform {
+    type: string;
+    protected matrix: number[];
+    private readonly originX;
+    private readonly originY;
+    constructor(_: Document, matrix: string, transformOrigin: [Property<string>, Property<string>]);
+    apply(ctx: RenderingContext2D): void;
+    unapply(ctx: RenderingContext2D): void;
+    applyToPoint(point: Point): void;
+}
+//# sourceMappingURL=Matrix.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Transform/Matrix.d.ts.map b/node_modules/canvg/lib/Transform/Matrix.d.ts.map
new file mode 100644
index 0000000..e50efbf
--- /dev/null
+++ b/node_modules/canvg/lib/Transform/Matrix.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"Matrix.d.ts","sourceRoot":"","sources":["../../src/Transform/Matrix.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAIlB,OAAO,QAAQ,MAAM,aAAa,CAAC;AACnC,OAAO,KAAK,MAAM,UAAU,CAAC;AAC7B,OAAO,QAAQ,MAAM,aAAa,CAAC;AACnC,OAAO,EACN,UAAU,EACV,MAAM,SAAS,CAAC;AAEjB,MAAM,CAAC,OAAO,OAAO,MAAO,YAAW,UAAU;IAChD,IAAI,SAAY;IAChB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,CAAM;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;gBAGzC,CAAC,EAAE,QAAQ,EACX,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAOtD,KAAK,CAAC,GAAG,EAAE,kBAAkB;IAqB7B,OAAO,CAAC,GAAG,EAAE,kBAAkB;IA+B/B,YAAY,CAAC,KAAK,EAAE,KAAK;CAGzB"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Transform/Rotate.d.ts b/node_modules/canvg/lib/Transform/Rotate.d.ts
new file mode 100644
index 0000000..4e3b80b
--- /dev/null
+++ b/node_modules/canvg/lib/Transform/Rotate.d.ts
@@ -0,0 +1,17 @@
+import { RenderingContext2D } from '../types';
+import Document from '../Document';
+import Property from '../Property';
+import Point from '../Point';
+export default class Rotate {
+    type: string;
+    private readonly angle;
+    private readonly originX;
+    private readonly originY;
+    private readonly cx;
+    private readonly cy;
+    constructor(document: Document, rotate: string, transformOrigin: [Property<string>, Property<string>]);
+    apply(ctx: RenderingContext2D): void;
+    unapply(ctx: RenderingContext2D): void;
+    applyToPoint(point: Point): void;
+}
+//# sourceMappingURL=Rotate.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Transform/Rotate.d.ts.map b/node_modules/canvg/lib/Transform/Rotate.d.ts.map
new file mode 100644
index 0000000..67e6d41
--- /dev/null
+++ b/node_modules/canvg/lib/Transform/Rotate.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"Rotate.d.ts","sourceRoot":"","sources":["../../src/Transform/Rotate.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAIlB,OAAO,QAAQ,MAAM,aAAa,CAAC;AACnC,OAAO,QAAQ,MAAM,aAAa,CAAC;AACnC,OAAO,KAAK,MAAM,UAAU,CAAC;AAE7B,MAAM,CAAC,OAAO,OAAO,MAAM;IAC1B,IAAI,SAAY;IAChB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;IAC1C,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAa;IAChC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAa;gBAG/B,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAWtD,KAAK,CAAC,GAAG,EAAE,kBAAkB;IAgB7B,OAAO,CAAC,GAAG,EAAE,kBAAkB;IAgB/B,YAAY,CAAC,KAAK,EAAE,KAAK;CAiCzB"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Transform/Scale.d.ts b/node_modules/canvg/lib/Transform/Scale.d.ts
new file mode 100644
index 0000000..b7a134f
--- /dev/null
+++ b/node_modules/canvg/lib/Transform/Scale.d.ts
@@ -0,0 +1,15 @@
+import { RenderingContext2D } from '../types';
+import Document from '../Document';
+import Point from '../Point';
+import Property from '../Property';
+export default class Scale {
+    type: string;
+    private readonly scale;
+    private readonly originX;
+    private readonly originY;
+    constructor(_: Document, scale: string, transformOrigin: [Property<string>, Property<string>]);
+    apply(ctx: RenderingContext2D): void;
+    unapply(ctx: RenderingContext2D): void;
+    applyToPoint(point: Point): void;
+}
+//# sourceMappingURL=Scale.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Transform/Scale.d.ts.map b/node_modules/canvg/lib/Transform/Scale.d.ts.map
new file mode 100644
index 0000000..c436be0
--- /dev/null
+++ b/node_modules/canvg/lib/Transform/Scale.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"Scale.d.ts","sourceRoot":"","sources":["../../src/Transform/Scale.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAIlB,OAAO,QAAQ,MAAM,aAAa,CAAC;AACnC,OAAO,KAAK,MAAM,UAAU,CAAC;AAC7B,OAAO,QAAQ,MAAM,aAAa,CAAC;AAEnC,MAAM,CAAC,OAAO,OAAO,KAAK;IACzB,IAAI,SAAW;IACf,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;gBAGzC,CAAC,EAAE,QAAQ,EACX,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAiBtD,KAAK,CAAC,GAAG,EAAE,kBAAkB;IAiB7B,OAAO,CAAC,GAAG,EAAE,kBAAkB;IAiB/B,YAAY,CAAC,KAAK,EAAE,KAAK;CAezB"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Transform/Skew.d.ts b/node_modules/canvg/lib/Transform/Skew.d.ts
new file mode 100644
index 0000000..6b54f97
--- /dev/null
+++ b/node_modules/canvg/lib/Transform/Skew.d.ts
@@ -0,0 +1,9 @@
+import Document from '../Document';
+import Property from '../Property';
+import Matrix from './Matrix';
+export default class Skew extends Matrix {
+    type: string;
+    protected readonly angle: Property;
+    constructor(document: Document, skew: string, transformOrigin: [Property<string>, Property<string>]);
+}
+//# sourceMappingURL=Skew.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Transform/Skew.d.ts.map b/node_modules/canvg/lib/Transform/Skew.d.ts.map
new file mode 100644
index 0000000..5fc948d
--- /dev/null
+++ b/node_modules/canvg/lib/Transform/Skew.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"Skew.d.ts","sourceRoot":"","sources":["../../src/Transform/Skew.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,aAAa,CAAC;AACnC,OAAO,QAAQ,MAAM,aAAa,CAAC;AACnC,OAAO,MAAM,MAAM,UAAU,CAAC;AAE9B,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,MAAM;IACvC,IAAI,SAAU;IACd,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAQ;gBAGzC,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,MAAM,EACZ,eAAe,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CAMtD"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Transform/SkewX.d.ts b/node_modules/canvg/lib/Transform/SkewX.d.ts
new file mode 100644
index 0000000..35d9dbe
--- /dev/null
+++ b/node_modules/canvg/lib/Transform/SkewX.d.ts
@@ -0,0 +1,8 @@
+import Document from '../Document';
+import Property from '../Property';
+import Skew from './Skew';
+export default class SkewX extends Skew {
+    type: string;
+    constructor(document: Document, skew: string, transformOrigin: [Property<string>, Property<string>]);
+}
+//# sourceMappingURL=SkewX.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Transform/SkewX.d.ts.map b/node_modules/canvg/lib/Transform/SkewX.d.ts.map
new file mode 100644
index 0000000..7bcbbb2
--- /dev/null
+++ b/node_modules/canvg/lib/Transform/SkewX.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"SkewX.d.ts","sourceRoot":"","sources":["../../src/Transform/SkewX.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,aAAa,CAAC;AACnC,OAAO,QAAQ,MAAM,aAAa,CAAC;AACnC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAE1B,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,IAAI;IACtC,IAAI,SAAW;gBAGd,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,MAAM,EACZ,eAAe,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CAatD"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Transform/SkewY.d.ts b/node_modules/canvg/lib/Transform/SkewY.d.ts
new file mode 100644
index 0000000..df82779
--- /dev/null
+++ b/node_modules/canvg/lib/Transform/SkewY.d.ts
@@ -0,0 +1,8 @@
+import Document from '../Document';
+import Property from '../Property';
+import Skew from './Skew';
+export default class SkewY extends Skew {
+    type: string;
+    constructor(document: Document, skew: string, transformOrigin: [Property<string>, Property<string>]);
+}
+//# sourceMappingURL=SkewY.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Transform/SkewY.d.ts.map b/node_modules/canvg/lib/Transform/SkewY.d.ts.map
new file mode 100644
index 0000000..4a46616
--- /dev/null
+++ b/node_modules/canvg/lib/Transform/SkewY.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"SkewY.d.ts","sourceRoot":"","sources":["../../src/Transform/SkewY.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,aAAa,CAAC;AACnC,OAAO,QAAQ,MAAM,aAAa,CAAC;AACnC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAE1B,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,IAAI;IACtC,IAAI,SAAW;gBAGd,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,MAAM,EACZ,eAAe,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CAatD"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Transform/Transform.d.ts b/node_modules/canvg/lib/Transform/Transform.d.ts
new file mode 100644
index 0000000..965b764
--- /dev/null
+++ b/node_modules/canvg/lib/Transform/Transform.d.ts
@@ -0,0 +1,28 @@
+import { RenderingContext2D } from '../types';
+import Property from '../Property';
+import Point from '../Point';
+import Document, { Element } from '../Document';
+import { ITransform } from './types';
+import Translate from './Translate';
+import Rotate from './Rotate';
+import Scale from './Scale';
+import Matrix from './Matrix';
+import Skew from './Skew';
+import SkewX from './SkewX';
+import SkewY from './SkewY';
+export { Translate, Rotate, Scale, Matrix, Skew, SkewX, SkewY };
+interface ITransformConstructor {
+    prototype: ITransform;
+    new (document: Document, value: string, transformOrigin?: readonly [Property<string>, Property<string>]): ITransform;
+}
+export default class Transform {
+    private readonly document;
+    static fromElement(document: Document, element: Element): Transform;
+    static transformTypes: Record<string, ITransformConstructor>;
+    private readonly transforms;
+    constructor(document: Document, transform: string, transformOrigin?: readonly [Property<string>, Property<string>]);
+    apply(ctx: RenderingContext2D): void;
+    unapply(ctx: RenderingContext2D): void;
+    applyToPoint(point: Point): void;
+}
+//# sourceMappingURL=Transform.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Transform/Transform.d.ts.map b/node_modules/canvg/lib/Transform/Transform.d.ts.map
new file mode 100644
index 0000000..a6fe3ad
--- /dev/null
+++ b/node_modules/canvg/lib/Transform/Transform.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"Transform.d.ts","sourceRoot":"","sources":["../../src/Transform/Transform.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAIlB,OAAO,QAAQ,MAAM,aAAa,CAAC;AACnC,OAAO,KAAK,MAAM,UAAU,CAAC;AAC7B,OAAO,QAAQ,EAAE,EAChB,OAAO,EACP,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,UAAU,EACV,MAAM,SAAS,CAAC;AACjB,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,KAAK,MAAM,SAAS,CAAC;AAE5B,OAAO,EACN,SAAS,EACT,MAAM,EACN,KAAK,EACL,MAAM,EACN,IAAI,EACJ,KAAK,EACL,KAAK,EACL,CAAC;AAsBF,UAAU,qBAAqB;IAC9B,SAAS,EAAE,UAAU,CAAC;IACtB,KACC,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,MAAM,EACb,eAAe,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,GAC7D,UAAU,CAAC;CACd;AAED,MAAM,CAAC,OAAO,OAAO,SAAS;IAmC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAlC1B,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO;IAsBvD,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAO1D;IAEF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;gBAG7B,QAAQ,EAAE,QAAQ,EACnC,SAAS,EAAE,MAAM,EACjB,eAAe,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAqBhE,KAAK,CAAC,GAAG,EAAE,kBAAkB;IAW7B,OAAO,CAAC,GAAG,EAAE,kBAAkB;IAY/B,YAAY,CAAC,KAAK,EAAE,KAAK;CAUzB"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Transform/Translate.d.ts b/node_modules/canvg/lib/Transform/Translate.d.ts
new file mode 100644
index 0000000..cbbc26d
--- /dev/null
+++ b/node_modules/canvg/lib/Transform/Translate.d.ts
@@ -0,0 +1,12 @@
+import { RenderingContext2D } from '../types';
+import Document from '../Document';
+import Point from '../Point';
+export default class Translate {
+    type: string;
+    private readonly point;
+    constructor(_: Document, point: string);
+    apply(ctx: RenderingContext2D): void;
+    unapply(ctx: RenderingContext2D): void;
+    applyToPoint(point: Point): void;
+}
+//# sourceMappingURL=Translate.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Transform/Translate.d.ts.map b/node_modules/canvg/lib/Transform/Translate.d.ts.map
new file mode 100644
index 0000000..a20d14b
--- /dev/null
+++ b/node_modules/canvg/lib/Transform/Translate.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"Translate.d.ts","sourceRoot":"","sources":["../../src/Transform/Translate.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAClB,OAAO,QAAQ,MAAM,aAAa,CAAC;AACnC,OAAO,KAAK,MAAM,UAAU,CAAC;AAE7B,MAAM,CAAC,OAAO,OAAO,SAAS;IAC7B,IAAI,SAAe;IACnB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;gBAGpC,CAAC,EAAE,QAAQ,EACX,KAAK,EAAE,MAAM;IAKd,KAAK,CAAC,GAAG,EAAE,kBAAkB;IAY7B,OAAO,CAAC,GAAG,EAAE,kBAAkB;IAY/B,YAAY,CAAC,KAAK,EAAE,KAAK;CAezB"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Transform/index.d.ts b/node_modules/canvg/lib/Transform/index.d.ts
new file mode 100644
index 0000000..e27adde
--- /dev/null
+++ b/node_modules/canvg/lib/Transform/index.d.ts
@@ -0,0 +1,3 @@
+export { default } from './Transform';
+export * from './Transform';
+//# sourceMappingURL=index.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Transform/index.d.ts.map b/node_modules/canvg/lib/Transform/index.d.ts.map
new file mode 100644
index 0000000..f3f0b80
--- /dev/null
+++ b/node_modules/canvg/lib/Transform/index.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Transform/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,OAAO,EACP,MAAM,aAAa,CAAC;AACrB,cAAc,aAAa,CAAC"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Transform/types.d.ts b/node_modules/canvg/lib/Transform/types.d.ts
new file mode 100644
index 0000000..96ddc8f
--- /dev/null
+++ b/node_modules/canvg/lib/Transform/types.d.ts
@@ -0,0 +1,9 @@
+import { RenderingContext2D } from '../types';
+import Point from '../Point';
+export interface ITransform {
+    type: string;
+    apply(ctx: RenderingContext2D): void;
+    unapply(ctx: RenderingContext2D): void;
+    applyToPoint(point: Point): void;
+}
+//# sourceMappingURL=types.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/Transform/types.d.ts.map b/node_modules/canvg/lib/Transform/types.d.ts.map
new file mode 100644
index 0000000..36375a7
--- /dev/null
+++ b/node_modules/canvg/lib/Transform/types.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/Transform/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,MAAM,UAAU,CAAC;AAE7B,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,GAAG,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACrC,OAAO,CAAC,GAAG,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACvC,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACjC"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/ViewPort.d.ts b/node_modules/canvg/lib/ViewPort.d.ts
new file mode 100644
index 0000000..2bdac77
--- /dev/null
+++ b/node_modules/canvg/lib/ViewPort.d.ts
@@ -0,0 +1,16 @@
+export interface IViewPortSize {
+    width: number;
+    height: number;
+}
+export declare type Axis = 'x' | 'y';
+export default class ViewPort {
+    viewPorts: IViewPortSize[];
+    clear(): void;
+    setCurrent(width: number, height: number): void;
+    removeCurrent(): void;
+    getCurrent(): IViewPortSize;
+    get width(): number;
+    get height(): number;
+    computeSize(d?: number | Axis): number;
+}
+//# sourceMappingURL=ViewPort.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/ViewPort.d.ts.map b/node_modules/canvg/lib/ViewPort.d.ts.map
new file mode 100644
index 0000000..90f7193
--- /dev/null
+++ b/node_modules/canvg/lib/ViewPort.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"ViewPort.d.ts","sourceRoot":"","sources":["../src/ViewPort.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,aAAa;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACf;AAED,oBAAY,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;AAE7B,MAAM,CAAC,OAAO,OAAO,QAAQ;IAC5B,SAAS,EAAE,aAAa,EAAE,CAAM;IAEhC,KAAK;IAIL,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAOxC,aAAa;IAIb,UAAU;IAQV,IAAI,KAAK,WAER;IAED,IAAI,MAAM,WAET;IAED,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,GAAC,IAAI;CAiB3B"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/index.babel.js b/node_modules/canvg/lib/index.babel.js
new file mode 100644
index 0000000..b6e9c0a
--- /dev/null
+++ b/node_modules/canvg/lib/index.babel.js
@@ -0,0 +1,5271 @@
+import requestAnimationFrame from 'raf';
+import RGBColor from 'rgbcolor';
+import { SVGPathData } from 'svg-pathdata';
+import { canvasRGBA } from 'stackblur-canvas';
+
+/**
+ * Options preset for `OffscreenCanvas`.
+ * @param config - Preset requirements.
+ * @param config.DOMParser - XML/HTML parser from string into DOM Document.
+ * @returns Preset object.
+ */
+function offscreen({ DOMParser: DOMParserFallback } = {}) {
+    const preset = {
+        window: null,
+        ignoreAnimation: true,
+        ignoreMouse: true,
+        DOMParser: DOMParserFallback,
+        createCanvas(width, height) {
+            return new OffscreenCanvas(width, height);
+        },
+        async createImage(url) {
+            const response = await fetch(url);
+            const blob = await response.blob();
+            const img = await createImageBitmap(blob);
+            return img;
+        }
+    };
+    if (typeof DOMParser !== 'undefined'
+        || typeof DOMParserFallback === 'undefined') {
+        Reflect.deleteProperty(preset, 'DOMParser');
+    }
+    return preset;
+}
+
+/**
+ * Options preset for `node-canvas`.
+ * @param config - Preset requirements.
+ * @param config.DOMParser - XML/HTML parser from string into DOM Document.
+ * @param config.canvas - `node-canvas` exports.
+ * @param config.fetch - WHATWG-compatible `fetch` function.
+ * @returns Preset object.
+ */
+function node({ DOMParser, canvas, fetch }) {
+    return {
+        window: null,
+        ignoreAnimation: true,
+        ignoreMouse: true,
+        DOMParser,
+        fetch,
+        createCanvas: canvas.createCanvas,
+        createImage: canvas.loadImage
+    };
+}
+
+var index = /*#__PURE__*/Object.freeze({
+	__proto__: null,
+	offscreen: offscreen,
+	node: node
+});
+
+/**
+ * HTML-safe compress white-spaces.
+ * @param str - String to compress.
+ * @returns String.
+ */
+function compressSpaces(str) {
+    return str.replace(/(?!\u3000)\s+/gm, ' ');
+}
+/**
+ * HTML-safe left trim.
+ * @param str - String to trim.
+ * @returns String.
+ */
+function trimLeft(str) {
+    return str.replace(/^[\n \t]+/, '');
+}
+/**
+ * HTML-safe right trim.
+ * @param str - String to trim.
+ * @returns String.
+ */
+function trimRight(str) {
+    return str.replace(/[\n \t]+$/, '');
+}
+/**
+ * String to numbers array.
+ * @param str - Numbers string.
+ * @returns Numbers array.
+ */
+function toNumbers(str) {
+    const matches = (str || '').match(/-?(\d+(?:\.\d*(?:[eE][+-]?\d+)?)?|\.\d+)(?=\D|$)/gm) || [];
+    return matches.map(parseFloat);
+}
+// Microsoft Edge fix
+const allUppercase = /^[A-Z-]+$/;
+/**
+ * Normalize attribute name.
+ * @param name - Attribute name.
+ * @returns Normalized attribute name.
+ */
+function normalizeAttributeName(name) {
+    if (allUppercase.test(name)) {
+        return name.toLowerCase();
+    }
+    return name;
+}
+/**
+ * Parse external URL.
+ * @param url - CSS url string.
+ * @returns Parsed URL.
+ */
+function parseExternalUrl(url) {
+    //                      single quotes [2]
+    //                      v         double quotes [3]
+    //                      v         v         no quotes [4]
+    //                      v         v         v
+    const urlMatch = /url\(('([^']+)'|"([^"]+)"|([^'")]+))\)/.exec(url) || [];
+    return urlMatch[2] || urlMatch[3] || urlMatch[4];
+}
+/**
+ * Transform floats to integers in rgb colors.
+ * @param color - Color to normalize.
+ * @returns Normalized color.
+ */
+function normalizeColor(color) {
+    if (!color.startsWith('rgb')) {
+        return color;
+    }
+    let rgbParts = 3;
+    const normalizedColor = color.replace(/\d+(\.\d+)?/g, (num, isFloat) => (rgbParts-- && isFloat
+        ? String(Math.round(parseFloat(num)))
+        : num));
+    return normalizedColor;
+}
+
+// slightly modified version of https://github.com/keeganstreet/specificity/blob/master/specificity.js
+const attributeRegex = /(\[[^\]]+\])/g;
+const idRegex = /(#[^\s+>~.[:]+)/g;
+const classRegex = /(\.[^\s+>~.[:]+)/g;
+const pseudoElementRegex = /(::[^\s+>~.[:]+|:first-line|:first-letter|:before|:after)/gi;
+const pseudoClassWithBracketsRegex = /(:[\w-]+\([^)]*\))/gi;
+const pseudoClassRegex = /(:[^\s+>~.[:]+)/g;
+const elementRegex = /([^\s+>~.[:]+)/g;
+function findSelectorMatch(selector, regex) {
+    const matches = regex.exec(selector);
+    if (!matches) {
+        return [
+            selector,
+            0
+        ];
+    }
+    return [
+        selector.replace(regex, ' '),
+        matches.length
+    ];
+}
+/**
+ * Measure selector specificity.
+ * @param selector - Selector to measure.
+ * @returns Specificity.
+ */
+function getSelectorSpecificity(selector) {
+    const specificity = [0, 0, 0];
+    let currentSelector = selector
+        .replace(/:not\(([^)]*)\)/g, '     $1 ')
+        .replace(/{[\s\S]*/gm, ' ');
+    let delta = 0;
+    [currentSelector, delta] = findSelectorMatch(currentSelector, attributeRegex);
+    specificity[1] += delta;
+    [currentSelector, delta] = findSelectorMatch(currentSelector, idRegex);
+    specificity[0] += delta;
+    [currentSelector, delta] = findSelectorMatch(currentSelector, classRegex);
+    specificity[1] += delta;
+    [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoElementRegex);
+    specificity[2] += delta;
+    [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassWithBracketsRegex);
+    specificity[1] += delta;
+    [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassRegex);
+    specificity[1] += delta;
+    currentSelector = currentSelector
+        .replace(/[*\s+>~]/g, ' ')
+        .replace(/[#.]/g, ' ');
+    [currentSelector, delta] = findSelectorMatch(currentSelector, elementRegex); // lgtm [js/useless-assignment-to-local]
+    specificity[2] += delta;
+    return specificity.join('');
+}
+
+const PSEUDO_ZERO = .00000001;
+/**
+ * Vector magnitude.
+ * @param v
+ * @returns Number result.
+ */
+function vectorMagnitude(v) {
+    return Math.sqrt(Math.pow(v[0], 2) + Math.pow(v[1], 2));
+}
+/**
+ * Ratio between two vectors.
+ * @param u
+ * @param v
+ * @returns Number result.
+ */
+function vectorsRatio(u, v) {
+    return (u[0] * v[0] + u[1] * v[1]) / (vectorMagnitude(u) * vectorMagnitude(v));
+}
+/**
+ * Angle between two vectors.
+ * @param u
+ * @param v
+ * @returns Number result.
+ */
+function vectorsAngle(u, v) {
+    return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vectorsRatio(u, v));
+}
+function CB1(t) {
+    return t * t * t;
+}
+function CB2(t) {
+    return 3 * t * t * (1 - t);
+}
+function CB3(t) {
+    return 3 * t * (1 - t) * (1 - t);
+}
+function CB4(t) {
+    return (1 - t) * (1 - t) * (1 - t);
+}
+function QB1(t) {
+    return t * t;
+}
+function QB2(t) {
+    return 2 * t * (1 - t);
+}
+function QB3(t) {
+    return (1 - t) * (1 - t);
+}
+
+/* eslint-disable @typescript-eslint/no-unsafe-assignment */
+class Property {
+    constructor(document, name, value) {
+        this.document = document;
+        this.name = name;
+        this.value = value;
+        this.isNormalizedColor = false;
+    }
+    static empty(document) {
+        return new Property(document, 'EMPTY', '');
+    }
+    split(separator = ' ') {
+        const { document, name } = this;
+        return compressSpaces(this.getString())
+            .trim()
+            .split(separator)
+            .map(value => new Property(document, name, value));
+    }
+    hasValue(zeroIsValue) {
+        const { value } = this;
+        return value !== null
+            && value !== ''
+            && (zeroIsValue || value !== 0)
+            && typeof value !== 'undefined';
+    }
+    isString(regexp) {
+        const { value } = this;
+        const result = typeof value === 'string';
+        if (!result || !regexp) {
+            return result;
+        }
+        return regexp.test(value);
+    }
+    isUrlDefinition() {
+        return this.isString(/^url\(/);
+    }
+    isPixels() {
+        if (!this.hasValue()) {
+            return false;
+        }
+        const asString = this.getString();
+        switch (true) {
+            case asString.endsWith('px'):
+            case /^[0-9]+$/.test(asString):
+                return true;
+            default:
+                return false;
+        }
+    }
+    setValue(value) {
+        this.value = value;
+        return this;
+    }
+    getValue(def) {
+        if (typeof def === 'undefined' || this.hasValue()) {
+            return this.value;
+        }
+        return def;
+    }
+    getNumber(def) {
+        if (!this.hasValue()) {
+            if (typeof def === 'undefined') {
+                return 0;
+            }
+            return parseFloat(def);
+        }
+        const { value } = this;
+        let n = parseFloat(value);
+        if (this.isString(/%$/)) {
+            n /= 100.0;
+        }
+        return n;
+    }
+    getString(def) {
+        if (typeof def === 'undefined' || this.hasValue()) {
+            return typeof this.value === 'undefined'
+                ? ''
+                : String(this.value);
+        }
+        return String(def);
+    }
+    getColor(def) {
+        let color = this.getString(def);
+        if (this.isNormalizedColor) {
+            return color;
+        }
+        this.isNormalizedColor = true;
+        color = normalizeColor(color);
+        this.value = color;
+        return color;
+    }
+    getDpi() {
+        return 96.0; // TODO: compute?
+    }
+    getRem() {
+        return this.document.rootEmSize;
+    }
+    getEm() {
+        return this.document.emSize;
+    }
+    getUnits() {
+        return this.getString().replace(/[0-9.-]/g, '');
+    }
+    getPixels(axisOrIsFontSize, processPercent = false) {
+        if (!this.hasValue()) {
+            return 0;
+        }
+        const [axis, isFontSize] = typeof axisOrIsFontSize === 'boolean'
+            ? [undefined, axisOrIsFontSize]
+            : [axisOrIsFontSize];
+        const { viewPort } = this.document.screen;
+        switch (true) {
+            case this.isString(/vmin$/):
+                return this.getNumber()
+                    / 100.0
+                    * Math.min(viewPort.computeSize('x'), viewPort.computeSize('y'));
+            case this.isString(/vmax$/):
+                return this.getNumber()
+                    / 100.0
+                    * Math.max(viewPort.computeSize('x'), viewPort.computeSize('y'));
+            case this.isString(/vw$/):
+                return this.getNumber()
+                    / 100.0
+                    * viewPort.computeSize('x');
+            case this.isString(/vh$/):
+                return this.getNumber()
+                    / 100.0
+                    * viewPort.computeSize('y');
+            case this.isString(/rem$/):
+                return this.getNumber() * this.getRem( /* viewPort */);
+            case this.isString(/em$/):
+                return this.getNumber() * this.getEm( /* viewPort */);
+            case this.isString(/ex$/):
+                return this.getNumber() * this.getEm( /* viewPort */) / 2.0;
+            case this.isString(/px$/):
+                return this.getNumber();
+            case this.isString(/pt$/):
+                return this.getNumber() * this.getDpi( /* viewPort */) * (1.0 / 72.0);
+            case this.isString(/pc$/):
+                return this.getNumber() * 15;
+            case this.isString(/cm$/):
+                return this.getNumber() * this.getDpi( /* viewPort */) / 2.54;
+            case this.isString(/mm$/):
+                return this.getNumber() * this.getDpi( /* viewPort */) / 25.4;
+            case this.isString(/in$/):
+                return this.getNumber() * this.getDpi( /* viewPort */);
+            case this.isString(/%$/) && isFontSize:
+                return this.getNumber() * this.getEm( /* viewPort */);
+            case this.isString(/%$/):
+                return this.getNumber() * viewPort.computeSize(axis);
+            default: {
+                const n = this.getNumber();
+                if (processPercent && n < 1.0) {
+                    return n * viewPort.computeSize(axis);
+                }
+                return n;
+            }
+        }
+    }
+    getMilliseconds() {
+        if (!this.hasValue()) {
+            return 0;
+        }
+        if (this.isString(/ms$/)) {
+            return this.getNumber();
+        }
+        return this.getNumber() * 1000;
+    }
+    getRadians() {
+        if (!this.hasValue()) {
+            return 0;
+        }
+        switch (true) {
+            case this.isString(/deg$/):
+                return this.getNumber() * (Math.PI / 180.0);
+            case this.isString(/grad$/):
+                return this.getNumber() * (Math.PI / 200.0);
+            case this.isString(/rad$/):
+                return this.getNumber();
+            default:
+                return this.getNumber() * (Math.PI / 180.0);
+        }
+    }
+    getDefinition() {
+        const asString = this.getString();
+        let name = /#([^)'"]+)/.exec(asString);
+        if (name) {
+            name = name[1];
+        }
+        if (!name) {
+            name = asString;
+        }
+        return this.document.definitions[name];
+    }
+    getFillStyleDefinition(element, opacity) {
+        let def = this.getDefinition();
+        if (!def) {
+            return null;
+        }
+        // gradient
+        if (typeof def.createGradient === 'function') {
+            return def.createGradient(this.document.ctx, element, opacity);
+        }
+        // pattern
+        if (typeof def.createPattern === 'function') {
+            if (def.getHrefAttribute().hasValue()) {
+                const patternTransform = def.getAttribute('patternTransform');
+                def = def.getHrefAttribute().getDefinition();
+                if (patternTransform.hasValue()) {
+                    def.getAttribute('patternTransform', true).setValue(patternTransform.value);
+                }
+            }
+            return def.createPattern(this.document.ctx, element, opacity);
+        }
+        return null;
+    }
+    getTextBaseline() {
+        if (!this.hasValue()) {
+            return null;
+        }
+        return Property.textBaselineMapping[this.getString()];
+    }
+    addOpacity(opacity) {
+        let value = this.getColor();
+        const len = value.length;
+        let commas = 0;
+        // Simulate old RGBColor version, which can't parse rgba.
+        for (let i = 0; i < len; i++) {
+            if (value[i] === ',') {
+                commas++;
+            }
+            if (commas === 3) {
+                break;
+            }
+        }
+        if (opacity.hasValue() && this.isString() && commas !== 3) {
+            const color = new RGBColor(value);
+            if (color.ok) {
+                color.alpha = opacity.getNumber();
+                value = color.toRGBA();
+            }
+        }
+        return new Property(this.document, this.name, value);
+    }
+}
+Property.textBaselineMapping = {
+    'baseline': 'alphabetic',
+    'before-edge': 'top',
+    'text-before-edge': 'top',
+    'middle': 'middle',
+    'central': 'middle',
+    'after-edge': 'bottom',
+    'text-after-edge': 'bottom',
+    'ideographic': 'ideographic',
+    'alphabetic': 'alphabetic',
+    'hanging': 'hanging',
+    'mathematical': 'alphabetic'
+};
+
+class ViewPort {
+    constructor() {
+        this.viewPorts = [];
+    }
+    clear() {
+        this.viewPorts = [];
+    }
+    setCurrent(width, height) {
+        this.viewPorts.push({
+            width,
+            height
+        });
+    }
+    removeCurrent() {
+        this.viewPorts.pop();
+    }
+    getCurrent() {
+        const { viewPorts } = this;
+        return viewPorts[viewPorts.length - 1];
+    }
+    get width() {
+        return this.getCurrent().width;
+    }
+    get height() {
+        return this.getCurrent().height;
+    }
+    computeSize(d) {
+        if (typeof d === 'number') {
+            return d;
+        }
+        if (d === 'x') {
+            return this.width;
+        }
+        if (d === 'y') {
+            return this.height;
+        }
+        return Math.sqrt(Math.pow(this.width, 2) + Math.pow(this.height, 2)) / Math.sqrt(2);
+    }
+}
+
+class Point {
+    constructor(x, y) {
+        this.x = x;
+        this.y = y;
+    }
+    static parse(point, defaultValue = 0) {
+        const [x = defaultValue, y = defaultValue] = toNumbers(point);
+        return new Point(x, y);
+    }
+    static parseScale(scale, defaultValue = 1) {
+        const [x = defaultValue, y = x] = toNumbers(scale);
+        return new Point(x, y);
+    }
+    static parsePath(path) {
+        const points = toNumbers(path);
+        const len = points.length;
+        const pathPoints = [];
+        for (let i = 0; i < len; i += 2) {
+            pathPoints.push(new Point(points[i], points[i + 1]));
+        }
+        return pathPoints;
+    }
+    angleTo(point) {
+        return Math.atan2(point.y - this.y, point.x - this.x);
+    }
+    applyTransform(transform) {
+        const { x, y } = this;
+        const xp = x * transform[0] + y * transform[2] + transform[4];
+        const yp = x * transform[1] + y * transform[3] + transform[5];
+        this.x = xp;
+        this.y = yp;
+    }
+}
+
+class Mouse {
+    constructor(screen) {
+        this.screen = screen;
+        this.working = false;
+        this.events = [];
+        this.eventElements = [];
+        // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
+        this.onClick = this.onClick.bind(this);
+        // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
+        this.onMouseMove = this.onMouseMove.bind(this);
+    }
+    isWorking() {
+        return this.working;
+    }
+    start() {
+        if (this.working) {
+            return;
+        }
+        const { screen, onClick, onMouseMove } = this;
+        const canvas = screen.ctx.canvas;
+        canvas.onclick = onClick;
+        canvas.onmousemove = onMouseMove;
+        this.working = true;
+    }
+    stop() {
+        if (!this.working) {
+            return;
+        }
+        const canvas = this.screen.ctx.canvas;
+        this.working = false;
+        canvas.onclick = null;
+        canvas.onmousemove = null;
+    }
+    hasEvents() {
+        return this.working && this.events.length > 0;
+    }
+    runEvents() {
+        if (!this.working) {
+            return;
+        }
+        const { screen: document, events, eventElements } = this;
+        const { style } = document.ctx.canvas;
+        if (style) {
+            style.cursor = '';
+        }
+        events.forEach(({ run }, i) => {
+            let element = eventElements[i];
+            while (element) {
+                run(element);
+                element = element.parent;
+            }
+        });
+        // done running, clear
+        this.events = [];
+        this.eventElements = [];
+    }
+    checkPath(element, ctx) {
+        if (!this.working || !ctx) {
+            return;
+        }
+        const { events, eventElements } = this;
+        events.forEach(({ x, y }, i) => {
+            if (!eventElements[i] && ctx.isPointInPath && ctx.isPointInPath(x, y)) {
+                eventElements[i] = element;
+            }
+        });
+    }
+    checkBoundingBox(element, boundingBox) {
+        if (!this.working || !boundingBox) {
+            return;
+        }
+        const { events, eventElements } = this;
+        events.forEach(({ x, y }, i) => {
+            if (!eventElements[i] && boundingBox.isPointInBox(x, y)) {
+                eventElements[i] = element;
+            }
+        });
+    }
+    mapXY(x, y) {
+        const { window, ctx } = this.screen;
+        const point = new Point(x, y);
+        let element = ctx.canvas;
+        while (element) {
+            point.x -= element.offsetLeft;
+            point.y -= element.offsetTop;
+            element = element.offsetParent;
+        }
+        if (window.scrollX) {
+            point.x += window.scrollX;
+        }
+        if (window.scrollY) {
+            point.y += window.scrollY;
+        }
+        return point;
+    }
+    onClick(event) {
+        const { x, y } = this.mapXY(event.clientX, event.clientY);
+        this.events.push({
+            type: 'onclick',
+            x,
+            y,
+            run(eventTarget) {
+                if (eventTarget.onClick) {
+                    eventTarget.onClick();
+                }
+            }
+        });
+    }
+    onMouseMove(event) {
+        const { x, y } = this.mapXY(event.clientX, event.clientY);
+        this.events.push({
+            type: 'onmousemove',
+            x,
+            y,
+            run(eventTarget) {
+                if (eventTarget.onMouseMove) {
+                    eventTarget.onMouseMove();
+                }
+            }
+        });
+    }
+}
+
+const defaultWindow = typeof window !== 'undefined'
+    ? window
+    : null;
+const defaultFetch$1 = typeof fetch !== 'undefined'
+    ? fetch.bind(undefined) // `fetch` depends on context: `someObject.fetch(...)` will throw error.
+    : null;
+class Screen {
+    constructor(ctx, { fetch = defaultFetch$1, window = defaultWindow } = {}) {
+        this.ctx = ctx;
+        this.FRAMERATE = 30;
+        this.MAX_VIRTUAL_PIXELS = 30000;
+        this.CLIENT_WIDTH = 800;
+        this.CLIENT_HEIGHT = 600;
+        this.viewPort = new ViewPort();
+        this.mouse = new Mouse(this);
+        this.animations = [];
+        this.waits = [];
+        this.frameDuration = 0;
+        this.isReadyLock = false;
+        this.isFirstRender = true;
+        this.intervalId = null;
+        this.window = window;
+        this.fetch = fetch;
+    }
+    wait(checker) {
+        this.waits.push(checker);
+    }
+    ready() {
+        // eslint-disable-next-line @typescript-eslint/no-misused-promises
+        if (!this.readyPromise) {
+            return Promise.resolve();
+        }
+        return this.readyPromise;
+    }
+    isReady() {
+        if (this.isReadyLock) {
+            return true;
+        }
+        const isReadyLock = this.waits.every(_ => _());
+        if (isReadyLock) {
+            this.waits = [];
+            if (this.resolveReady) {
+                this.resolveReady();
+            }
+        }
+        this.isReadyLock = isReadyLock;
+        return isReadyLock;
+    }
+    setDefaults(ctx) {
+        // initial values and defaults
+        ctx.strokeStyle = 'rgba(0,0,0,0)';
+        ctx.lineCap = 'butt';
+        ctx.lineJoin = 'miter';
+        ctx.miterLimit = 4;
+    }
+    setViewBox({ document, ctx, aspectRatio, width, desiredWidth, height, desiredHeight, minX = 0, minY = 0, refX, refY, clip = false, clipX = 0, clipY = 0 }) {
+        // aspect ratio - http://www.w3.org/TR/SVG/coords.html#PreserveAspectRatioAttribute
+        const cleanAspectRatio = compressSpaces(aspectRatio).replace(/^defer\s/, ''); // ignore defer
+        const [aspectRatioAlign, aspectRatioMeetOrSlice] = cleanAspectRatio.split(' ');
+        const align = aspectRatioAlign || 'xMidYMid';
+        const meetOrSlice = aspectRatioMeetOrSlice || 'meet';
+        // calculate scale
+        const scaleX = width / desiredWidth;
+        const scaleY = height / desiredHeight;
+        const scaleMin = Math.min(scaleX, scaleY);
+        const scaleMax = Math.max(scaleX, scaleY);
+        let finalDesiredWidth = desiredWidth;
+        let finalDesiredHeight = desiredHeight;
+        if (meetOrSlice === 'meet') {
+            finalDesiredWidth *= scaleMin;
+            finalDesiredHeight *= scaleMin;
+        }
+        if (meetOrSlice === 'slice') {
+            finalDesiredWidth *= scaleMax;
+            finalDesiredHeight *= scaleMax;
+        }
+        const refXProp = new Property(document, 'refX', refX);
+        const refYProp = new Property(document, 'refY', refY);
+        const hasRefs = refXProp.hasValue() && refYProp.hasValue();
+        if (hasRefs) {
+            ctx.translate(-scaleMin * refXProp.getPixels('x'), -scaleMin * refYProp.getPixels('y'));
+        }
+        if (clip) {
+            const scaledClipX = scaleMin * clipX;
+            const scaledClipY = scaleMin * clipY;
+            ctx.beginPath();
+            ctx.moveTo(scaledClipX, scaledClipY);
+            ctx.lineTo(width, scaledClipY);
+            ctx.lineTo(width, height);
+            ctx.lineTo(scaledClipX, height);
+            ctx.closePath();
+            ctx.clip();
+        }
+        if (!hasRefs) {
+            const isMeetMinY = meetOrSlice === 'meet' && scaleMin === scaleY;
+            const isSliceMaxY = meetOrSlice === 'slice' && scaleMax === scaleY;
+            const isMeetMinX = meetOrSlice === 'meet' && scaleMin === scaleX;
+            const isSliceMaxX = meetOrSlice === 'slice' && scaleMax === scaleX;
+            if (align.startsWith('xMid') && (isMeetMinY || isSliceMaxY)) {
+                ctx.translate(width / 2.0 - finalDesiredWidth / 2.0, 0);
+            }
+            if (align.endsWith('YMid') && (isMeetMinX || isSliceMaxX)) {
+                ctx.translate(0, height / 2.0 - finalDesiredHeight / 2.0);
+            }
+            if (align.startsWith('xMax') && (isMeetMinY || isSliceMaxY)) {
+                ctx.translate(width - finalDesiredWidth, 0);
+            }
+            if (align.endsWith('YMax') && (isMeetMinX || isSliceMaxX)) {
+                ctx.translate(0, height - finalDesiredHeight);
+            }
+        }
+        // scale
+        switch (true) {
+            case align === 'none':
+                ctx.scale(scaleX, scaleY);
+                break;
+            case meetOrSlice === 'meet':
+                ctx.scale(scaleMin, scaleMin);
+                break;
+            case meetOrSlice === 'slice':
+                ctx.scale(scaleMax, scaleMax);
+                break;
+        }
+        // translate
+        ctx.translate(-minX, -minY);
+    }
+    start(element, { enableRedraw = false, ignoreMouse = false, ignoreAnimation = false, ignoreDimensions = false, ignoreClear = false, forceRedraw, scaleWidth, scaleHeight, offsetX, offsetY } = {}) {
+        const { FRAMERATE, mouse } = this;
+        const frameDuration = 1000 / FRAMERATE;
+        this.frameDuration = frameDuration;
+        this.readyPromise = new Promise((resolve) => {
+            this.resolveReady = resolve;
+        });
+        if (this.isReady()) {
+            this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);
+        }
+        if (!enableRedraw) {
+            return;
+        }
+        let now = Date.now();
+        let then = now;
+        let delta = 0;
+        const tick = () => {
+            now = Date.now();
+            delta = now - then;
+            if (delta >= frameDuration) {
+                then = now - (delta % frameDuration);
+                if (this.shouldUpdate(ignoreAnimation, forceRedraw)) {
+                    this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);
+                    mouse.runEvents();
+                }
+            }
+            this.intervalId = requestAnimationFrame(tick);
+        };
+        if (!ignoreMouse) {
+            mouse.start();
+        }
+        this.intervalId = requestAnimationFrame(tick);
+    }
+    stop() {
+        if (this.intervalId) {
+            requestAnimationFrame.cancel(this.intervalId);
+            this.intervalId = null;
+        }
+        this.mouse.stop();
+    }
+    shouldUpdate(ignoreAnimation, forceRedraw) {
+        // need update from animations?
+        if (!ignoreAnimation) {
+            const { frameDuration } = this;
+            const shouldUpdate = this.animations.reduce((shouldUpdate, animation) => animation.update(frameDuration) || shouldUpdate, false);
+            if (shouldUpdate) {
+                return true;
+            }
+        }
+        // need update from redraw?
+        if (typeof forceRedraw === 'function' && forceRedraw()) {
+            return true;
+        }
+        if (!this.isReadyLock && this.isReady()) {
+            return true;
+        }
+        // need update from mouse events?
+        if (this.mouse.hasEvents()) {
+            return true;
+        }
+        return false;
+    }
+    render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY) {
+        const { CLIENT_WIDTH, CLIENT_HEIGHT, viewPort, ctx, isFirstRender } = this;
+        const canvas = ctx.canvas;
+        viewPort.clear();
+        if (canvas.width && canvas.height) {
+            viewPort.setCurrent(canvas.width, canvas.height);
+        }
+        else {
+            viewPort.setCurrent(CLIENT_WIDTH, CLIENT_HEIGHT);
+        }
+        const widthStyle = element.getStyle('width');
+        const heightStyle = element.getStyle('height');
+        if (!ignoreDimensions && (isFirstRender
+            || typeof scaleWidth !== 'number' && typeof scaleHeight !== 'number')) {
+            // set canvas size
+            if (widthStyle.hasValue()) {
+                canvas.width = widthStyle.getPixels('x');
+                if (canvas.style) {
+                    canvas.style.width = `${canvas.width}px`;
+                }
+            }
+            if (heightStyle.hasValue()) {
+                canvas.height = heightStyle.getPixels('y');
+                if (canvas.style) {
+                    canvas.style.height = `${canvas.height}px`;
+                }
+            }
+        }
+        let cWidth = canvas.clientWidth || canvas.width;
+        let cHeight = canvas.clientHeight || canvas.height;
+        if (ignoreDimensions && widthStyle.hasValue() && heightStyle.hasValue()) {
+            cWidth = widthStyle.getPixels('x');
+            cHeight = heightStyle.getPixels('y');
+        }
+        viewPort.setCurrent(cWidth, cHeight);
+        if (typeof offsetX === 'number') {
+            element.getAttribute('x', true).setValue(offsetX);
+        }
+        if (typeof offsetY === 'number') {
+            element.getAttribute('y', true).setValue(offsetY);
+        }
+        if (typeof scaleWidth === 'number'
+            || typeof scaleHeight === 'number') {
+            const viewBox = toNumbers(element.getAttribute('viewBox').getString());
+            let xRatio = 0;
+            let yRatio = 0;
+            if (typeof scaleWidth === 'number') {
+                const widthStyle = element.getStyle('width');
+                if (widthStyle.hasValue()) {
+                    xRatio = widthStyle.getPixels('x') / scaleWidth;
+                }
+                else if (!isNaN(viewBox[2])) {
+                    xRatio = viewBox[2] / scaleWidth;
+                }
+            }
+            if (typeof scaleHeight === 'number') {
+                const heightStyle = element.getStyle('height');
+                if (heightStyle.hasValue()) {
+                    yRatio = heightStyle.getPixels('y') / scaleHeight;
+                }
+                else if (!isNaN(viewBox[3])) {
+                    yRatio = viewBox[3] / scaleHeight;
+                }
+            }
+            if (!xRatio) {
+                xRatio = yRatio;
+            }
+            if (!yRatio) {
+                yRatio = xRatio;
+            }
+            element.getAttribute('width', true).setValue(scaleWidth);
+            element.getAttribute('height', true).setValue(scaleHeight);
+            const transformStyle = element.getStyle('transform', true, true);
+            transformStyle.setValue(`${transformStyle.getString()} scale(${1.0 / xRatio}, ${1.0 / yRatio})`);
+        }
+        // clear and render
+        if (!ignoreClear) {
+            ctx.clearRect(0, 0, cWidth, cHeight);
+        }
+        element.render(ctx);
+        if (isFirstRender) {
+            this.isFirstRender = false;
+        }
+    }
+}
+Screen.defaultWindow = defaultWindow;
+Screen.defaultFetch = defaultFetch$1;
+
+const { defaultFetch } = Screen;
+const DefaultDOMParser = typeof DOMParser !== 'undefined'
+    ? DOMParser
+    : null;
+class Parser {
+    constructor({ fetch = defaultFetch, DOMParser = DefaultDOMParser } = {}) {
+        this.fetch = fetch;
+        this.DOMParser = DOMParser;
+    }
+    async parse(resource) {
+        if (resource.startsWith('<')) {
+            return this.parseFromString(resource);
+        }
+        return this.load(resource);
+    }
+    parseFromString(xml) {
+        const parser = new this.DOMParser();
+        try {
+            return this.checkDocument(parser.parseFromString(xml, 'image/svg+xml'));
+        }
+        catch (err) {
+            return this.checkDocument(parser.parseFromString(xml, 'text/xml'));
+        }
+    }
+    checkDocument(document) {
+        const parserError = document.getElementsByTagName('parsererror')[0];
+        if (parserError) {
+            throw new Error(parserError.textContent);
+        }
+        return document;
+    }
+    async load(url) {
+        const response = await this.fetch(url);
+        const xml = await response.text();
+        return this.parseFromString(xml);
+    }
+}
+
+class Translate {
+    constructor(_, point) {
+        this.type = 'translate';
+        this.point = null;
+        this.point = Point.parse(point);
+    }
+    apply(ctx) {
+        const { x, y } = this.point;
+        ctx.translate(x || 0.0, y || 0.0);
+    }
+    unapply(ctx) {
+        const { x, y } = this.point;
+        ctx.translate(-1.0 * x || 0.0, -1.0 * y || 0.0);
+    }
+    applyToPoint(point) {
+        const { x, y } = this.point;
+        point.applyTransform([
+            1,
+            0,
+            0,
+            1,
+            x || 0.0,
+            y || 0.0
+        ]);
+    }
+}
+
+class Rotate {
+    constructor(document, rotate, transformOrigin) {
+        this.type = 'rotate';
+        this.angle = null;
+        this.originX = null;
+        this.originY = null;
+        this.cx = 0;
+        this.cy = 0;
+        const numbers = toNumbers(rotate);
+        this.angle = new Property(document, 'angle', numbers[0]);
+        this.originX = transformOrigin[0];
+        this.originY = transformOrigin[1];
+        this.cx = numbers[1] || 0;
+        this.cy = numbers[2] || 0;
+    }
+    apply(ctx) {
+        const { cx, cy, originX, originY, angle } = this;
+        const tx = cx + originX.getPixels('x');
+        const ty = cy + originY.getPixels('y');
+        ctx.translate(tx, ty);
+        ctx.rotate(angle.getRadians());
+        ctx.translate(-tx, -ty);
+    }
+    unapply(ctx) {
+        const { cx, cy, originX, originY, angle } = this;
+        const tx = cx + originX.getPixels('x');
+        const ty = cy + originY.getPixels('y');
+        ctx.translate(tx, ty);
+        ctx.rotate(-1.0 * angle.getRadians());
+        ctx.translate(-tx, -ty);
+    }
+    applyToPoint(point) {
+        const { cx, cy, angle } = this;
+        const rad = angle.getRadians();
+        point.applyTransform([
+            1,
+            0,
+            0,
+            1,
+            cx || 0.0,
+            cy || 0.0 // this.p.y
+        ]);
+        point.applyTransform([
+            Math.cos(rad),
+            Math.sin(rad),
+            -Math.sin(rad),
+            Math.cos(rad),
+            0,
+            0
+        ]);
+        point.applyTransform([
+            1,
+            0,
+            0,
+            1,
+            -cx || 0.0,
+            -cy || 0.0 // -this.p.y
+        ]);
+    }
+}
+
+class Scale {
+    constructor(_, scale, transformOrigin) {
+        this.type = 'scale';
+        this.scale = null;
+        this.originX = null;
+        this.originY = null;
+        const scaleSize = Point.parseScale(scale);
+        // Workaround for node-canvas
+        if (scaleSize.x === 0
+            || scaleSize.y === 0) {
+            scaleSize.x = PSEUDO_ZERO;
+            scaleSize.y = PSEUDO_ZERO;
+        }
+        this.scale = scaleSize;
+        this.originX = transformOrigin[0];
+        this.originY = transformOrigin[1];
+    }
+    apply(ctx) {
+        const { scale: { x, y }, originX, originY } = this;
+        const tx = originX.getPixels('x');
+        const ty = originY.getPixels('y');
+        ctx.translate(tx, ty);
+        ctx.scale(x, y || x);
+        ctx.translate(-tx, -ty);
+    }
+    unapply(ctx) {
+        const { scale: { x, y }, originX, originY } = this;
+        const tx = originX.getPixels('x');
+        const ty = originY.getPixels('y');
+        ctx.translate(tx, ty);
+        ctx.scale(1.0 / x, 1.0 / y || x);
+        ctx.translate(-tx, -ty);
+    }
+    applyToPoint(point) {
+        const { x, y } = this.scale;
+        point.applyTransform([
+            x || 0.0,
+            0,
+            0,
+            y || 0.0,
+            0,
+            0
+        ]);
+    }
+}
+
+class Matrix {
+    constructor(_, matrix, transformOrigin) {
+        this.type = 'matrix';
+        this.matrix = [];
+        this.originX = null;
+        this.originY = null;
+        this.matrix = toNumbers(matrix);
+        this.originX = transformOrigin[0];
+        this.originY = transformOrigin[1];
+    }
+    apply(ctx) {
+        const { originX, originY, matrix } = this;
+        const tx = originX.getPixels('x');
+        const ty = originY.getPixels('y');
+        ctx.translate(tx, ty);
+        ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);
+        ctx.translate(-tx, -ty);
+    }
+    unapply(ctx) {
+        const { originX, originY, matrix } = this;
+        const a = matrix[0];
+        const b = matrix[2];
+        const c = matrix[4];
+        const d = matrix[1];
+        const e = matrix[3];
+        const f = matrix[5];
+        const g = 0.0;
+        const h = 0.0;
+        const i = 1.0;
+        const det = 1 / (a * (e * i - f * h) - b * (d * i - f * g) + c * (d * h - e * g));
+        const tx = originX.getPixels('x');
+        const ty = originY.getPixels('y');
+        ctx.translate(tx, ty);
+        ctx.transform(det * (e * i - f * h), det * (f * g - d * i), det * (c * h - b * i), det * (a * i - c * g), det * (b * f - c * e), det * (c * d - a * f));
+        ctx.translate(-tx, -ty);
+    }
+    applyToPoint(point) {
+        point.applyTransform(this.matrix);
+    }
+}
+
+class Skew extends Matrix {
+    constructor(document, skew, transformOrigin) {
+        super(document, skew, transformOrigin);
+        this.type = 'skew';
+        this.angle = null;
+        this.angle = new Property(document, 'angle', skew);
+    }
+}
+
+class SkewX extends Skew {
+    constructor(document, skew, transformOrigin) {
+        super(document, skew, transformOrigin);
+        this.type = 'skewX';
+        this.matrix = [
+            1,
+            0,
+            Math.tan(this.angle.getRadians()),
+            1,
+            0,
+            0
+        ];
+    }
+}
+
+class SkewY extends Skew {
+    constructor(document, skew, transformOrigin) {
+        super(document, skew, transformOrigin);
+        this.type = 'skewY';
+        this.matrix = [
+            1,
+            Math.tan(this.angle.getRadians()),
+            0,
+            1,
+            0,
+            0
+        ];
+    }
+}
+
+function parseTransforms(transform) {
+    return compressSpaces(transform)
+        .trim()
+        .replace(/\)([a-zA-Z])/g, ') $1')
+        .replace(/\)(\s?,\s?)/g, ') ')
+        .split(/\s(?=[a-z])/);
+}
+function parseTransform(transform) {
+    const [type, value] = transform.split('(');
+    return [
+        type.trim(),
+        value.trim().replace(')', '')
+    ];
+}
+class Transform {
+    constructor(document, transform, transformOrigin) {
+        this.document = document;
+        this.transforms = [];
+        const data = parseTransforms(transform);
+        data.forEach((transform) => {
+            if (transform === 'none') {
+                return;
+            }
+            const [type, value] = parseTransform(transform);
+            const TransformType = Transform.transformTypes[type];
+            if (typeof TransformType !== 'undefined') {
+                this.transforms.push(new TransformType(this.document, value, transformOrigin));
+            }
+        });
+    }
+    static fromElement(document, element) {
+        const transformStyle = element.getStyle('transform', false, true);
+        const [transformOriginXProperty, transformOriginYProperty = transformOriginXProperty] = element.getStyle('transform-origin', false, true).split();
+        const transformOrigin = [
+            transformOriginXProperty,
+            transformOriginYProperty
+        ];
+        if (transformStyle.hasValue()) {
+            return new Transform(document, transformStyle.getString(), transformOrigin);
+        }
+        return null;
+    }
+    apply(ctx) {
+        const { transforms } = this;
+        const len = transforms.length;
+        for (let i = 0; i < len; i++) {
+            transforms[i].apply(ctx);
+        }
+    }
+    unapply(ctx) {
+        const { transforms } = this;
+        const len = transforms.length;
+        for (let i = len - 1; i >= 0; i--) {
+            transforms[i].unapply(ctx);
+        }
+    }
+    // TODO: applyToPoint unused ... remove?
+    applyToPoint(point) {
+        const { transforms } = this;
+        const len = transforms.length;
+        for (let i = 0; i < len; i++) {
+            transforms[i].applyToPoint(point);
+        }
+    }
+}
+Transform.transformTypes = {
+    translate: Translate,
+    rotate: Rotate,
+    scale: Scale,
+    matrix: Matrix,
+    skewX: SkewX,
+    skewY: SkewY
+};
+
+class Element {
+    constructor(document, node, captureTextNodes = false) {
+        this.document = document;
+        this.node = node;
+        this.captureTextNodes = captureTextNodes;
+        this.attributes = {};
+        this.styles = {};
+        this.stylesSpecificity = {};
+        this.animationFrozen = false;
+        this.animationFrozenValue = '';
+        this.parent = null;
+        this.children = [];
+        if (!node || node.nodeType !== 1) { // ELEMENT_NODE
+            return;
+        }
+        // add attributes
+        Array.from(node.attributes).forEach((attribute) => {
+            const nodeName = normalizeAttributeName(attribute.nodeName);
+            this.attributes[nodeName] = new Property(document, nodeName, attribute.value);
+        });
+        this.addStylesFromStyleDefinition();
+        // add inline styles
+        if (this.getAttribute('style').hasValue()) {
+            const styles = this.getAttribute('style')
+                .getString()
+                .split(';')
+                .map(_ => _.trim());
+            styles.forEach((style) => {
+                if (!style) {
+                    return;
+                }
+                const [name, value] = style.split(':').map(_ => _.trim());
+                this.styles[name] = new Property(document, name, value);
+            });
+        }
+        const { definitions } = document;
+        const id = this.getAttribute('id');
+        // add id
+        if (id.hasValue()) {
+            if (!definitions[id.getString()]) {
+                definitions[id.getString()] = this;
+            }
+        }
+        Array.from(node.childNodes).forEach((childNode) => {
+            if (childNode.nodeType === 1) {
+                this.addChild(childNode); // ELEMENT_NODE
+            }
+            else if (captureTextNodes && (childNode.nodeType === 3
+                || childNode.nodeType === 4)) {
+                const textNode = document.createTextNode(childNode);
+                if (textNode.getText().length > 0) {
+                    this.addChild(textNode); // TEXT_NODE
+                }
+            }
+        });
+    }
+    getAttribute(name, createIfNotExists = false) {
+        const attr = this.attributes[name];
+        if (!attr && createIfNotExists) {
+            const attr = new Property(this.document, name, '');
+            this.attributes[name] = attr;
+            return attr;
+        }
+        return attr || Property.empty(this.document);
+    }
+    getHrefAttribute() {
+        for (const key in this.attributes) {
+            if (key === 'href' || key.endsWith(':href')) {
+                return this.attributes[key];
+            }
+        }
+        return Property.empty(this.document);
+    }
+    getStyle(name, createIfNotExists = false, skipAncestors = false) {
+        const style = this.styles[name];
+        if (style) {
+            return style;
+        }
+        const attr = this.getAttribute(name);
+        if (attr?.hasValue()) {
+            this.styles[name] = attr; // move up to me to cache
+            return attr;
+        }
+        if (!skipAncestors) {
+            const { parent } = this;
+            if (parent) {
+                const parentStyle = parent.getStyle(name);
+                if (parentStyle?.hasValue()) {
+                    return parentStyle;
+                }
+            }
+        }
+        if (createIfNotExists) {
+            const style = new Property(this.document, name, '');
+            this.styles[name] = style;
+            return style;
+        }
+        return style || Property.empty(this.document);
+    }
+    render(ctx) {
+        // don't render display=none
+        // don't render visibility=hidden
+        if (this.getStyle('display').getString() === 'none'
+            || this.getStyle('visibility').getString() === 'hidden') {
+            return;
+        }
+        ctx.save();
+        if (this.getStyle('mask').hasValue()) { // mask
+            const mask = this.getStyle('mask').getDefinition();
+            if (mask) {
+                this.applyEffects(ctx);
+                mask.apply(ctx, this);
+            }
+        }
+        else if (this.getStyle('filter').getValue('none') !== 'none') { // filter
+            const filter = this.getStyle('filter').getDefinition();
+            if (filter) {
+                this.applyEffects(ctx);
+                filter.apply(ctx, this);
+            }
+        }
+        else {
+            this.setContext(ctx);
+            this.renderChildren(ctx);
+            this.clearContext(ctx);
+        }
+        ctx.restore();
+    }
+    setContext(_) {
+        // NO RENDER
+    }
+    applyEffects(ctx) {
+        // transform
+        const transform = Transform.fromElement(this.document, this);
+        if (transform) {
+            transform.apply(ctx);
+        }
+        // clip
+        const clipPathStyleProp = this.getStyle('clip-path', false, true);
+        if (clipPathStyleProp.hasValue()) {
+            const clip = clipPathStyleProp.getDefinition();
+            if (clip) {
+                clip.apply(ctx);
+            }
+        }
+    }
+    clearContext(_) {
+        // NO RENDER
+    }
+    renderChildren(ctx) {
+        this.children.forEach((child) => {
+            child.render(ctx);
+        });
+    }
+    addChild(childNode) {
+        const child = childNode instanceof Element
+            ? childNode
+            : this.document.createElement(childNode);
+        child.parent = this;
+        if (!Element.ignoreChildTypes.includes(child.type)) {
+            this.children.push(child);
+        }
+    }
+    matchesSelector(selector) {
+        const { node } = this;
+        if (typeof node.matches === 'function') {
+            return node.matches(selector);
+        }
+        const styleClasses = node.getAttribute?.('class');
+        if (!styleClasses || styleClasses === '') {
+            return false;
+        }
+        return styleClasses.split(' ').some(styleClass => `.${styleClass}` === selector);
+    }
+    addStylesFromStyleDefinition() {
+        const { styles, stylesSpecificity } = this.document;
+        for (const selector in styles) {
+            if (!selector.startsWith('@') && this.matchesSelector(selector)) {
+                const style = styles[selector];
+                const specificity = stylesSpecificity[selector];
+                if (style) {
+                    for (const name in style) {
+                        let existingSpecificity = this.stylesSpecificity[name];
+                        if (typeof existingSpecificity === 'undefined') {
+                            existingSpecificity = '000';
+                        }
+                        if (specificity >= existingSpecificity) {
+                            this.styles[name] = style[name];
+                            this.stylesSpecificity[name] = specificity;
+                        }
+                    }
+                }
+            }
+        }
+    }
+    removeStyles(element, ignoreStyles) {
+        const toRestore = ignoreStyles.reduce((toRestore, name) => {
+            const styleProp = element.getStyle(name);
+            if (!styleProp.hasValue()) {
+                return toRestore;
+            }
+            const value = styleProp.getString();
+            styleProp.setValue('');
+            return [
+                ...toRestore,
+                [name, value]
+            ];
+        }, []);
+        return toRestore;
+    }
+    restoreStyles(element, styles) {
+        styles.forEach(([name, value]) => {
+            element.getStyle(name, true).setValue(value);
+        });
+    }
+    isFirstChild() {
+        return this.parent?.children.indexOf(this) === 0;
+    }
+}
+Element.ignoreChildTypes = [
+    'title'
+];
+
+class UnknownElement extends Element {
+    constructor(document, node, captureTextNodes) {
+        super(document, node, captureTextNodes);
+    }
+}
+
+function wrapFontFamily(fontFamily) {
+    const trimmed = fontFamily.trim();
+    return /^('|")/.test(trimmed)
+        ? trimmed
+        : `"${trimmed}"`;
+}
+function prepareFontFamily(fontFamily) {
+    return typeof process === 'undefined'
+        ? fontFamily
+        : fontFamily
+            .trim()
+            .split(',')
+            .map(wrapFontFamily)
+            .join(',');
+}
+/**
+ * https://developer.mozilla.org/en-US/docs/Web/CSS/font-style
+ * @param fontStyle
+ * @returns CSS font style.
+ */
+function prepareFontStyle(fontStyle) {
+    if (!fontStyle) {
+        return '';
+    }
+    const targetFontStyle = fontStyle.trim().toLowerCase();
+    switch (targetFontStyle) {
+        case 'normal':
+        case 'italic':
+        case 'oblique':
+        case 'inherit':
+        case 'initial':
+        case 'unset':
+            return targetFontStyle;
+        default:
+            if (/^oblique\s+(-|)\d+deg$/.test(targetFontStyle)) {
+                return targetFontStyle;
+            }
+            return '';
+    }
+}
+/**
+ * https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight
+ * @param fontWeight
+ * @returns CSS font weight.
+ */
+function prepareFontWeight(fontWeight) {
+    if (!fontWeight) {
+        return '';
+    }
+    const targetFontWeight = fontWeight.trim().toLowerCase();
+    switch (targetFontWeight) {
+        case 'normal':
+        case 'bold':
+        case 'lighter':
+        case 'bolder':
+        case 'inherit':
+        case 'initial':
+        case 'unset':
+            return targetFontWeight;
+        default:
+            if (/^[\d.]+$/.test(targetFontWeight)) {
+                return targetFontWeight;
+            }
+            return '';
+    }
+}
+class Font {
+    constructor(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit) {
+        const inheritFont = inherit
+            ? typeof inherit === 'string'
+                ? Font.parse(inherit)
+                : inherit
+            : {};
+        this.fontFamily = fontFamily || inheritFont.fontFamily;
+        this.fontSize = fontSize || inheritFont.fontSize;
+        this.fontStyle = fontStyle || inheritFont.fontStyle;
+        this.fontWeight = fontWeight || inheritFont.fontWeight;
+        this.fontVariant = fontVariant || inheritFont.fontVariant;
+    }
+    static parse(font = '', inherit) {
+        let fontStyle = '';
+        let fontVariant = '';
+        let fontWeight = '';
+        let fontSize = '';
+        let fontFamily = '';
+        const parts = compressSpaces(font).trim().split(' ');
+        const set = {
+            fontSize: false,
+            fontStyle: false,
+            fontWeight: false,
+            fontVariant: false
+        };
+        parts.forEach((part) => {
+            switch (true) {
+                case !set.fontStyle && Font.styles.includes(part):
+                    if (part !== 'inherit') {
+                        fontStyle = part;
+                    }
+                    set.fontStyle = true;
+                    break;
+                case !set.fontVariant && Font.variants.includes(part):
+                    if (part !== 'inherit') {
+                        fontVariant = part;
+                    }
+                    set.fontStyle = true;
+                    set.fontVariant = true;
+                    break;
+                case !set.fontWeight && Font.weights.includes(part):
+                    if (part !== 'inherit') {
+                        fontWeight = part;
+                    }
+                    set.fontStyle = true;
+                    set.fontVariant = true;
+                    set.fontWeight = true;
+                    break;
+                case !set.fontSize:
+                    if (part !== 'inherit') {
+                        [fontSize] = part.split('/');
+                    }
+                    set.fontStyle = true;
+                    set.fontVariant = true;
+                    set.fontWeight = true;
+                    set.fontSize = true;
+                    break;
+                default:
+                    if (part !== 'inherit') {
+                        fontFamily += part;
+                    }
+            }
+        });
+        return new Font(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit);
+    }
+    toString() {
+        return [
+            prepareFontStyle(this.fontStyle),
+            this.fontVariant,
+            prepareFontWeight(this.fontWeight),
+            this.fontSize,
+            // Wrap fontFamily only on nodejs and only for canvas.ctx
+            prepareFontFamily(this.fontFamily)
+        ].join(' ').trim();
+    }
+}
+Font.styles = 'normal|italic|oblique|inherit';
+Font.variants = 'normal|small-caps|inherit';
+Font.weights = 'normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit';
+
+class BoundingBox {
+    constructor(x1 = Number.NaN, y1 = Number.NaN, x2 = Number.NaN, y2 = Number.NaN) {
+        this.x1 = x1;
+        this.y1 = y1;
+        this.x2 = x2;
+        this.y2 = y2;
+        this.addPoint(x1, y1);
+        this.addPoint(x2, y2);
+    }
+    get x() {
+        return this.x1;
+    }
+    get y() {
+        return this.y1;
+    }
+    get width() {
+        return this.x2 - this.x1;
+    }
+    get height() {
+        return this.y2 - this.y1;
+    }
+    addPoint(x, y) {
+        if (typeof x !== 'undefined') {
+            if (isNaN(this.x1) || isNaN(this.x2)) {
+                this.x1 = x;
+                this.x2 = x;
+            }
+            if (x < this.x1) {
+                this.x1 = x;
+            }
+            if (x > this.x2) {
+                this.x2 = x;
+            }
+        }
+        if (typeof y !== 'undefined') {
+            if (isNaN(this.y1) || isNaN(this.y2)) {
+                this.y1 = y;
+                this.y2 = y;
+            }
+            if (y < this.y1) {
+                this.y1 = y;
+            }
+            if (y > this.y2) {
+                this.y2 = y;
+            }
+        }
+    }
+    addX(x) {
+        this.addPoint(x, null);
+    }
+    addY(y) {
+        this.addPoint(null, y);
+    }
+    addBoundingBox(boundingBox) {
+        if (!boundingBox) {
+            return;
+        }
+        const { x1, y1, x2, y2 } = boundingBox;
+        this.addPoint(x1, y1);
+        this.addPoint(x2, y2);
+    }
+    sumCubic(t, p0, p1, p2, p3) {
+        return (Math.pow(1 - t, 3) * p0
+            + 3 * Math.pow(1 - t, 2) * t * p1
+            + 3 * (1 - t) * Math.pow(t, 2) * p2
+            + Math.pow(t, 3) * p3);
+    }
+    bezierCurveAdd(forX, p0, p1, p2, p3) {
+        const b = 6 * p0 - 12 * p1 + 6 * p2;
+        const a = -3 * p0 + 9 * p1 - 9 * p2 + 3 * p3;
+        const c = 3 * p1 - 3 * p0;
+        if (a === 0) {
+            if (b === 0) {
+                return;
+            }
+            const t = -c / b;
+            if (0 < t && t < 1) {
+                if (forX) {
+                    this.addX(this.sumCubic(t, p0, p1, p2, p3));
+                }
+                else {
+                    this.addY(this.sumCubic(t, p0, p1, p2, p3));
+                }
+            }
+            return;
+        }
+        const b2ac = Math.pow(b, 2) - 4 * c * a;
+        if (b2ac < 0) {
+            return;
+        }
+        const t1 = (-b + Math.sqrt(b2ac)) / (2 * a);
+        if (0 < t1 && t1 < 1) {
+            if (forX) {
+                this.addX(this.sumCubic(t1, p0, p1, p2, p3));
+            }
+            else {
+                this.addY(this.sumCubic(t1, p0, p1, p2, p3));
+            }
+        }
+        const t2 = (-b - Math.sqrt(b2ac)) / (2 * a);
+        if (0 < t2 && t2 < 1) {
+            if (forX) {
+                this.addX(this.sumCubic(t2, p0, p1, p2, p3));
+            }
+            else {
+                this.addY(this.sumCubic(t2, p0, p1, p2, p3));
+            }
+        }
+    }
+    // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html
+    addBezierCurve(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {
+        this.addPoint(p0x, p0y);
+        this.addPoint(p3x, p3y);
+        this.bezierCurveAdd(true, p0x, p1x, p2x, p3x);
+        this.bezierCurveAdd(false, p0y, p1y, p2y, p3y);
+    }
+    addQuadraticCurve(p0x, p0y, p1x, p1y, p2x, p2y) {
+        const cp1x = p0x + 2 / 3 * (p1x - p0x); // CP1 = QP0 + 2/3 *(QP1-QP0)
+        const cp1y = p0y + 2 / 3 * (p1y - p0y); // CP1 = QP0 + 2/3 *(QP1-QP0)
+        const cp2x = cp1x + 1 / 3 * (p2x - p0x); // CP2 = CP1 + 1/3 *(QP2-QP0)
+        const cp2y = cp1y + 1 / 3 * (p2y - p0y); // CP2 = CP1 + 1/3 *(QP2-QP0)
+        this.addBezierCurve(p0x, p0y, cp1x, cp2x, cp1y, cp2y, p2x, p2y);
+    }
+    isPointInBox(x, y) {
+        const { x1, y1, x2, y2 } = this;
+        return (x1 <= x
+            && x <= x2
+            && y1 <= y
+            && y <= y2);
+    }
+}
+
+class PathParser extends SVGPathData {
+    constructor(path) {
+        super(path
+            // Fix spaces after signs.
+            .replace(/([+\-.])\s+/gm, '$1')
+            // Remove invalid part.
+            .replace(/[^MmZzLlHhVvCcSsQqTtAae\d\s.,+-].*/g, ''));
+        this.control = null;
+        this.start = null;
+        this.current = null;
+        this.command = null;
+        this.commands = this.commands;
+        this.i = -1;
+        this.previousCommand = null;
+        this.points = [];
+        this.angles = [];
+    }
+    reset() {
+        this.i = -1;
+        this.command = null;
+        this.previousCommand = null;
+        this.start = new Point(0, 0);
+        this.control = new Point(0, 0);
+        this.current = new Point(0, 0);
+        this.points = [];
+        this.angles = [];
+    }
+    isEnd() {
+        const { i, commands } = this;
+        return i >= commands.length - 1;
+    }
+    next() {
+        const command = this.commands[++this.i];
+        this.previousCommand = this.command;
+        this.command = command;
+        return command;
+    }
+    getPoint(xProp = 'x', yProp = 'y') {
+        const point = new Point(this.command[xProp], this.command[yProp]);
+        return this.makeAbsolute(point);
+    }
+    getAsControlPoint(xProp, yProp) {
+        const point = this.getPoint(xProp, yProp);
+        this.control = point;
+        return point;
+    }
+    getAsCurrentPoint(xProp, yProp) {
+        const point = this.getPoint(xProp, yProp);
+        this.current = point;
+        return point;
+    }
+    getReflectedControlPoint() {
+        const previousCommand = this.previousCommand.type;
+        if (previousCommand !== SVGPathData.CURVE_TO
+            && previousCommand !== SVGPathData.SMOOTH_CURVE_TO
+            && previousCommand !== SVGPathData.QUAD_TO
+            && previousCommand !== SVGPathData.SMOOTH_QUAD_TO) {
+            return this.current;
+        }
+        // reflect point
+        const { current: { x: cx, y: cy }, control: { x: ox, y: oy } } = this;
+        const point = new Point(2 * cx - ox, 2 * cy - oy);
+        return point;
+    }
+    makeAbsolute(point) {
+        if (this.command.relative) {
+            const { x, y } = this.current;
+            point.x += x;
+            point.y += y;
+        }
+        return point;
+    }
+    addMarker(point, from, priorTo) {
+        const { points, angles } = this;
+        // if the last angle isn't filled in because we didn't have this point yet ...
+        if (priorTo && angles.length > 0 && !angles[angles.length - 1]) {
+            angles[angles.length - 1] = points[points.length - 1].angleTo(priorTo);
+        }
+        this.addMarkerAngle(point, from ? from.angleTo(point) : null);
+    }
+    addMarkerAngle(point, angle) {
+        this.points.push(point);
+        this.angles.push(angle);
+    }
+    getMarkerPoints() {
+        return this.points;
+    }
+    getMarkerAngles() {
+        const { angles } = this;
+        const len = angles.length;
+        for (let i = 0; i < len; i++) {
+            if (!angles[i]) {
+                for (let j = i + 1; j < len; j++) {
+                    if (angles[j]) {
+                        angles[i] = angles[j];
+                        break;
+                    }
+                }
+            }
+        }
+        return angles;
+    }
+}
+
+class RenderedElement extends Element {
+    constructor() {
+        super(...arguments);
+        this.modifiedEmSizeStack = false;
+    }
+    calculateOpacity() {
+        let opacity = 1.0;
+        // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this
+        let element = this;
+        while (element) {
+            const opacityStyle = element.getStyle('opacity', false, true); // no ancestors on style call
+            if (opacityStyle.hasValue(true)) {
+                opacity *= opacityStyle.getNumber();
+            }
+            element = element.parent;
+        }
+        return opacity;
+    }
+    setContext(ctx, fromMeasure = false) {
+        if (!fromMeasure) { // causes stack overflow when measuring text with gradients
+            // fill
+            const fillStyleProp = this.getStyle('fill');
+            const fillOpacityStyleProp = this.getStyle('fill-opacity');
+            const strokeStyleProp = this.getStyle('stroke');
+            const strokeOpacityProp = this.getStyle('stroke-opacity');
+            if (fillStyleProp.isUrlDefinition()) {
+                const fillStyle = fillStyleProp.getFillStyleDefinition(this, fillOpacityStyleProp);
+                if (fillStyle) {
+                    ctx.fillStyle = fillStyle;
+                }
+            }
+            else if (fillStyleProp.hasValue()) {
+                if (fillStyleProp.getString() === 'currentColor') {
+                    fillStyleProp.setValue(this.getStyle('color').getColor());
+                }
+                const fillStyle = fillStyleProp.getColor();
+                if (fillStyle !== 'inherit') {
+                    ctx.fillStyle = fillStyle === 'none'
+                        ? 'rgba(0,0,0,0)'
+                        : fillStyle;
+                }
+            }
+            if (fillOpacityStyleProp.hasValue()) {
+                const fillStyle = new Property(this.document, 'fill', ctx.fillStyle)
+                    .addOpacity(fillOpacityStyleProp)
+                    .getColor();
+                ctx.fillStyle = fillStyle;
+            }
+            // stroke
+            if (strokeStyleProp.isUrlDefinition()) {
+                const strokeStyle = strokeStyleProp.getFillStyleDefinition(this, strokeOpacityProp);
+                if (strokeStyle) {
+                    ctx.strokeStyle = strokeStyle;
+                }
+            }
+            else if (strokeStyleProp.hasValue()) {
+                if (strokeStyleProp.getString() === 'currentColor') {
+                    strokeStyleProp.setValue(this.getStyle('color').getColor());
+                }
+                const strokeStyle = strokeStyleProp.getString();
+                if (strokeStyle !== 'inherit') {
+                    ctx.strokeStyle = strokeStyle === 'none'
+                        ? 'rgba(0,0,0,0)'
+                        : strokeStyle;
+                }
+            }
+            if (strokeOpacityProp.hasValue()) {
+                const strokeStyle = new Property(this.document, 'stroke', ctx.strokeStyle)
+                    .addOpacity(strokeOpacityProp)
+                    .getString();
+                ctx.strokeStyle = strokeStyle;
+            }
+            const strokeWidthStyleProp = this.getStyle('stroke-width');
+            if (strokeWidthStyleProp.hasValue()) {
+                const newLineWidth = strokeWidthStyleProp.getPixels();
+                ctx.lineWidth = !newLineWidth
+                    ? PSEUDO_ZERO // browsers don't respect 0 (or node-canvas? :-)
+                    : newLineWidth;
+            }
+            const strokeLinecapStyleProp = this.getStyle('stroke-linecap');
+            const strokeLinejoinStyleProp = this.getStyle('stroke-linejoin');
+            const strokeMiterlimitProp = this.getStyle('stroke-miterlimit');
+            // NEED TEST
+            // const pointOrderStyleProp = this.getStyle('paint-order');
+            const strokeDasharrayStyleProp = this.getStyle('stroke-dasharray');
+            const strokeDashoffsetProp = this.getStyle('stroke-dashoffset');
+            if (strokeLinecapStyleProp.hasValue()) {
+                ctx.lineCap = strokeLinecapStyleProp.getString();
+            }
+            if (strokeLinejoinStyleProp.hasValue()) {
+                ctx.lineJoin = strokeLinejoinStyleProp.getString();
+            }
+            if (strokeMiterlimitProp.hasValue()) {
+                ctx.miterLimit = strokeMiterlimitProp.getNumber();
+            }
+            // NEED TEST
+            // if (pointOrderStyleProp.hasValue()) {
+            // 	// ?
+            // 	ctx.paintOrder = pointOrderStyleProp.getValue();
+            // }
+            if (strokeDasharrayStyleProp.hasValue() && strokeDasharrayStyleProp.getString() !== 'none') {
+                const gaps = toNumbers(strokeDasharrayStyleProp.getString());
+                if (typeof ctx.setLineDash !== 'undefined') {
+                    ctx.setLineDash(gaps);
+                }
+                else 
+                // @ts-expect-error Handle browser prefix.
+                if (typeof ctx.webkitLineDash !== 'undefined') {
+                    // @ts-expect-error Handle browser prefix.
+                    ctx.webkitLineDash = gaps;
+                }
+                else 
+                // @ts-expect-error Handle browser prefix.
+                if (typeof ctx.mozDash !== 'undefined' && !(gaps.length === 1 && gaps[0] === 0)) {
+                    // @ts-expect-error Handle browser prefix.
+                    ctx.mozDash = gaps;
+                }
+                const offset = strokeDashoffsetProp.getPixels();
+                if (typeof ctx.lineDashOffset !== 'undefined') {
+                    ctx.lineDashOffset = offset;
+                }
+                else 
+                // @ts-expect-error Handle browser prefix.
+                if (typeof ctx.webkitLineDashOffset !== 'undefined') {
+                    // @ts-expect-error Handle browser prefix.
+                    ctx.webkitLineDashOffset = offset;
+                }
+                else 
+                // @ts-expect-error Handle browser prefix.
+                if (typeof ctx.mozDashOffset !== 'undefined') {
+                    // @ts-expect-error Handle browser prefix.
+                    ctx.mozDashOffset = offset;
+                }
+            }
+        }
+        // font
+        this.modifiedEmSizeStack = false;
+        if (typeof ctx.font !== 'undefined') {
+            const fontStyleProp = this.getStyle('font');
+            const fontStyleStyleProp = this.getStyle('font-style');
+            const fontVariantStyleProp = this.getStyle('font-variant');
+            const fontWeightStyleProp = this.getStyle('font-weight');
+            const fontSizeStyleProp = this.getStyle('font-size');
+            const fontFamilyStyleProp = this.getStyle('font-family');
+            const font = new Font(fontStyleStyleProp.getString(), fontVariantStyleProp.getString(), fontWeightStyleProp.getString(), fontSizeStyleProp.hasValue()
+                ? `${fontSizeStyleProp.getPixels(true)}px`
+                : '', fontFamilyStyleProp.getString(), Font.parse(fontStyleProp.getString(), ctx.font));
+            fontStyleStyleProp.setValue(font.fontStyle);
+            fontVariantStyleProp.setValue(font.fontVariant);
+            fontWeightStyleProp.setValue(font.fontWeight);
+            fontSizeStyleProp.setValue(font.fontSize);
+            fontFamilyStyleProp.setValue(font.fontFamily);
+            ctx.font = font.toString();
+            if (fontSizeStyleProp.isPixels()) {
+                this.document.emSize = fontSizeStyleProp.getPixels();
+                this.modifiedEmSizeStack = true;
+            }
+        }
+        if (!fromMeasure) {
+            // effects
+            this.applyEffects(ctx);
+            // opacity
+            ctx.globalAlpha = this.calculateOpacity();
+        }
+    }
+    clearContext(ctx) {
+        super.clearContext(ctx);
+        if (this.modifiedEmSizeStack) {
+            this.document.popEmSize();
+        }
+    }
+}
+
+class PathElement extends RenderedElement {
+    constructor(document, node, captureTextNodes) {
+        super(document, node, captureTextNodes);
+        this.type = 'path';
+        this.pathParser = null;
+        this.pathParser = new PathParser(this.getAttribute('d').getString());
+    }
+    path(ctx) {
+        const { pathParser } = this;
+        const boundingBox = new BoundingBox();
+        pathParser.reset();
+        if (ctx) {
+            ctx.beginPath();
+        }
+        while (!pathParser.isEnd()) {
+            switch (pathParser.next().type) {
+                case PathParser.MOVE_TO:
+                    this.pathM(ctx, boundingBox);
+                    break;
+                case PathParser.LINE_TO:
+                    this.pathL(ctx, boundingBox);
+                    break;
+                case PathParser.HORIZ_LINE_TO:
+                    this.pathH(ctx, boundingBox);
+                    break;
+                case PathParser.VERT_LINE_TO:
+                    this.pathV(ctx, boundingBox);
+                    break;
+                case PathParser.CURVE_TO:
+                    this.pathC(ctx, boundingBox);
+                    break;
+                case PathParser.SMOOTH_CURVE_TO:
+                    this.pathS(ctx, boundingBox);
+                    break;
+                case PathParser.QUAD_TO:
+                    this.pathQ(ctx, boundingBox);
+                    break;
+                case PathParser.SMOOTH_QUAD_TO:
+                    this.pathT(ctx, boundingBox);
+                    break;
+                case PathParser.ARC:
+                    this.pathA(ctx, boundingBox);
+                    break;
+                case PathParser.CLOSE_PATH:
+                    this.pathZ(ctx, boundingBox);
+                    break;
+            }
+        }
+        return boundingBox;
+    }
+    getBoundingBox(_) {
+        return this.path();
+    }
+    getMarkers() {
+        const { pathParser } = this;
+        const points = pathParser.getMarkerPoints();
+        const angles = pathParser.getMarkerAngles();
+        const markers = points.map((point, i) => [
+            point,
+            angles[i]
+        ]);
+        return markers;
+    }
+    renderChildren(ctx) {
+        this.path(ctx);
+        this.document.screen.mouse.checkPath(this, ctx);
+        const fillRuleStyleProp = this.getStyle('fill-rule');
+        if (ctx.fillStyle !== '') {
+            if (fillRuleStyleProp.getString('inherit') !== 'inherit') {
+                ctx.fill(fillRuleStyleProp.getString());
+            }
+            else {
+                ctx.fill();
+            }
+        }
+        if (ctx.strokeStyle !== '') {
+            if (this.getAttribute('vector-effect').getString() === 'non-scaling-stroke') {
+                ctx.save();
+                ctx.setTransform(1, 0, 0, 1, 0, 0);
+                ctx.stroke();
+                ctx.restore();
+            }
+            else {
+                ctx.stroke();
+            }
+        }
+        const markers = this.getMarkers();
+        if (markers) {
+            const markersLastIndex = markers.length - 1;
+            const markerStartStyleProp = this.getStyle('marker-start');
+            const markerMidStyleProp = this.getStyle('marker-mid');
+            const markerEndStyleProp = this.getStyle('marker-end');
+            if (markerStartStyleProp.isUrlDefinition()) {
+                const marker = markerStartStyleProp.getDefinition();
+                const [point, angle] = markers[0];
+                marker.render(ctx, point, angle);
+            }
+            if (markerMidStyleProp.isUrlDefinition()) {
+                const marker = markerMidStyleProp.getDefinition();
+                for (let i = 1; i < markersLastIndex; i++) {
+                    const [point, angle] = markers[i];
+                    marker.render(ctx, point, angle);
+                }
+            }
+            if (markerEndStyleProp.isUrlDefinition()) {
+                const marker = markerEndStyleProp.getDefinition();
+                const [point, angle] = markers[markersLastIndex];
+                marker.render(ctx, point, angle);
+            }
+        }
+    }
+    static pathM(pathParser) {
+        const point = pathParser.getAsCurrentPoint();
+        pathParser.start = pathParser.current;
+        return {
+            point
+        };
+    }
+    pathM(ctx, boundingBox) {
+        const { pathParser } = this;
+        const { point } = PathElement.pathM(pathParser);
+        const { x, y } = point;
+        pathParser.addMarker(point);
+        boundingBox.addPoint(x, y);
+        if (ctx) {
+            ctx.moveTo(x, y);
+        }
+    }
+    static pathL(pathParser) {
+        const { current } = pathParser;
+        const point = pathParser.getAsCurrentPoint();
+        return {
+            current,
+            point
+        };
+    }
+    pathL(ctx, boundingBox) {
+        const { pathParser } = this;
+        const { current, point } = PathElement.pathL(pathParser);
+        const { x, y } = point;
+        pathParser.addMarker(point, current);
+        boundingBox.addPoint(x, y);
+        if (ctx) {
+            ctx.lineTo(x, y);
+        }
+    }
+    static pathH(pathParser) {
+        const { current, command } = pathParser;
+        const point = new Point((command.relative ? current.x : 0) + command.x, current.y);
+        pathParser.current = point;
+        return {
+            current,
+            point
+        };
+    }
+    pathH(ctx, boundingBox) {
+        const { pathParser } = this;
+        const { current, point } = PathElement.pathH(pathParser);
+        const { x, y } = point;
+        pathParser.addMarker(point, current);
+        boundingBox.addPoint(x, y);
+        if (ctx) {
+            ctx.lineTo(x, y);
+        }
+    }
+    static pathV(pathParser) {
+        const { current, command } = pathParser;
+        const point = new Point(current.x, (command.relative ? current.y : 0) + command.y);
+        pathParser.current = point;
+        return {
+            current,
+            point
+        };
+    }
+    pathV(ctx, boundingBox) {
+        const { pathParser } = this;
+        const { current, point } = PathElement.pathV(pathParser);
+        const { x, y } = point;
+        pathParser.addMarker(point, current);
+        boundingBox.addPoint(x, y);
+        if (ctx) {
+            ctx.lineTo(x, y);
+        }
+    }
+    static pathC(pathParser) {
+        const { current } = pathParser;
+        const point = pathParser.getPoint('x1', 'y1');
+        const controlPoint = pathParser.getAsControlPoint('x2', 'y2');
+        const currentPoint = pathParser.getAsCurrentPoint();
+        return {
+            current,
+            point,
+            controlPoint,
+            currentPoint
+        };
+    }
+    pathC(ctx, boundingBox) {
+        const { pathParser } = this;
+        const { current, point, controlPoint, currentPoint } = PathElement.pathC(pathParser);
+        pathParser.addMarker(currentPoint, controlPoint, point);
+        boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+        if (ctx) {
+            ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+        }
+    }
+    static pathS(pathParser) {
+        const { current } = pathParser;
+        const point = pathParser.getReflectedControlPoint();
+        const controlPoint = pathParser.getAsControlPoint('x2', 'y2');
+        const currentPoint = pathParser.getAsCurrentPoint();
+        return {
+            current,
+            point,
+            controlPoint,
+            currentPoint
+        };
+    }
+    pathS(ctx, boundingBox) {
+        const { pathParser } = this;
+        const { current, point, controlPoint, currentPoint } = PathElement.pathS(pathParser);
+        pathParser.addMarker(currentPoint, controlPoint, point);
+        boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+        if (ctx) {
+            ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+        }
+    }
+    static pathQ(pathParser) {
+        const { current } = pathParser;
+        const controlPoint = pathParser.getAsControlPoint('x1', 'y1');
+        const currentPoint = pathParser.getAsCurrentPoint();
+        return {
+            current,
+            controlPoint,
+            currentPoint
+        };
+    }
+    pathQ(ctx, boundingBox) {
+        const { pathParser } = this;
+        const { current, controlPoint, currentPoint } = PathElement.pathQ(pathParser);
+        pathParser.addMarker(currentPoint, controlPoint, controlPoint);
+        boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+        if (ctx) {
+            ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+        }
+    }
+    static pathT(pathParser) {
+        const { current } = pathParser;
+        const controlPoint = pathParser.getReflectedControlPoint();
+        pathParser.control = controlPoint;
+        const currentPoint = pathParser.getAsCurrentPoint();
+        return {
+            current,
+            controlPoint,
+            currentPoint
+        };
+    }
+    pathT(ctx, boundingBox) {
+        const { pathParser } = this;
+        const { current, controlPoint, currentPoint } = PathElement.pathT(pathParser);
+        pathParser.addMarker(currentPoint, controlPoint, controlPoint);
+        boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+        if (ctx) {
+            ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+        }
+    }
+    static pathA(pathParser) {
+        const { current, command } = pathParser;
+        let { rX, rY, xRot, lArcFlag, sweepFlag } = command;
+        const xAxisRotation = xRot * (Math.PI / 180.0);
+        const currentPoint = pathParser.getAsCurrentPoint();
+        // Conversion from endpoint to center parameterization
+        // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes
+        // x1', y1'
+        const currp = new Point(Math.cos(xAxisRotation) * (current.x - currentPoint.x) / 2.0
+            + Math.sin(xAxisRotation) * (current.y - currentPoint.y) / 2.0, -Math.sin(xAxisRotation) * (current.x - currentPoint.x) / 2.0
+            + Math.cos(xAxisRotation) * (current.y - currentPoint.y) / 2.0);
+        // adjust radii
+        const l = Math.pow(currp.x, 2) / Math.pow(rX, 2)
+            + Math.pow(currp.y, 2) / Math.pow(rY, 2);
+        if (l > 1) {
+            rX *= Math.sqrt(l);
+            rY *= Math.sqrt(l);
+        }
+        // cx', cy'
+        let s = (lArcFlag === sweepFlag ? -1 : 1) * Math.sqrt(((Math.pow(rX, 2) * Math.pow(rY, 2))
+            - (Math.pow(rX, 2) * Math.pow(currp.y, 2))
+            - (Math.pow(rY, 2) * Math.pow(currp.x, 2))) / (Math.pow(rX, 2) * Math.pow(currp.y, 2)
+            + Math.pow(rY, 2) * Math.pow(currp.x, 2)));
+        if (isNaN(s)) {
+            s = 0;
+        }
+        const cpp = new Point(s * rX * currp.y / rY, s * -rY * currp.x / rX);
+        // cx, cy
+        const centp = new Point((current.x + currentPoint.x) / 2.0
+            + Math.cos(xAxisRotation) * cpp.x
+            - Math.sin(xAxisRotation) * cpp.y, (current.y + currentPoint.y) / 2.0
+            + Math.sin(xAxisRotation) * cpp.x
+            + Math.cos(xAxisRotation) * cpp.y);
+        // initial angle
+        const a1 = vectorsAngle([1, 0], [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY]); // θ1
+        // angle delta
+        const u = [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY];
+        const v = [(-currp.x - cpp.x) / rX, (-currp.y - cpp.y) / rY];
+        let ad = vectorsAngle(u, v); // Δθ
+        if (vectorsRatio(u, v) <= -1) {
+            ad = Math.PI;
+        }
+        if (vectorsRatio(u, v) >= 1) {
+            ad = 0;
+        }
+        return {
+            currentPoint,
+            rX,
+            rY,
+            sweepFlag,
+            xAxisRotation,
+            centp,
+            a1,
+            ad
+        };
+    }
+    pathA(ctx, boundingBox) {
+        const { pathParser } = this;
+        const { currentPoint, rX, rY, sweepFlag, xAxisRotation, centp, a1, ad } = PathElement.pathA(pathParser);
+        // for markers
+        const dir = 1 - sweepFlag ? 1.0 : -1.0;
+        const ah = a1 + dir * (ad / 2.0);
+        const halfWay = new Point(centp.x + rX * Math.cos(ah), centp.y + rY * Math.sin(ah));
+        pathParser.addMarkerAngle(halfWay, ah - dir * Math.PI / 2);
+        pathParser.addMarkerAngle(currentPoint, ah - dir * Math.PI);
+        boundingBox.addPoint(currentPoint.x, currentPoint.y); // TODO: this is too naive, make it better
+        if (ctx && !isNaN(a1) && !isNaN(ad)) {
+            const r = rX > rY ? rX : rY;
+            const sx = rX > rY ? 1 : rX / rY;
+            const sy = rX > rY ? rY / rX : 1;
+            ctx.translate(centp.x, centp.y);
+            ctx.rotate(xAxisRotation);
+            ctx.scale(sx, sy);
+            ctx.arc(0, 0, r, a1, a1 + ad, Boolean(1 - sweepFlag));
+            ctx.scale(1 / sx, 1 / sy);
+            ctx.rotate(-xAxisRotation);
+            ctx.translate(-centp.x, -centp.y);
+        }
+    }
+    static pathZ(pathParser) {
+        pathParser.current = pathParser.start;
+    }
+    pathZ(ctx, boundingBox) {
+        PathElement.pathZ(this.pathParser);
+        if (ctx) {
+            // only close path if it is not a straight line
+            if (boundingBox.x1 !== boundingBox.x2
+                && boundingBox.y1 !== boundingBox.y2) {
+                ctx.closePath();
+            }
+        }
+    }
+}
+
+class GlyphElement extends PathElement {
+    constructor(document, node, captureTextNodes) {
+        super(document, node, captureTextNodes);
+        this.type = 'glyph';
+        this.horizAdvX = this.getAttribute('horiz-adv-x').getNumber();
+        this.unicode = this.getAttribute('unicode').getString();
+        this.arabicForm = this.getAttribute('arabic-form').getString();
+    }
+}
+
+class TextElement extends RenderedElement {
+    constructor(document, node, captureTextNodes) {
+        super(document, node, new.target === TextElement
+            ? true
+            : captureTextNodes);
+        this.type = 'text';
+        this.x = 0;
+        this.y = 0;
+        this.measureCache = -1;
+    }
+    setContext(ctx, fromMeasure = false) {
+        super.setContext(ctx, fromMeasure);
+        const textBaseline = this.getStyle('dominant-baseline').getTextBaseline()
+            || this.getStyle('alignment-baseline').getTextBaseline();
+        if (textBaseline) {
+            ctx.textBaseline = textBaseline;
+        }
+    }
+    initializeCoordinates() {
+        this.x = 0;
+        this.y = 0;
+        this.leafTexts = [];
+        this.textChunkStart = 0;
+        this.minX = Number.POSITIVE_INFINITY;
+        this.maxX = Number.NEGATIVE_INFINITY;
+    }
+    getBoundingBox(ctx) {
+        if (this.type !== 'text') {
+            return this.getTElementBoundingBox(ctx);
+        }
+        // first, calculate child positions
+        this.initializeCoordinates();
+        this.adjustChildCoordinatesRecursive(ctx);
+        let boundingBox = null;
+        // then calculate bounding box
+        this.children.forEach((_, i) => {
+            const childBoundingBox = this.getChildBoundingBox(ctx, this, this, i);
+            if (!boundingBox) {
+                boundingBox = childBoundingBox;
+            }
+            else {
+                boundingBox.addBoundingBox(childBoundingBox);
+            }
+        });
+        return boundingBox;
+    }
+    getFontSize() {
+        const { document, parent } = this;
+        const inheritFontSize = Font.parse(document.ctx.font).fontSize;
+        const fontSize = parent.getStyle('font-size').getNumber(inheritFontSize);
+        return fontSize;
+    }
+    getTElementBoundingBox(ctx) {
+        const fontSize = this.getFontSize();
+        return new BoundingBox(this.x, this.y - fontSize, this.x + this.measureText(ctx), this.y);
+    }
+    getGlyph(font, text, i) {
+        const char = text[i];
+        let glyph = null;
+        if (font.isArabic) {
+            const len = text.length;
+            const prevChar = text[i - 1];
+            const nextChar = text[i + 1];
+            let arabicForm = 'isolated';
+            if ((i === 0 || prevChar === ' ') && i < len - 1 && nextChar !== ' ') {
+                arabicForm = 'terminal';
+            }
+            if (i > 0 && prevChar !== ' ' && i < len - 1 && nextChar !== ' ') {
+                arabicForm = 'medial';
+            }
+            if (i > 0 && prevChar !== ' ' && (i === len - 1 || nextChar === ' ')) {
+                arabicForm = 'initial';
+            }
+            if (typeof font.glyphs[char] !== 'undefined') {
+                // NEED TEST
+                const maybeGlyph = font.glyphs[char];
+                glyph = maybeGlyph instanceof GlyphElement
+                    ? maybeGlyph
+                    : maybeGlyph[arabicForm];
+            }
+        }
+        else {
+            glyph = font.glyphs[char];
+        }
+        if (!glyph) {
+            glyph = font.missingGlyph;
+        }
+        return glyph;
+    }
+    getText() {
+        return '';
+    }
+    getTextFromNode(node) {
+        const textNode = node || this.node;
+        const childNodes = Array.from(textNode.parentNode.childNodes);
+        const index = childNodes.indexOf(textNode);
+        const lastIndex = childNodes.length - 1;
+        let text = compressSpaces(
+        // textNode.value
+        // || textNode.text
+        textNode.textContent
+            || '');
+        if (index === 0) {
+            text = trimLeft(text);
+        }
+        if (index === lastIndex) {
+            text = trimRight(text);
+        }
+        return text;
+    }
+    renderChildren(ctx) {
+        if (this.type !== 'text') {
+            this.renderTElementChildren(ctx);
+            return;
+        }
+        // first, calculate child positions
+        this.initializeCoordinates();
+        this.adjustChildCoordinatesRecursive(ctx);
+        // then render
+        this.children.forEach((_, i) => {
+            this.renderChild(ctx, this, this, i);
+        });
+        const { mouse } = this.document.screen;
+        // Do not calc bounding box if mouse is not working.
+        if (mouse.isWorking()) {
+            mouse.checkBoundingBox(this, this.getBoundingBox(ctx));
+        }
+    }
+    renderTElementChildren(ctx) {
+        const { document, parent } = this;
+        const renderText = this.getText();
+        const customFont = parent.getStyle('font-family').getDefinition();
+        if (customFont) {
+            const { unitsPerEm } = customFont.fontFace;
+            const ctxFont = Font.parse(document.ctx.font);
+            const fontSize = parent.getStyle('font-size').getNumber(ctxFont.fontSize);
+            const fontStyle = parent.getStyle('font-style').getString(ctxFont.fontStyle);
+            const scale = fontSize / unitsPerEm;
+            const text = customFont.isRTL
+                ? renderText.split('').reverse().join('')
+                : renderText;
+            const dx = toNumbers(parent.getAttribute('dx').getString());
+            const len = text.length;
+            for (let i = 0; i < len; i++) {
+                const glyph = this.getGlyph(customFont, text, i);
+                ctx.translate(this.x, this.y);
+                ctx.scale(scale, -scale);
+                const lw = ctx.lineWidth;
+                ctx.lineWidth = ctx.lineWidth * unitsPerEm / fontSize;
+                if (fontStyle === 'italic') {
+                    ctx.transform(1, 0, .4, 1, 0, 0);
+                }
+                glyph.render(ctx);
+                if (fontStyle === 'italic') {
+                    ctx.transform(1, 0, -.4, 1, 0, 0);
+                }
+                ctx.lineWidth = lw;
+                ctx.scale(1 / scale, -1 / scale);
+                ctx.translate(-this.x, -this.y);
+                this.x += fontSize * (glyph.horizAdvX || customFont.horizAdvX) / unitsPerEm;
+                if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {
+                    this.x += dx[i];
+                }
+            }
+            return;
+        }
+        const { x, y } = this;
+        // NEED TEST
+        // if (ctx.paintOrder === 'stroke') {
+        // 	if (ctx.strokeStyle) {
+        // 		ctx.strokeText(renderText, x, y);
+        // 	}
+        // 	if (ctx.fillStyle) {
+        // 		ctx.fillText(renderText, x, y);
+        // 	}
+        // } else {
+        if (ctx.fillStyle) {
+            ctx.fillText(renderText, x, y);
+        }
+        if (ctx.strokeStyle) {
+            ctx.strokeText(renderText, x, y);
+        }
+        // }
+    }
+    applyAnchoring() {
+        if (this.textChunkStart >= this.leafTexts.length) {
+            return;
+        }
+        // This is basically the "Apply anchoring" part of https://www.w3.org/TR/SVG2/text.html#TextLayoutAlgorithm.
+        // The difference is that we apply the anchoring as soon as a chunk is finished. This saves some extra looping.
+        // Vertical text is not supported.
+        const firstElement = this.leafTexts[this.textChunkStart];
+        const textAnchor = firstElement.getStyle('text-anchor').getString('start');
+        const isRTL = false; // we treat RTL like LTR
+        let shift = 0;
+        if (textAnchor === 'start' && !isRTL || textAnchor === 'end' && isRTL) {
+            shift = firstElement.x - this.minX;
+        }
+        else if (textAnchor === 'end' && !isRTL || textAnchor === 'start' && isRTL) {
+            shift = firstElement.x - this.maxX;
+        }
+        else {
+            shift = firstElement.x - (this.minX + this.maxX) / 2;
+        }
+        for (let i = this.textChunkStart; i < this.leafTexts.length; i++) {
+            this.leafTexts[i].x += shift;
+        }
+        // start new chunk
+        this.minX = Number.POSITIVE_INFINITY;
+        this.maxX = Number.NEGATIVE_INFINITY;
+        this.textChunkStart = this.leafTexts.length;
+    }
+    adjustChildCoordinatesRecursive(ctx) {
+        this.children.forEach((_, i) => {
+            this.adjustChildCoordinatesRecursiveCore(ctx, this, this, i);
+        });
+        this.applyAnchoring();
+    }
+    adjustChildCoordinatesRecursiveCore(ctx, textParent, parent, i) {
+        const child = parent.children[i];
+        if (child.children.length > 0) {
+            child.children.forEach((_, i) => {
+                textParent.adjustChildCoordinatesRecursiveCore(ctx, textParent, child, i);
+            });
+        }
+        else {
+            // only leafs are relevant
+            this.adjustChildCoordinates(ctx, textParent, parent, i);
+        }
+    }
+    adjustChildCoordinates(ctx, textParent, parent, i) {
+        const child = parent.children[i];
+        if (typeof child.measureText !== 'function') {
+            return child;
+        }
+        ctx.save();
+        child.setContext(ctx, true);
+        const xAttr = child.getAttribute('x');
+        const yAttr = child.getAttribute('y');
+        const dxAttr = child.getAttribute('dx');
+        const dyAttr = child.getAttribute('dy');
+        const customFont = child.getStyle('font-family').getDefinition();
+        const isRTL = Boolean(customFont) && customFont.isRTL;
+        if (i === 0) {
+            // First children inherit attributes from parent(s). Positional attributes
+            // are only inherited from a parent to it's first child.
+            if (!xAttr.hasValue()) {
+                xAttr.setValue(child.getInheritedAttribute('x'));
+            }
+            if (!yAttr.hasValue()) {
+                yAttr.setValue(child.getInheritedAttribute('y'));
+            }
+            if (!dxAttr.hasValue()) {
+                dxAttr.setValue(child.getInheritedAttribute('dx'));
+            }
+            if (!dyAttr.hasValue()) {
+                dyAttr.setValue(child.getInheritedAttribute('dy'));
+            }
+        }
+        const width = child.measureText(ctx);
+        if (isRTL) {
+            textParent.x -= width;
+        }
+        if (xAttr.hasValue()) {
+            // an "x" attribute marks the start of a new chunk
+            textParent.applyAnchoring();
+            child.x = xAttr.getPixels('x');
+            if (dxAttr.hasValue()) {
+                child.x += dxAttr.getPixels('x');
+            }
+        }
+        else {
+            if (dxAttr.hasValue()) {
+                textParent.x += dxAttr.getPixels('x');
+            }
+            child.x = textParent.x;
+        }
+        textParent.x = child.x;
+        if (!isRTL) {
+            textParent.x += width;
+        }
+        if (yAttr.hasValue()) {
+            child.y = yAttr.getPixels('y');
+            if (dyAttr.hasValue()) {
+                child.y += dyAttr.getPixels('y');
+            }
+        }
+        else {
+            if (dyAttr.hasValue()) {
+                textParent.y += dyAttr.getPixels('y');
+            }
+            child.y = textParent.y;
+        }
+        textParent.y = child.y;
+        // update the current chunk and it's bounds
+        textParent.leafTexts.push(child);
+        textParent.minX = Math.min(textParent.minX, child.x, child.x + width);
+        textParent.maxX = Math.max(textParent.maxX, child.x, child.x + width);
+        child.clearContext(ctx);
+        ctx.restore();
+        return child;
+    }
+    getChildBoundingBox(ctx, textParent, parent, i) {
+        const child = parent.children[i];
+        // not a text node?
+        if (typeof child.getBoundingBox !== 'function') {
+            return null;
+        }
+        const boundingBox = child.getBoundingBox(ctx);
+        if (!boundingBox) {
+            return null;
+        }
+        child.children.forEach((_, i) => {
+            const childBoundingBox = textParent.getChildBoundingBox(ctx, textParent, child, i);
+            boundingBox.addBoundingBox(childBoundingBox);
+        });
+        return boundingBox;
+    }
+    renderChild(ctx, textParent, parent, i) {
+        const child = parent.children[i];
+        child.render(ctx);
+        child.children.forEach((_, i) => {
+            textParent.renderChild(ctx, textParent, child, i);
+        });
+    }
+    measureText(ctx) {
+        const { measureCache } = this;
+        if (~measureCache) {
+            return measureCache;
+        }
+        const renderText = this.getText();
+        const measure = this.measureTargetText(ctx, renderText);
+        this.measureCache = measure;
+        return measure;
+    }
+    measureTargetText(ctx, targetText) {
+        if (!targetText.length) {
+            return 0;
+        }
+        const { parent } = this;
+        const customFont = parent.getStyle('font-family').getDefinition();
+        if (customFont) {
+            const fontSize = this.getFontSize();
+            const text = customFont.isRTL
+                ? targetText.split('').reverse().join('')
+                : targetText;
+            const dx = toNumbers(parent.getAttribute('dx').getString());
+            const len = text.length;
+            let measure = 0;
+            for (let i = 0; i < len; i++) {
+                const glyph = this.getGlyph(customFont, text, i);
+                measure += (glyph.horizAdvX || customFont.horizAdvX)
+                    * fontSize
+                    / customFont.fontFace.unitsPerEm;
+                if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {
+                    measure += dx[i];
+                }
+            }
+            return measure;
+        }
+        if (!ctx.measureText) {
+            return targetText.length * 10;
+        }
+        ctx.save();
+        this.setContext(ctx, true);
+        const { width: measure } = ctx.measureText(targetText);
+        this.clearContext(ctx);
+        ctx.restore();
+        return measure;
+    }
+    /**
+     * Inherits positional attributes from {@link TextElement} parent(s). Attributes
+     * are only inherited from a parent to its first child.
+     * @param name - The attribute name.
+     * @returns The attribute value or null.
+     */
+    getInheritedAttribute(name) {
+        // eslint-disable-next-line @typescript-eslint/no-this-alias,consistent-this
+        let current = this;
+        while (current instanceof TextElement && current.isFirstChild()) {
+            const parentAttr = current.parent.getAttribute(name);
+            if (parentAttr.hasValue(true)) {
+                return parentAttr.getValue('0');
+            }
+            current = current.parent;
+        }
+        return null;
+    }
+}
+
+class TSpanElement extends TextElement {
+    constructor(document, node, captureTextNodes) {
+        super(document, node, new.target === TSpanElement
+            ? true
+            : captureTextNodes);
+        this.type = 'tspan';
+        // if this node has children, then they own the text
+        this.text = this.children.length > 0
+            ? ''
+            : this.getTextFromNode();
+    }
+    getText() {
+        return this.text;
+    }
+}
+
+class TextNode extends TSpanElement {
+    constructor() {
+        super(...arguments);
+        this.type = 'textNode';
+    }
+}
+
+class SVGElement extends RenderedElement {
+    constructor() {
+        super(...arguments);
+        this.type = 'svg';
+        this.root = false;
+    }
+    setContext(ctx) {
+        const { document } = this;
+        const { screen, window } = document;
+        const canvas = ctx.canvas;
+        screen.setDefaults(ctx);
+        if (canvas.style
+            && typeof ctx.font !== 'undefined'
+            && window
+            && typeof window.getComputedStyle !== 'undefined') {
+            ctx.font = window.getComputedStyle(canvas).getPropertyValue('font');
+            const fontSizeProp = new Property(document, 'fontSize', Font.parse(ctx.font).fontSize);
+            if (fontSizeProp.hasValue()) {
+                document.rootEmSize = fontSizeProp.getPixels('y');
+                document.emSize = document.rootEmSize;
+            }
+        }
+        // create new view port
+        if (!this.getAttribute('x').hasValue()) {
+            this.getAttribute('x', true).setValue(0);
+        }
+        if (!this.getAttribute('y').hasValue()) {
+            this.getAttribute('y', true).setValue(0);
+        }
+        let { width, height } = screen.viewPort;
+        if (!this.getStyle('width').hasValue()) {
+            this.getStyle('width', true).setValue('100%');
+        }
+        if (!this.getStyle('height').hasValue()) {
+            this.getStyle('height', true).setValue('100%');
+        }
+        if (!this.getStyle('color').hasValue()) {
+            this.getStyle('color', true).setValue('black');
+        }
+        const refXAttr = this.getAttribute('refX');
+        const refYAttr = this.getAttribute('refY');
+        const viewBoxAttr = this.getAttribute('viewBox');
+        const viewBox = viewBoxAttr.hasValue()
+            ? toNumbers(viewBoxAttr.getString())
+            : null;
+        const clip = !this.root
+            && this.getStyle('overflow').getValue('hidden') !== 'visible';
+        let minX = 0;
+        let minY = 0;
+        let clipX = 0;
+        let clipY = 0;
+        if (viewBox) {
+            minX = viewBox[0];
+            minY = viewBox[1];
+        }
+        if (!this.root) {
+            width = this.getStyle('width').getPixels('x');
+            height = this.getStyle('height').getPixels('y');
+            if (this.type === 'marker') {
+                clipX = minX;
+                clipY = minY;
+                minX = 0;
+                minY = 0;
+            }
+        }
+        screen.viewPort.setCurrent(width, height);
+        // Default value of transform-origin is center only for root SVG elements
+        // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/transform-origin
+        if (this.node // is not temporary SVGElement
+            && (!this.parent || this.node.parentNode?.nodeName === 'foreignObject')
+            && this.getStyle('transform', false, true).hasValue()
+            && !this.getStyle('transform-origin', false, true).hasValue()) {
+            this.getStyle('transform-origin', true, true).setValue('50% 50%');
+        }
+        super.setContext(ctx);
+        ctx.translate(this.getAttribute('x').getPixels('x'), this.getAttribute('y').getPixels('y'));
+        if (viewBox) {
+            width = viewBox[2];
+            height = viewBox[3];
+        }
+        document.setViewBox({
+            ctx,
+            aspectRatio: this.getAttribute('preserveAspectRatio').getString(),
+            width: screen.viewPort.width,
+            desiredWidth: width,
+            height: screen.viewPort.height,
+            desiredHeight: height,
+            minX,
+            minY,
+            refX: refXAttr.getValue(),
+            refY: refYAttr.getValue(),
+            clip,
+            clipX,
+            clipY
+        });
+        if (viewBox) {
+            screen.viewPort.removeCurrent();
+            screen.viewPort.setCurrent(width, height);
+        }
+    }
+    clearContext(ctx) {
+        super.clearContext(ctx);
+        this.document.screen.viewPort.removeCurrent();
+    }
+    /**
+     * Resize SVG to fit in given size.
+     * @param width
+     * @param height
+     * @param preserveAspectRatio
+     */
+    resize(width, height = width, preserveAspectRatio = false) {
+        const widthAttr = this.getAttribute('width', true);
+        const heightAttr = this.getAttribute('height', true);
+        const viewBoxAttr = this.getAttribute('viewBox');
+        const styleAttr = this.getAttribute('style');
+        const originWidth = widthAttr.getNumber(0);
+        const originHeight = heightAttr.getNumber(0);
+        if (preserveAspectRatio) {
+            if (typeof preserveAspectRatio === 'string') {
+                this.getAttribute('preserveAspectRatio', true).setValue(preserveAspectRatio);
+            }
+            else {
+                const preserveAspectRatioAttr = this.getAttribute('preserveAspectRatio');
+                if (preserveAspectRatioAttr.hasValue()) {
+                    preserveAspectRatioAttr.setValue(preserveAspectRatioAttr.getString().replace(/^\s*(\S.*\S)\s*$/, '$1'));
+                }
+            }
+        }
+        widthAttr.setValue(width);
+        heightAttr.setValue(height);
+        if (!viewBoxAttr.hasValue()) {
+            viewBoxAttr.setValue(`0 0 ${originWidth || width} ${originHeight || height}`);
+        }
+        if (styleAttr.hasValue()) {
+            const widthStyle = this.getStyle('width');
+            const heightStyle = this.getStyle('height');
+            if (widthStyle.hasValue()) {
+                widthStyle.setValue(`${width}px`);
+            }
+            if (heightStyle.hasValue()) {
+                heightStyle.setValue(`${height}px`);
+            }
+        }
+    }
+}
+
+class RectElement extends PathElement {
+    constructor() {
+        super(...arguments);
+        this.type = 'rect';
+    }
+    path(ctx) {
+        const x = this.getAttribute('x').getPixels('x');
+        const y = this.getAttribute('y').getPixels('y');
+        const width = this.getStyle('width', false, true).getPixels('x');
+        const height = this.getStyle('height', false, true).getPixels('y');
+        const rxAttr = this.getAttribute('rx');
+        const ryAttr = this.getAttribute('ry');
+        let rx = rxAttr.getPixels('x');
+        let ry = ryAttr.getPixels('y');
+        if (rxAttr.hasValue() && !ryAttr.hasValue()) {
+            ry = rx;
+        }
+        if (ryAttr.hasValue() && !rxAttr.hasValue()) {
+            rx = ry;
+        }
+        rx = Math.min(rx, width / 2.0);
+        ry = Math.min(ry, height / 2.0);
+        if (ctx) {
+            const KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);
+            ctx.beginPath(); // always start the path so we don't fill prior paths
+            if (height > 0 && width > 0) {
+                ctx.moveTo(x + rx, y);
+                ctx.lineTo(x + width - rx, y);
+                ctx.bezierCurveTo(x + width - rx + (KAPPA * rx), y, x + width, y + ry - (KAPPA * ry), x + width, y + ry);
+                ctx.lineTo(x + width, y + height - ry);
+                ctx.bezierCurveTo(x + width, y + height - ry + (KAPPA * ry), x + width - rx + (KAPPA * rx), y + height, x + width - rx, y + height);
+                ctx.lineTo(x + rx, y + height);
+                ctx.bezierCurveTo(x + rx - (KAPPA * rx), y + height, x, y + height - ry + (KAPPA * ry), x, y + height - ry);
+                ctx.lineTo(x, y + ry);
+                ctx.bezierCurveTo(x, y + ry - (KAPPA * ry), x + rx - (KAPPA * rx), y, x + rx, y);
+                ctx.closePath();
+            }
+        }
+        return new BoundingBox(x, y, x + width, y + height);
+    }
+    getMarkers() {
+        return null;
+    }
+}
+
+class CircleElement extends PathElement {
+    constructor() {
+        super(...arguments);
+        this.type = 'circle';
+    }
+    path(ctx) {
+        const cx = this.getAttribute('cx').getPixels('x');
+        const cy = this.getAttribute('cy').getPixels('y');
+        const r = this.getAttribute('r').getPixels();
+        if (ctx && r > 0) {
+            ctx.beginPath();
+            ctx.arc(cx, cy, r, 0, Math.PI * 2, false);
+            ctx.closePath();
+        }
+        return new BoundingBox(cx - r, cy - r, cx + r, cy + r);
+    }
+    getMarkers() {
+        return null;
+    }
+}
+
+class EllipseElement extends PathElement {
+    constructor() {
+        super(...arguments);
+        this.type = 'ellipse';
+    }
+    path(ctx) {
+        const KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);
+        const rx = this.getAttribute('rx').getPixels('x');
+        const ry = this.getAttribute('ry').getPixels('y');
+        const cx = this.getAttribute('cx').getPixels('x');
+        const cy = this.getAttribute('cy').getPixels('y');
+        if (ctx && rx > 0 && ry > 0) {
+            ctx.beginPath();
+            ctx.moveTo(cx + rx, cy);
+            ctx.bezierCurveTo(cx + rx, cy + (KAPPA * ry), cx + (KAPPA * rx), cy + ry, cx, cy + ry);
+            ctx.bezierCurveTo(cx - (KAPPA * rx), cy + ry, cx - rx, cy + (KAPPA * ry), cx - rx, cy);
+            ctx.bezierCurveTo(cx - rx, cy - (KAPPA * ry), cx - (KAPPA * rx), cy - ry, cx, cy - ry);
+            ctx.bezierCurveTo(cx + (KAPPA * rx), cy - ry, cx + rx, cy - (KAPPA * ry), cx + rx, cy);
+            ctx.closePath();
+        }
+        return new BoundingBox(cx - rx, cy - ry, cx + rx, cy + ry);
+    }
+    getMarkers() {
+        return null;
+    }
+}
+
+class LineElement extends PathElement {
+    constructor() {
+        super(...arguments);
+        this.type = 'line';
+    }
+    getPoints() {
+        return [
+            new Point(this.getAttribute('x1').getPixels('x'), this.getAttribute('y1').getPixels('y')),
+            new Point(this.getAttribute('x2').getPixels('x'), this.getAttribute('y2').getPixels('y'))
+        ];
+    }
+    path(ctx) {
+        const [{ x: x0, y: y0 }, { x: x1, y: y1 }] = this.getPoints();
+        if (ctx) {
+            ctx.beginPath();
+            ctx.moveTo(x0, y0);
+            ctx.lineTo(x1, y1);
+        }
+        return new BoundingBox(x0, y0, x1, y1);
+    }
+    getMarkers() {
+        const [p0, p1] = this.getPoints();
+        const a = p0.angleTo(p1);
+        return [
+            [p0, a],
+            [p1, a]
+        ];
+    }
+}
+
+class PolylineElement extends PathElement {
+    constructor(document, node, captureTextNodes) {
+        super(document, node, captureTextNodes);
+        this.type = 'polyline';
+        this.points = [];
+        this.points = Point.parsePath(this.getAttribute('points').getString());
+    }
+    path(ctx) {
+        const { points } = this;
+        const [{ x: x0, y: y0 }] = points;
+        const boundingBox = new BoundingBox(x0, y0);
+        if (ctx) {
+            ctx.beginPath();
+            ctx.moveTo(x0, y0);
+        }
+        points.forEach(({ x, y }) => {
+            boundingBox.addPoint(x, y);
+            if (ctx) {
+                ctx.lineTo(x, y);
+            }
+        });
+        return boundingBox;
+    }
+    getMarkers() {
+        const { points } = this;
+        const lastIndex = points.length - 1;
+        const markers = [];
+        points.forEach((point, i) => {
+            if (i === lastIndex) {
+                return;
+            }
+            markers.push([
+                point,
+                point.angleTo(points[i + 1])
+            ]);
+        });
+        if (markers.length > 0) {
+            markers.push([
+                points[points.length - 1],
+                markers[markers.length - 1][1]
+            ]);
+        }
+        return markers;
+    }
+}
+
+class PolygonElement extends PolylineElement {
+    constructor() {
+        super(...arguments);
+        this.type = 'polygon';
+    }
+    path(ctx) {
+        const boundingBox = super.path(ctx);
+        const [{ x, y }] = this.points;
+        if (ctx) {
+            ctx.lineTo(x, y);
+            ctx.closePath();
+        }
+        return boundingBox;
+    }
+}
+
+class PatternElement extends Element {
+    constructor() {
+        super(...arguments);
+        this.type = 'pattern';
+    }
+    createPattern(ctx, _, parentOpacityProp) {
+        const width = this.getStyle('width').getPixels('x', true);
+        const height = this.getStyle('height').getPixels('y', true);
+        // render me using a temporary svg element
+        const patternSvg = new SVGElement(this.document, null);
+        patternSvg.attributes.viewBox = new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue());
+        patternSvg.attributes.width = new Property(this.document, 'width', `${width}px`);
+        patternSvg.attributes.height = new Property(this.document, 'height', `${height}px`);
+        patternSvg.attributes.transform = new Property(this.document, 'transform', this.getAttribute('patternTransform').getValue());
+        patternSvg.children = this.children;
+        const patternCanvas = this.document.createCanvas(width, height);
+        const patternCtx = patternCanvas.getContext('2d');
+        const xAttr = this.getAttribute('x');
+        const yAttr = this.getAttribute('y');
+        if (xAttr.hasValue() && yAttr.hasValue()) {
+            patternCtx.translate(xAttr.getPixels('x', true), yAttr.getPixels('y', true));
+        }
+        if (parentOpacityProp.hasValue()) {
+            this.styles['fill-opacity'] = parentOpacityProp;
+        }
+        else {
+            Reflect.deleteProperty(this.styles, 'fill-opacity');
+        }
+        // render 3x3 grid so when we transform there's no white space on edges
+        for (let x = -1; x <= 1; x++) {
+            for (let y = -1; y <= 1; y++) {
+                patternCtx.save();
+                patternSvg.attributes.x = new Property(this.document, 'x', x * patternCanvas.width);
+                patternSvg.attributes.y = new Property(this.document, 'y', y * patternCanvas.height);
+                patternSvg.render(patternCtx);
+                patternCtx.restore();
+            }
+        }
+        const pattern = ctx.createPattern(patternCanvas, 'repeat');
+        return pattern;
+    }
+}
+
+class MarkerElement extends Element {
+    constructor() {
+        super(...arguments);
+        this.type = 'marker';
+    }
+    render(ctx, point, angle) {
+        if (!point) {
+            return;
+        }
+        const { x, y } = point;
+        const orient = this.getAttribute('orient').getString('auto');
+        const markerUnits = this.getAttribute('markerUnits').getString('strokeWidth');
+        ctx.translate(x, y);
+        if (orient === 'auto') {
+            ctx.rotate(angle);
+        }
+        if (markerUnits === 'strokeWidth') {
+            ctx.scale(ctx.lineWidth, ctx.lineWidth);
+        }
+        ctx.save();
+        // render me using a temporary svg element
+        const markerSvg = new SVGElement(this.document, null);
+        markerSvg.type = this.type;
+        markerSvg.attributes.viewBox = new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue());
+        markerSvg.attributes.refX = new Property(this.document, 'refX', this.getAttribute('refX').getValue());
+        markerSvg.attributes.refY = new Property(this.document, 'refY', this.getAttribute('refY').getValue());
+        markerSvg.attributes.width = new Property(this.document, 'width', this.getAttribute('markerWidth').getValue());
+        markerSvg.attributes.height = new Property(this.document, 'height', this.getAttribute('markerHeight').getValue());
+        markerSvg.attributes.overflow = new Property(this.document, 'overflow', this.getAttribute('overflow').getValue());
+        markerSvg.attributes.fill = new Property(this.document, 'fill', this.getAttribute('fill').getColor('black'));
+        markerSvg.attributes.stroke = new Property(this.document, 'stroke', this.getAttribute('stroke').getValue('none'));
+        markerSvg.children = this.children;
+        markerSvg.render(ctx);
+        ctx.restore();
+        if (markerUnits === 'strokeWidth') {
+            ctx.scale(1 / ctx.lineWidth, 1 / ctx.lineWidth);
+        }
+        if (orient === 'auto') {
+            ctx.rotate(-angle);
+        }
+        ctx.translate(-x, -y);
+    }
+}
+
+class DefsElement extends Element {
+    constructor() {
+        super(...arguments);
+        this.type = 'defs';
+    }
+    render() {
+        // NOOP
+    }
+}
+
+class GElement extends RenderedElement {
+    constructor() {
+        super(...arguments);
+        this.type = 'g';
+    }
+    getBoundingBox(ctx) {
+        const boundingBox = new BoundingBox();
+        this.children.forEach((child) => {
+            boundingBox.addBoundingBox(child.getBoundingBox(ctx));
+        });
+        return boundingBox;
+    }
+}
+
+class GradientElement extends Element {
+    constructor(document, node, captureTextNodes) {
+        super(document, node, captureTextNodes);
+        this.attributesToInherit = [
+            'gradientUnits'
+        ];
+        this.stops = [];
+        const { stops, children } = this;
+        children.forEach((child) => {
+            if (child.type === 'stop') {
+                stops.push(child);
+            }
+        });
+    }
+    getGradientUnits() {
+        return this.getAttribute('gradientUnits').getString('objectBoundingBox');
+    }
+    createGradient(ctx, element, parentOpacityProp) {
+        // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this
+        let stopsContainer = this;
+        if (this.getHrefAttribute().hasValue()) {
+            stopsContainer = this.getHrefAttribute().getDefinition();
+            this.inheritStopContainer(stopsContainer);
+        }
+        const { stops } = stopsContainer;
+        const gradient = this.getGradient(ctx, element);
+        if (!gradient) {
+            return this.addParentOpacity(parentOpacityProp, stops[stops.length - 1].color);
+        }
+        stops.forEach((stop) => {
+            gradient.addColorStop(stop.offset, this.addParentOpacity(parentOpacityProp, stop.color));
+        });
+        if (this.getAttribute('gradientTransform').hasValue()) {
+            // render as transformed pattern on temporary canvas
+            const { document } = this;
+            const { MAX_VIRTUAL_PIXELS, viewPort } = document.screen;
+            const [rootView] = viewPort.viewPorts;
+            const rect = new RectElement(document, null);
+            rect.attributes.x = new Property(document, 'x', -MAX_VIRTUAL_PIXELS / 3.0);
+            rect.attributes.y = new Property(document, 'y', -MAX_VIRTUAL_PIXELS / 3.0);
+            rect.attributes.width = new Property(document, 'width', MAX_VIRTUAL_PIXELS);
+            rect.attributes.height = new Property(document, 'height', MAX_VIRTUAL_PIXELS);
+            const group = new GElement(document, null);
+            group.attributes.transform = new Property(document, 'transform', this.getAttribute('gradientTransform').getValue());
+            group.children = [rect];
+            const patternSvg = new SVGElement(document, null);
+            patternSvg.attributes.x = new Property(document, 'x', 0);
+            patternSvg.attributes.y = new Property(document, 'y', 0);
+            patternSvg.attributes.width = new Property(document, 'width', rootView.width);
+            patternSvg.attributes.height = new Property(document, 'height', rootView.height);
+            patternSvg.children = [group];
+            const patternCanvas = document.createCanvas(rootView.width, rootView.height);
+            const patternCtx = patternCanvas.getContext('2d');
+            patternCtx.fillStyle = gradient;
+            patternSvg.render(patternCtx);
+            return patternCtx.createPattern(patternCanvas, 'no-repeat');
+        }
+        return gradient;
+    }
+    inheritStopContainer(stopsContainer) {
+        this.attributesToInherit.forEach((attributeToInherit) => {
+            if (!this.getAttribute(attributeToInherit).hasValue()
+                && stopsContainer.getAttribute(attributeToInherit).hasValue()) {
+                this.getAttribute(attributeToInherit, true)
+                    .setValue(stopsContainer.getAttribute(attributeToInherit).getValue());
+            }
+        });
+    }
+    addParentOpacity(parentOpacityProp, color) {
+        if (parentOpacityProp.hasValue()) {
+            const colorProp = new Property(this.document, 'color', color);
+            return colorProp.addOpacity(parentOpacityProp).getColor();
+        }
+        return color;
+    }
+}
+
+class LinearGradientElement extends GradientElement {
+    constructor(document, node, captureTextNodes) {
+        super(document, node, captureTextNodes);
+        this.type = 'linearGradient';
+        this.attributesToInherit.push('x1', 'y1', 'x2', 'y2');
+    }
+    getGradient(ctx, element) {
+        const isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';
+        const boundingBox = isBoundingBoxUnits
+            ? element.getBoundingBox(ctx)
+            : null;
+        if (isBoundingBoxUnits && !boundingBox) {
+            return null;
+        }
+        if (!this.getAttribute('x1').hasValue()
+            && !this.getAttribute('y1').hasValue()
+            && !this.getAttribute('x2').hasValue()
+            && !this.getAttribute('y2').hasValue()) {
+            this.getAttribute('x1', true).setValue(0);
+            this.getAttribute('y1', true).setValue(0);
+            this.getAttribute('x2', true).setValue(1);
+            this.getAttribute('y2', true).setValue(0);
+        }
+        const x1 = isBoundingBoxUnits
+            ? boundingBox.x + boundingBox.width * this.getAttribute('x1').getNumber()
+            : this.getAttribute('x1').getPixels('x');
+        const y1 = isBoundingBoxUnits
+            ? boundingBox.y + boundingBox.height * this.getAttribute('y1').getNumber()
+            : this.getAttribute('y1').getPixels('y');
+        const x2 = isBoundingBoxUnits
+            ? boundingBox.x + boundingBox.width * this.getAttribute('x2').getNumber()
+            : this.getAttribute('x2').getPixels('x');
+        const y2 = isBoundingBoxUnits
+            ? boundingBox.y + boundingBox.height * this.getAttribute('y2').getNumber()
+            : this.getAttribute('y2').getPixels('y');
+        if (x1 === x2 && y1 === y2) {
+            return null;
+        }
+        return ctx.createLinearGradient(x1, y1, x2, y2);
+    }
+}
+
+class RadialGradientElement extends GradientElement {
+    constructor(document, node, captureTextNodes) {
+        super(document, node, captureTextNodes);
+        this.type = 'radialGradient';
+        this.attributesToInherit.push('cx', 'cy', 'r', 'fx', 'fy', 'fr');
+    }
+    getGradient(ctx, element) {
+        const isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';
+        const boundingBox = element.getBoundingBox(ctx);
+        if (isBoundingBoxUnits && !boundingBox) {
+            return null;
+        }
+        if (!this.getAttribute('cx').hasValue()) {
+            this.getAttribute('cx', true).setValue('50%');
+        }
+        if (!this.getAttribute('cy').hasValue()) {
+            this.getAttribute('cy', true).setValue('50%');
+        }
+        if (!this.getAttribute('r').hasValue()) {
+            this.getAttribute('r', true).setValue('50%');
+        }
+        const cx = isBoundingBoxUnits
+            ? boundingBox.x + boundingBox.width * this.getAttribute('cx').getNumber()
+            : this.getAttribute('cx').getPixels('x');
+        const cy = isBoundingBoxUnits
+            ? boundingBox.y + boundingBox.height * this.getAttribute('cy').getNumber()
+            : this.getAttribute('cy').getPixels('y');
+        let fx = cx;
+        let fy = cy;
+        if (this.getAttribute('fx').hasValue()) {
+            fx = isBoundingBoxUnits
+                ? boundingBox.x + boundingBox.width * this.getAttribute('fx').getNumber()
+                : this.getAttribute('fx').getPixels('x');
+        }
+        if (this.getAttribute('fy').hasValue()) {
+            fy = isBoundingBoxUnits
+                ? boundingBox.y + boundingBox.height * this.getAttribute('fy').getNumber()
+                : this.getAttribute('fy').getPixels('y');
+        }
+        const r = isBoundingBoxUnits
+            ? (boundingBox.width + boundingBox.height) / 2.0 * this.getAttribute('r').getNumber()
+            : this.getAttribute('r').getPixels();
+        const fr = this.getAttribute('fr').getPixels();
+        return ctx.createRadialGradient(fx, fy, fr, cx, cy, r);
+    }
+}
+
+class StopElement extends Element {
+    constructor(document, node, captureTextNodes) {
+        super(document, node, captureTextNodes);
+        this.type = 'stop';
+        const offset = Math.max(0, Math.min(1, this.getAttribute('offset').getNumber()));
+        const stopOpacity = this.getStyle('stop-opacity');
+        let stopColor = this.getStyle('stop-color', true);
+        if (stopColor.getString() === '') {
+            stopColor.setValue('#000');
+        }
+        if (stopOpacity.hasValue()) {
+            stopColor = stopColor.addOpacity(stopOpacity);
+        }
+        this.offset = offset;
+        this.color = stopColor.getColor();
+    }
+}
+
+class AnimateElement extends Element {
+    constructor(document, node, captureTextNodes) {
+        super(document, node, captureTextNodes);
+        this.type = 'animate';
+        this.duration = 0;
+        this.initialValue = null;
+        this.initialUnits = '';
+        this.removed = false;
+        this.frozen = false;
+        document.screen.animations.push(this);
+        this.begin = this.getAttribute('begin').getMilliseconds();
+        this.maxDuration = this.begin + this.getAttribute('dur').getMilliseconds();
+        this.from = this.getAttribute('from');
+        this.to = this.getAttribute('to');
+        this.values = new Property(document, 'values', null);
+        const valuesAttr = this.getAttribute('values');
+        if (valuesAttr.hasValue()) {
+            this.values.setValue(valuesAttr.getString().split(';'));
+        }
+    }
+    getProperty() {
+        const attributeType = this.getAttribute('attributeType').getString();
+        const attributeName = this.getAttribute('attributeName').getString();
+        if (attributeType === 'CSS') {
+            return this.parent.getStyle(attributeName, true);
+        }
+        return this.parent.getAttribute(attributeName, true);
+    }
+    calcValue() {
+        const { initialUnits } = this;
+        const { progress, from, to } = this.getProgress();
+        // tween value linearly
+        let newValue = from.getNumber() + (to.getNumber() - from.getNumber()) * progress;
+        if (initialUnits === '%') {
+            newValue *= 100.0; // numValue() returns 0-1 whereas properties are 0-100
+        }
+        return `${newValue}${initialUnits}`;
+    }
+    update(delta) {
+        const { parent } = this;
+        const prop = this.getProperty();
+        // set initial value
+        if (!this.initialValue) {
+            this.initialValue = prop.getString();
+            this.initialUnits = prop.getUnits();
+        }
+        // if we're past the end time
+        if (this.duration > this.maxDuration) {
+            const fill = this.getAttribute('fill').getString('remove');
+            // loop for indefinitely repeating animations
+            if (this.getAttribute('repeatCount').getString() === 'indefinite'
+                || this.getAttribute('repeatDur').getString() === 'indefinite') {
+                this.duration = 0;
+            }
+            else if (fill === 'freeze' && !this.frozen) {
+                this.frozen = true;
+                parent.animationFrozen = true;
+                parent.animationFrozenValue = prop.getString();
+            }
+            else if (fill === 'remove' && !this.removed) {
+                this.removed = true;
+                prop.setValue(parent.animationFrozen
+                    ? parent.animationFrozenValue
+                    : this.initialValue);
+                return true;
+            }
+            return false;
+        }
+        this.duration += delta;
+        // if we're past the begin time
+        let updated = false;
+        if (this.begin < this.duration) {
+            let newValue = this.calcValue(); // tween
+            const typeAttr = this.getAttribute('type');
+            if (typeAttr.hasValue()) {
+                // for transform, etc.
+                const type = typeAttr.getString();
+                newValue = `${type}(${newValue})`;
+            }
+            prop.setValue(newValue);
+            updated = true;
+        }
+        return updated;
+    }
+    getProgress() {
+        const { document, values } = this;
+        const result = {
+            progress: (this.duration - this.begin) / (this.maxDuration - this.begin)
+        };
+        if (values.hasValue()) {
+            const p = result.progress * (values.getValue().length - 1);
+            const lb = Math.floor(p);
+            const ub = Math.ceil(p);
+            result.from = new Property(document, 'from', parseFloat(values.getValue()[lb]));
+            result.to = new Property(document, 'to', parseFloat(values.getValue()[ub]));
+            result.progress = (p - lb) / (ub - lb);
+        }
+        else {
+            result.from = this.from;
+            result.to = this.to;
+        }
+        return result;
+    }
+}
+
+class AnimateColorElement extends AnimateElement {
+    constructor() {
+        super(...arguments);
+        this.type = 'animateColor';
+    }
+    calcValue() {
+        const { progress, from, to } = this.getProgress();
+        const colorFrom = new RGBColor(from.getColor());
+        const colorTo = new RGBColor(to.getColor());
+        if (colorFrom.ok && colorTo.ok) {
+            // tween color linearly
+            const r = colorFrom.r + (colorTo.r - colorFrom.r) * progress;
+            const g = colorFrom.g + (colorTo.g - colorFrom.g) * progress;
+            const b = colorFrom.b + (colorTo.b - colorFrom.b) * progress;
+            // ? alpha
+            return `rgb(${Math.floor(r)}, ${Math.floor(g)}, ${Math.floor(b)})`;
+        }
+        return this.getAttribute('from').getColor();
+    }
+}
+
+class AnimateTransformElement extends AnimateElement {
+    constructor() {
+        super(...arguments);
+        this.type = 'animateTransform';
+    }
+    calcValue() {
+        const { progress, from, to } = this.getProgress();
+        // tween value linearly
+        const transformFrom = toNumbers(from.getString());
+        const transformTo = toNumbers(to.getString());
+        const newValue = transformFrom.map((from, i) => {
+            const to = transformTo[i];
+            return from + (to - from) * progress;
+        }).join(' ');
+        return newValue;
+    }
+}
+
+class FontElement extends Element {
+    constructor(document, node, captureTextNodes) {
+        super(document, node, captureTextNodes);
+        this.type = 'font';
+        this.glyphs = {};
+        this.horizAdvX = this.getAttribute('horiz-adv-x').getNumber();
+        const { definitions } = document;
+        const { children } = this;
+        for (const child of children) {
+            switch (child.type) {
+                case 'font-face': {
+                    this.fontFace = child;
+                    const fontFamilyStyle = child.getStyle('font-family');
+                    if (fontFamilyStyle.hasValue()) {
+                        definitions[fontFamilyStyle.getString()] = this;
+                    }
+                    break;
+                }
+                case 'missing-glyph':
+                    this.missingGlyph = child;
+                    break;
+                case 'glyph': {
+                    const glyph = child;
+                    if (glyph.arabicForm) {
+                        this.isRTL = true;
+                        this.isArabic = true;
+                        if (typeof this.glyphs[glyph.unicode] === 'undefined') {
+                            this.glyphs[glyph.unicode] = {};
+                        }
+                        this.glyphs[glyph.unicode][glyph.arabicForm] = glyph;
+                    }
+                    else {
+                        this.glyphs[glyph.unicode] = glyph;
+                    }
+                    break;
+                }
+            }
+        }
+    }
+    render() {
+        // NO RENDER
+    }
+}
+
+class FontFaceElement extends Element {
+    constructor(document, node, captureTextNodes) {
+        super(document, node, captureTextNodes);
+        this.type = 'font-face';
+        this.ascent = this.getAttribute('ascent').getNumber();
+        this.descent = this.getAttribute('descent').getNumber();
+        this.unitsPerEm = this.getAttribute('units-per-em').getNumber();
+    }
+}
+
+class MissingGlyphElement extends PathElement {
+    constructor() {
+        super(...arguments);
+        this.type = 'missing-glyph';
+        this.horizAdvX = 0;
+    }
+}
+
+class TRefElement extends TextElement {
+    constructor() {
+        super(...arguments);
+        this.type = 'tref';
+    }
+    getText() {
+        const element = this.getHrefAttribute().getDefinition();
+        if (element) {
+            const firstChild = element.children[0];
+            if (firstChild) {
+                return firstChild.getText();
+            }
+        }
+        return '';
+    }
+}
+
+class AElement extends TextElement {
+    constructor(document, node, captureTextNodes) {
+        super(document, node, captureTextNodes);
+        this.type = 'a';
+        const { childNodes } = node;
+        const firstChild = childNodes[0];
+        const hasText = childNodes.length > 0
+            && Array.from(childNodes).every(node => node.nodeType === 3);
+        this.hasText = hasText;
+        this.text = hasText
+            ? this.getTextFromNode(firstChild)
+            : '';
+    }
+    getText() {
+        return this.text;
+    }
+    renderChildren(ctx) {
+        if (this.hasText) {
+            // render as text element
+            super.renderChildren(ctx);
+            const { document, x, y } = this;
+            const { mouse } = document.screen;
+            const fontSize = new Property(document, 'fontSize', Font.parse(document.ctx.font).fontSize);
+            // Do not calc bounding box if mouse is not working.
+            if (mouse.isWorking()) {
+                mouse.checkBoundingBox(this, new BoundingBox(x, y - fontSize.getPixels('y'), x + this.measureText(ctx), y));
+            }
+        }
+        else if (this.children.length > 0) {
+            // render as temporary group
+            const g = new GElement(this.document, null);
+            g.children = this.children;
+            g.parent = this;
+            g.render(ctx);
+        }
+    }
+    onClick() {
+        const { window } = this.document;
+        if (window) {
+            window.open(this.getHrefAttribute().getString());
+        }
+    }
+    onMouseMove() {
+        const ctx = this.document.ctx;
+        ctx.canvas.style.cursor = 'pointer';
+    }
+}
+
+class TextPathElement extends TextElement {
+    constructor(document, node, captureTextNodes) {
+        super(document, node, captureTextNodes);
+        this.type = 'textPath';
+        this.textWidth = 0;
+        this.textHeight = 0;
+        this.pathLength = -1;
+        this.glyphInfo = null;
+        this.letterSpacingCache = [];
+        this.measuresCache = new Map([['', 0]]);
+        const pathElement = this.getHrefAttribute().getDefinition();
+        this.text = this.getTextFromNode();
+        this.dataArray = this.parsePathData(pathElement);
+    }
+    getText() {
+        return this.text;
+    }
+    path(ctx) {
+        const { dataArray } = this;
+        if (ctx) {
+            ctx.beginPath();
+        }
+        dataArray.forEach(({ type, points }) => {
+            switch (type) {
+                case PathParser.LINE_TO:
+                    if (ctx) {
+                        ctx.lineTo(points[0], points[1]);
+                    }
+                    break;
+                case PathParser.MOVE_TO:
+                    if (ctx) {
+                        ctx.moveTo(points[0], points[1]);
+                    }
+                    break;
+                case PathParser.CURVE_TO:
+                    if (ctx) {
+                        ctx.bezierCurveTo(points[0], points[1], points[2], points[3], points[4], points[5]);
+                    }
+                    break;
+                case PathParser.QUAD_TO:
+                    if (ctx) {
+                        ctx.quadraticCurveTo(points[0], points[1], points[2], points[3]);
+                    }
+                    break;
+                case PathParser.ARC: {
+                    const [cx, cy, rx, ry, theta, dTheta, psi, fs] = points;
+                    const r = rx > ry ? rx : ry;
+                    const scaleX = rx > ry ? 1 : rx / ry;
+                    const scaleY = rx > ry ? ry / rx : 1;
+                    if (ctx) {
+                        ctx.translate(cx, cy);
+                        ctx.rotate(psi);
+                        ctx.scale(scaleX, scaleY);
+                        ctx.arc(0, 0, r, theta, theta + dTheta, Boolean(1 - fs));
+                        ctx.scale(1 / scaleX, 1 / scaleY);
+                        ctx.rotate(-psi);
+                        ctx.translate(-cx, -cy);
+                    }
+                    break;
+                }
+                case PathParser.CLOSE_PATH:
+                    if (ctx) {
+                        ctx.closePath();
+                    }
+                    break;
+            }
+        });
+    }
+    renderChildren(ctx) {
+        this.setTextData(ctx);
+        ctx.save();
+        const textDecoration = this.parent.getStyle('text-decoration').getString();
+        const fontSize = this.getFontSize();
+        const { glyphInfo } = this;
+        const fill = ctx.fillStyle;
+        if (textDecoration === 'underline') {
+            ctx.beginPath();
+        }
+        glyphInfo.forEach((glyph, i) => {
+            const { p0, p1, rotation, text: partialText } = glyph;
+            ctx.save();
+            ctx.translate(p0.x, p0.y);
+            ctx.rotate(rotation);
+            if (ctx.fillStyle) {
+                ctx.fillText(partialText, 0, 0);
+            }
+            if (ctx.strokeStyle) {
+                ctx.strokeText(partialText, 0, 0);
+            }
+            ctx.restore();
+            if (textDecoration === 'underline') {
+                if (i === 0) {
+                    ctx.moveTo(p0.x, p0.y + fontSize / 8);
+                }
+                ctx.lineTo(p1.x, p1.y + fontSize / 5);
+            }
+            // // To assist with debugging visually, uncomment following
+            //
+            // ctx.beginPath();
+            // if (i % 2)
+            // 	ctx.strokeStyle = 'red';
+            // else
+            // 	ctx.strokeStyle = 'green';
+            // ctx.moveTo(p0.x, p0.y);
+            // ctx.lineTo(p1.x, p1.y);
+            // ctx.stroke();
+            // ctx.closePath();
+        });
+        if (textDecoration === 'underline') {
+            ctx.lineWidth = fontSize / 20;
+            ctx.strokeStyle = fill;
+            ctx.stroke();
+            ctx.closePath();
+        }
+        ctx.restore();
+    }
+    getLetterSpacingAt(idx = 0) {
+        return this.letterSpacingCache[idx] || 0;
+    }
+    findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, inputOffset, dy, c, charI) {
+        let offset = inputOffset;
+        let glyphWidth = this.measureText(ctx, c);
+        if (c === ' '
+            && anchor === 'justify'
+            && textFullWidth < fullPathWidth) {
+            glyphWidth += (fullPathWidth - textFullWidth) / spacesNumber;
+        }
+        if (charI > -1) {
+            offset += this.getLetterSpacingAt(charI);
+        }
+        const splineStep = this.textHeight / 20;
+        const p0 = this.getEquidistantPointOnPath(offset, splineStep, 0);
+        const p1 = this.getEquidistantPointOnPath(offset + glyphWidth, splineStep, 0);
+        const segment = {
+            p0,
+            p1
+        };
+        const rotation = p0 && p1
+            ? Math.atan2(p1.y - p0.y, p1.x - p0.x)
+            : 0;
+        if (dy) {
+            const dyX = Math.cos(Math.PI / 2 + rotation) * dy;
+            const dyY = Math.cos(-rotation) * dy;
+            segment.p0 = {
+                ...p0,
+                x: p0.x + dyX,
+                y: p0.y + dyY
+            };
+            segment.p1 = {
+                ...p1,
+                x: p1.x + dyX,
+                y: p1.y + dyY
+            };
+        }
+        offset += glyphWidth;
+        return {
+            offset,
+            segment,
+            rotation
+        };
+    }
+    measureText(ctx, text) {
+        const { measuresCache } = this;
+        const targetText = text || this.getText();
+        if (measuresCache.has(targetText)) {
+            return measuresCache.get(targetText);
+        }
+        const measure = this.measureTargetText(ctx, targetText);
+        measuresCache.set(targetText, measure);
+        return measure;
+    }
+    // This method supposes what all custom fonts already loaded.
+    // If some font will be loaded after this method call, <textPath> will not be rendered correctly.
+    // You need to call this method manually to update glyphs cache.
+    setTextData(ctx) {
+        if (this.glyphInfo) {
+            return;
+        }
+        const renderText = this.getText();
+        const chars = renderText.split('');
+        const spacesNumber = renderText.split(' ').length - 1;
+        const dx = this.parent.getAttribute('dx').split().map(_ => _.getPixels('x'));
+        const dy = this.parent.getAttribute('dy').getPixels('y');
+        const anchor = this.parent.getStyle('text-anchor').getString('start');
+        const thisSpacing = this.getStyle('letter-spacing');
+        const parentSpacing = this.parent.getStyle('letter-spacing');
+        let letterSpacing = 0;
+        if (!thisSpacing.hasValue()
+            || thisSpacing.getValue() === 'inherit') {
+            letterSpacing = parentSpacing.getPixels();
+        }
+        else if (thisSpacing.hasValue()) {
+            if (thisSpacing.getValue() !== 'initial'
+                && thisSpacing.getValue() !== 'unset') {
+                letterSpacing = thisSpacing.getPixels();
+            }
+        }
+        // fill letter-spacing cache
+        const letterSpacingCache = [];
+        const textLen = renderText.length;
+        this.letterSpacingCache = letterSpacingCache;
+        for (let i = 0; i < textLen; i++) {
+            letterSpacingCache.push(typeof dx[i] !== 'undefined'
+                ? dx[i]
+                : letterSpacing);
+        }
+        const dxSum = letterSpacingCache.reduce((acc, cur, i) => (i === 0
+            ? 0
+            : acc + cur || 0), 0);
+        const textWidth = this.measureText(ctx);
+        const textFullWidth = Math.max(textWidth + dxSum, 0);
+        this.textWidth = textWidth;
+        this.textHeight = this.getFontSize();
+        this.glyphInfo = [];
+        const fullPathWidth = this.getPathLength();
+        const startOffset = this.getStyle('startOffset').getNumber(0) * fullPathWidth;
+        let offset = 0;
+        if (anchor === 'middle'
+            || anchor === 'center') {
+            offset = -textFullWidth / 2;
+        }
+        if (anchor === 'end'
+            || anchor === 'right') {
+            offset = -textFullWidth;
+        }
+        offset += startOffset;
+        chars.forEach((char, i) => {
+            // Find such segment what distance between p0 and p1 is approx. width of glyph
+            const { offset: nextOffset, segment, rotation } = this.findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, offset, dy, char, i);
+            offset = nextOffset;
+            if (!segment.p0 || !segment.p1) {
+                return;
+            }
+            // const width = this.getLineLength(
+            // 	segment.p0.x,
+            // 	segment.p0.y,
+            // 	segment.p1.x,
+            // 	segment.p1.y
+            // );
+            // Note: Since glyphs are rendered one at a time, any kerning pair data built into the font will not be used.
+            // Can foresee having a rough pair table built in that the developer can override as needed.
+            // Or use "dx" attribute of the <text> node as a naive replacement
+            // const kern = 0;
+            // placeholder for future implementation
+            // const midpoint = this.getPointOnLine(
+            // 	kern + width / 2.0,
+            // 	segment.p0.x, segment.p0.y, segment.p1.x, segment.p1.y
+            // );
+            this.glyphInfo.push({
+                // transposeX: midpoint.x,
+                // transposeY: midpoint.y,
+                text: chars[i],
+                p0: segment.p0,
+                p1: segment.p1,
+                rotation
+            });
+        });
+    }
+    parsePathData(path) {
+        this.pathLength = -1; // reset path length
+        if (!path) {
+            return [];
+        }
+        const pathCommands = [];
+        const { pathParser } = path;
+        pathParser.reset();
+        // convert l, H, h, V, and v to L
+        while (!pathParser.isEnd()) {
+            const { current } = pathParser;
+            const startX = current ? current.x : 0;
+            const startY = current ? current.y : 0;
+            const command = pathParser.next();
+            let nextCommandType = command.type;
+            let points = [];
+            switch (command.type) {
+                case PathParser.MOVE_TO:
+                    this.pathM(pathParser, points);
+                    break;
+                case PathParser.LINE_TO:
+                    nextCommandType = this.pathL(pathParser, points);
+                    break;
+                case PathParser.HORIZ_LINE_TO:
+                    nextCommandType = this.pathH(pathParser, points);
+                    break;
+                case PathParser.VERT_LINE_TO:
+                    nextCommandType = this.pathV(pathParser, points);
+                    break;
+                case PathParser.CURVE_TO:
+                    this.pathC(pathParser, points);
+                    break;
+                case PathParser.SMOOTH_CURVE_TO:
+                    nextCommandType = this.pathS(pathParser, points);
+                    break;
+                case PathParser.QUAD_TO:
+                    this.pathQ(pathParser, points);
+                    break;
+                case PathParser.SMOOTH_QUAD_TO:
+                    nextCommandType = this.pathT(pathParser, points);
+                    break;
+                case PathParser.ARC:
+                    points = this.pathA(pathParser);
+                    break;
+                case PathParser.CLOSE_PATH:
+                    PathElement.pathZ(pathParser);
+                    break;
+            }
+            if (command.type !== PathParser.CLOSE_PATH) {
+                pathCommands.push({
+                    type: nextCommandType,
+                    points,
+                    start: {
+                        x: startX,
+                        y: startY
+                    },
+                    pathLength: this.calcLength(startX, startY, nextCommandType, points)
+                });
+            }
+            else {
+                pathCommands.push({
+                    type: PathParser.CLOSE_PATH,
+                    points: [],
+                    pathLength: 0
+                });
+            }
+        }
+        return pathCommands;
+    }
+    pathM(pathParser, points) {
+        const { x, y } = PathElement.pathM(pathParser).point;
+        points.push(x, y);
+    }
+    pathL(pathParser, points) {
+        const { x, y } = PathElement.pathL(pathParser).point;
+        points.push(x, y);
+        return PathParser.LINE_TO;
+    }
+    pathH(pathParser, points) {
+        const { x, y } = PathElement.pathH(pathParser).point;
+        points.push(x, y);
+        return PathParser.LINE_TO;
+    }
+    pathV(pathParser, points) {
+        const { x, y } = PathElement.pathV(pathParser).point;
+        points.push(x, y);
+        return PathParser.LINE_TO;
+    }
+    pathC(pathParser, points) {
+        const { point, controlPoint, currentPoint } = PathElement.pathC(pathParser);
+        points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+    }
+    pathS(pathParser, points) {
+        const { point, controlPoint, currentPoint } = PathElement.pathS(pathParser);
+        points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+        return PathParser.CURVE_TO;
+    }
+    pathQ(pathParser, points) {
+        const { controlPoint, currentPoint } = PathElement.pathQ(pathParser);
+        points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+    }
+    pathT(pathParser, points) {
+        const { controlPoint, currentPoint } = PathElement.pathT(pathParser);
+        points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+        return PathParser.QUAD_TO;
+    }
+    pathA(pathParser) {
+        let { rX, rY, sweepFlag, xAxisRotation, centp, a1, ad } = PathElement.pathA(pathParser);
+        if (sweepFlag === 0 && ad > 0) {
+            ad -= 2 * Math.PI;
+        }
+        if (sweepFlag === 1 && ad < 0) {
+            ad += 2 * Math.PI;
+        }
+        return [
+            centp.x,
+            centp.y,
+            rX,
+            rY,
+            a1,
+            ad,
+            xAxisRotation,
+            sweepFlag
+        ];
+    }
+    calcLength(x, y, commandType, points) {
+        let len = 0;
+        let p1 = null;
+        let p2 = null;
+        let t = 0;
+        switch (commandType) {
+            case PathParser.LINE_TO:
+                return this.getLineLength(x, y, points[0], points[1]);
+            case PathParser.CURVE_TO:
+                // Approximates by breaking curve into 100 line segments
+                len = 0.0;
+                p1 = this.getPointOnCubicBezier(0, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);
+                for (t = 0.01; t <= 1; t += 0.01) {
+                    p2 = this.getPointOnCubicBezier(t, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);
+                    len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);
+                    p1 = p2;
+                }
+                return len;
+            case PathParser.QUAD_TO:
+                // Approximates by breaking curve into 100 line segments
+                len = 0.0;
+                p1 = this.getPointOnQuadraticBezier(0, x, y, points[0], points[1], points[2], points[3]);
+                for (t = 0.01; t <= 1; t += 0.01) {
+                    p2 = this.getPointOnQuadraticBezier(t, x, y, points[0], points[1], points[2], points[3]);
+                    len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);
+                    p1 = p2;
+                }
+                return len;
+            case PathParser.ARC: {
+                // Approximates by breaking curve into line segments
+                len = 0.0;
+                const start = points[4];
+                // 4 = theta
+                const dTheta = points[5];
+                // 5 = dTheta
+                const end = points[4] + dTheta;
+                let inc = Math.PI / 180.0;
+                // 1 degree resolution
+                if (Math.abs(start - end) < inc) {
+                    inc = Math.abs(start - end);
+                }
+                // Note: for purpose of calculating arc length, not going to worry about rotating X-axis by angle psi
+                p1 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], start, 0);
+                if (dTheta < 0) { // clockwise
+                    for (t = start - inc; t > end; t -= inc) {
+                        p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);
+                        len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);
+                        p1 = p2;
+                    }
+                }
+                else { // counter-clockwise
+                    for (t = start + inc; t < end; t += inc) {
+                        p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);
+                        len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);
+                        p1 = p2;
+                    }
+                }
+                p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], end, 0);
+                len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);
+                return len;
+            }
+        }
+        return 0;
+    }
+    getPointOnLine(dist, p1x, p1y, p2x, p2y, fromX = p1x, fromY = p1y) {
+        const m = (p2y - p1y) / ((p2x - p1x) + PSEUDO_ZERO);
+        let run = Math.sqrt(dist * dist / (1 + m * m));
+        if (p2x < p1x) {
+            run *= -1;
+        }
+        let rise = m * run;
+        let pt = null;
+        if (p2x === p1x) { // vertical line
+            pt = {
+                x: fromX,
+                y: fromY + rise
+            };
+        }
+        else if ((fromY - p1y) / ((fromX - p1x) + PSEUDO_ZERO) === m) {
+            pt = {
+                x: fromX + run,
+                y: fromY + rise
+            };
+        }
+        else {
+            let ix = 0;
+            let iy = 0;
+            const len = this.getLineLength(p1x, p1y, p2x, p2y);
+            if (len < PSEUDO_ZERO) {
+                return null;
+            }
+            let u = ((fromX - p1x) * (p2x - p1x))
+                + ((fromY - p1y) * (p2y - p1y));
+            u /= len * len;
+            ix = p1x + u * (p2x - p1x);
+            iy = p1y + u * (p2y - p1y);
+            const pRise = this.getLineLength(fromX, fromY, ix, iy);
+            const pRun = Math.sqrt(dist * dist - pRise * pRise);
+            run = Math.sqrt(pRun * pRun / (1 + m * m));
+            if (p2x < p1x) {
+                run *= -1;
+            }
+            rise = m * run;
+            pt = {
+                x: ix + run,
+                y: iy + rise
+            };
+        }
+        return pt;
+    }
+    getPointOnPath(distance) {
+        const fullLen = this.getPathLength();
+        let cumulativePathLength = 0;
+        let p = null;
+        if (distance < -0.00005
+            || distance - 0.00005 > fullLen) {
+            return null;
+        }
+        const { dataArray } = this;
+        for (const command of dataArray) {
+            if (command
+                && (command.pathLength < 0.00005
+                    || cumulativePathLength + command.pathLength + 0.00005 < distance)) {
+                cumulativePathLength += command.pathLength;
+                continue;
+            }
+            const delta = distance - cumulativePathLength;
+            let currentT = 0;
+            switch (command.type) {
+                case PathParser.LINE_TO:
+                    p = this.getPointOnLine(delta, command.start.x, command.start.y, command.points[0], command.points[1], command.start.x, command.start.y);
+                    break;
+                case PathParser.ARC: {
+                    const start = command.points[4];
+                    // 4 = theta
+                    const dTheta = command.points[5];
+                    // 5 = dTheta
+                    const end = command.points[4] + dTheta;
+                    currentT = start + delta / command.pathLength * dTheta;
+                    if (dTheta < 0 && currentT < end
+                        || dTheta >= 0 && currentT > end) {
+                        break;
+                    }
+                    p = this.getPointOnEllipticalArc(command.points[0], command.points[1], command.points[2], command.points[3], currentT, command.points[6]);
+                    break;
+                }
+                case PathParser.CURVE_TO:
+                    currentT = delta / command.pathLength;
+                    if (currentT > 1) {
+                        currentT = 1;
+                    }
+                    p = this.getPointOnCubicBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3], command.points[4], command.points[5]);
+                    break;
+                case PathParser.QUAD_TO:
+                    currentT = delta / command.pathLength;
+                    if (currentT > 1) {
+                        currentT = 1;
+                    }
+                    p = this.getPointOnQuadraticBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3]);
+                    break;
+            }
+            if (p) {
+                return p;
+            }
+            break;
+        }
+        return null;
+    }
+    getLineLength(x1, y1, x2, y2) {
+        return Math.sqrt((x2 - x1) * (x2 - x1)
+            + (y2 - y1) * (y2 - y1));
+    }
+    getPathLength() {
+        if (this.pathLength === -1) {
+            this.pathLength = this.dataArray.reduce((length, command) => (command.pathLength > 0
+                ? length + command.pathLength
+                : length), 0);
+        }
+        return this.pathLength;
+    }
+    getPointOnCubicBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y) {
+        const x = p4x * CB1(pct) + p3x * CB2(pct) + p2x * CB3(pct) + p1x * CB4(pct);
+        const y = p4y * CB1(pct) + p3y * CB2(pct) + p2y * CB3(pct) + p1y * CB4(pct);
+        return {
+            x,
+            y
+        };
+    }
+    getPointOnQuadraticBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y) {
+        const x = p3x * QB1(pct) + p2x * QB2(pct) + p1x * QB3(pct);
+        const y = p3y * QB1(pct) + p2y * QB2(pct) + p1y * QB3(pct);
+        return {
+            x,
+            y
+        };
+    }
+    getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi) {
+        const cosPsi = Math.cos(psi);
+        const sinPsi = Math.sin(psi);
+        const pt = {
+            x: rx * Math.cos(theta),
+            y: ry * Math.sin(theta)
+        };
+        return {
+            x: cx + (pt.x * cosPsi - pt.y * sinPsi),
+            y: cy + (pt.x * sinPsi + pt.y * cosPsi)
+        };
+    }
+    // TODO need some optimisations. possibly build cache only for curved segments?
+    buildEquidistantCache(inputStep, inputPrecision) {
+        const fullLen = this.getPathLength();
+        const precision = inputPrecision || 0.25; // accuracy vs performance
+        const step = inputStep || fullLen / 100;
+        if (!this.equidistantCache
+            || this.equidistantCache.step !== step
+            || this.equidistantCache.precision !== precision) {
+            // Prepare cache
+            this.equidistantCache = {
+                step,
+                precision,
+                points: []
+            };
+            // Calculate points
+            let s = 0;
+            for (let l = 0; l <= fullLen; l += precision) {
+                const p0 = this.getPointOnPath(l);
+                const p1 = this.getPointOnPath(l + precision);
+                if (!p0 || !p1) {
+                    continue;
+                }
+                s += this.getLineLength(p0.x, p0.y, p1.x, p1.y);
+                if (s >= step) {
+                    this.equidistantCache.points.push({
+                        x: p0.x,
+                        y: p0.y,
+                        distance: l
+                    });
+                    s -= step;
+                }
+            }
+        }
+    }
+    getEquidistantPointOnPath(targetDistance, step, precision) {
+        this.buildEquidistantCache(step, precision);
+        if (targetDistance < 0
+            || targetDistance - this.getPathLength() > 0.00005) {
+            return null;
+        }
+        const idx = Math.round(targetDistance
+            / this.getPathLength()
+            * (this.equidistantCache.points.length - 1));
+        return this.equidistantCache.points[idx] || null;
+    }
+}
+
+// groups: 1: mime-type (+ charset), 2: mime-type (w/o charset), 3: charset, 4: base64?, 5: body
+const dataUriRegex = /^\s*data:(([^/,;]+\/[^/,;]+)(?:;([^,;=]+=[^,;=]+))?)?(?:;(base64))?,(.*)$/i;
+class ImageElement extends RenderedElement {
+    constructor(document, node, captureTextNodes) {
+        super(document, node, captureTextNodes);
+        this.type = 'image';
+        this.loaded = false;
+        const href = this.getHrefAttribute().getString();
+        if (!href) {
+            return;
+        }
+        const isSvg = href.endsWith('.svg') || /^\s*data:image\/svg\+xml/i.test(href);
+        document.images.push(this);
+        if (!isSvg) {
+            void this.loadImage(href);
+        }
+        else {
+            void this.loadSvg(href);
+        }
+        this.isSvg = isSvg;
+    }
+    async loadImage(href) {
+        try {
+            const image = await this.document.createImage(href);
+            this.image = image;
+        }
+        catch (err) {
+            console.error(`Error while loading image "${href}":`, err);
+        }
+        this.loaded = true;
+    }
+    async loadSvg(href) {
+        const match = dataUriRegex.exec(href);
+        if (match) {
+            const data = match[5];
+            if (match[4] === 'base64') {
+                this.image = atob(data);
+            }
+            else {
+                this.image = decodeURIComponent(data);
+            }
+        }
+        else {
+            try {
+                const response = await this.document.fetch(href);
+                const svg = await response.text();
+                this.image = svg;
+            }
+            catch (err) {
+                console.error(`Error while loading image "${href}":`, err);
+            }
+        }
+        this.loaded = true;
+    }
+    renderChildren(ctx) {
+        const { document, image, loaded } = this;
+        const x = this.getAttribute('x').getPixels('x');
+        const y = this.getAttribute('y').getPixels('y');
+        const width = this.getStyle('width').getPixels('x');
+        const height = this.getStyle('height').getPixels('y');
+        if (!loaded || !image
+            || !width || !height) {
+            return;
+        }
+        ctx.save();
+        ctx.translate(x, y);
+        if (this.isSvg) {
+            const subDocument = document.canvg.forkString(ctx, this.image, {
+                ignoreMouse: true,
+                ignoreAnimation: true,
+                ignoreDimensions: true,
+                ignoreClear: true,
+                offsetX: 0,
+                offsetY: 0,
+                scaleWidth: width,
+                scaleHeight: height
+            });
+            subDocument.document.documentElement.parent = this;
+            void subDocument.render();
+        }
+        else {
+            const image = this.image;
+            document.setViewBox({
+                ctx,
+                aspectRatio: this.getAttribute('preserveAspectRatio').getString(),
+                width,
+                desiredWidth: image.width,
+                height,
+                desiredHeight: image.height
+            });
+            if (this.loaded) {
+                if (typeof image.complete === 'undefined' || image.complete) {
+                    ctx.drawImage(image, 0, 0);
+                }
+            }
+        }
+        ctx.restore();
+    }
+    getBoundingBox() {
+        const x = this.getAttribute('x').getPixels('x');
+        const y = this.getAttribute('y').getPixels('y');
+        const width = this.getStyle('width').getPixels('x');
+        const height = this.getStyle('height').getPixels('y');
+        return new BoundingBox(x, y, x + width, y + height);
+    }
+}
+
+class SymbolElement extends RenderedElement {
+    constructor() {
+        super(...arguments);
+        this.type = 'symbol';
+    }
+    render(_) {
+        // NO RENDER
+    }
+}
+
+class SVGFontLoader {
+    constructor(document) {
+        this.document = document;
+        this.loaded = false;
+        document.fonts.push(this);
+    }
+    async load(fontFamily, url) {
+        try {
+            const { document } = this;
+            const svgDocument = await document.canvg.parser.load(url);
+            const fonts = svgDocument.getElementsByTagName('font');
+            Array.from(fonts).forEach((fontNode) => {
+                const font = document.createElement(fontNode);
+                document.definitions[fontFamily] = font;
+            });
+        }
+        catch (err) {
+            console.error(`Error while loading font "${url}":`, err);
+        }
+        this.loaded = true;
+    }
+}
+
+class StyleElement extends Element {
+    constructor(document, node, captureTextNodes) {
+        super(document, node, captureTextNodes);
+        this.type = 'style';
+        const css = compressSpaces(Array.from(node.childNodes)
+            // NEED TEST
+            .map(_ => _.textContent)
+            .join('')
+            .replace(/(\/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+\/)|(^[\s]*\/\/.*)/gm, '') // remove comments
+            .replace(/@import.*;/g, '') // remove imports
+        );
+        const cssDefs = css.split('}');
+        cssDefs.forEach((_) => {
+            const def = _.trim();
+            if (!def) {
+                return;
+            }
+            const cssParts = def.split('{');
+            const cssClasses = cssParts[0].split(',');
+            const cssProps = cssParts[1].split(';');
+            cssClasses.forEach((_) => {
+                const cssClass = _.trim();
+                if (!cssClass) {
+                    return;
+                }
+                const props = document.styles[cssClass] || {};
+                cssProps.forEach((cssProp) => {
+                    const prop = cssProp.indexOf(':');
+                    const name = cssProp.substr(0, prop).trim();
+                    const value = cssProp.substr(prop + 1, cssProp.length - prop).trim();
+                    if (name && value) {
+                        props[name] = new Property(document, name, value);
+                    }
+                });
+                document.styles[cssClass] = props;
+                document.stylesSpecificity[cssClass] = getSelectorSpecificity(cssClass);
+                if (cssClass === '@font-face') { //  && !nodeEnv
+                    const fontFamily = props['font-family'].getString().replace(/"|'/g, '');
+                    const srcs = props.src.getString().split(',');
+                    srcs.forEach((src) => {
+                        if (src.indexOf('format("svg")') > 0) {
+                            const url = parseExternalUrl(src);
+                            if (url) {
+                                void new SVGFontLoader(document).load(fontFamily, url);
+                            }
+                        }
+                    });
+                }
+            });
+        });
+    }
+}
+StyleElement.parseExternalUrl = parseExternalUrl;
+
+class UseElement extends RenderedElement {
+    constructor() {
+        super(...arguments);
+        this.type = 'use';
+    }
+    setContext(ctx) {
+        super.setContext(ctx);
+        const xAttr = this.getAttribute('x');
+        const yAttr = this.getAttribute('y');
+        if (xAttr.hasValue()) {
+            ctx.translate(xAttr.getPixels('x'), 0);
+        }
+        if (yAttr.hasValue()) {
+            ctx.translate(0, yAttr.getPixels('y'));
+        }
+    }
+    path(ctx) {
+        const { element } = this;
+        if (element) {
+            element.path(ctx);
+        }
+    }
+    renderChildren(ctx) {
+        const { document, element } = this;
+        if (element) {
+            let tempSvg = element;
+            if (element.type === 'symbol') {
+                // render me using a temporary svg element in symbol cases (http://www.w3.org/TR/SVG/struct.html#UseElement)
+                tempSvg = new SVGElement(document, null);
+                tempSvg.attributes.viewBox = new Property(document, 'viewBox', element.getAttribute('viewBox').getString());
+                tempSvg.attributes.preserveAspectRatio = new Property(document, 'preserveAspectRatio', element.getAttribute('preserveAspectRatio').getString());
+                tempSvg.attributes.overflow = new Property(document, 'overflow', element.getAttribute('overflow').getString());
+                tempSvg.children = element.children;
+                // element is still the parent of the children
+                element.styles.opacity = new Property(document, 'opacity', this.calculateOpacity());
+            }
+            if (tempSvg.type === 'svg') {
+                const widthStyle = this.getStyle('width', false, true);
+                const heightStyle = this.getStyle('height', false, true);
+                // if symbol or svg, inherit width/height from me
+                if (widthStyle.hasValue()) {
+                    tempSvg.attributes.width = new Property(document, 'width', widthStyle.getString());
+                }
+                if (heightStyle.hasValue()) {
+                    tempSvg.attributes.height = new Property(document, 'height', heightStyle.getString());
+                }
+            }
+            const oldParent = tempSvg.parent;
+            tempSvg.parent = this;
+            tempSvg.render(ctx);
+            tempSvg.parent = oldParent;
+        }
+    }
+    getBoundingBox(ctx) {
+        const { element } = this;
+        if (element) {
+            return element.getBoundingBox(ctx);
+        }
+        return null;
+    }
+    elementTransform() {
+        const { document, element } = this;
+        return Transform.fromElement(document, element);
+    }
+    get element() {
+        if (!this.cachedElement) {
+            this.cachedElement = this.getHrefAttribute().getDefinition();
+        }
+        return this.cachedElement;
+    }
+}
+
+function imGet(img, x, y, width, _height, rgba) {
+    return img[y * width * 4 + x * 4 + rgba];
+}
+function imSet(img, x, y, width, _height, rgba, val) {
+    img[y * width * 4 + x * 4 + rgba] = val;
+}
+function m(matrix, i, v) {
+    const mi = matrix[i];
+    return mi * v;
+}
+function c(a, m1, m2, m3) {
+    return m1 + Math.cos(a) * m2 + Math.sin(a) * m3;
+}
+class FeColorMatrixElement extends Element {
+    constructor(document, node, captureTextNodes) {
+        super(document, node, captureTextNodes);
+        this.type = 'feColorMatrix';
+        let matrix = toNumbers(this.getAttribute('values').getString());
+        switch (this.getAttribute('type').getString('matrix')) { // http://www.w3.org/TR/SVG/filters.html#feColorMatrixElement
+            case 'saturate': {
+                const s = matrix[0];
+                /* eslint-disable array-element-newline */
+                matrix = [
+                    0.213 + 0.787 * s, 0.715 - 0.715 * s, 0.072 - 0.072 * s, 0, 0,
+                    0.213 - 0.213 * s, 0.715 + 0.285 * s, 0.072 - 0.072 * s, 0, 0,
+                    0.213 - 0.213 * s, 0.715 - 0.715 * s, 0.072 + 0.928 * s, 0, 0,
+                    0, 0, 0, 1, 0,
+                    0, 0, 0, 0, 1
+                ];
+                /* eslint-enable array-element-newline */
+                break;
+            }
+            case 'hueRotate': {
+                const a = matrix[0] * Math.PI / 180.0;
+                /* eslint-disable array-element-newline */
+                matrix = [
+                    c(a, 0.213, 0.787, -0.213), c(a, 0.715, -0.715, -0.715), c(a, 0.072, -0.072, 0.928), 0, 0,
+                    c(a, 0.213, -0.213, 0.143), c(a, 0.715, 0.285, 0.140), c(a, 0.072, -0.072, -0.283), 0, 0,
+                    c(a, 0.213, -0.213, -0.787), c(a, 0.715, -0.715, 0.715), c(a, 0.072, 0.928, 0.072), 0, 0,
+                    0, 0, 0, 1, 0,
+                    0, 0, 0, 0, 1
+                ];
+                /* eslint-enable array-element-newline */
+                break;
+            }
+            case 'luminanceToAlpha':
+                /* eslint-disable array-element-newline */
+                matrix = [
+                    0, 0, 0, 0, 0,
+                    0, 0, 0, 0, 0,
+                    0, 0, 0, 0, 0,
+                    0.2125, 0.7154, 0.0721, 0, 0,
+                    0, 0, 0, 0, 1
+                ];
+                /* eslint-enable array-element-newline */
+                break;
+        }
+        this.matrix = matrix;
+        this.includeOpacity = this.getAttribute('includeOpacity').hasValue();
+    }
+    apply(ctx, _x, _y, width, height) {
+        // assuming x==0 && y==0 for now
+        const { includeOpacity, matrix } = this;
+        const srcData = ctx.getImageData(0, 0, width, height);
+        for (let y = 0; y < height; y++) {
+            for (let x = 0; x < width; x++) {
+                const r = imGet(srcData.data, x, y, width, height, 0);
+                const g = imGet(srcData.data, x, y, width, height, 1);
+                const b = imGet(srcData.data, x, y, width, height, 2);
+                const a = imGet(srcData.data, x, y, width, height, 3);
+                let nr = m(matrix, 0, r) + m(matrix, 1, g) + m(matrix, 2, b) + m(matrix, 3, a) + m(matrix, 4, 1);
+                let ng = m(matrix, 5, r) + m(matrix, 6, g) + m(matrix, 7, b) + m(matrix, 8, a) + m(matrix, 9, 1);
+                let nb = m(matrix, 10, r) + m(matrix, 11, g) + m(matrix, 12, b) + m(matrix, 13, a) + m(matrix, 14, 1);
+                let na = m(matrix, 15, r) + m(matrix, 16, g) + m(matrix, 17, b) + m(matrix, 18, a) + m(matrix, 19, 1);
+                if (includeOpacity) {
+                    nr = 0;
+                    ng = 0;
+                    nb = 0;
+                    na *= a / 255;
+                }
+                imSet(srcData.data, x, y, width, height, 0, nr);
+                imSet(srcData.data, x, y, width, height, 1, ng);
+                imSet(srcData.data, x, y, width, height, 2, nb);
+                imSet(srcData.data, x, y, width, height, 3, na);
+            }
+        }
+        ctx.clearRect(0, 0, width, height);
+        ctx.putImageData(srcData, 0, 0);
+    }
+}
+
+class MaskElement extends Element {
+    constructor() {
+        super(...arguments);
+        this.type = 'mask';
+    }
+    apply(ctx, element) {
+        const { document } = this;
+        // render as temp svg
+        let x = this.getAttribute('x').getPixels('x');
+        let y = this.getAttribute('y').getPixels('y');
+        let width = this.getStyle('width').getPixels('x');
+        let height = this.getStyle('height').getPixels('y');
+        if (!width && !height) {
+            const boundingBox = new BoundingBox();
+            this.children.forEach((child) => {
+                boundingBox.addBoundingBox(child.getBoundingBox(ctx));
+            });
+            x = Math.floor(boundingBox.x1);
+            y = Math.floor(boundingBox.y1);
+            width = Math.floor(boundingBox.width);
+            height = Math.floor(boundingBox.height);
+        }
+        const ignoredStyles = this.removeStyles(element, MaskElement.ignoreStyles);
+        const maskCanvas = document.createCanvas(x + width, y + height);
+        const maskCtx = maskCanvas.getContext('2d');
+        document.screen.setDefaults(maskCtx);
+        this.renderChildren(maskCtx);
+        // convert mask to alpha with a fake node
+        // TODO: refactor out apply from feColorMatrix
+        new FeColorMatrixElement(document, ({
+            nodeType: 1,
+            childNodes: [],
+            attributes: [
+                {
+                    nodeName: 'type',
+                    value: 'luminanceToAlpha'
+                },
+                {
+                    nodeName: 'includeOpacity',
+                    value: 'true'
+                }
+            ]
+        })).apply(maskCtx, 0, 0, x + width, y + height);
+        const tmpCanvas = document.createCanvas(x + width, y + height);
+        const tmpCtx = tmpCanvas.getContext('2d');
+        document.screen.setDefaults(tmpCtx);
+        element.render(tmpCtx);
+        tmpCtx.globalCompositeOperation = 'destination-in';
+        tmpCtx.fillStyle = maskCtx.createPattern(maskCanvas, 'no-repeat');
+        tmpCtx.fillRect(0, 0, x + width, y + height);
+        ctx.fillStyle = tmpCtx.createPattern(tmpCanvas, 'no-repeat');
+        ctx.fillRect(0, 0, x + width, y + height);
+        // reassign mask
+        this.restoreStyles(element, ignoredStyles);
+    }
+    render(_) {
+        // NO RENDER
+    }
+}
+MaskElement.ignoreStyles = [
+    'mask',
+    'transform',
+    'clip-path'
+];
+
+const noop = () => {
+    // NOOP
+};
+class ClipPathElement extends Element {
+    constructor() {
+        super(...arguments);
+        this.type = 'clipPath';
+    }
+    apply(ctx) {
+        const { document } = this;
+        const contextProto = Reflect.getPrototypeOf(ctx);
+        const { beginPath, closePath } = ctx;
+        if (contextProto) {
+            contextProto.beginPath = noop;
+            contextProto.closePath = noop;
+        }
+        Reflect.apply(beginPath, ctx, []);
+        this.children.forEach((child) => {
+            if (typeof child.path === 'undefined') {
+                return;
+            }
+            let transform = typeof child.elementTransform !== 'undefined'
+                ? child.elementTransform()
+                : null; // handle <use />
+            if (!transform) {
+                transform = Transform.fromElement(document, child);
+            }
+            if (transform) {
+                transform.apply(ctx);
+            }
+            child.path(ctx);
+            if (contextProto) {
+                contextProto.closePath = closePath;
+            }
+            if (transform) {
+                transform.unapply(ctx);
+            }
+        });
+        Reflect.apply(closePath, ctx, []);
+        ctx.clip();
+        if (contextProto) {
+            contextProto.beginPath = beginPath;
+            contextProto.closePath = closePath;
+        }
+    }
+    render(_) {
+        // NO RENDER
+    }
+}
+
+class FilterElement extends Element {
+    constructor() {
+        super(...arguments);
+        this.type = 'filter';
+    }
+    apply(ctx, element) {
+        // render as temp svg
+        const { document, children } = this;
+        const boundingBox = element.getBoundingBox(ctx);
+        if (!boundingBox) {
+            return;
+        }
+        let px = 0;
+        let py = 0;
+        children.forEach((child) => {
+            const efd = child.extraFilterDistance || 0;
+            px = Math.max(px, efd);
+            py = Math.max(py, efd);
+        });
+        const width = Math.floor(boundingBox.width);
+        const height = Math.floor(boundingBox.height);
+        const tmpCanvasWidth = width + 2 * px;
+        const tmpCanvasHeight = height + 2 * py;
+        if (tmpCanvasWidth < 1 || tmpCanvasHeight < 1) {
+            return;
+        }
+        const x = Math.floor(boundingBox.x);
+        const y = Math.floor(boundingBox.y);
+        const ignoredStyles = this.removeStyles(element, FilterElement.ignoreStyles);
+        const tmpCanvas = document.createCanvas(tmpCanvasWidth, tmpCanvasHeight);
+        const tmpCtx = tmpCanvas.getContext('2d');
+        document.screen.setDefaults(tmpCtx);
+        tmpCtx.translate(-x + px, -y + py);
+        element.render(tmpCtx);
+        // apply filters
+        children.forEach((child) => {
+            if (typeof child.apply === 'function') {
+                child.apply(tmpCtx, 0, 0, tmpCanvasWidth, tmpCanvasHeight);
+            }
+        });
+        // render on me
+        ctx.drawImage(tmpCanvas, 0, 0, tmpCanvasWidth, tmpCanvasHeight, x - px, y - py, tmpCanvasWidth, tmpCanvasHeight);
+        this.restoreStyles(element, ignoredStyles);
+    }
+    render(_) {
+        // NO RENDER
+    }
+}
+FilterElement.ignoreStyles = [
+    'filter',
+    'transform',
+    'clip-path'
+];
+
+class FeDropShadowElement extends Element {
+    constructor(document, node, captureTextNodes) {
+        super(document, node, captureTextNodes);
+        this.type = 'feDropShadow';
+        this.addStylesFromStyleDefinition();
+    }
+    apply(_, _x, _y, _width, _height) {
+        // TODO: implement
+    }
+}
+
+class FeMorphologyElement extends Element {
+    constructor() {
+        super(...arguments);
+        this.type = 'feMorphology';
+    }
+    apply(_, _x, _y, _width, _height) {
+        // TODO: implement
+    }
+}
+
+class FeCompositeElement extends Element {
+    constructor() {
+        super(...arguments);
+        this.type = 'feComposite';
+    }
+    apply(_, _x, _y, _width, _height) {
+        // TODO: implement
+    }
+}
+
+class FeGaussianBlurElement extends Element {
+    constructor(document, node, captureTextNodes) {
+        super(document, node, captureTextNodes);
+        this.type = 'feGaussianBlur';
+        this.blurRadius = Math.floor(this.getAttribute('stdDeviation').getNumber());
+        this.extraFilterDistance = this.blurRadius;
+    }
+    apply(ctx, x, y, width, height) {
+        const { document, blurRadius } = this;
+        const body = document.window
+            ? document.window.document.body
+            : null;
+        const canvas = ctx.canvas;
+        // StackBlur requires canvas be on document
+        canvas.id = document.getUniqueId();
+        if (body) {
+            canvas.style.display = 'none';
+            body.appendChild(canvas);
+        }
+        canvasRGBA(canvas, x, y, width, height, blurRadius);
+        if (body) {
+            body.removeChild(canvas);
+        }
+    }
+}
+
+class TitleElement extends Element {
+    constructor() {
+        super(...arguments);
+        this.type = 'title';
+    }
+}
+
+class DescElement extends Element {
+    constructor() {
+        super(...arguments);
+        this.type = 'desc';
+    }
+}
+
+const elements = {
+    'svg': SVGElement,
+    'rect': RectElement,
+    'circle': CircleElement,
+    'ellipse': EllipseElement,
+    'line': LineElement,
+    'polyline': PolylineElement,
+    'polygon': PolygonElement,
+    'path': PathElement,
+    'pattern': PatternElement,
+    'marker': MarkerElement,
+    'defs': DefsElement,
+    'linearGradient': LinearGradientElement,
+    'radialGradient': RadialGradientElement,
+    'stop': StopElement,
+    'animate': AnimateElement,
+    'animateColor': AnimateColorElement,
+    'animateTransform': AnimateTransformElement,
+    'font': FontElement,
+    'font-face': FontFaceElement,
+    'missing-glyph': MissingGlyphElement,
+    'glyph': GlyphElement,
+    'text': TextElement,
+    'tspan': TSpanElement,
+    'tref': TRefElement,
+    'a': AElement,
+    'textPath': TextPathElement,
+    'image': ImageElement,
+    'g': GElement,
+    'symbol': SymbolElement,
+    'style': StyleElement,
+    'use': UseElement,
+    'mask': MaskElement,
+    'clipPath': ClipPathElement,
+    'filter': FilterElement,
+    'feDropShadow': FeDropShadowElement,
+    'feMorphology': FeMorphologyElement,
+    'feComposite': FeCompositeElement,
+    'feColorMatrix': FeColorMatrixElement,
+    'feGaussianBlur': FeGaussianBlurElement,
+    'title': TitleElement,
+    'desc': DescElement
+};
+
+function createCanvas(width, height) {
+    const canvas = document.createElement('canvas');
+    canvas.width = width;
+    canvas.height = height;
+    return canvas;
+}
+async function createImage(src, anonymousCrossOrigin = false) {
+    const image = document.createElement('img');
+    if (anonymousCrossOrigin) {
+        image.crossOrigin = 'Anonymous';
+    }
+    return new Promise((resolve, reject) => {
+        image.onload = () => {
+            resolve(image);
+        };
+        image.onerror = (_event, _source, _lineno, _colno, error) => {
+            reject(error);
+        };
+        image.src = src;
+    });
+}
+class Document {
+    constructor(canvg, { rootEmSize = 12, emSize = 12, createCanvas = Document.createCanvas, createImage = Document.createImage, anonymousCrossOrigin } = {}) {
+        this.canvg = canvg;
+        this.definitions = {};
+        this.styles = {};
+        this.stylesSpecificity = {};
+        this.images = [];
+        this.fonts = [];
+        this.emSizeStack = [];
+        this.uniqueId = 0;
+        this.screen = canvg.screen;
+        this.rootEmSize = rootEmSize;
+        this.emSize = emSize;
+        this.createCanvas = createCanvas;
+        this.createImage = this.bindCreateImage(createImage, anonymousCrossOrigin);
+        this.screen.wait(this.isImagesLoaded.bind(this));
+        this.screen.wait(this.isFontsLoaded.bind(this));
+    }
+    bindCreateImage(createImage, anonymousCrossOrigin) {
+        if (typeof anonymousCrossOrigin === 'boolean') {
+            return (source, forceAnonymousCrossOrigin) => createImage(source, typeof forceAnonymousCrossOrigin === 'boolean'
+                ? forceAnonymousCrossOrigin
+                : anonymousCrossOrigin);
+        }
+        return createImage;
+    }
+    get window() {
+        return this.screen.window;
+    }
+    get fetch() {
+        return this.screen.fetch;
+    }
+    get ctx() {
+        return this.screen.ctx;
+    }
+    get emSize() {
+        const { emSizeStack } = this;
+        return emSizeStack[emSizeStack.length - 1];
+    }
+    set emSize(value) {
+        const { emSizeStack } = this;
+        emSizeStack.push(value);
+    }
+    popEmSize() {
+        const { emSizeStack } = this;
+        emSizeStack.pop();
+    }
+    getUniqueId() {
+        return `canvg${++this.uniqueId}`;
+    }
+    isImagesLoaded() {
+        return this.images.every(_ => _.loaded);
+    }
+    isFontsLoaded() {
+        return this.fonts.every(_ => _.loaded);
+    }
+    createDocumentElement(document) {
+        const documentElement = this.createElement(document.documentElement);
+        documentElement.root = true;
+        documentElement.addStylesFromStyleDefinition();
+        this.documentElement = documentElement;
+        return documentElement;
+    }
+    createElement(node) {
+        const elementType = node.nodeName.replace(/^[^:]+:/, '');
+        const ElementType = Document.elementTypes[elementType];
+        if (typeof ElementType !== 'undefined') {
+            return new ElementType(this, node);
+        }
+        return new UnknownElement(this, node);
+    }
+    createTextNode(node) {
+        return new TextNode(this, node);
+    }
+    setViewBox(config) {
+        this.screen.setViewBox({
+            document: this,
+            ...config
+        });
+    }
+}
+Document.createCanvas = createCanvas;
+Document.createImage = createImage;
+Document.elementTypes = elements;
+
+/**
+ * SVG renderer on canvas.
+ */
+class Canvg {
+    /**
+     * Main constructor.
+     * @param ctx - Rendering context.
+     * @param svg - SVG Document.
+     * @param options - Rendering options.
+     */
+    constructor(ctx, svg, options = {}) {
+        this.parser = new Parser(options);
+        this.screen = new Screen(ctx, options);
+        this.options = options;
+        const document = new Document(this, options);
+        const documentElement = document.createDocumentElement(svg);
+        this.document = document;
+        this.documentElement = documentElement;
+    }
+    /**
+     * Create Canvg instance from SVG source string or URL.
+     * @param ctx - Rendering context.
+     * @param svg - SVG source string or URL.
+     * @param options - Rendering options.
+     * @returns Canvg instance.
+     */
+    static async from(ctx, svg, options = {}) {
+        const parser = new Parser(options);
+        const svgDocument = await parser.parse(svg);
+        return new Canvg(ctx, svgDocument, options);
+    }
+    /**
+     * Create Canvg instance from SVG source string.
+     * @param ctx - Rendering context.
+     * @param svg - SVG source string.
+     * @param options - Rendering options.
+     * @returns Canvg instance.
+     */
+    static fromString(ctx, svg, options = {}) {
+        const parser = new Parser(options);
+        const svgDocument = parser.parseFromString(svg);
+        return new Canvg(ctx, svgDocument, options);
+    }
+    /**
+     * Create new Canvg instance with inherited options.
+     * @param ctx - Rendering context.
+     * @param svg - SVG source string or URL.
+     * @param options - Rendering options.
+     * @returns Canvg instance.
+     */
+    fork(ctx, svg, options = {}) {
+        return Canvg.from(ctx, svg, {
+            ...this.options,
+            ...options
+        });
+    }
+    /**
+     * Create new Canvg instance with inherited options.
+     * @param ctx - Rendering context.
+     * @param svg - SVG source string.
+     * @param options - Rendering options.
+     * @returns Canvg instance.
+     */
+    forkString(ctx, svg, options = {}) {
+        return Canvg.fromString(ctx, svg, {
+            ...this.options,
+            ...options
+        });
+    }
+    /**
+     * Document is ready promise.
+     * @returns Ready promise.
+     */
+    ready() {
+        return this.screen.ready();
+    }
+    /**
+     * Document is ready value.
+     * @returns Is ready or not.
+     */
+    isReady() {
+        return this.screen.isReady();
+    }
+    /**
+     * Render only first frame, ignoring animations and mouse.
+     * @param options - Rendering options.
+     */
+    async render(options = {}) {
+        this.start({
+            enableRedraw: true,
+            ignoreAnimation: true,
+            ignoreMouse: true,
+            ...options
+        });
+        await this.ready();
+        this.stop();
+    }
+    /**
+     * Start rendering.
+     * @param options - Render options.
+     */
+    start(options = {}) {
+        const { documentElement, screen, options: baseOptions } = this;
+        screen.start(documentElement, {
+            enableRedraw: true,
+            ...baseOptions,
+            ...options
+        });
+    }
+    /**
+     * Stop rendering.
+     */
+    stop() {
+        this.screen.stop();
+    }
+    /**
+     * Resize SVG to fit in given size.
+     * @param width
+     * @param height
+     * @param preserveAspectRatio
+     */
+    resize(width, height = width, preserveAspectRatio = false) {
+        this.documentElement.resize(width, height, preserveAspectRatio);
+    }
+}
+
+export { AElement, AnimateColorElement, AnimateElement, AnimateTransformElement, BoundingBox, CB1, CB2, CB3, CB4, Canvg, CircleElement, ClipPathElement, DefsElement, DescElement, Document, Element, EllipseElement, FeColorMatrixElement, FeCompositeElement, FeDropShadowElement, FeGaussianBlurElement, FeMorphologyElement, FilterElement, Font, FontElement, FontFaceElement, GElement, GlyphElement, GradientElement, ImageElement, LineElement, LinearGradientElement, MarkerElement, MaskElement, Matrix, MissingGlyphElement, Mouse, PSEUDO_ZERO, Parser, PathElement, PathParser, PatternElement, Point, PolygonElement, PolylineElement, Property, QB1, QB2, QB3, RadialGradientElement, RectElement, RenderedElement, Rotate, SVGElement, SVGFontLoader, Scale, Screen, Skew, SkewX, SkewY, StopElement, StyleElement, SymbolElement, TRefElement, TSpanElement, TextElement, TextPathElement, TitleElement, Transform, Translate, UnknownElement, UseElement, ViewPort, compressSpaces, Canvg as default, getSelectorSpecificity, normalizeAttributeName, normalizeColor, parseExternalUrl, index as presets, toNumbers, trimLeft, trimRight, vectorMagnitude, vectorsAngle, vectorsRatio };
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguYmFiZWwuanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7In0=
diff --git a/node_modules/canvg/lib/index.cjs b/node_modules/canvg/lib/index.cjs
new file mode 100644
index 0000000..b38c27b
--- /dev/null
+++ b/node_modules/canvg/lib/index.cjs
@@ -0,0 +1,8029 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+require('core-js/modules/es.object.to-string.js');
+require('core-js/modules/es.promise.js');
+require('core-js/modules/es.reflect.delete-property.js');
+var _regeneratorRuntime = require('@babel/runtime/regenerator');
+var _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');
+require('core-js/modules/es.array.map.js');
+require('core-js/modules/es.parse-float.js');
+require('core-js/modules/es.regexp.exec.js');
+require('core-js/modules/es.string.match.js');
+require('core-js/modules/es.string.replace.js');
+require('core-js/modules/es.string.starts-with.js');
+require('core-js/modules/es.array.join.js');
+var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
+var _defineProperty = require('@babel/runtime/helpers/defineProperty');
+var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
+var _createClass = require('@babel/runtime/helpers/createClass');
+require('core-js/modules/es.array.concat.js');
+require('core-js/modules/es.array.every.js');
+require('core-js/modules/es.array.reduce.js');
+require('core-js/modules/es.string.ends-with.js');
+require('core-js/modules/es.string.split.js');
+var requestAnimationFrame = require('raf');
+require('core-js/modules/es.function.name.js');
+require('core-js/modules/es.string.trim.js');
+var RGBColor = require('rgbcolor');
+require('core-js/modules/es.array.for-each.js');
+require('core-js/modules/web.dom-collections.for-each.js');
+var _inherits = require('@babel/runtime/helpers/inherits');
+var _possibleConstructorReturn = require('@babel/runtime/helpers/possibleConstructorReturn');
+var _getPrototypeOf = require('@babel/runtime/helpers/getPrototypeOf');
+require('core-js/modules/es.array.from.js');
+require('core-js/modules/es.array.includes.js');
+require('core-js/modules/es.array.index-of.js');
+require('core-js/modules/es.array.some.js');
+require('core-js/modules/es.string.includes.js');
+require('core-js/modules/es.string.iterator.js');
+var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
+require('core-js/modules/es.array.reverse.js');
+require('core-js/modules/es.number.constructor.js');
+var _get = require('@babel/runtime/helpers/get');
+require('core-js/modules/es.array.fill.js');
+var svgPathdata = require('svg-pathdata');
+require('core-js/modules/es.regexp.to-string.js');
+var _assertThisInitialized = require('@babel/runtime/helpers/assertThisInitialized');
+require('core-js/modules/es.array.iterator.js');
+require('core-js/modules/web.dom-collections.iterator.js');
+require('core-js/modules/es.map.js');
+require('core-js/modules/es.reflect.apply.js');
+require('core-js/modules/es.reflect.get-prototype-of.js');
+var stackblurCanvas = require('stackblur-canvas');
+
+function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
+
+var _regeneratorRuntime__default = /*#__PURE__*/_interopDefaultLegacy(_regeneratorRuntime);
+var _asyncToGenerator__default = /*#__PURE__*/_interopDefaultLegacy(_asyncToGenerator);
+var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
+var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
+var _classCallCheck__default = /*#__PURE__*/_interopDefaultLegacy(_classCallCheck);
+var _createClass__default = /*#__PURE__*/_interopDefaultLegacy(_createClass);
+var requestAnimationFrame__default = /*#__PURE__*/_interopDefaultLegacy(requestAnimationFrame);
+var RGBColor__default = /*#__PURE__*/_interopDefaultLegacy(RGBColor);
+var _inherits__default = /*#__PURE__*/_interopDefaultLegacy(_inherits);
+var _possibleConstructorReturn__default = /*#__PURE__*/_interopDefaultLegacy(_possibleConstructorReturn);
+var _getPrototypeOf__default = /*#__PURE__*/_interopDefaultLegacy(_getPrototypeOf);
+var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
+var _get__default = /*#__PURE__*/_interopDefaultLegacy(_get);
+var _assertThisInitialized__default = /*#__PURE__*/_interopDefaultLegacy(_assertThisInitialized);
+
+/**
+ * Options preset for `OffscreenCanvas`.
+ * @param config - Preset requirements.
+ * @param config.DOMParser - XML/HTML parser from string into DOM Document.
+ * @returns Preset object.
+ */
+function offscreen() {
+  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
+      DOMParserFallback = _ref.DOMParser;
+
+  var preset = {
+    window: null,
+    ignoreAnimation: true,
+    ignoreMouse: true,
+    DOMParser: DOMParserFallback,
+    createCanvas: function createCanvas(width, height) {
+      return new OffscreenCanvas(width, height);
+    },
+    createImage: function createImage(url) {
+      return _asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee() {
+        var response, blob, img;
+        return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
+          while (1) {
+            switch (_context.prev = _context.next) {
+              case 0:
+                _context.next = 2;
+                return fetch(url);
+
+              case 2:
+                response = _context.sent;
+                _context.next = 5;
+                return response.blob();
+
+              case 5:
+                blob = _context.sent;
+                _context.next = 8;
+                return createImageBitmap(blob);
+
+              case 8:
+                img = _context.sent;
+                return _context.abrupt("return", img);
+
+              case 10:
+              case "end":
+                return _context.stop();
+            }
+          }
+        }, _callee);
+      }))();
+    }
+  };
+
+  if (typeof DOMParser !== 'undefined' || typeof DOMParserFallback === 'undefined') {
+    Reflect.deleteProperty(preset, 'DOMParser');
+  }
+
+  return preset;
+}
+
+/**
+ * Options preset for `node-canvas`.
+ * @param config - Preset requirements.
+ * @param config.DOMParser - XML/HTML parser from string into DOM Document.
+ * @param config.canvas - `node-canvas` exports.
+ * @param config.fetch - WHATWG-compatible `fetch` function.
+ * @returns Preset object.
+ */
+function node(_ref) {
+  var DOMParser = _ref.DOMParser,
+      canvas = _ref.canvas,
+      fetch = _ref.fetch;
+  return {
+    window: null,
+    ignoreAnimation: true,
+    ignoreMouse: true,
+    DOMParser: DOMParser,
+    fetch: fetch,
+    createCanvas: canvas.createCanvas,
+    createImage: canvas.loadImage
+  };
+}
+
+var index = /*#__PURE__*/Object.freeze({
+	__proto__: null,
+	offscreen: offscreen,
+	node: node
+});
+
+/**
+ * HTML-safe compress white-spaces.
+ * @param str - String to compress.
+ * @returns String.
+ */
+function compressSpaces(str) {
+  return str.replace(/(?!\u3000)\s+/gm, ' ');
+}
+/**
+ * HTML-safe left trim.
+ * @param str - String to trim.
+ * @returns String.
+ */
+
+function trimLeft(str) {
+  return str.replace(/^[\n \t]+/, '');
+}
+/**
+ * HTML-safe right trim.
+ * @param str - String to trim.
+ * @returns String.
+ */
+
+function trimRight(str) {
+  return str.replace(/[\n \t]+$/, '');
+}
+/**
+ * String to numbers array.
+ * @param str - Numbers string.
+ * @returns Numbers array.
+ */
+
+function toNumbers(str) {
+  var matches = (str || '').match(/-?(\d+(?:\.\d*(?:[eE][+-]?\d+)?)?|\.\d+)(?=\D|$)/gm) || [];
+  return matches.map(parseFloat);
+} // Microsoft Edge fix
+
+var allUppercase = /^[A-Z-]+$/;
+/**
+ * Normalize attribute name.
+ * @param name - Attribute name.
+ * @returns Normalized attribute name.
+ */
+
+function normalizeAttributeName(name) {
+  if (allUppercase.test(name)) {
+    return name.toLowerCase();
+  }
+
+  return name;
+}
+/**
+ * Parse external URL.
+ * @param url - CSS url string.
+ * @returns Parsed URL.
+ */
+
+function parseExternalUrl(url) {
+  //                      single quotes [2]
+  //                      v         double quotes [3]
+  //                      v         v         no quotes [4]
+  //                      v         v         v
+  var urlMatch = /url\(('([^']+)'|"([^"]+)"|([^'")]+))\)/.exec(url) || [];
+  return urlMatch[2] || urlMatch[3] || urlMatch[4];
+}
+/**
+ * Transform floats to integers in rgb colors.
+ * @param color - Color to normalize.
+ * @returns Normalized color.
+ */
+
+function normalizeColor(color) {
+  if (!color.startsWith('rgb')) {
+    return color;
+  }
+
+  var rgbParts = 3;
+  var normalizedColor = color.replace(/\d+(\.\d+)?/g, function (num, isFloat) {
+    return rgbParts-- && isFloat ? String(Math.round(parseFloat(num))) : num;
+  });
+  return normalizedColor;
+}
+
+// slightly modified version of https://github.com/keeganstreet/specificity/blob/master/specificity.js
+var attributeRegex = /(\[[^\]]+\])/g;
+var idRegex = /(#[^\s+>~.[:]+)/g;
+var classRegex = /(\.[^\s+>~.[:]+)/g;
+var pseudoElementRegex = /(::[^\s+>~.[:]+|:first-line|:first-letter|:before|:after)/gi;
+var pseudoClassWithBracketsRegex = /(:[\w-]+\([^)]*\))/gi;
+var pseudoClassRegex = /(:[^\s+>~.[:]+)/g;
+var elementRegex = /([^\s+>~.[:]+)/g;
+
+function findSelectorMatch(selector, regex) {
+  var matches = regex.exec(selector);
+
+  if (!matches) {
+    return [selector, 0];
+  }
+
+  return [selector.replace(regex, ' '), matches.length];
+}
+/**
+ * Measure selector specificity.
+ * @param selector - Selector to measure.
+ * @returns Specificity.
+ */
+
+
+function getSelectorSpecificity(selector) {
+  var specificity = [0, 0, 0];
+  var currentSelector = selector.replace(/:not\(([^)]*)\)/g, '     $1 ').replace(/{[\s\S]*/gm, ' ');
+  var delta = 0;
+
+  var _findSelectorMatch = findSelectorMatch(currentSelector, attributeRegex);
+
+  var _findSelectorMatch2 = _slicedToArray__default["default"](_findSelectorMatch, 2);
+
+  currentSelector = _findSelectorMatch2[0];
+  delta = _findSelectorMatch2[1];
+  specificity[1] += delta;
+
+  var _findSelectorMatch3 = findSelectorMatch(currentSelector, idRegex);
+
+  var _findSelectorMatch4 = _slicedToArray__default["default"](_findSelectorMatch3, 2);
+
+  currentSelector = _findSelectorMatch4[0];
+  delta = _findSelectorMatch4[1];
+  specificity[0] += delta;
+
+  var _findSelectorMatch5 = findSelectorMatch(currentSelector, classRegex);
+
+  var _findSelectorMatch6 = _slicedToArray__default["default"](_findSelectorMatch5, 2);
+
+  currentSelector = _findSelectorMatch6[0];
+  delta = _findSelectorMatch6[1];
+  specificity[1] += delta;
+
+  var _findSelectorMatch7 = findSelectorMatch(currentSelector, pseudoElementRegex);
+
+  var _findSelectorMatch8 = _slicedToArray__default["default"](_findSelectorMatch7, 2);
+
+  currentSelector = _findSelectorMatch8[0];
+  delta = _findSelectorMatch8[1];
+  specificity[2] += delta;
+
+  var _findSelectorMatch9 = findSelectorMatch(currentSelector, pseudoClassWithBracketsRegex);
+
+  var _findSelectorMatch10 = _slicedToArray__default["default"](_findSelectorMatch9, 2);
+
+  currentSelector = _findSelectorMatch10[0];
+  delta = _findSelectorMatch10[1];
+  specificity[1] += delta;
+
+  var _findSelectorMatch11 = findSelectorMatch(currentSelector, pseudoClassRegex);
+
+  var _findSelectorMatch12 = _slicedToArray__default["default"](_findSelectorMatch11, 2);
+
+  currentSelector = _findSelectorMatch12[0];
+  delta = _findSelectorMatch12[1];
+  specificity[1] += delta;
+  currentSelector = currentSelector.replace(/[*\s+>~]/g, ' ').replace(/[#.]/g, ' ');
+
+  var _findSelectorMatch13 = findSelectorMatch(currentSelector, elementRegex);
+
+  var _findSelectorMatch14 = _slicedToArray__default["default"](_findSelectorMatch13, 2);
+
+  currentSelector = _findSelectorMatch14[0];
+  delta = _findSelectorMatch14[1];
+  // lgtm [js/useless-assignment-to-local]
+  specificity[2] += delta;
+  return specificity.join('');
+}
+
+var PSEUDO_ZERO = .00000001;
+/**
+ * Vector magnitude.
+ * @param v
+ * @returns Number result.
+ */
+
+function vectorMagnitude(v) {
+  return Math.sqrt(Math.pow(v[0], 2) + Math.pow(v[1], 2));
+}
+/**
+ * Ratio between two vectors.
+ * @param u
+ * @param v
+ * @returns Number result.
+ */
+
+function vectorsRatio(u, v) {
+  return (u[0] * v[0] + u[1] * v[1]) / (vectorMagnitude(u) * vectorMagnitude(v));
+}
+/**
+ * Angle between two vectors.
+ * @param u
+ * @param v
+ * @returns Number result.
+ */
+
+function vectorsAngle(u, v) {
+  return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vectorsRatio(u, v));
+}
+function CB1(t) {
+  return t * t * t;
+}
+function CB2(t) {
+  return 3 * t * t * (1 - t);
+}
+function CB3(t) {
+  return 3 * t * (1 - t) * (1 - t);
+}
+function CB4(t) {
+  return (1 - t) * (1 - t) * (1 - t);
+}
+function QB1(t) {
+  return t * t;
+}
+function QB2(t) {
+  return 2 * t * (1 - t);
+}
+function QB3(t) {
+  return (1 - t) * (1 - t);
+}
+
+var Property = /*#__PURE__*/function () {
+  function Property(document, name, value) {
+    _classCallCheck__default["default"](this, Property);
+
+    this.document = document;
+    this.name = name;
+    this.value = value;
+    this.isNormalizedColor = false;
+  }
+
+  _createClass__default["default"](Property, [{
+    key: "split",
+    value: function split() {
+      var separator = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ' ';
+      var document = this.document,
+          name = this.name;
+      return compressSpaces(this.getString()).trim().split(separator).map(function (value) {
+        return new Property(document, name, value);
+      });
+    }
+  }, {
+    key: "hasValue",
+    value: function hasValue(zeroIsValue) {
+      var value = this.value;
+      return value !== null && value !== '' && (zeroIsValue || value !== 0) && typeof value !== 'undefined';
+    }
+  }, {
+    key: "isString",
+    value: function isString(regexp) {
+      var value = this.value;
+      var result = typeof value === 'string';
+
+      if (!result || !regexp) {
+        return result;
+      }
+
+      return regexp.test(value);
+    }
+  }, {
+    key: "isUrlDefinition",
+    value: function isUrlDefinition() {
+      return this.isString(/^url\(/);
+    }
+  }, {
+    key: "isPixels",
+    value: function isPixels() {
+      if (!this.hasValue()) {
+        return false;
+      }
+
+      var asString = this.getString();
+
+      switch (true) {
+        case asString.endsWith('px'):
+        case /^[0-9]+$/.test(asString):
+          return true;
+
+        default:
+          return false;
+      }
+    }
+  }, {
+    key: "setValue",
+    value: function setValue(value) {
+      this.value = value;
+      return this;
+    }
+  }, {
+    key: "getValue",
+    value: function getValue(def) {
+      if (typeof def === 'undefined' || this.hasValue()) {
+        return this.value;
+      }
+
+      return def;
+    }
+  }, {
+    key: "getNumber",
+    value: function getNumber(def) {
+      if (!this.hasValue()) {
+        if (typeof def === 'undefined') {
+          return 0;
+        }
+
+        return parseFloat(def);
+      }
+
+      var value = this.value;
+      var n = parseFloat(value);
+
+      if (this.isString(/%$/)) {
+        n /= 100.0;
+      }
+
+      return n;
+    }
+  }, {
+    key: "getString",
+    value: function getString(def) {
+      if (typeof def === 'undefined' || this.hasValue()) {
+        return typeof this.value === 'undefined' ? '' : String(this.value);
+      }
+
+      return String(def);
+    }
+  }, {
+    key: "getColor",
+    value: function getColor(def) {
+      var color = this.getString(def);
+
+      if (this.isNormalizedColor) {
+        return color;
+      }
+
+      this.isNormalizedColor = true;
+      color = normalizeColor(color);
+      this.value = color;
+      return color;
+    }
+  }, {
+    key: "getDpi",
+    value: function getDpi() {
+      return 96.0; // TODO: compute?
+    }
+  }, {
+    key: "getRem",
+    value: function getRem() {
+      return this.document.rootEmSize;
+    }
+  }, {
+    key: "getEm",
+    value: function getEm() {
+      return this.document.emSize;
+    }
+  }, {
+    key: "getUnits",
+    value: function getUnits() {
+      return this.getString().replace(/[0-9.-]/g, '');
+    }
+  }, {
+    key: "getPixels",
+    value: function getPixels(axisOrIsFontSize) {
+      var processPercent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+
+      if (!this.hasValue()) {
+        return 0;
+      }
+
+      var _ref = typeof axisOrIsFontSize === 'boolean' ? [undefined, axisOrIsFontSize] : [axisOrIsFontSize],
+          _ref2 = _slicedToArray__default["default"](_ref, 2),
+          axis = _ref2[0],
+          isFontSize = _ref2[1];
+
+      var viewPort = this.document.screen.viewPort;
+
+      switch (true) {
+        case this.isString(/vmin$/):
+          return this.getNumber() / 100.0 * Math.min(viewPort.computeSize('x'), viewPort.computeSize('y'));
+
+        case this.isString(/vmax$/):
+          return this.getNumber() / 100.0 * Math.max(viewPort.computeSize('x'), viewPort.computeSize('y'));
+
+        case this.isString(/vw$/):
+          return this.getNumber() / 100.0 * viewPort.computeSize('x');
+
+        case this.isString(/vh$/):
+          return this.getNumber() / 100.0 * viewPort.computeSize('y');
+
+        case this.isString(/rem$/):
+          return this.getNumber() * this.getRem();
+
+        case this.isString(/em$/):
+          return this.getNumber() * this.getEm();
+
+        case this.isString(/ex$/):
+          return this.getNumber() * this.getEm() / 2.0;
+
+        case this.isString(/px$/):
+          return this.getNumber();
+
+        case this.isString(/pt$/):
+          return this.getNumber() * this.getDpi() * (1.0 / 72.0);
+
+        case this.isString(/pc$/):
+          return this.getNumber() * 15;
+
+        case this.isString(/cm$/):
+          return this.getNumber() * this.getDpi() / 2.54;
+
+        case this.isString(/mm$/):
+          return this.getNumber() * this.getDpi() / 25.4;
+
+        case this.isString(/in$/):
+          return this.getNumber() * this.getDpi();
+
+        case this.isString(/%$/) && isFontSize:
+          return this.getNumber() * this.getEm();
+
+        case this.isString(/%$/):
+          return this.getNumber() * viewPort.computeSize(axis);
+
+        default:
+          {
+            var n = this.getNumber();
+
+            if (processPercent && n < 1.0) {
+              return n * viewPort.computeSize(axis);
+            }
+
+            return n;
+          }
+      }
+    }
+  }, {
+    key: "getMilliseconds",
+    value: function getMilliseconds() {
+      if (!this.hasValue()) {
+        return 0;
+      }
+
+      if (this.isString(/ms$/)) {
+        return this.getNumber();
+      }
+
+      return this.getNumber() * 1000;
+    }
+  }, {
+    key: "getRadians",
+    value: function getRadians() {
+      if (!this.hasValue()) {
+        return 0;
+      }
+
+      switch (true) {
+        case this.isString(/deg$/):
+          return this.getNumber() * (Math.PI / 180.0);
+
+        case this.isString(/grad$/):
+          return this.getNumber() * (Math.PI / 200.0);
+
+        case this.isString(/rad$/):
+          return this.getNumber();
+
+        default:
+          return this.getNumber() * (Math.PI / 180.0);
+      }
+    }
+  }, {
+    key: "getDefinition",
+    value: function getDefinition() {
+      var asString = this.getString();
+      var name = /#([^)'"]+)/.exec(asString);
+
+      if (name) {
+        name = name[1];
+      }
+
+      if (!name) {
+        name = asString;
+      }
+
+      return this.document.definitions[name];
+    }
+  }, {
+    key: "getFillStyleDefinition",
+    value: function getFillStyleDefinition(element, opacity) {
+      var def = this.getDefinition();
+
+      if (!def) {
+        return null;
+      } // gradient
+
+
+      if (typeof def.createGradient === 'function') {
+        return def.createGradient(this.document.ctx, element, opacity);
+      } // pattern
+
+
+      if (typeof def.createPattern === 'function') {
+        if (def.getHrefAttribute().hasValue()) {
+          var patternTransform = def.getAttribute('patternTransform');
+          def = def.getHrefAttribute().getDefinition();
+
+          if (patternTransform.hasValue()) {
+            def.getAttribute('patternTransform', true).setValue(patternTransform.value);
+          }
+        }
+
+        return def.createPattern(this.document.ctx, element, opacity);
+      }
+
+      return null;
+    }
+  }, {
+    key: "getTextBaseline",
+    value: function getTextBaseline() {
+      if (!this.hasValue()) {
+        return null;
+      }
+
+      return Property.textBaselineMapping[this.getString()];
+    }
+  }, {
+    key: "addOpacity",
+    value: function addOpacity(opacity) {
+      var value = this.getColor();
+      var len = value.length;
+      var commas = 0; // Simulate old RGBColor version, which can't parse rgba.
+
+      for (var i = 0; i < len; i++) {
+        if (value[i] === ',') {
+          commas++;
+        }
+
+        if (commas === 3) {
+          break;
+        }
+      }
+
+      if (opacity.hasValue() && this.isString() && commas !== 3) {
+        var color = new RGBColor__default["default"](value);
+
+        if (color.ok) {
+          color.alpha = opacity.getNumber();
+          value = color.toRGBA();
+        }
+      }
+
+      return new Property(this.document, this.name, value);
+    }
+  }], [{
+    key: "empty",
+    value: function empty(document) {
+      return new Property(document, 'EMPTY', '');
+    }
+  }]);
+
+  return Property;
+}();
+Property.textBaselineMapping = {
+  'baseline': 'alphabetic',
+  'before-edge': 'top',
+  'text-before-edge': 'top',
+  'middle': 'middle',
+  'central': 'middle',
+  'after-edge': 'bottom',
+  'text-after-edge': 'bottom',
+  'ideographic': 'ideographic',
+  'alphabetic': 'alphabetic',
+  'hanging': 'hanging',
+  'mathematical': 'alphabetic'
+};
+
+var ViewPort = /*#__PURE__*/function () {
+  function ViewPort() {
+    _classCallCheck__default["default"](this, ViewPort);
+
+    this.viewPorts = [];
+  }
+
+  _createClass__default["default"](ViewPort, [{
+    key: "clear",
+    value: function clear() {
+      this.viewPorts = [];
+    }
+  }, {
+    key: "setCurrent",
+    value: function setCurrent(width, height) {
+      this.viewPorts.push({
+        width: width,
+        height: height
+      });
+    }
+  }, {
+    key: "removeCurrent",
+    value: function removeCurrent() {
+      this.viewPorts.pop();
+    }
+  }, {
+    key: "getCurrent",
+    value: function getCurrent() {
+      var viewPorts = this.viewPorts;
+      return viewPorts[viewPorts.length - 1];
+    }
+  }, {
+    key: "computeSize",
+    value: function computeSize(d) {
+      if (typeof d === 'number') {
+        return d;
+      }
+
+      if (d === 'x') {
+        return this.width;
+      }
+
+      if (d === 'y') {
+        return this.height;
+      }
+
+      return Math.sqrt(Math.pow(this.width, 2) + Math.pow(this.height, 2)) / Math.sqrt(2);
+    }
+  }, {
+    key: "width",
+    get: function get() {
+      return this.getCurrent().width;
+    }
+  }, {
+    key: "height",
+    get: function get() {
+      return this.getCurrent().height;
+    }
+  }]);
+
+  return ViewPort;
+}();
+
+var Point = /*#__PURE__*/function () {
+  function Point(x, y) {
+    _classCallCheck__default["default"](this, Point);
+
+    this.x = x;
+    this.y = y;
+  }
+
+  _createClass__default["default"](Point, [{
+    key: "angleTo",
+    value: function angleTo(point) {
+      return Math.atan2(point.y - this.y, point.x - this.x);
+    }
+  }, {
+    key: "applyTransform",
+    value: function applyTransform(transform) {
+      var x = this.x,
+          y = this.y;
+      var xp = x * transform[0] + y * transform[2] + transform[4];
+      var yp = x * transform[1] + y * transform[3] + transform[5];
+      this.x = xp;
+      this.y = yp;
+    }
+  }], [{
+    key: "parse",
+    value: function parse(point) {
+      var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
+
+      var _toNumbers = toNumbers(point),
+          _toNumbers2 = _slicedToArray__default["default"](_toNumbers, 2),
+          _toNumbers2$ = _toNumbers2[0],
+          x = _toNumbers2$ === void 0 ? defaultValue : _toNumbers2$,
+          _toNumbers2$2 = _toNumbers2[1],
+          y = _toNumbers2$2 === void 0 ? defaultValue : _toNumbers2$2;
+
+      return new Point(x, y);
+    }
+  }, {
+    key: "parseScale",
+    value: function parseScale(scale) {
+      var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
+
+      var _toNumbers3 = toNumbers(scale),
+          _toNumbers4 = _slicedToArray__default["default"](_toNumbers3, 2),
+          _toNumbers4$ = _toNumbers4[0],
+          x = _toNumbers4$ === void 0 ? defaultValue : _toNumbers4$,
+          _toNumbers4$2 = _toNumbers4[1],
+          y = _toNumbers4$2 === void 0 ? x : _toNumbers4$2;
+
+      return new Point(x, y);
+    }
+  }, {
+    key: "parsePath",
+    value: function parsePath(path) {
+      var points = toNumbers(path);
+      var len = points.length;
+      var pathPoints = [];
+
+      for (var i = 0; i < len; i += 2) {
+        pathPoints.push(new Point(points[i], points[i + 1]));
+      }
+
+      return pathPoints;
+    }
+  }]);
+
+  return Point;
+}();
+
+var Mouse = /*#__PURE__*/function () {
+  function Mouse(screen) {
+    _classCallCheck__default["default"](this, Mouse);
+
+    this.screen = screen;
+    this.working = false;
+    this.events = [];
+    this.eventElements = []; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
+
+    this.onClick = this.onClick.bind(this); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
+
+    this.onMouseMove = this.onMouseMove.bind(this);
+  }
+
+  _createClass__default["default"](Mouse, [{
+    key: "isWorking",
+    value: function isWorking() {
+      return this.working;
+    }
+  }, {
+    key: "start",
+    value: function start() {
+      if (this.working) {
+        return;
+      }
+
+      var screen = this.screen,
+          onClick = this.onClick,
+          onMouseMove = this.onMouseMove;
+      var canvas = screen.ctx.canvas;
+      canvas.onclick = onClick;
+      canvas.onmousemove = onMouseMove;
+      this.working = true;
+    }
+  }, {
+    key: "stop",
+    value: function stop() {
+      if (!this.working) {
+        return;
+      }
+
+      var canvas = this.screen.ctx.canvas;
+      this.working = false;
+      canvas.onclick = null;
+      canvas.onmousemove = null;
+    }
+  }, {
+    key: "hasEvents",
+    value: function hasEvents() {
+      return this.working && this.events.length > 0;
+    }
+  }, {
+    key: "runEvents",
+    value: function runEvents() {
+      if (!this.working) {
+        return;
+      }
+
+      var document = this.screen,
+          events = this.events,
+          eventElements = this.eventElements;
+      var style = document.ctx.canvas.style;
+
+      if (style) {
+        style.cursor = '';
+      }
+
+      events.forEach(function (_ref, i) {
+        var run = _ref.run;
+        var element = eventElements[i];
+
+        while (element) {
+          run(element);
+          element = element.parent;
+        }
+      }); // done running, clear
+
+      this.events = [];
+      this.eventElements = [];
+    }
+  }, {
+    key: "checkPath",
+    value: function checkPath(element, ctx) {
+      if (!this.working || !ctx) {
+        return;
+      }
+
+      var events = this.events,
+          eventElements = this.eventElements;
+      events.forEach(function (_ref2, i) {
+        var x = _ref2.x,
+            y = _ref2.y;
+
+        if (!eventElements[i] && ctx.isPointInPath && ctx.isPointInPath(x, y)) {
+          eventElements[i] = element;
+        }
+      });
+    }
+  }, {
+    key: "checkBoundingBox",
+    value: function checkBoundingBox(element, boundingBox) {
+      if (!this.working || !boundingBox) {
+        return;
+      }
+
+      var events = this.events,
+          eventElements = this.eventElements;
+      events.forEach(function (_ref3, i) {
+        var x = _ref3.x,
+            y = _ref3.y;
+
+        if (!eventElements[i] && boundingBox.isPointInBox(x, y)) {
+          eventElements[i] = element;
+        }
+      });
+    }
+  }, {
+    key: "mapXY",
+    value: function mapXY(x, y) {
+      var _this$screen = this.screen,
+          window = _this$screen.window,
+          ctx = _this$screen.ctx;
+      var point = new Point(x, y);
+      var element = ctx.canvas;
+
+      while (element) {
+        point.x -= element.offsetLeft;
+        point.y -= element.offsetTop;
+        element = element.offsetParent;
+      }
+
+      if (window.scrollX) {
+        point.x += window.scrollX;
+      }
+
+      if (window.scrollY) {
+        point.y += window.scrollY;
+      }
+
+      return point;
+    }
+  }, {
+    key: "onClick",
+    value: function onClick(event) {
+      var _this$mapXY = this.mapXY(event.clientX, event.clientY),
+          x = _this$mapXY.x,
+          y = _this$mapXY.y;
+
+      this.events.push({
+        type: 'onclick',
+        x: x,
+        y: y,
+        run: function run(eventTarget) {
+          if (eventTarget.onClick) {
+            eventTarget.onClick();
+          }
+        }
+      });
+    }
+  }, {
+    key: "onMouseMove",
+    value: function onMouseMove(event) {
+      var _this$mapXY2 = this.mapXY(event.clientX, event.clientY),
+          x = _this$mapXY2.x,
+          y = _this$mapXY2.y;
+
+      this.events.push({
+        type: 'onmousemove',
+        x: x,
+        y: y,
+        run: function run(eventTarget) {
+          if (eventTarget.onMouseMove) {
+            eventTarget.onMouseMove();
+          }
+        }
+      });
+    }
+  }]);
+
+  return Mouse;
+}();
+
+var defaultWindow = typeof window !== 'undefined' ? window : null;
+var defaultFetch$1 = typeof fetch !== 'undefined' ? fetch.bind(undefined) // `fetch` depends on context: `someObject.fetch(...)` will throw error.
+: null;
+
+var Screen = /*#__PURE__*/function () {
+  function Screen(ctx) {
+    var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
+        _ref$fetch = _ref.fetch,
+        fetch = _ref$fetch === void 0 ? defaultFetch$1 : _ref$fetch,
+        _ref$window = _ref.window,
+        window = _ref$window === void 0 ? defaultWindow : _ref$window;
+
+    _classCallCheck__default["default"](this, Screen);
+
+    this.ctx = ctx;
+    this.FRAMERATE = 30;
+    this.MAX_VIRTUAL_PIXELS = 30000;
+    this.CLIENT_WIDTH = 800;
+    this.CLIENT_HEIGHT = 600;
+    this.viewPort = new ViewPort();
+    this.mouse = new Mouse(this);
+    this.animations = [];
+    this.waits = [];
+    this.frameDuration = 0;
+    this.isReadyLock = false;
+    this.isFirstRender = true;
+    this.intervalId = null;
+    this.window = window;
+    this.fetch = fetch;
+  }
+
+  _createClass__default["default"](Screen, [{
+    key: "wait",
+    value: function wait(checker) {
+      this.waits.push(checker);
+    }
+  }, {
+    key: "ready",
+    value: function ready() {
+      // eslint-disable-next-line @typescript-eslint/no-misused-promises
+      if (!this.readyPromise) {
+        return Promise.resolve();
+      }
+
+      return this.readyPromise;
+    }
+  }, {
+    key: "isReady",
+    value: function isReady() {
+      if (this.isReadyLock) {
+        return true;
+      }
+
+      var isReadyLock = this.waits.every(function (_) {
+        return _();
+      });
+
+      if (isReadyLock) {
+        this.waits = [];
+
+        if (this.resolveReady) {
+          this.resolveReady();
+        }
+      }
+
+      this.isReadyLock = isReadyLock;
+      return isReadyLock;
+    }
+  }, {
+    key: "setDefaults",
+    value: function setDefaults(ctx) {
+      // initial values and defaults
+      ctx.strokeStyle = 'rgba(0,0,0,0)';
+      ctx.lineCap = 'butt';
+      ctx.lineJoin = 'miter';
+      ctx.miterLimit = 4;
+    }
+  }, {
+    key: "setViewBox",
+    value: function setViewBox(_ref2) {
+      var document = _ref2.document,
+          ctx = _ref2.ctx,
+          aspectRatio = _ref2.aspectRatio,
+          width = _ref2.width,
+          desiredWidth = _ref2.desiredWidth,
+          height = _ref2.height,
+          desiredHeight = _ref2.desiredHeight,
+          _ref2$minX = _ref2.minX,
+          minX = _ref2$minX === void 0 ? 0 : _ref2$minX,
+          _ref2$minY = _ref2.minY,
+          minY = _ref2$minY === void 0 ? 0 : _ref2$minY,
+          refX = _ref2.refX,
+          refY = _ref2.refY,
+          _ref2$clip = _ref2.clip,
+          clip = _ref2$clip === void 0 ? false : _ref2$clip,
+          _ref2$clipX = _ref2.clipX,
+          clipX = _ref2$clipX === void 0 ? 0 : _ref2$clipX,
+          _ref2$clipY = _ref2.clipY,
+          clipY = _ref2$clipY === void 0 ? 0 : _ref2$clipY;
+      // aspect ratio - http://www.w3.org/TR/SVG/coords.html#PreserveAspectRatioAttribute
+      var cleanAspectRatio = compressSpaces(aspectRatio).replace(/^defer\s/, ''); // ignore defer
+
+      var _cleanAspectRatio$spl = cleanAspectRatio.split(' '),
+          _cleanAspectRatio$spl2 = _slicedToArray__default["default"](_cleanAspectRatio$spl, 2),
+          aspectRatioAlign = _cleanAspectRatio$spl2[0],
+          aspectRatioMeetOrSlice = _cleanAspectRatio$spl2[1];
+
+      var align = aspectRatioAlign || 'xMidYMid';
+      var meetOrSlice = aspectRatioMeetOrSlice || 'meet'; // calculate scale
+
+      var scaleX = width / desiredWidth;
+      var scaleY = height / desiredHeight;
+      var scaleMin = Math.min(scaleX, scaleY);
+      var scaleMax = Math.max(scaleX, scaleY);
+      var finalDesiredWidth = desiredWidth;
+      var finalDesiredHeight = desiredHeight;
+
+      if (meetOrSlice === 'meet') {
+        finalDesiredWidth *= scaleMin;
+        finalDesiredHeight *= scaleMin;
+      }
+
+      if (meetOrSlice === 'slice') {
+        finalDesiredWidth *= scaleMax;
+        finalDesiredHeight *= scaleMax;
+      }
+
+      var refXProp = new Property(document, 'refX', refX);
+      var refYProp = new Property(document, 'refY', refY);
+      var hasRefs = refXProp.hasValue() && refYProp.hasValue();
+
+      if (hasRefs) {
+        ctx.translate(-scaleMin * refXProp.getPixels('x'), -scaleMin * refYProp.getPixels('y'));
+      }
+
+      if (clip) {
+        var scaledClipX = scaleMin * clipX;
+        var scaledClipY = scaleMin * clipY;
+        ctx.beginPath();
+        ctx.moveTo(scaledClipX, scaledClipY);
+        ctx.lineTo(width, scaledClipY);
+        ctx.lineTo(width, height);
+        ctx.lineTo(scaledClipX, height);
+        ctx.closePath();
+        ctx.clip();
+      }
+
+      if (!hasRefs) {
+        var isMeetMinY = meetOrSlice === 'meet' && scaleMin === scaleY;
+        var isSliceMaxY = meetOrSlice === 'slice' && scaleMax === scaleY;
+        var isMeetMinX = meetOrSlice === 'meet' && scaleMin === scaleX;
+        var isSliceMaxX = meetOrSlice === 'slice' && scaleMax === scaleX;
+
+        if (align.startsWith('xMid') && (isMeetMinY || isSliceMaxY)) {
+          ctx.translate(width / 2.0 - finalDesiredWidth / 2.0, 0);
+        }
+
+        if (align.endsWith('YMid') && (isMeetMinX || isSliceMaxX)) {
+          ctx.translate(0, height / 2.0 - finalDesiredHeight / 2.0);
+        }
+
+        if (align.startsWith('xMax') && (isMeetMinY || isSliceMaxY)) {
+          ctx.translate(width - finalDesiredWidth, 0);
+        }
+
+        if (align.endsWith('YMax') && (isMeetMinX || isSliceMaxX)) {
+          ctx.translate(0, height - finalDesiredHeight);
+        }
+      } // scale
+
+
+      switch (true) {
+        case align === 'none':
+          ctx.scale(scaleX, scaleY);
+          break;
+
+        case meetOrSlice === 'meet':
+          ctx.scale(scaleMin, scaleMin);
+          break;
+
+        case meetOrSlice === 'slice':
+          ctx.scale(scaleMax, scaleMax);
+          break;
+      } // translate
+
+
+      ctx.translate(-minX, -minY);
+    }
+  }, {
+    key: "start",
+    value: function start(element) {
+      var _this = this;
+
+      var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
+          _ref3$enableRedraw = _ref3.enableRedraw,
+          enableRedraw = _ref3$enableRedraw === void 0 ? false : _ref3$enableRedraw,
+          _ref3$ignoreMouse = _ref3.ignoreMouse,
+          ignoreMouse = _ref3$ignoreMouse === void 0 ? false : _ref3$ignoreMouse,
+          _ref3$ignoreAnimation = _ref3.ignoreAnimation,
+          ignoreAnimation = _ref3$ignoreAnimation === void 0 ? false : _ref3$ignoreAnimation,
+          _ref3$ignoreDimension = _ref3.ignoreDimensions,
+          ignoreDimensions = _ref3$ignoreDimension === void 0 ? false : _ref3$ignoreDimension,
+          _ref3$ignoreClear = _ref3.ignoreClear,
+          ignoreClear = _ref3$ignoreClear === void 0 ? false : _ref3$ignoreClear,
+          forceRedraw = _ref3.forceRedraw,
+          scaleWidth = _ref3.scaleWidth,
+          scaleHeight = _ref3.scaleHeight,
+          offsetX = _ref3.offsetX,
+          offsetY = _ref3.offsetY;
+
+      var FRAMERATE = this.FRAMERATE,
+          mouse = this.mouse;
+      var frameDuration = 1000 / FRAMERATE;
+      this.frameDuration = frameDuration;
+      this.readyPromise = new Promise(function (resolve) {
+        _this.resolveReady = resolve;
+      });
+
+      if (this.isReady()) {
+        this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);
+      }
+
+      if (!enableRedraw) {
+        return;
+      }
+
+      var now = Date.now();
+      var then = now;
+      var delta = 0;
+
+      var tick = function tick() {
+        now = Date.now();
+        delta = now - then;
+
+        if (delta >= frameDuration) {
+          then = now - delta % frameDuration;
+
+          if (_this.shouldUpdate(ignoreAnimation, forceRedraw)) {
+            _this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);
+
+            mouse.runEvents();
+          }
+        }
+
+        _this.intervalId = requestAnimationFrame__default["default"](tick);
+      };
+
+      if (!ignoreMouse) {
+        mouse.start();
+      }
+
+      this.intervalId = requestAnimationFrame__default["default"](tick);
+    }
+  }, {
+    key: "stop",
+    value: function stop() {
+      if (this.intervalId) {
+        requestAnimationFrame__default["default"].cancel(this.intervalId);
+        this.intervalId = null;
+      }
+
+      this.mouse.stop();
+    }
+  }, {
+    key: "shouldUpdate",
+    value: function shouldUpdate(ignoreAnimation, forceRedraw) {
+      // need update from animations?
+      if (!ignoreAnimation) {
+        var frameDuration = this.frameDuration;
+        var shouldUpdate = this.animations.reduce(function (shouldUpdate, animation) {
+          return animation.update(frameDuration) || shouldUpdate;
+        }, false);
+
+        if (shouldUpdate) {
+          return true;
+        }
+      } // need update from redraw?
+
+
+      if (typeof forceRedraw === 'function' && forceRedraw()) {
+        return true;
+      }
+
+      if (!this.isReadyLock && this.isReady()) {
+        return true;
+      } // need update from mouse events?
+
+
+      if (this.mouse.hasEvents()) {
+        return true;
+      }
+
+      return false;
+    }
+  }, {
+    key: "render",
+    value: function render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY) {
+      var CLIENT_WIDTH = this.CLIENT_WIDTH,
+          CLIENT_HEIGHT = this.CLIENT_HEIGHT,
+          viewPort = this.viewPort,
+          ctx = this.ctx,
+          isFirstRender = this.isFirstRender;
+      var canvas = ctx.canvas;
+      viewPort.clear();
+
+      if (canvas.width && canvas.height) {
+        viewPort.setCurrent(canvas.width, canvas.height);
+      } else {
+        viewPort.setCurrent(CLIENT_WIDTH, CLIENT_HEIGHT);
+      }
+
+      var widthStyle = element.getStyle('width');
+      var heightStyle = element.getStyle('height');
+
+      if (!ignoreDimensions && (isFirstRender || typeof scaleWidth !== 'number' && typeof scaleHeight !== 'number')) {
+        // set canvas size
+        if (widthStyle.hasValue()) {
+          canvas.width = widthStyle.getPixels('x');
+
+          if (canvas.style) {
+            canvas.style.width = "".concat(canvas.width, "px");
+          }
+        }
+
+        if (heightStyle.hasValue()) {
+          canvas.height = heightStyle.getPixels('y');
+
+          if (canvas.style) {
+            canvas.style.height = "".concat(canvas.height, "px");
+          }
+        }
+      }
+
+      var cWidth = canvas.clientWidth || canvas.width;
+      var cHeight = canvas.clientHeight || canvas.height;
+
+      if (ignoreDimensions && widthStyle.hasValue() && heightStyle.hasValue()) {
+        cWidth = widthStyle.getPixels('x');
+        cHeight = heightStyle.getPixels('y');
+      }
+
+      viewPort.setCurrent(cWidth, cHeight);
+
+      if (typeof offsetX === 'number') {
+        element.getAttribute('x', true).setValue(offsetX);
+      }
+
+      if (typeof offsetY === 'number') {
+        element.getAttribute('y', true).setValue(offsetY);
+      }
+
+      if (typeof scaleWidth === 'number' || typeof scaleHeight === 'number') {
+        var viewBox = toNumbers(element.getAttribute('viewBox').getString());
+        var xRatio = 0;
+        var yRatio = 0;
+
+        if (typeof scaleWidth === 'number') {
+          var _widthStyle = element.getStyle('width');
+
+          if (_widthStyle.hasValue()) {
+            xRatio = _widthStyle.getPixels('x') / scaleWidth;
+          } else if (!isNaN(viewBox[2])) {
+            xRatio = viewBox[2] / scaleWidth;
+          }
+        }
+
+        if (typeof scaleHeight === 'number') {
+          var _heightStyle = element.getStyle('height');
+
+          if (_heightStyle.hasValue()) {
+            yRatio = _heightStyle.getPixels('y') / scaleHeight;
+          } else if (!isNaN(viewBox[3])) {
+            yRatio = viewBox[3] / scaleHeight;
+          }
+        }
+
+        if (!xRatio) {
+          xRatio = yRatio;
+        }
+
+        if (!yRatio) {
+          yRatio = xRatio;
+        }
+
+        element.getAttribute('width', true).setValue(scaleWidth);
+        element.getAttribute('height', true).setValue(scaleHeight);
+        var transformStyle = element.getStyle('transform', true, true);
+        transformStyle.setValue("".concat(transformStyle.getString(), " scale(").concat(1.0 / xRatio, ", ").concat(1.0 / yRatio, ")"));
+      } // clear and render
+
+
+      if (!ignoreClear) {
+        ctx.clearRect(0, 0, cWidth, cHeight);
+      }
+
+      element.render(ctx);
+
+      if (isFirstRender) {
+        this.isFirstRender = false;
+      }
+    }
+  }]);
+
+  return Screen;
+}();
+Screen.defaultWindow = defaultWindow;
+Screen.defaultFetch = defaultFetch$1;
+
+var defaultFetch = Screen.defaultFetch;
+var DefaultDOMParser = typeof DOMParser !== 'undefined' ? DOMParser : null;
+
+var Parser = /*#__PURE__*/function () {
+  function Parser() {
+    var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
+        _ref$fetch = _ref.fetch,
+        fetch = _ref$fetch === void 0 ? defaultFetch : _ref$fetch,
+        _ref$DOMParser = _ref.DOMParser,
+        DOMParser = _ref$DOMParser === void 0 ? DefaultDOMParser : _ref$DOMParser;
+
+    _classCallCheck__default["default"](this, Parser);
+
+    this.fetch = fetch;
+    this.DOMParser = DOMParser;
+  }
+
+  _createClass__default["default"](Parser, [{
+    key: "parse",
+    value: function () {
+      var _parse = _asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee(resource) {
+        return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
+          while (1) {
+            switch (_context.prev = _context.next) {
+              case 0:
+                if (!resource.startsWith('<')) {
+                  _context.next = 2;
+                  break;
+                }
+
+                return _context.abrupt("return", this.parseFromString(resource));
+
+              case 2:
+                return _context.abrupt("return", this.load(resource));
+
+              case 3:
+              case "end":
+                return _context.stop();
+            }
+          }
+        }, _callee, this);
+      }));
+
+      function parse(_x) {
+        return _parse.apply(this, arguments);
+      }
+
+      return parse;
+    }()
+  }, {
+    key: "parseFromString",
+    value: function parseFromString(xml) {
+      var parser = new this.DOMParser();
+
+      try {
+        return this.checkDocument(parser.parseFromString(xml, 'image/svg+xml'));
+      } catch (err) {
+        return this.checkDocument(parser.parseFromString(xml, 'text/xml'));
+      }
+    }
+  }, {
+    key: "checkDocument",
+    value: function checkDocument(document) {
+      var parserError = document.getElementsByTagName('parsererror')[0];
+
+      if (parserError) {
+        throw new Error(parserError.textContent);
+      }
+
+      return document;
+    }
+  }, {
+    key: "load",
+    value: function () {
+      var _load = _asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee2(url) {
+        var response, xml;
+        return _regeneratorRuntime__default["default"].wrap(function _callee2$(_context2) {
+          while (1) {
+            switch (_context2.prev = _context2.next) {
+              case 0:
+                _context2.next = 2;
+                return this.fetch(url);
+
+              case 2:
+                response = _context2.sent;
+                _context2.next = 5;
+                return response.text();
+
+              case 5:
+                xml = _context2.sent;
+                return _context2.abrupt("return", this.parseFromString(xml));
+
+              case 7:
+              case "end":
+                return _context2.stop();
+            }
+          }
+        }, _callee2, this);
+      }));
+
+      function load(_x2) {
+        return _load.apply(this, arguments);
+      }
+
+      return load;
+    }()
+  }]);
+
+  return Parser;
+}();
+
+var Translate = /*#__PURE__*/function () {
+  function Translate(_, point) {
+    _classCallCheck__default["default"](this, Translate);
+
+    this.type = 'translate';
+    this.point = null;
+    this.point = Point.parse(point);
+  }
+
+  _createClass__default["default"](Translate, [{
+    key: "apply",
+    value: function apply(ctx) {
+      var _this$point = this.point,
+          x = _this$point.x,
+          y = _this$point.y;
+      ctx.translate(x || 0.0, y || 0.0);
+    }
+  }, {
+    key: "unapply",
+    value: function unapply(ctx) {
+      var _this$point2 = this.point,
+          x = _this$point2.x,
+          y = _this$point2.y;
+      ctx.translate(-1.0 * x || 0.0, -1.0 * y || 0.0);
+    }
+  }, {
+    key: "applyToPoint",
+    value: function applyToPoint(point) {
+      var _this$point3 = this.point,
+          x = _this$point3.x,
+          y = _this$point3.y;
+      point.applyTransform([1, 0, 0, 1, x || 0.0, y || 0.0]);
+    }
+  }]);
+
+  return Translate;
+}();
+
+var Rotate = /*#__PURE__*/function () {
+  function Rotate(document, rotate, transformOrigin) {
+    _classCallCheck__default["default"](this, Rotate);
+
+    this.type = 'rotate';
+    this.angle = null;
+    this.originX = null;
+    this.originY = null;
+    this.cx = 0;
+    this.cy = 0;
+    var numbers = toNumbers(rotate);
+    this.angle = new Property(document, 'angle', numbers[0]);
+    this.originX = transformOrigin[0];
+    this.originY = transformOrigin[1];
+    this.cx = numbers[1] || 0;
+    this.cy = numbers[2] || 0;
+  }
+
+  _createClass__default["default"](Rotate, [{
+    key: "apply",
+    value: function apply(ctx) {
+      var cx = this.cx,
+          cy = this.cy,
+          originX = this.originX,
+          originY = this.originY,
+          angle = this.angle;
+      var tx = cx + originX.getPixels('x');
+      var ty = cy + originY.getPixels('y');
+      ctx.translate(tx, ty);
+      ctx.rotate(angle.getRadians());
+      ctx.translate(-tx, -ty);
+    }
+  }, {
+    key: "unapply",
+    value: function unapply(ctx) {
+      var cx = this.cx,
+          cy = this.cy,
+          originX = this.originX,
+          originY = this.originY,
+          angle = this.angle;
+      var tx = cx + originX.getPixels('x');
+      var ty = cy + originY.getPixels('y');
+      ctx.translate(tx, ty);
+      ctx.rotate(-1.0 * angle.getRadians());
+      ctx.translate(-tx, -ty);
+    }
+  }, {
+    key: "applyToPoint",
+    value: function applyToPoint(point) {
+      var cx = this.cx,
+          cy = this.cy,
+          angle = this.angle;
+      var rad = angle.getRadians();
+      point.applyTransform([1, 0, 0, 1, cx || 0.0, cy || 0.0 // this.p.y
+      ]);
+      point.applyTransform([Math.cos(rad), Math.sin(rad), -Math.sin(rad), Math.cos(rad), 0, 0]);
+      point.applyTransform([1, 0, 0, 1, -cx || 0.0, -cy || 0.0 // -this.p.y
+      ]);
+    }
+  }]);
+
+  return Rotate;
+}();
+
+var Scale = /*#__PURE__*/function () {
+  function Scale(_, scale, transformOrigin) {
+    _classCallCheck__default["default"](this, Scale);
+
+    this.type = 'scale';
+    this.scale = null;
+    this.originX = null;
+    this.originY = null;
+    var scaleSize = Point.parseScale(scale); // Workaround for node-canvas
+
+    if (scaleSize.x === 0 || scaleSize.y === 0) {
+      scaleSize.x = PSEUDO_ZERO;
+      scaleSize.y = PSEUDO_ZERO;
+    }
+
+    this.scale = scaleSize;
+    this.originX = transformOrigin[0];
+    this.originY = transformOrigin[1];
+  }
+
+  _createClass__default["default"](Scale, [{
+    key: "apply",
+    value: function apply(ctx) {
+      var _this$scale = this.scale,
+          x = _this$scale.x,
+          y = _this$scale.y,
+          originX = this.originX,
+          originY = this.originY;
+      var tx = originX.getPixels('x');
+      var ty = originY.getPixels('y');
+      ctx.translate(tx, ty);
+      ctx.scale(x, y || x);
+      ctx.translate(-tx, -ty);
+    }
+  }, {
+    key: "unapply",
+    value: function unapply(ctx) {
+      var _this$scale2 = this.scale,
+          x = _this$scale2.x,
+          y = _this$scale2.y,
+          originX = this.originX,
+          originY = this.originY;
+      var tx = originX.getPixels('x');
+      var ty = originY.getPixels('y');
+      ctx.translate(tx, ty);
+      ctx.scale(1.0 / x, 1.0 / y || x);
+      ctx.translate(-tx, -ty);
+    }
+  }, {
+    key: "applyToPoint",
+    value: function applyToPoint(point) {
+      var _this$scale3 = this.scale,
+          x = _this$scale3.x,
+          y = _this$scale3.y;
+      point.applyTransform([x || 0.0, 0, 0, y || 0.0, 0, 0]);
+    }
+  }]);
+
+  return Scale;
+}();
+
+var Matrix = /*#__PURE__*/function () {
+  function Matrix(_, matrix, transformOrigin) {
+    _classCallCheck__default["default"](this, Matrix);
+
+    this.type = 'matrix';
+    this.matrix = [];
+    this.originX = null;
+    this.originY = null;
+    this.matrix = toNumbers(matrix);
+    this.originX = transformOrigin[0];
+    this.originY = transformOrigin[1];
+  }
+
+  _createClass__default["default"](Matrix, [{
+    key: "apply",
+    value: function apply(ctx) {
+      var originX = this.originX,
+          originY = this.originY,
+          matrix = this.matrix;
+      var tx = originX.getPixels('x');
+      var ty = originY.getPixels('y');
+      ctx.translate(tx, ty);
+      ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);
+      ctx.translate(-tx, -ty);
+    }
+  }, {
+    key: "unapply",
+    value: function unapply(ctx) {
+      var originX = this.originX,
+          originY = this.originY,
+          matrix = this.matrix;
+      var a = matrix[0];
+      var b = matrix[2];
+      var c = matrix[4];
+      var d = matrix[1];
+      var e = matrix[3];
+      var f = matrix[5];
+      var g = 0.0;
+      var h = 0.0;
+      var i = 1.0;
+      var det = 1 / (a * (e * i - f * h) - b * (d * i - f * g) + c * (d * h - e * g));
+      var tx = originX.getPixels('x');
+      var ty = originY.getPixels('y');
+      ctx.translate(tx, ty);
+      ctx.transform(det * (e * i - f * h), det * (f * g - d * i), det * (c * h - b * i), det * (a * i - c * g), det * (b * f - c * e), det * (c * d - a * f));
+      ctx.translate(-tx, -ty);
+    }
+  }, {
+    key: "applyToPoint",
+    value: function applyToPoint(point) {
+      point.applyTransform(this.matrix);
+    }
+  }]);
+
+  return Matrix;
+}();
+
+function _createSuper$M(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$M(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$M() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var Skew = /*#__PURE__*/function (_Matrix) {
+  _inherits__default["default"](Skew, _Matrix);
+
+  var _super = _createSuper$M(Skew);
+
+  function Skew(document, skew, transformOrigin) {
+    var _this;
+
+    _classCallCheck__default["default"](this, Skew);
+
+    _this = _super.call(this, document, skew, transformOrigin);
+    _this.type = 'skew';
+    _this.angle = null;
+    _this.angle = new Property(document, 'angle', skew);
+    return _this;
+  }
+
+  return Skew;
+}(Matrix);
+
+function _createSuper$L(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$L(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$L() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var SkewX = /*#__PURE__*/function (_Skew) {
+  _inherits__default["default"](SkewX, _Skew);
+
+  var _super = _createSuper$L(SkewX);
+
+  function SkewX(document, skew, transformOrigin) {
+    var _this;
+
+    _classCallCheck__default["default"](this, SkewX);
+
+    _this = _super.call(this, document, skew, transformOrigin);
+    _this.type = 'skewX';
+    _this.matrix = [1, 0, Math.tan(_this.angle.getRadians()), 1, 0, 0];
+    return _this;
+  }
+
+  return SkewX;
+}(Skew);
+
+function _createSuper$K(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$K(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$K() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var SkewY = /*#__PURE__*/function (_Skew) {
+  _inherits__default["default"](SkewY, _Skew);
+
+  var _super = _createSuper$K(SkewY);
+
+  function SkewY(document, skew, transformOrigin) {
+    var _this;
+
+    _classCallCheck__default["default"](this, SkewY);
+
+    _this = _super.call(this, document, skew, transformOrigin);
+    _this.type = 'skewY';
+    _this.matrix = [1, Math.tan(_this.angle.getRadians()), 0, 1, 0, 0];
+    return _this;
+  }
+
+  return SkewY;
+}(Skew);
+
+function parseTransforms(transform) {
+  return compressSpaces(transform).trim().replace(/\)([a-zA-Z])/g, ') $1').replace(/\)(\s?,\s?)/g, ') ').split(/\s(?=[a-z])/);
+}
+
+function parseTransform(transform) {
+  var _transform$split = transform.split('('),
+      _transform$split2 = _slicedToArray__default["default"](_transform$split, 2),
+      type = _transform$split2[0],
+      value = _transform$split2[1];
+
+  return [type.trim(), value.trim().replace(')', '')];
+}
+
+var Transform = /*#__PURE__*/function () {
+  function Transform(document, transform, transformOrigin) {
+    var _this = this;
+
+    _classCallCheck__default["default"](this, Transform);
+
+    this.document = document;
+    this.transforms = [];
+    var data = parseTransforms(transform);
+    data.forEach(function (transform) {
+      if (transform === 'none') {
+        return;
+      }
+
+      var _parseTransform = parseTransform(transform),
+          _parseTransform2 = _slicedToArray__default["default"](_parseTransform, 2),
+          type = _parseTransform2[0],
+          value = _parseTransform2[1];
+
+      var TransformType = Transform.transformTypes[type];
+
+      if (typeof TransformType !== 'undefined') {
+        _this.transforms.push(new TransformType(_this.document, value, transformOrigin));
+      }
+    });
+  }
+
+  _createClass__default["default"](Transform, [{
+    key: "apply",
+    value: function apply(ctx) {
+      var transforms = this.transforms;
+      var len = transforms.length;
+
+      for (var i = 0; i < len; i++) {
+        transforms[i].apply(ctx);
+      }
+    }
+  }, {
+    key: "unapply",
+    value: function unapply(ctx) {
+      var transforms = this.transforms;
+      var len = transforms.length;
+
+      for (var i = len - 1; i >= 0; i--) {
+        transforms[i].unapply(ctx);
+      }
+    } // TODO: applyToPoint unused ... remove?
+
+  }, {
+    key: "applyToPoint",
+    value: function applyToPoint(point) {
+      var transforms = this.transforms;
+      var len = transforms.length;
+
+      for (var i = 0; i < len; i++) {
+        transforms[i].applyToPoint(point);
+      }
+    }
+  }], [{
+    key: "fromElement",
+    value: function fromElement(document, element) {
+      var transformStyle = element.getStyle('transform', false, true);
+
+      var _element$getStyle$spl = element.getStyle('transform-origin', false, true).split(),
+          _element$getStyle$spl2 = _slicedToArray__default["default"](_element$getStyle$spl, 2),
+          transformOriginXProperty = _element$getStyle$spl2[0],
+          _element$getStyle$spl3 = _element$getStyle$spl2[1],
+          transformOriginYProperty = _element$getStyle$spl3 === void 0 ? transformOriginXProperty : _element$getStyle$spl3;
+
+      var transformOrigin = [transformOriginXProperty, transformOriginYProperty];
+
+      if (transformStyle.hasValue()) {
+        return new Transform(document, transformStyle.getString(), transformOrigin);
+      }
+
+      return null;
+    }
+  }]);
+
+  return Transform;
+}();
+Transform.transformTypes = {
+  translate: Translate,
+  rotate: Rotate,
+  scale: Scale,
+  matrix: Matrix,
+  skewX: SkewX,
+  skewY: SkewY
+};
+
+var Element = /*#__PURE__*/function () {
+  function Element(document, node) {
+    var _this = this;
+
+    var captureTextNodes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
+
+    _classCallCheck__default["default"](this, Element);
+
+    this.document = document;
+    this.node = node;
+    this.captureTextNodes = captureTextNodes;
+    this.attributes = {};
+    this.styles = {};
+    this.stylesSpecificity = {};
+    this.animationFrozen = false;
+    this.animationFrozenValue = '';
+    this.parent = null;
+    this.children = [];
+
+    if (!node || node.nodeType !== 1) {
+      // ELEMENT_NODE
+      return;
+    } // add attributes
+
+
+    Array.from(node.attributes).forEach(function (attribute) {
+      var nodeName = normalizeAttributeName(attribute.nodeName);
+      _this.attributes[nodeName] = new Property(document, nodeName, attribute.value);
+    });
+    this.addStylesFromStyleDefinition(); // add inline styles
+
+    if (this.getAttribute('style').hasValue()) {
+      var styles = this.getAttribute('style').getString().split(';').map(function (_) {
+        return _.trim();
+      });
+      styles.forEach(function (style) {
+        if (!style) {
+          return;
+        }
+
+        var _style$split$map = style.split(':').map(function (_) {
+          return _.trim();
+        }),
+            _style$split$map2 = _slicedToArray__default["default"](_style$split$map, 2),
+            name = _style$split$map2[0],
+            value = _style$split$map2[1];
+
+        _this.styles[name] = new Property(document, name, value);
+      });
+    }
+
+    var definitions = document.definitions;
+    var id = this.getAttribute('id'); // add id
+
+    if (id.hasValue()) {
+      if (!definitions[id.getString()]) {
+        definitions[id.getString()] = this;
+      }
+    }
+
+    Array.from(node.childNodes).forEach(function (childNode) {
+      if (childNode.nodeType === 1) {
+        _this.addChild(childNode); // ELEMENT_NODE
+
+      } else if (captureTextNodes && (childNode.nodeType === 3 || childNode.nodeType === 4)) {
+        var textNode = document.createTextNode(childNode);
+
+        if (textNode.getText().length > 0) {
+          _this.addChild(textNode); // TEXT_NODE
+
+        }
+      }
+    });
+  }
+
+  _createClass__default["default"](Element, [{
+    key: "getAttribute",
+    value: function getAttribute(name) {
+      var createIfNotExists = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+      var attr = this.attributes[name];
+
+      if (!attr && createIfNotExists) {
+        var _attr = new Property(this.document, name, '');
+
+        this.attributes[name] = _attr;
+        return _attr;
+      }
+
+      return attr || Property.empty(this.document);
+    }
+  }, {
+    key: "getHrefAttribute",
+    value: function getHrefAttribute() {
+      for (var key in this.attributes) {
+        if (key === 'href' || key.endsWith(':href')) {
+          return this.attributes[key];
+        }
+      }
+
+      return Property.empty(this.document);
+    }
+  }, {
+    key: "getStyle",
+    value: function getStyle(name) {
+      var createIfNotExists = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+      var skipAncestors = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
+      var style = this.styles[name];
+
+      if (style) {
+        return style;
+      }
+
+      var attr = this.getAttribute(name);
+
+      if (attr !== null && attr !== void 0 && attr.hasValue()) {
+        this.styles[name] = attr; // move up to me to cache
+
+        return attr;
+      }
+
+      if (!skipAncestors) {
+        var parent = this.parent;
+
+        if (parent) {
+          var parentStyle = parent.getStyle(name);
+
+          if (parentStyle !== null && parentStyle !== void 0 && parentStyle.hasValue()) {
+            return parentStyle;
+          }
+        }
+      }
+
+      if (createIfNotExists) {
+        var _style = new Property(this.document, name, '');
+
+        this.styles[name] = _style;
+        return _style;
+      }
+
+      return style || Property.empty(this.document);
+    }
+  }, {
+    key: "render",
+    value: function render(ctx) {
+      // don't render display=none
+      // don't render visibility=hidden
+      if (this.getStyle('display').getString() === 'none' || this.getStyle('visibility').getString() === 'hidden') {
+        return;
+      }
+
+      ctx.save();
+
+      if (this.getStyle('mask').hasValue()) {
+        // mask
+        var mask = this.getStyle('mask').getDefinition();
+
+        if (mask) {
+          this.applyEffects(ctx);
+          mask.apply(ctx, this);
+        }
+      } else if (this.getStyle('filter').getValue('none') !== 'none') {
+        // filter
+        var filter = this.getStyle('filter').getDefinition();
+
+        if (filter) {
+          this.applyEffects(ctx);
+          filter.apply(ctx, this);
+        }
+      } else {
+        this.setContext(ctx);
+        this.renderChildren(ctx);
+        this.clearContext(ctx);
+      }
+
+      ctx.restore();
+    }
+  }, {
+    key: "setContext",
+    value: function setContext(_) {// NO RENDER
+    }
+  }, {
+    key: "applyEffects",
+    value: function applyEffects(ctx) {
+      // transform
+      var transform = Transform.fromElement(this.document, this);
+
+      if (transform) {
+        transform.apply(ctx);
+      } // clip
+
+
+      var clipPathStyleProp = this.getStyle('clip-path', false, true);
+
+      if (clipPathStyleProp.hasValue()) {
+        var clip = clipPathStyleProp.getDefinition();
+
+        if (clip) {
+          clip.apply(ctx);
+        }
+      }
+    }
+  }, {
+    key: "clearContext",
+    value: function clearContext(_) {// NO RENDER
+    }
+  }, {
+    key: "renderChildren",
+    value: function renderChildren(ctx) {
+      this.children.forEach(function (child) {
+        child.render(ctx);
+      });
+    }
+  }, {
+    key: "addChild",
+    value: function addChild(childNode) {
+      var child = childNode instanceof Element ? childNode : this.document.createElement(childNode);
+      child.parent = this;
+
+      if (!Element.ignoreChildTypes.includes(child.type)) {
+        this.children.push(child);
+      }
+    }
+  }, {
+    key: "matchesSelector",
+    value: function matchesSelector(selector) {
+      var _node$getAttribute;
+
+      var node = this.node;
+
+      if (typeof node.matches === 'function') {
+        return node.matches(selector);
+      }
+
+      var styleClasses = (_node$getAttribute = node.getAttribute) === null || _node$getAttribute === void 0 ? void 0 : _node$getAttribute.call(node, 'class');
+
+      if (!styleClasses || styleClasses === '') {
+        return false;
+      }
+
+      return styleClasses.split(' ').some(function (styleClass) {
+        return ".".concat(styleClass) === selector;
+      });
+    }
+  }, {
+    key: "addStylesFromStyleDefinition",
+    value: function addStylesFromStyleDefinition() {
+      var _this$document = this.document,
+          styles = _this$document.styles,
+          stylesSpecificity = _this$document.stylesSpecificity;
+
+      for (var selector in styles) {
+        if (!selector.startsWith('@') && this.matchesSelector(selector)) {
+          var style = styles[selector];
+          var specificity = stylesSpecificity[selector];
+
+          if (style) {
+            for (var name in style) {
+              var existingSpecificity = this.stylesSpecificity[name];
+
+              if (typeof existingSpecificity === 'undefined') {
+                existingSpecificity = '000';
+              }
+
+              if (specificity >= existingSpecificity) {
+                this.styles[name] = style[name];
+                this.stylesSpecificity[name] = specificity;
+              }
+            }
+          }
+        }
+      }
+    }
+  }, {
+    key: "removeStyles",
+    value: function removeStyles(element, ignoreStyles) {
+      var toRestore = ignoreStyles.reduce(function (toRestore, name) {
+        var styleProp = element.getStyle(name);
+
+        if (!styleProp.hasValue()) {
+          return toRestore;
+        }
+
+        var value = styleProp.getString();
+        styleProp.setValue('');
+        return [].concat(_toConsumableArray__default["default"](toRestore), [[name, value]]);
+      }, []);
+      return toRestore;
+    }
+  }, {
+    key: "restoreStyles",
+    value: function restoreStyles(element, styles) {
+      styles.forEach(function (_ref) {
+        var _ref2 = _slicedToArray__default["default"](_ref, 2),
+            name = _ref2[0],
+            value = _ref2[1];
+
+        element.getStyle(name, true).setValue(value);
+      });
+    }
+  }, {
+    key: "isFirstChild",
+    value: function isFirstChild() {
+      var _this$parent;
+
+      return ((_this$parent = this.parent) === null || _this$parent === void 0 ? void 0 : _this$parent.children.indexOf(this)) === 0;
+    }
+  }]);
+
+  return Element;
+}();
+Element.ignoreChildTypes = ['title'];
+
+function _createSuper$J(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$J(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$J() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var UnknownElement = /*#__PURE__*/function (_Element) {
+  _inherits__default["default"](UnknownElement, _Element);
+
+  var _super = _createSuper$J(UnknownElement);
+
+  function UnknownElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default["default"](this, UnknownElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+
+    return _this;
+  }
+
+  return UnknownElement;
+}(Element);
+
+function wrapFontFamily(fontFamily) {
+  var trimmed = fontFamily.trim();
+  return /^('|")/.test(trimmed) ? trimmed : "\"".concat(trimmed, "\"");
+}
+
+function prepareFontFamily(fontFamily) {
+  return typeof process === 'undefined' ? fontFamily : fontFamily.trim().split(',').map(wrapFontFamily).join(',');
+}
+/**
+ * https://developer.mozilla.org/en-US/docs/Web/CSS/font-style
+ * @param fontStyle
+ * @returns CSS font style.
+ */
+
+
+function prepareFontStyle(fontStyle) {
+  if (!fontStyle) {
+    return '';
+  }
+
+  var targetFontStyle = fontStyle.trim().toLowerCase();
+
+  switch (targetFontStyle) {
+    case 'normal':
+    case 'italic':
+    case 'oblique':
+    case 'inherit':
+    case 'initial':
+    case 'unset':
+      return targetFontStyle;
+
+    default:
+      if (/^oblique\s+(-|)\d+deg$/.test(targetFontStyle)) {
+        return targetFontStyle;
+      }
+
+      return '';
+  }
+}
+/**
+ * https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight
+ * @param fontWeight
+ * @returns CSS font weight.
+ */
+
+
+function prepareFontWeight(fontWeight) {
+  if (!fontWeight) {
+    return '';
+  }
+
+  var targetFontWeight = fontWeight.trim().toLowerCase();
+
+  switch (targetFontWeight) {
+    case 'normal':
+    case 'bold':
+    case 'lighter':
+    case 'bolder':
+    case 'inherit':
+    case 'initial':
+    case 'unset':
+      return targetFontWeight;
+
+    default:
+      if (/^[\d.]+$/.test(targetFontWeight)) {
+        return targetFontWeight;
+      }
+
+      return '';
+  }
+}
+
+var Font = /*#__PURE__*/function () {
+  function Font(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit) {
+    _classCallCheck__default["default"](this, Font);
+
+    var inheritFont = inherit ? typeof inherit === 'string' ? Font.parse(inherit) : inherit : {};
+    this.fontFamily = fontFamily || inheritFont.fontFamily;
+    this.fontSize = fontSize || inheritFont.fontSize;
+    this.fontStyle = fontStyle || inheritFont.fontStyle;
+    this.fontWeight = fontWeight || inheritFont.fontWeight;
+    this.fontVariant = fontVariant || inheritFont.fontVariant;
+  }
+
+  _createClass__default["default"](Font, [{
+    key: "toString",
+    value: function toString() {
+      return [prepareFontStyle(this.fontStyle), this.fontVariant, prepareFontWeight(this.fontWeight), this.fontSize, // Wrap fontFamily only on nodejs and only for canvas.ctx
+      prepareFontFamily(this.fontFamily)].join(' ').trim();
+    }
+  }], [{
+    key: "parse",
+    value: function parse() {
+      var font = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
+      var inherit = arguments.length > 1 ? arguments[1] : undefined;
+      var fontStyle = '';
+      var fontVariant = '';
+      var fontWeight = '';
+      var fontSize = '';
+      var fontFamily = '';
+      var parts = compressSpaces(font).trim().split(' ');
+      var set = {
+        fontSize: false,
+        fontStyle: false,
+        fontWeight: false,
+        fontVariant: false
+      };
+      parts.forEach(function (part) {
+        switch (true) {
+          case !set.fontStyle && Font.styles.includes(part):
+            if (part !== 'inherit') {
+              fontStyle = part;
+            }
+
+            set.fontStyle = true;
+            break;
+
+          case !set.fontVariant && Font.variants.includes(part):
+            if (part !== 'inherit') {
+              fontVariant = part;
+            }
+
+            set.fontStyle = true;
+            set.fontVariant = true;
+            break;
+
+          case !set.fontWeight && Font.weights.includes(part):
+            if (part !== 'inherit') {
+              fontWeight = part;
+            }
+
+            set.fontStyle = true;
+            set.fontVariant = true;
+            set.fontWeight = true;
+            break;
+
+          case !set.fontSize:
+            if (part !== 'inherit') {
+              var _part$split = part.split('/');
+
+              var _part$split2 = _slicedToArray__default["default"](_part$split, 1);
+
+              fontSize = _part$split2[0];
+            }
+
+            set.fontStyle = true;
+            set.fontVariant = true;
+            set.fontWeight = true;
+            set.fontSize = true;
+            break;
+
+          default:
+            if (part !== 'inherit') {
+              fontFamily += part;
+            }
+
+        }
+      });
+      return new Font(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit);
+    }
+  }]);
+
+  return Font;
+}();
+Font.styles = 'normal|italic|oblique|inherit';
+Font.variants = 'normal|small-caps|inherit';
+Font.weights = 'normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit';
+
+var BoundingBox = /*#__PURE__*/function () {
+  function BoundingBox() {
+    var x1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Number.NaN;
+    var y1 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.NaN;
+    var x2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Number.NaN;
+    var y2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Number.NaN;
+
+    _classCallCheck__default["default"](this, BoundingBox);
+
+    this.x1 = x1;
+    this.y1 = y1;
+    this.x2 = x2;
+    this.y2 = y2;
+    this.addPoint(x1, y1);
+    this.addPoint(x2, y2);
+  }
+
+  _createClass__default["default"](BoundingBox, [{
+    key: "addPoint",
+    value: function addPoint(x, y) {
+      if (typeof x !== 'undefined') {
+        if (isNaN(this.x1) || isNaN(this.x2)) {
+          this.x1 = x;
+          this.x2 = x;
+        }
+
+        if (x < this.x1) {
+          this.x1 = x;
+        }
+
+        if (x > this.x2) {
+          this.x2 = x;
+        }
+      }
+
+      if (typeof y !== 'undefined') {
+        if (isNaN(this.y1) || isNaN(this.y2)) {
+          this.y1 = y;
+          this.y2 = y;
+        }
+
+        if (y < this.y1) {
+          this.y1 = y;
+        }
+
+        if (y > this.y2) {
+          this.y2 = y;
+        }
+      }
+    }
+  }, {
+    key: "addX",
+    value: function addX(x) {
+      this.addPoint(x, null);
+    }
+  }, {
+    key: "addY",
+    value: function addY(y) {
+      this.addPoint(null, y);
+    }
+  }, {
+    key: "addBoundingBox",
+    value: function addBoundingBox(boundingBox) {
+      if (!boundingBox) {
+        return;
+      }
+
+      var x1 = boundingBox.x1,
+          y1 = boundingBox.y1,
+          x2 = boundingBox.x2,
+          y2 = boundingBox.y2;
+      this.addPoint(x1, y1);
+      this.addPoint(x2, y2);
+    }
+  }, {
+    key: "sumCubic",
+    value: function sumCubic(t, p0, p1, p2, p3) {
+      return Math.pow(1 - t, 3) * p0 + 3 * Math.pow(1 - t, 2) * t * p1 + 3 * (1 - t) * Math.pow(t, 2) * p2 + Math.pow(t, 3) * p3;
+    }
+  }, {
+    key: "bezierCurveAdd",
+    value: function bezierCurveAdd(forX, p0, p1, p2, p3) {
+      var b = 6 * p0 - 12 * p1 + 6 * p2;
+      var a = -3 * p0 + 9 * p1 - 9 * p2 + 3 * p3;
+      var c = 3 * p1 - 3 * p0;
+
+      if (a === 0) {
+        if (b === 0) {
+          return;
+        }
+
+        var t = -c / b;
+
+        if (0 < t && t < 1) {
+          if (forX) {
+            this.addX(this.sumCubic(t, p0, p1, p2, p3));
+          } else {
+            this.addY(this.sumCubic(t, p0, p1, p2, p3));
+          }
+        }
+
+        return;
+      }
+
+      var b2ac = Math.pow(b, 2) - 4 * c * a;
+
+      if (b2ac < 0) {
+        return;
+      }
+
+      var t1 = (-b + Math.sqrt(b2ac)) / (2 * a);
+
+      if (0 < t1 && t1 < 1) {
+        if (forX) {
+          this.addX(this.sumCubic(t1, p0, p1, p2, p3));
+        } else {
+          this.addY(this.sumCubic(t1, p0, p1, p2, p3));
+        }
+      }
+
+      var t2 = (-b - Math.sqrt(b2ac)) / (2 * a);
+
+      if (0 < t2 && t2 < 1) {
+        if (forX) {
+          this.addX(this.sumCubic(t2, p0, p1, p2, p3));
+        } else {
+          this.addY(this.sumCubic(t2, p0, p1, p2, p3));
+        }
+      }
+    } // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html
+
+  }, {
+    key: "addBezierCurve",
+    value: function addBezierCurve(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {
+      this.addPoint(p0x, p0y);
+      this.addPoint(p3x, p3y);
+      this.bezierCurveAdd(true, p0x, p1x, p2x, p3x);
+      this.bezierCurveAdd(false, p0y, p1y, p2y, p3y);
+    }
+  }, {
+    key: "addQuadraticCurve",
+    value: function addQuadraticCurve(p0x, p0y, p1x, p1y, p2x, p2y) {
+      var cp1x = p0x + 2 / 3 * (p1x - p0x); // CP1 = QP0 + 2/3 *(QP1-QP0)
+
+      var cp1y = p0y + 2 / 3 * (p1y - p0y); // CP1 = QP0 + 2/3 *(QP1-QP0)
+
+      var cp2x = cp1x + 1 / 3 * (p2x - p0x); // CP2 = CP1 + 1/3 *(QP2-QP0)
+
+      var cp2y = cp1y + 1 / 3 * (p2y - p0y); // CP2 = CP1 + 1/3 *(QP2-QP0)
+
+      this.addBezierCurve(p0x, p0y, cp1x, cp2x, cp1y, cp2y, p2x, p2y);
+    }
+  }, {
+    key: "isPointInBox",
+    value: function isPointInBox(x, y) {
+      var x1 = this.x1,
+          y1 = this.y1,
+          x2 = this.x2,
+          y2 = this.y2;
+      return x1 <= x && x <= x2 && y1 <= y && y <= y2;
+    }
+  }, {
+    key: "x",
+    get: function get() {
+      return this.x1;
+    }
+  }, {
+    key: "y",
+    get: function get() {
+      return this.y1;
+    }
+  }, {
+    key: "width",
+    get: function get() {
+      return this.x2 - this.x1;
+    }
+  }, {
+    key: "height",
+    get: function get() {
+      return this.y2 - this.y1;
+    }
+  }]);
+
+  return BoundingBox;
+}();
+
+function _createSuper$I(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$I(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$I() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var PathParser = /*#__PURE__*/function (_SVGPathData) {
+  _inherits__default["default"](PathParser, _SVGPathData);
+
+  var _super = _createSuper$I(PathParser);
+
+  function PathParser(path) {
+    var _this;
+
+    _classCallCheck__default["default"](this, PathParser);
+
+    _this = _super.call(this, path // Fix spaces after signs.
+    .replace(/([+\-.])\s+/gm, '$1') // Remove invalid part.
+    .replace(/[^MmZzLlHhVvCcSsQqTtAae\d\s.,+-].*/g, ''));
+    _this.control = null;
+    _this.start = null;
+    _this.current = null;
+    _this.command = null;
+    _this.commands = _this.commands;
+    _this.i = -1;
+    _this.previousCommand = null;
+    _this.points = [];
+    _this.angles = [];
+    return _this;
+  }
+
+  _createClass__default["default"](PathParser, [{
+    key: "reset",
+    value: function reset() {
+      this.i = -1;
+      this.command = null;
+      this.previousCommand = null;
+      this.start = new Point(0, 0);
+      this.control = new Point(0, 0);
+      this.current = new Point(0, 0);
+      this.points = [];
+      this.angles = [];
+    }
+  }, {
+    key: "isEnd",
+    value: function isEnd() {
+      var i = this.i,
+          commands = this.commands;
+      return i >= commands.length - 1;
+    }
+  }, {
+    key: "next",
+    value: function next() {
+      var command = this.commands[++this.i];
+      this.previousCommand = this.command;
+      this.command = command;
+      return command;
+    }
+  }, {
+    key: "getPoint",
+    value: function getPoint() {
+      var xProp = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'x';
+      var yProp = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'y';
+      var point = new Point(this.command[xProp], this.command[yProp]);
+      return this.makeAbsolute(point);
+    }
+  }, {
+    key: "getAsControlPoint",
+    value: function getAsControlPoint(xProp, yProp) {
+      var point = this.getPoint(xProp, yProp);
+      this.control = point;
+      return point;
+    }
+  }, {
+    key: "getAsCurrentPoint",
+    value: function getAsCurrentPoint(xProp, yProp) {
+      var point = this.getPoint(xProp, yProp);
+      this.current = point;
+      return point;
+    }
+  }, {
+    key: "getReflectedControlPoint",
+    value: function getReflectedControlPoint() {
+      var previousCommand = this.previousCommand.type;
+
+      if (previousCommand !== svgPathdata.SVGPathData.CURVE_TO && previousCommand !== svgPathdata.SVGPathData.SMOOTH_CURVE_TO && previousCommand !== svgPathdata.SVGPathData.QUAD_TO && previousCommand !== svgPathdata.SVGPathData.SMOOTH_QUAD_TO) {
+        return this.current;
+      } // reflect point
+
+
+      var _this$current = this.current,
+          cx = _this$current.x,
+          cy = _this$current.y,
+          _this$control = this.control,
+          ox = _this$control.x,
+          oy = _this$control.y;
+      var point = new Point(2 * cx - ox, 2 * cy - oy);
+      return point;
+    }
+  }, {
+    key: "makeAbsolute",
+    value: function makeAbsolute(point) {
+      if (this.command.relative) {
+        var _this$current2 = this.current,
+            x = _this$current2.x,
+            y = _this$current2.y;
+        point.x += x;
+        point.y += y;
+      }
+
+      return point;
+    }
+  }, {
+    key: "addMarker",
+    value: function addMarker(point, from, priorTo) {
+      var points = this.points,
+          angles = this.angles; // if the last angle isn't filled in because we didn't have this point yet ...
+
+      if (priorTo && angles.length > 0 && !angles[angles.length - 1]) {
+        angles[angles.length - 1] = points[points.length - 1].angleTo(priorTo);
+      }
+
+      this.addMarkerAngle(point, from ? from.angleTo(point) : null);
+    }
+  }, {
+    key: "addMarkerAngle",
+    value: function addMarkerAngle(point, angle) {
+      this.points.push(point);
+      this.angles.push(angle);
+    }
+  }, {
+    key: "getMarkerPoints",
+    value: function getMarkerPoints() {
+      return this.points;
+    }
+  }, {
+    key: "getMarkerAngles",
+    value: function getMarkerAngles() {
+      var angles = this.angles;
+      var len = angles.length;
+
+      for (var i = 0; i < len; i++) {
+        if (!angles[i]) {
+          for (var j = i + 1; j < len; j++) {
+            if (angles[j]) {
+              angles[i] = angles[j];
+              break;
+            }
+          }
+        }
+      }
+
+      return angles;
+    }
+  }]);
+
+  return PathParser;
+}(svgPathdata.SVGPathData);
+
+function _createSuper$H(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$H(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$H() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var RenderedElement = /*#__PURE__*/function (_Element) {
+  _inherits__default["default"](RenderedElement, _Element);
+
+  var _super = _createSuper$H(RenderedElement);
+
+  function RenderedElement() {
+    var _this;
+
+    _classCallCheck__default["default"](this, RenderedElement);
+
+    _this = _super.apply(this, arguments);
+    _this.modifiedEmSizeStack = false;
+    return _this;
+  }
+
+  _createClass__default["default"](RenderedElement, [{
+    key: "calculateOpacity",
+    value: function calculateOpacity() {
+      var opacity = 1.0; // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this
+
+      var element = this;
+
+      while (element) {
+        var opacityStyle = element.getStyle('opacity', false, true); // no ancestors on style call
+
+        if (opacityStyle.hasValue(true)) {
+          opacity *= opacityStyle.getNumber();
+        }
+
+        element = element.parent;
+      }
+
+      return opacity;
+    }
+  }, {
+    key: "setContext",
+    value: function setContext(ctx) {
+      var fromMeasure = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+
+      if (!fromMeasure) {
+        // causes stack overflow when measuring text with gradients
+        // fill
+        var fillStyleProp = this.getStyle('fill');
+        var fillOpacityStyleProp = this.getStyle('fill-opacity');
+        var strokeStyleProp = this.getStyle('stroke');
+        var strokeOpacityProp = this.getStyle('stroke-opacity');
+
+        if (fillStyleProp.isUrlDefinition()) {
+          var fillStyle = fillStyleProp.getFillStyleDefinition(this, fillOpacityStyleProp);
+
+          if (fillStyle) {
+            ctx.fillStyle = fillStyle;
+          }
+        } else if (fillStyleProp.hasValue()) {
+          if (fillStyleProp.getString() === 'currentColor') {
+            fillStyleProp.setValue(this.getStyle('color').getColor());
+          }
+
+          var _fillStyle = fillStyleProp.getColor();
+
+          if (_fillStyle !== 'inherit') {
+            ctx.fillStyle = _fillStyle === 'none' ? 'rgba(0,0,0,0)' : _fillStyle;
+          }
+        }
+
+        if (fillOpacityStyleProp.hasValue()) {
+          var _fillStyle2 = new Property(this.document, 'fill', ctx.fillStyle).addOpacity(fillOpacityStyleProp).getColor();
+
+          ctx.fillStyle = _fillStyle2;
+        } // stroke
+
+
+        if (strokeStyleProp.isUrlDefinition()) {
+          var strokeStyle = strokeStyleProp.getFillStyleDefinition(this, strokeOpacityProp);
+
+          if (strokeStyle) {
+            ctx.strokeStyle = strokeStyle;
+          }
+        } else if (strokeStyleProp.hasValue()) {
+          if (strokeStyleProp.getString() === 'currentColor') {
+            strokeStyleProp.setValue(this.getStyle('color').getColor());
+          }
+
+          var _strokeStyle = strokeStyleProp.getString();
+
+          if (_strokeStyle !== 'inherit') {
+            ctx.strokeStyle = _strokeStyle === 'none' ? 'rgba(0,0,0,0)' : _strokeStyle;
+          }
+        }
+
+        if (strokeOpacityProp.hasValue()) {
+          var _strokeStyle2 = new Property(this.document, 'stroke', ctx.strokeStyle).addOpacity(strokeOpacityProp).getString();
+
+          ctx.strokeStyle = _strokeStyle2;
+        }
+
+        var strokeWidthStyleProp = this.getStyle('stroke-width');
+
+        if (strokeWidthStyleProp.hasValue()) {
+          var newLineWidth = strokeWidthStyleProp.getPixels();
+          ctx.lineWidth = !newLineWidth ? PSEUDO_ZERO // browsers don't respect 0 (or node-canvas? :-)
+          : newLineWidth;
+        }
+
+        var strokeLinecapStyleProp = this.getStyle('stroke-linecap');
+        var strokeLinejoinStyleProp = this.getStyle('stroke-linejoin');
+        var strokeMiterlimitProp = this.getStyle('stroke-miterlimit'); // NEED TEST
+        // const pointOrderStyleProp = this.getStyle('paint-order');
+
+        var strokeDasharrayStyleProp = this.getStyle('stroke-dasharray');
+        var strokeDashoffsetProp = this.getStyle('stroke-dashoffset');
+
+        if (strokeLinecapStyleProp.hasValue()) {
+          ctx.lineCap = strokeLinecapStyleProp.getString();
+        }
+
+        if (strokeLinejoinStyleProp.hasValue()) {
+          ctx.lineJoin = strokeLinejoinStyleProp.getString();
+        }
+
+        if (strokeMiterlimitProp.hasValue()) {
+          ctx.miterLimit = strokeMiterlimitProp.getNumber();
+        } // NEED TEST
+        // if (pointOrderStyleProp.hasValue()) {
+        // 	// ?
+        // 	ctx.paintOrder = pointOrderStyleProp.getValue();
+        // }
+
+
+        if (strokeDasharrayStyleProp.hasValue() && strokeDasharrayStyleProp.getString() !== 'none') {
+          var gaps = toNumbers(strokeDasharrayStyleProp.getString());
+
+          if (typeof ctx.setLineDash !== 'undefined') {
+            ctx.setLineDash(gaps);
+          } else // @ts-expect-error Handle browser prefix.
+            if (typeof ctx.webkitLineDash !== 'undefined') {
+              // @ts-expect-error Handle browser prefix.
+              ctx.webkitLineDash = gaps;
+            } else // @ts-expect-error Handle browser prefix.
+              if (typeof ctx.mozDash !== 'undefined' && !(gaps.length === 1 && gaps[0] === 0)) {
+                // @ts-expect-error Handle browser prefix.
+                ctx.mozDash = gaps;
+              }
+
+          var offset = strokeDashoffsetProp.getPixels();
+
+          if (typeof ctx.lineDashOffset !== 'undefined') {
+            ctx.lineDashOffset = offset;
+          } else // @ts-expect-error Handle browser prefix.
+            if (typeof ctx.webkitLineDashOffset !== 'undefined') {
+              // @ts-expect-error Handle browser prefix.
+              ctx.webkitLineDashOffset = offset;
+            } else // @ts-expect-error Handle browser prefix.
+              if (typeof ctx.mozDashOffset !== 'undefined') {
+                // @ts-expect-error Handle browser prefix.
+                ctx.mozDashOffset = offset;
+              }
+        }
+      } // font
+
+
+      this.modifiedEmSizeStack = false;
+
+      if (typeof ctx.font !== 'undefined') {
+        var fontStyleProp = this.getStyle('font');
+        var fontStyleStyleProp = this.getStyle('font-style');
+        var fontVariantStyleProp = this.getStyle('font-variant');
+        var fontWeightStyleProp = this.getStyle('font-weight');
+        var fontSizeStyleProp = this.getStyle('font-size');
+        var fontFamilyStyleProp = this.getStyle('font-family');
+        var font = new Font(fontStyleStyleProp.getString(), fontVariantStyleProp.getString(), fontWeightStyleProp.getString(), fontSizeStyleProp.hasValue() ? "".concat(fontSizeStyleProp.getPixels(true), "px") : '', fontFamilyStyleProp.getString(), Font.parse(fontStyleProp.getString(), ctx.font));
+        fontStyleStyleProp.setValue(font.fontStyle);
+        fontVariantStyleProp.setValue(font.fontVariant);
+        fontWeightStyleProp.setValue(font.fontWeight);
+        fontSizeStyleProp.setValue(font.fontSize);
+        fontFamilyStyleProp.setValue(font.fontFamily);
+        ctx.font = font.toString();
+
+        if (fontSizeStyleProp.isPixels()) {
+          this.document.emSize = fontSizeStyleProp.getPixels();
+          this.modifiedEmSizeStack = true;
+        }
+      }
+
+      if (!fromMeasure) {
+        // effects
+        this.applyEffects(ctx); // opacity
+
+        ctx.globalAlpha = this.calculateOpacity();
+      }
+    }
+  }, {
+    key: "clearContext",
+    value: function clearContext(ctx) {
+      _get__default["default"](_getPrototypeOf__default["default"](RenderedElement.prototype), "clearContext", this).call(this, ctx);
+
+      if (this.modifiedEmSizeStack) {
+        this.document.popEmSize();
+      }
+    }
+  }]);
+
+  return RenderedElement;
+}(Element);
+
+function _createSuper$G(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$G(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$G() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var PathElement = /*#__PURE__*/function (_RenderedElement) {
+  _inherits__default["default"](PathElement, _RenderedElement);
+
+  var _super = _createSuper$G(PathElement);
+
+  function PathElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default["default"](this, PathElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+    _this.type = 'path';
+    _this.pathParser = null;
+    _this.pathParser = new PathParser(_this.getAttribute('d').getString());
+    return _this;
+  }
+
+  _createClass__default["default"](PathElement, [{
+    key: "path",
+    value: function path(ctx) {
+      var pathParser = this.pathParser;
+      var boundingBox = new BoundingBox();
+      pathParser.reset();
+
+      if (ctx) {
+        ctx.beginPath();
+      }
+
+      while (!pathParser.isEnd()) {
+        switch (pathParser.next().type) {
+          case PathParser.MOVE_TO:
+            this.pathM(ctx, boundingBox);
+            break;
+
+          case PathParser.LINE_TO:
+            this.pathL(ctx, boundingBox);
+            break;
+
+          case PathParser.HORIZ_LINE_TO:
+            this.pathH(ctx, boundingBox);
+            break;
+
+          case PathParser.VERT_LINE_TO:
+            this.pathV(ctx, boundingBox);
+            break;
+
+          case PathParser.CURVE_TO:
+            this.pathC(ctx, boundingBox);
+            break;
+
+          case PathParser.SMOOTH_CURVE_TO:
+            this.pathS(ctx, boundingBox);
+            break;
+
+          case PathParser.QUAD_TO:
+            this.pathQ(ctx, boundingBox);
+            break;
+
+          case PathParser.SMOOTH_QUAD_TO:
+            this.pathT(ctx, boundingBox);
+            break;
+
+          case PathParser.ARC:
+            this.pathA(ctx, boundingBox);
+            break;
+
+          case PathParser.CLOSE_PATH:
+            this.pathZ(ctx, boundingBox);
+            break;
+        }
+      }
+
+      return boundingBox;
+    }
+  }, {
+    key: "getBoundingBox",
+    value: function getBoundingBox(_) {
+      return this.path();
+    }
+  }, {
+    key: "getMarkers",
+    value: function getMarkers() {
+      var pathParser = this.pathParser;
+      var points = pathParser.getMarkerPoints();
+      var angles = pathParser.getMarkerAngles();
+      var markers = points.map(function (point, i) {
+        return [point, angles[i]];
+      });
+      return markers;
+    }
+  }, {
+    key: "renderChildren",
+    value: function renderChildren(ctx) {
+      this.path(ctx);
+      this.document.screen.mouse.checkPath(this, ctx);
+      var fillRuleStyleProp = this.getStyle('fill-rule');
+
+      if (ctx.fillStyle !== '') {
+        if (fillRuleStyleProp.getString('inherit') !== 'inherit') {
+          ctx.fill(fillRuleStyleProp.getString());
+        } else {
+          ctx.fill();
+        }
+      }
+
+      if (ctx.strokeStyle !== '') {
+        if (this.getAttribute('vector-effect').getString() === 'non-scaling-stroke') {
+          ctx.save();
+          ctx.setTransform(1, 0, 0, 1, 0, 0);
+          ctx.stroke();
+          ctx.restore();
+        } else {
+          ctx.stroke();
+        }
+      }
+
+      var markers = this.getMarkers();
+
+      if (markers) {
+        var markersLastIndex = markers.length - 1;
+        var markerStartStyleProp = this.getStyle('marker-start');
+        var markerMidStyleProp = this.getStyle('marker-mid');
+        var markerEndStyleProp = this.getStyle('marker-end');
+
+        if (markerStartStyleProp.isUrlDefinition()) {
+          var marker = markerStartStyleProp.getDefinition();
+
+          var _markers$ = _slicedToArray__default["default"](markers[0], 2),
+              point = _markers$[0],
+              angle = _markers$[1];
+
+          marker.render(ctx, point, angle);
+        }
+
+        if (markerMidStyleProp.isUrlDefinition()) {
+          var _marker = markerMidStyleProp.getDefinition();
+
+          for (var i = 1; i < markersLastIndex; i++) {
+            var _markers$i = _slicedToArray__default["default"](markers[i], 2),
+                _point = _markers$i[0],
+                _angle = _markers$i[1];
+
+            _marker.render(ctx, _point, _angle);
+          }
+        }
+
+        if (markerEndStyleProp.isUrlDefinition()) {
+          var _marker2 = markerEndStyleProp.getDefinition();
+
+          var _markers$markersLastI = _slicedToArray__default["default"](markers[markersLastIndex], 2),
+              _point2 = _markers$markersLastI[0],
+              _angle2 = _markers$markersLastI[1];
+
+          _marker2.render(ctx, _point2, _angle2);
+        }
+      }
+    }
+  }, {
+    key: "pathM",
+    value: function pathM(ctx, boundingBox) {
+      var pathParser = this.pathParser;
+
+      var _PathElement$pathM = PathElement.pathM(pathParser),
+          point = _PathElement$pathM.point;
+
+      var x = point.x,
+          y = point.y;
+      pathParser.addMarker(point);
+      boundingBox.addPoint(x, y);
+
+      if (ctx) {
+        ctx.moveTo(x, y);
+      }
+    }
+  }, {
+    key: "pathL",
+    value: function pathL(ctx, boundingBox) {
+      var pathParser = this.pathParser;
+
+      var _PathElement$pathL = PathElement.pathL(pathParser),
+          current = _PathElement$pathL.current,
+          point = _PathElement$pathL.point;
+
+      var x = point.x,
+          y = point.y;
+      pathParser.addMarker(point, current);
+      boundingBox.addPoint(x, y);
+
+      if (ctx) {
+        ctx.lineTo(x, y);
+      }
+    }
+  }, {
+    key: "pathH",
+    value: function pathH(ctx, boundingBox) {
+      var pathParser = this.pathParser;
+
+      var _PathElement$pathH = PathElement.pathH(pathParser),
+          current = _PathElement$pathH.current,
+          point = _PathElement$pathH.point;
+
+      var x = point.x,
+          y = point.y;
+      pathParser.addMarker(point, current);
+      boundingBox.addPoint(x, y);
+
+      if (ctx) {
+        ctx.lineTo(x, y);
+      }
+    }
+  }, {
+    key: "pathV",
+    value: function pathV(ctx, boundingBox) {
+      var pathParser = this.pathParser;
+
+      var _PathElement$pathV = PathElement.pathV(pathParser),
+          current = _PathElement$pathV.current,
+          point = _PathElement$pathV.point;
+
+      var x = point.x,
+          y = point.y;
+      pathParser.addMarker(point, current);
+      boundingBox.addPoint(x, y);
+
+      if (ctx) {
+        ctx.lineTo(x, y);
+      }
+    }
+  }, {
+    key: "pathC",
+    value: function pathC(ctx, boundingBox) {
+      var pathParser = this.pathParser;
+
+      var _PathElement$pathC = PathElement.pathC(pathParser),
+          current = _PathElement$pathC.current,
+          point = _PathElement$pathC.point,
+          controlPoint = _PathElement$pathC.controlPoint,
+          currentPoint = _PathElement$pathC.currentPoint;
+
+      pathParser.addMarker(currentPoint, controlPoint, point);
+      boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+
+      if (ctx) {
+        ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+      }
+    }
+  }, {
+    key: "pathS",
+    value: function pathS(ctx, boundingBox) {
+      var pathParser = this.pathParser;
+
+      var _PathElement$pathS = PathElement.pathS(pathParser),
+          current = _PathElement$pathS.current,
+          point = _PathElement$pathS.point,
+          controlPoint = _PathElement$pathS.controlPoint,
+          currentPoint = _PathElement$pathS.currentPoint;
+
+      pathParser.addMarker(currentPoint, controlPoint, point);
+      boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+
+      if (ctx) {
+        ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+      }
+    }
+  }, {
+    key: "pathQ",
+    value: function pathQ(ctx, boundingBox) {
+      var pathParser = this.pathParser;
+
+      var _PathElement$pathQ = PathElement.pathQ(pathParser),
+          current = _PathElement$pathQ.current,
+          controlPoint = _PathElement$pathQ.controlPoint,
+          currentPoint = _PathElement$pathQ.currentPoint;
+
+      pathParser.addMarker(currentPoint, controlPoint, controlPoint);
+      boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+
+      if (ctx) {
+        ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+      }
+    }
+  }, {
+    key: "pathT",
+    value: function pathT(ctx, boundingBox) {
+      var pathParser = this.pathParser;
+
+      var _PathElement$pathT = PathElement.pathT(pathParser),
+          current = _PathElement$pathT.current,
+          controlPoint = _PathElement$pathT.controlPoint,
+          currentPoint = _PathElement$pathT.currentPoint;
+
+      pathParser.addMarker(currentPoint, controlPoint, controlPoint);
+      boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+
+      if (ctx) {
+        ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+      }
+    }
+  }, {
+    key: "pathA",
+    value: function pathA(ctx, boundingBox) {
+      var pathParser = this.pathParser;
+
+      var _PathElement$pathA = PathElement.pathA(pathParser),
+          currentPoint = _PathElement$pathA.currentPoint,
+          rX = _PathElement$pathA.rX,
+          rY = _PathElement$pathA.rY,
+          sweepFlag = _PathElement$pathA.sweepFlag,
+          xAxisRotation = _PathElement$pathA.xAxisRotation,
+          centp = _PathElement$pathA.centp,
+          a1 = _PathElement$pathA.a1,
+          ad = _PathElement$pathA.ad; // for markers
+
+
+      var dir = 1 - sweepFlag ? 1.0 : -1.0;
+      var ah = a1 + dir * (ad / 2.0);
+      var halfWay = new Point(centp.x + rX * Math.cos(ah), centp.y + rY * Math.sin(ah));
+      pathParser.addMarkerAngle(halfWay, ah - dir * Math.PI / 2);
+      pathParser.addMarkerAngle(currentPoint, ah - dir * Math.PI);
+      boundingBox.addPoint(currentPoint.x, currentPoint.y); // TODO: this is too naive, make it better
+
+      if (ctx && !isNaN(a1) && !isNaN(ad)) {
+        var r = rX > rY ? rX : rY;
+        var sx = rX > rY ? 1 : rX / rY;
+        var sy = rX > rY ? rY / rX : 1;
+        ctx.translate(centp.x, centp.y);
+        ctx.rotate(xAxisRotation);
+        ctx.scale(sx, sy);
+        ctx.arc(0, 0, r, a1, a1 + ad, Boolean(1 - sweepFlag));
+        ctx.scale(1 / sx, 1 / sy);
+        ctx.rotate(-xAxisRotation);
+        ctx.translate(-centp.x, -centp.y);
+      }
+    }
+  }, {
+    key: "pathZ",
+    value: function pathZ(ctx, boundingBox) {
+      PathElement.pathZ(this.pathParser);
+
+      if (ctx) {
+        // only close path if it is not a straight line
+        if (boundingBox.x1 !== boundingBox.x2 && boundingBox.y1 !== boundingBox.y2) {
+          ctx.closePath();
+        }
+      }
+    }
+  }], [{
+    key: "pathM",
+    value: function pathM(pathParser) {
+      var point = pathParser.getAsCurrentPoint();
+      pathParser.start = pathParser.current;
+      return {
+        point: point
+      };
+    }
+  }, {
+    key: "pathL",
+    value: function pathL(pathParser) {
+      var current = pathParser.current;
+      var point = pathParser.getAsCurrentPoint();
+      return {
+        current: current,
+        point: point
+      };
+    }
+  }, {
+    key: "pathH",
+    value: function pathH(pathParser) {
+      var current = pathParser.current,
+          command = pathParser.command;
+      var point = new Point((command.relative ? current.x : 0) + command.x, current.y);
+      pathParser.current = point;
+      return {
+        current: current,
+        point: point
+      };
+    }
+  }, {
+    key: "pathV",
+    value: function pathV(pathParser) {
+      var current = pathParser.current,
+          command = pathParser.command;
+      var point = new Point(current.x, (command.relative ? current.y : 0) + command.y);
+      pathParser.current = point;
+      return {
+        current: current,
+        point: point
+      };
+    }
+  }, {
+    key: "pathC",
+    value: function pathC(pathParser) {
+      var current = pathParser.current;
+      var point = pathParser.getPoint('x1', 'y1');
+      var controlPoint = pathParser.getAsControlPoint('x2', 'y2');
+      var currentPoint = pathParser.getAsCurrentPoint();
+      return {
+        current: current,
+        point: point,
+        controlPoint: controlPoint,
+        currentPoint: currentPoint
+      };
+    }
+  }, {
+    key: "pathS",
+    value: function pathS(pathParser) {
+      var current = pathParser.current;
+      var point = pathParser.getReflectedControlPoint();
+      var controlPoint = pathParser.getAsControlPoint('x2', 'y2');
+      var currentPoint = pathParser.getAsCurrentPoint();
+      return {
+        current: current,
+        point: point,
+        controlPoint: controlPoint,
+        currentPoint: currentPoint
+      };
+    }
+  }, {
+    key: "pathQ",
+    value: function pathQ(pathParser) {
+      var current = pathParser.current;
+      var controlPoint = pathParser.getAsControlPoint('x1', 'y1');
+      var currentPoint = pathParser.getAsCurrentPoint();
+      return {
+        current: current,
+        controlPoint: controlPoint,
+        currentPoint: currentPoint
+      };
+    }
+  }, {
+    key: "pathT",
+    value: function pathT(pathParser) {
+      var current = pathParser.current;
+      var controlPoint = pathParser.getReflectedControlPoint();
+      pathParser.control = controlPoint;
+      var currentPoint = pathParser.getAsCurrentPoint();
+      return {
+        current: current,
+        controlPoint: controlPoint,
+        currentPoint: currentPoint
+      };
+    }
+  }, {
+    key: "pathA",
+    value: function pathA(pathParser) {
+      var current = pathParser.current,
+          command = pathParser.command;
+      var rX = command.rX,
+          rY = command.rY,
+          xRot = command.xRot,
+          lArcFlag = command.lArcFlag,
+          sweepFlag = command.sweepFlag;
+      var xAxisRotation = xRot * (Math.PI / 180.0);
+      var currentPoint = pathParser.getAsCurrentPoint(); // Conversion from endpoint to center parameterization
+      // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes
+      // x1', y1'
+
+      var currp = new Point(Math.cos(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.sin(xAxisRotation) * (current.y - currentPoint.y) / 2.0, -Math.sin(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * (current.y - currentPoint.y) / 2.0); // adjust radii
+
+      var l = Math.pow(currp.x, 2) / Math.pow(rX, 2) + Math.pow(currp.y, 2) / Math.pow(rY, 2);
+
+      if (l > 1) {
+        rX *= Math.sqrt(l);
+        rY *= Math.sqrt(l);
+      } // cx', cy'
+
+
+      var s = (lArcFlag === sweepFlag ? -1 : 1) * Math.sqrt((Math.pow(rX, 2) * Math.pow(rY, 2) - Math.pow(rX, 2) * Math.pow(currp.y, 2) - Math.pow(rY, 2) * Math.pow(currp.x, 2)) / (Math.pow(rX, 2) * Math.pow(currp.y, 2) + Math.pow(rY, 2) * Math.pow(currp.x, 2)));
+
+      if (isNaN(s)) {
+        s = 0;
+      }
+
+      var cpp = new Point(s * rX * currp.y / rY, s * -rY * currp.x / rX); // cx, cy
+
+      var centp = new Point((current.x + currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * cpp.x - Math.sin(xAxisRotation) * cpp.y, (current.y + currentPoint.y) / 2.0 + Math.sin(xAxisRotation) * cpp.x + Math.cos(xAxisRotation) * cpp.y); // initial angle
+
+      var a1 = vectorsAngle([1, 0], [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY]); // θ1
+      // angle delta
+
+      var u = [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY];
+      var v = [(-currp.x - cpp.x) / rX, (-currp.y - cpp.y) / rY];
+      var ad = vectorsAngle(u, v); // Δθ
+
+      if (vectorsRatio(u, v) <= -1) {
+        ad = Math.PI;
+      }
+
+      if (vectorsRatio(u, v) >= 1) {
+        ad = 0;
+      }
+
+      return {
+        currentPoint: currentPoint,
+        rX: rX,
+        rY: rY,
+        sweepFlag: sweepFlag,
+        xAxisRotation: xAxisRotation,
+        centp: centp,
+        a1: a1,
+        ad: ad
+      };
+    }
+  }, {
+    key: "pathZ",
+    value: function pathZ(pathParser) {
+      pathParser.current = pathParser.start;
+    }
+  }]);
+
+  return PathElement;
+}(RenderedElement);
+
+function _createSuper$F(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$F(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$F() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var GlyphElement = /*#__PURE__*/function (_PathElement) {
+  _inherits__default["default"](GlyphElement, _PathElement);
+
+  var _super = _createSuper$F(GlyphElement);
+
+  function GlyphElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default["default"](this, GlyphElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+    _this.type = 'glyph';
+    _this.horizAdvX = _this.getAttribute('horiz-adv-x').getNumber();
+    _this.unicode = _this.getAttribute('unicode').getString();
+    _this.arabicForm = _this.getAttribute('arabic-form').getString();
+    return _this;
+  }
+
+  return GlyphElement;
+}(PathElement);
+
+function _createSuper$E(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$E(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$E() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var TextElement = /*#__PURE__*/function (_RenderedElement) {
+  _inherits__default["default"](TextElement, _RenderedElement);
+
+  var _super = _createSuper$E(TextElement);
+
+  function TextElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default["default"](this, TextElement);
+
+    _this = _super.call(this, document, node, (this instanceof TextElement ? this.constructor : void 0) === TextElement ? true : captureTextNodes);
+    _this.type = 'text';
+    _this.x = 0;
+    _this.y = 0;
+    _this.measureCache = -1;
+    return _this;
+  }
+
+  _createClass__default["default"](TextElement, [{
+    key: "setContext",
+    value: function setContext(ctx) {
+      var fromMeasure = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+
+      _get__default["default"](_getPrototypeOf__default["default"](TextElement.prototype), "setContext", this).call(this, ctx, fromMeasure);
+
+      var textBaseline = this.getStyle('dominant-baseline').getTextBaseline() || this.getStyle('alignment-baseline').getTextBaseline();
+
+      if (textBaseline) {
+        ctx.textBaseline = textBaseline;
+      }
+    }
+  }, {
+    key: "initializeCoordinates",
+    value: function initializeCoordinates() {
+      this.x = 0;
+      this.y = 0;
+      this.leafTexts = [];
+      this.textChunkStart = 0;
+      this.minX = Number.POSITIVE_INFINITY;
+      this.maxX = Number.NEGATIVE_INFINITY;
+    }
+  }, {
+    key: "getBoundingBox",
+    value: function getBoundingBox(ctx) {
+      var _this2 = this;
+
+      if (this.type !== 'text') {
+        return this.getTElementBoundingBox(ctx);
+      } // first, calculate child positions
+
+
+      this.initializeCoordinates();
+      this.adjustChildCoordinatesRecursive(ctx);
+      var boundingBox = null; // then calculate bounding box
+
+      this.children.forEach(function (_, i) {
+        var childBoundingBox = _this2.getChildBoundingBox(ctx, _this2, _this2, i);
+
+        if (!boundingBox) {
+          boundingBox = childBoundingBox;
+        } else {
+          boundingBox.addBoundingBox(childBoundingBox);
+        }
+      });
+      return boundingBox;
+    }
+  }, {
+    key: "getFontSize",
+    value: function getFontSize() {
+      var document = this.document,
+          parent = this.parent;
+      var inheritFontSize = Font.parse(document.ctx.font).fontSize;
+      var fontSize = parent.getStyle('font-size').getNumber(inheritFontSize);
+      return fontSize;
+    }
+  }, {
+    key: "getTElementBoundingBox",
+    value: function getTElementBoundingBox(ctx) {
+      var fontSize = this.getFontSize();
+      return new BoundingBox(this.x, this.y - fontSize, this.x + this.measureText(ctx), this.y);
+    }
+  }, {
+    key: "getGlyph",
+    value: function getGlyph(font, text, i) {
+      var char = text[i];
+      var glyph = null;
+
+      if (font.isArabic) {
+        var len = text.length;
+        var prevChar = text[i - 1];
+        var nextChar = text[i + 1];
+        var arabicForm = 'isolated';
+
+        if ((i === 0 || prevChar === ' ') && i < len - 1 && nextChar !== ' ') {
+          arabicForm = 'terminal';
+        }
+
+        if (i > 0 && prevChar !== ' ' && i < len - 1 && nextChar !== ' ') {
+          arabicForm = 'medial';
+        }
+
+        if (i > 0 && prevChar !== ' ' && (i === len - 1 || nextChar === ' ')) {
+          arabicForm = 'initial';
+        }
+
+        if (typeof font.glyphs[char] !== 'undefined') {
+          // NEED TEST
+          var maybeGlyph = font.glyphs[char];
+          glyph = maybeGlyph instanceof GlyphElement ? maybeGlyph : maybeGlyph[arabicForm];
+        }
+      } else {
+        glyph = font.glyphs[char];
+      }
+
+      if (!glyph) {
+        glyph = font.missingGlyph;
+      }
+
+      return glyph;
+    }
+  }, {
+    key: "getText",
+    value: function getText() {
+      return '';
+    }
+  }, {
+    key: "getTextFromNode",
+    value: function getTextFromNode(node) {
+      var textNode = node || this.node;
+      var childNodes = Array.from(textNode.parentNode.childNodes);
+      var index = childNodes.indexOf(textNode);
+      var lastIndex = childNodes.length - 1;
+      var text = compressSpaces( // textNode.value
+      // || textNode.text
+      textNode.textContent || '');
+
+      if (index === 0) {
+        text = trimLeft(text);
+      }
+
+      if (index === lastIndex) {
+        text = trimRight(text);
+      }
+
+      return text;
+    }
+  }, {
+    key: "renderChildren",
+    value: function renderChildren(ctx) {
+      var _this3 = this;
+
+      if (this.type !== 'text') {
+        this.renderTElementChildren(ctx);
+        return;
+      } // first, calculate child positions
+
+
+      this.initializeCoordinates();
+      this.adjustChildCoordinatesRecursive(ctx); // then render
+
+      this.children.forEach(function (_, i) {
+        _this3.renderChild(ctx, _this3, _this3, i);
+      });
+      var mouse = this.document.screen.mouse; // Do not calc bounding box if mouse is not working.
+
+      if (mouse.isWorking()) {
+        mouse.checkBoundingBox(this, this.getBoundingBox(ctx));
+      }
+    }
+  }, {
+    key: "renderTElementChildren",
+    value: function renderTElementChildren(ctx) {
+      var document = this.document,
+          parent = this.parent;
+      var renderText = this.getText();
+      var customFont = parent.getStyle('font-family').getDefinition();
+
+      if (customFont) {
+        var unitsPerEm = customFont.fontFace.unitsPerEm;
+        var ctxFont = Font.parse(document.ctx.font);
+        var fontSize = parent.getStyle('font-size').getNumber(ctxFont.fontSize);
+        var fontStyle = parent.getStyle('font-style').getString(ctxFont.fontStyle);
+        var scale = fontSize / unitsPerEm;
+        var text = customFont.isRTL ? renderText.split('').reverse().join('') : renderText;
+        var dx = toNumbers(parent.getAttribute('dx').getString());
+        var len = text.length;
+
+        for (var i = 0; i < len; i++) {
+          var glyph = this.getGlyph(customFont, text, i);
+          ctx.translate(this.x, this.y);
+          ctx.scale(scale, -scale);
+          var lw = ctx.lineWidth;
+          ctx.lineWidth = ctx.lineWidth * unitsPerEm / fontSize;
+
+          if (fontStyle === 'italic') {
+            ctx.transform(1, 0, .4, 1, 0, 0);
+          }
+
+          glyph.render(ctx);
+
+          if (fontStyle === 'italic') {
+            ctx.transform(1, 0, -.4, 1, 0, 0);
+          }
+
+          ctx.lineWidth = lw;
+          ctx.scale(1 / scale, -1 / scale);
+          ctx.translate(-this.x, -this.y);
+          this.x += fontSize * (glyph.horizAdvX || customFont.horizAdvX) / unitsPerEm;
+
+          if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {
+            this.x += dx[i];
+          }
+        }
+
+        return;
+      }
+
+      var x = this.x,
+          y = this.y; // NEED TEST
+      // if (ctx.paintOrder === 'stroke') {
+      // 	if (ctx.strokeStyle) {
+      // 		ctx.strokeText(renderText, x, y);
+      // 	}
+      // 	if (ctx.fillStyle) {
+      // 		ctx.fillText(renderText, x, y);
+      // 	}
+      // } else {
+
+      if (ctx.fillStyle) {
+        ctx.fillText(renderText, x, y);
+      }
+
+      if (ctx.strokeStyle) {
+        ctx.strokeText(renderText, x, y);
+      } // }
+
+    }
+  }, {
+    key: "applyAnchoring",
+    value: function applyAnchoring() {
+      if (this.textChunkStart >= this.leafTexts.length) {
+        return;
+      } // This is basically the "Apply anchoring" part of https://www.w3.org/TR/SVG2/text.html#TextLayoutAlgorithm.
+      // The difference is that we apply the anchoring as soon as a chunk is finished. This saves some extra looping.
+      // Vertical text is not supported.
+
+
+      var firstElement = this.leafTexts[this.textChunkStart];
+      var textAnchor = firstElement.getStyle('text-anchor').getString('start');
+      var isRTL = false; // we treat RTL like LTR
+
+      var shift = 0;
+
+      if (textAnchor === 'start' && !isRTL || textAnchor === 'end' && isRTL) {
+        shift = firstElement.x - this.minX;
+      } else if (textAnchor === 'end' && !isRTL || textAnchor === 'start' && isRTL) {
+        shift = firstElement.x - this.maxX;
+      } else {
+        shift = firstElement.x - (this.minX + this.maxX) / 2;
+      }
+
+      for (var i = this.textChunkStart; i < this.leafTexts.length; i++) {
+        this.leafTexts[i].x += shift;
+      } // start new chunk
+
+
+      this.minX = Number.POSITIVE_INFINITY;
+      this.maxX = Number.NEGATIVE_INFINITY;
+      this.textChunkStart = this.leafTexts.length;
+    }
+  }, {
+    key: "adjustChildCoordinatesRecursive",
+    value: function adjustChildCoordinatesRecursive(ctx) {
+      var _this4 = this;
+
+      this.children.forEach(function (_, i) {
+        _this4.adjustChildCoordinatesRecursiveCore(ctx, _this4, _this4, i);
+      });
+      this.applyAnchoring();
+    }
+  }, {
+    key: "adjustChildCoordinatesRecursiveCore",
+    value: function adjustChildCoordinatesRecursiveCore(ctx, textParent, parent, i) {
+      var child = parent.children[i];
+
+      if (child.children.length > 0) {
+        child.children.forEach(function (_, i) {
+          textParent.adjustChildCoordinatesRecursiveCore(ctx, textParent, child, i);
+        });
+      } else {
+        // only leafs are relevant
+        this.adjustChildCoordinates(ctx, textParent, parent, i);
+      }
+    }
+  }, {
+    key: "adjustChildCoordinates",
+    value: function adjustChildCoordinates(ctx, textParent, parent, i) {
+      var child = parent.children[i];
+
+      if (typeof child.measureText !== 'function') {
+        return child;
+      }
+
+      ctx.save();
+      child.setContext(ctx, true);
+      var xAttr = child.getAttribute('x');
+      var yAttr = child.getAttribute('y');
+      var dxAttr = child.getAttribute('dx');
+      var dyAttr = child.getAttribute('dy');
+      var customFont = child.getStyle('font-family').getDefinition();
+      var isRTL = Boolean(customFont) && customFont.isRTL;
+
+      if (i === 0) {
+        // First children inherit attributes from parent(s). Positional attributes
+        // are only inherited from a parent to it's first child.
+        if (!xAttr.hasValue()) {
+          xAttr.setValue(child.getInheritedAttribute('x'));
+        }
+
+        if (!yAttr.hasValue()) {
+          yAttr.setValue(child.getInheritedAttribute('y'));
+        }
+
+        if (!dxAttr.hasValue()) {
+          dxAttr.setValue(child.getInheritedAttribute('dx'));
+        }
+
+        if (!dyAttr.hasValue()) {
+          dyAttr.setValue(child.getInheritedAttribute('dy'));
+        }
+      }
+
+      var width = child.measureText(ctx);
+
+      if (isRTL) {
+        textParent.x -= width;
+      }
+
+      if (xAttr.hasValue()) {
+        // an "x" attribute marks the start of a new chunk
+        textParent.applyAnchoring();
+        child.x = xAttr.getPixels('x');
+
+        if (dxAttr.hasValue()) {
+          child.x += dxAttr.getPixels('x');
+        }
+      } else {
+        if (dxAttr.hasValue()) {
+          textParent.x += dxAttr.getPixels('x');
+        }
+
+        child.x = textParent.x;
+      }
+
+      textParent.x = child.x;
+
+      if (!isRTL) {
+        textParent.x += width;
+      }
+
+      if (yAttr.hasValue()) {
+        child.y = yAttr.getPixels('y');
+
+        if (dyAttr.hasValue()) {
+          child.y += dyAttr.getPixels('y');
+        }
+      } else {
+        if (dyAttr.hasValue()) {
+          textParent.y += dyAttr.getPixels('y');
+        }
+
+        child.y = textParent.y;
+      }
+
+      textParent.y = child.y; // update the current chunk and it's bounds
+
+      textParent.leafTexts.push(child);
+      textParent.minX = Math.min(textParent.minX, child.x, child.x + width);
+      textParent.maxX = Math.max(textParent.maxX, child.x, child.x + width);
+      child.clearContext(ctx);
+      ctx.restore();
+      return child;
+    }
+  }, {
+    key: "getChildBoundingBox",
+    value: function getChildBoundingBox(ctx, textParent, parent, i) {
+      var child = parent.children[i]; // not a text node?
+
+      if (typeof child.getBoundingBox !== 'function') {
+        return null;
+      }
+
+      var boundingBox = child.getBoundingBox(ctx);
+
+      if (!boundingBox) {
+        return null;
+      }
+
+      child.children.forEach(function (_, i) {
+        var childBoundingBox = textParent.getChildBoundingBox(ctx, textParent, child, i);
+        boundingBox.addBoundingBox(childBoundingBox);
+      });
+      return boundingBox;
+    }
+  }, {
+    key: "renderChild",
+    value: function renderChild(ctx, textParent, parent, i) {
+      var child = parent.children[i];
+      child.render(ctx);
+      child.children.forEach(function (_, i) {
+        textParent.renderChild(ctx, textParent, child, i);
+      });
+    }
+  }, {
+    key: "measureText",
+    value: function measureText(ctx) {
+      var measureCache = this.measureCache;
+
+      if (~measureCache) {
+        return measureCache;
+      }
+
+      var renderText = this.getText();
+      var measure = this.measureTargetText(ctx, renderText);
+      this.measureCache = measure;
+      return measure;
+    }
+  }, {
+    key: "measureTargetText",
+    value: function measureTargetText(ctx, targetText) {
+      if (!targetText.length) {
+        return 0;
+      }
+
+      var parent = this.parent;
+      var customFont = parent.getStyle('font-family').getDefinition();
+
+      if (customFont) {
+        var fontSize = this.getFontSize();
+        var text = customFont.isRTL ? targetText.split('').reverse().join('') : targetText;
+        var dx = toNumbers(parent.getAttribute('dx').getString());
+        var len = text.length;
+        var _measure = 0;
+
+        for (var i = 0; i < len; i++) {
+          var glyph = this.getGlyph(customFont, text, i);
+          _measure += (glyph.horizAdvX || customFont.horizAdvX) * fontSize / customFont.fontFace.unitsPerEm;
+
+          if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {
+            _measure += dx[i];
+          }
+        }
+
+        return _measure;
+      }
+
+      if (!ctx.measureText) {
+        return targetText.length * 10;
+      }
+
+      ctx.save();
+      this.setContext(ctx, true);
+
+      var _ctx$measureText = ctx.measureText(targetText),
+          measure = _ctx$measureText.width;
+
+      this.clearContext(ctx);
+      ctx.restore();
+      return measure;
+    }
+    /**
+     * Inherits positional attributes from {@link TextElement} parent(s). Attributes
+     * are only inherited from a parent to its first child.
+     * @param name - The attribute name.
+     * @returns The attribute value or null.
+     */
+
+  }, {
+    key: "getInheritedAttribute",
+    value: function getInheritedAttribute(name) {
+      // eslint-disable-next-line @typescript-eslint/no-this-alias,consistent-this
+      var current = this;
+
+      while (current instanceof TextElement && current.isFirstChild()) {
+        var parentAttr = current.parent.getAttribute(name);
+
+        if (parentAttr.hasValue(true)) {
+          return parentAttr.getValue('0');
+        }
+
+        current = current.parent;
+      }
+
+      return null;
+    }
+  }]);
+
+  return TextElement;
+}(RenderedElement);
+
+function _createSuper$D(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$D(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$D() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var TSpanElement = /*#__PURE__*/function (_TextElement) {
+  _inherits__default["default"](TSpanElement, _TextElement);
+
+  var _super = _createSuper$D(TSpanElement);
+
+  function TSpanElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default["default"](this, TSpanElement);
+
+    _this = _super.call(this, document, node, (this instanceof TSpanElement ? this.constructor : void 0) === TSpanElement ? true : captureTextNodes);
+    _this.type = 'tspan'; // if this node has children, then they own the text
+
+    _this.text = _this.children.length > 0 ? '' : _this.getTextFromNode();
+    return _this;
+  }
+
+  _createClass__default["default"](TSpanElement, [{
+    key: "getText",
+    value: function getText() {
+      return this.text;
+    }
+  }]);
+
+  return TSpanElement;
+}(TextElement);
+
+function _createSuper$C(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$C(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$C() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var TextNode = /*#__PURE__*/function (_TSpanElement) {
+  _inherits__default["default"](TextNode, _TSpanElement);
+
+  var _super = _createSuper$C(TextNode);
+
+  function TextNode() {
+    var _this;
+
+    _classCallCheck__default["default"](this, TextNode);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'textNode';
+    return _this;
+  }
+
+  return TextNode;
+}(TSpanElement);
+
+function _createSuper$B(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$B(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$B() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var SVGElement = /*#__PURE__*/function (_RenderedElement) {
+  _inherits__default["default"](SVGElement, _RenderedElement);
+
+  var _super = _createSuper$B(SVGElement);
+
+  function SVGElement() {
+    var _this;
+
+    _classCallCheck__default["default"](this, SVGElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'svg';
+    _this.root = false;
+    return _this;
+  }
+
+  _createClass__default["default"](SVGElement, [{
+    key: "setContext",
+    value: function setContext(ctx) {
+      var _this$node$parentNode;
+
+      var document = this.document;
+      var screen = document.screen,
+          window = document.window;
+      var canvas = ctx.canvas;
+      screen.setDefaults(ctx);
+
+      if (canvas.style && typeof ctx.font !== 'undefined' && window && typeof window.getComputedStyle !== 'undefined') {
+        ctx.font = window.getComputedStyle(canvas).getPropertyValue('font');
+        var fontSizeProp = new Property(document, 'fontSize', Font.parse(ctx.font).fontSize);
+
+        if (fontSizeProp.hasValue()) {
+          document.rootEmSize = fontSizeProp.getPixels('y');
+          document.emSize = document.rootEmSize;
+        }
+      } // create new view port
+
+
+      if (!this.getAttribute('x').hasValue()) {
+        this.getAttribute('x', true).setValue(0);
+      }
+
+      if (!this.getAttribute('y').hasValue()) {
+        this.getAttribute('y', true).setValue(0);
+      }
+
+      var _screen$viewPort = screen.viewPort,
+          width = _screen$viewPort.width,
+          height = _screen$viewPort.height;
+
+      if (!this.getStyle('width').hasValue()) {
+        this.getStyle('width', true).setValue('100%');
+      }
+
+      if (!this.getStyle('height').hasValue()) {
+        this.getStyle('height', true).setValue('100%');
+      }
+
+      if (!this.getStyle('color').hasValue()) {
+        this.getStyle('color', true).setValue('black');
+      }
+
+      var refXAttr = this.getAttribute('refX');
+      var refYAttr = this.getAttribute('refY');
+      var viewBoxAttr = this.getAttribute('viewBox');
+      var viewBox = viewBoxAttr.hasValue() ? toNumbers(viewBoxAttr.getString()) : null;
+      var clip = !this.root && this.getStyle('overflow').getValue('hidden') !== 'visible';
+      var minX = 0;
+      var minY = 0;
+      var clipX = 0;
+      var clipY = 0;
+
+      if (viewBox) {
+        minX = viewBox[0];
+        minY = viewBox[1];
+      }
+
+      if (!this.root) {
+        width = this.getStyle('width').getPixels('x');
+        height = this.getStyle('height').getPixels('y');
+
+        if (this.type === 'marker') {
+          clipX = minX;
+          clipY = minY;
+          minX = 0;
+          minY = 0;
+        }
+      }
+
+      screen.viewPort.setCurrent(width, height); // Default value of transform-origin is center only for root SVG elements
+      // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/transform-origin
+
+      if (this.node // is not temporary SVGElement
+      && (!this.parent || ((_this$node$parentNode = this.node.parentNode) === null || _this$node$parentNode === void 0 ? void 0 : _this$node$parentNode.nodeName) === 'foreignObject') && this.getStyle('transform', false, true).hasValue() && !this.getStyle('transform-origin', false, true).hasValue()) {
+        this.getStyle('transform-origin', true, true).setValue('50% 50%');
+      }
+
+      _get__default["default"](_getPrototypeOf__default["default"](SVGElement.prototype), "setContext", this).call(this, ctx);
+
+      ctx.translate(this.getAttribute('x').getPixels('x'), this.getAttribute('y').getPixels('y'));
+
+      if (viewBox) {
+        width = viewBox[2];
+        height = viewBox[3];
+      }
+
+      document.setViewBox({
+        ctx: ctx,
+        aspectRatio: this.getAttribute('preserveAspectRatio').getString(),
+        width: screen.viewPort.width,
+        desiredWidth: width,
+        height: screen.viewPort.height,
+        desiredHeight: height,
+        minX: minX,
+        minY: minY,
+        refX: refXAttr.getValue(),
+        refY: refYAttr.getValue(),
+        clip: clip,
+        clipX: clipX,
+        clipY: clipY
+      });
+
+      if (viewBox) {
+        screen.viewPort.removeCurrent();
+        screen.viewPort.setCurrent(width, height);
+      }
+    }
+  }, {
+    key: "clearContext",
+    value: function clearContext(ctx) {
+      _get__default["default"](_getPrototypeOf__default["default"](SVGElement.prototype), "clearContext", this).call(this, ctx);
+
+      this.document.screen.viewPort.removeCurrent();
+    }
+    /**
+     * Resize SVG to fit in given size.
+     * @param width
+     * @param height
+     * @param preserveAspectRatio
+     */
+
+  }, {
+    key: "resize",
+    value: function resize(width) {
+      var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : width;
+      var preserveAspectRatio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
+      var widthAttr = this.getAttribute('width', true);
+      var heightAttr = this.getAttribute('height', true);
+      var viewBoxAttr = this.getAttribute('viewBox');
+      var styleAttr = this.getAttribute('style');
+      var originWidth = widthAttr.getNumber(0);
+      var originHeight = heightAttr.getNumber(0);
+
+      if (preserveAspectRatio) {
+        if (typeof preserveAspectRatio === 'string') {
+          this.getAttribute('preserveAspectRatio', true).setValue(preserveAspectRatio);
+        } else {
+          var preserveAspectRatioAttr = this.getAttribute('preserveAspectRatio');
+
+          if (preserveAspectRatioAttr.hasValue()) {
+            preserveAspectRatioAttr.setValue(preserveAspectRatioAttr.getString().replace(/^\s*(\S.*\S)\s*$/, '$1'));
+          }
+        }
+      }
+
+      widthAttr.setValue(width);
+      heightAttr.setValue(height);
+
+      if (!viewBoxAttr.hasValue()) {
+        viewBoxAttr.setValue("0 0 ".concat(originWidth || width, " ").concat(originHeight || height));
+      }
+
+      if (styleAttr.hasValue()) {
+        var widthStyle = this.getStyle('width');
+        var heightStyle = this.getStyle('height');
+
+        if (widthStyle.hasValue()) {
+          widthStyle.setValue("".concat(width, "px"));
+        }
+
+        if (heightStyle.hasValue()) {
+          heightStyle.setValue("".concat(height, "px"));
+        }
+      }
+    }
+  }]);
+
+  return SVGElement;
+}(RenderedElement);
+
+function _createSuper$A(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$A(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$A() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var RectElement = /*#__PURE__*/function (_PathElement) {
+  _inherits__default["default"](RectElement, _PathElement);
+
+  var _super = _createSuper$A(RectElement);
+
+  function RectElement() {
+    var _this;
+
+    _classCallCheck__default["default"](this, RectElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'rect';
+    return _this;
+  }
+
+  _createClass__default["default"](RectElement, [{
+    key: "path",
+    value: function path(ctx) {
+      var x = this.getAttribute('x').getPixels('x');
+      var y = this.getAttribute('y').getPixels('y');
+      var width = this.getStyle('width', false, true).getPixels('x');
+      var height = this.getStyle('height', false, true).getPixels('y');
+      var rxAttr = this.getAttribute('rx');
+      var ryAttr = this.getAttribute('ry');
+      var rx = rxAttr.getPixels('x');
+      var ry = ryAttr.getPixels('y');
+
+      if (rxAttr.hasValue() && !ryAttr.hasValue()) {
+        ry = rx;
+      }
+
+      if (ryAttr.hasValue() && !rxAttr.hasValue()) {
+        rx = ry;
+      }
+
+      rx = Math.min(rx, width / 2.0);
+      ry = Math.min(ry, height / 2.0);
+
+      if (ctx) {
+        var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);
+        ctx.beginPath(); // always start the path so we don't fill prior paths
+
+        if (height > 0 && width > 0) {
+          ctx.moveTo(x + rx, y);
+          ctx.lineTo(x + width - rx, y);
+          ctx.bezierCurveTo(x + width - rx + KAPPA * rx, y, x + width, y + ry - KAPPA * ry, x + width, y + ry);
+          ctx.lineTo(x + width, y + height - ry);
+          ctx.bezierCurveTo(x + width, y + height - ry + KAPPA * ry, x + width - rx + KAPPA * rx, y + height, x + width - rx, y + height);
+          ctx.lineTo(x + rx, y + height);
+          ctx.bezierCurveTo(x + rx - KAPPA * rx, y + height, x, y + height - ry + KAPPA * ry, x, y + height - ry);
+          ctx.lineTo(x, y + ry);
+          ctx.bezierCurveTo(x, y + ry - KAPPA * ry, x + rx - KAPPA * rx, y, x + rx, y);
+          ctx.closePath();
+        }
+      }
+
+      return new BoundingBox(x, y, x + width, y + height);
+    }
+  }, {
+    key: "getMarkers",
+    value: function getMarkers() {
+      return null;
+    }
+  }]);
+
+  return RectElement;
+}(PathElement);
+
+function _createSuper$z(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$z(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$z() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var CircleElement = /*#__PURE__*/function (_PathElement) {
+  _inherits__default["default"](CircleElement, _PathElement);
+
+  var _super = _createSuper$z(CircleElement);
+
+  function CircleElement() {
+    var _this;
+
+    _classCallCheck__default["default"](this, CircleElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'circle';
+    return _this;
+  }
+
+  _createClass__default["default"](CircleElement, [{
+    key: "path",
+    value: function path(ctx) {
+      var cx = this.getAttribute('cx').getPixels('x');
+      var cy = this.getAttribute('cy').getPixels('y');
+      var r = this.getAttribute('r').getPixels();
+
+      if (ctx && r > 0) {
+        ctx.beginPath();
+        ctx.arc(cx, cy, r, 0, Math.PI * 2, false);
+        ctx.closePath();
+      }
+
+      return new BoundingBox(cx - r, cy - r, cx + r, cy + r);
+    }
+  }, {
+    key: "getMarkers",
+    value: function getMarkers() {
+      return null;
+    }
+  }]);
+
+  return CircleElement;
+}(PathElement);
+
+function _createSuper$y(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$y(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$y() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var EllipseElement = /*#__PURE__*/function (_PathElement) {
+  _inherits__default["default"](EllipseElement, _PathElement);
+
+  var _super = _createSuper$y(EllipseElement);
+
+  function EllipseElement() {
+    var _this;
+
+    _classCallCheck__default["default"](this, EllipseElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'ellipse';
+    return _this;
+  }
+
+  _createClass__default["default"](EllipseElement, [{
+    key: "path",
+    value: function path(ctx) {
+      var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);
+      var rx = this.getAttribute('rx').getPixels('x');
+      var ry = this.getAttribute('ry').getPixels('y');
+      var cx = this.getAttribute('cx').getPixels('x');
+      var cy = this.getAttribute('cy').getPixels('y');
+
+      if (ctx && rx > 0 && ry > 0) {
+        ctx.beginPath();
+        ctx.moveTo(cx + rx, cy);
+        ctx.bezierCurveTo(cx + rx, cy + KAPPA * ry, cx + KAPPA * rx, cy + ry, cx, cy + ry);
+        ctx.bezierCurveTo(cx - KAPPA * rx, cy + ry, cx - rx, cy + KAPPA * ry, cx - rx, cy);
+        ctx.bezierCurveTo(cx - rx, cy - KAPPA * ry, cx - KAPPA * rx, cy - ry, cx, cy - ry);
+        ctx.bezierCurveTo(cx + KAPPA * rx, cy - ry, cx + rx, cy - KAPPA * ry, cx + rx, cy);
+        ctx.closePath();
+      }
+
+      return new BoundingBox(cx - rx, cy - ry, cx + rx, cy + ry);
+    }
+  }, {
+    key: "getMarkers",
+    value: function getMarkers() {
+      return null;
+    }
+  }]);
+
+  return EllipseElement;
+}(PathElement);
+
+function _createSuper$x(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$x(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$x() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var LineElement = /*#__PURE__*/function (_PathElement) {
+  _inherits__default["default"](LineElement, _PathElement);
+
+  var _super = _createSuper$x(LineElement);
+
+  function LineElement() {
+    var _this;
+
+    _classCallCheck__default["default"](this, LineElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'line';
+    return _this;
+  }
+
+  _createClass__default["default"](LineElement, [{
+    key: "getPoints",
+    value: function getPoints() {
+      return [new Point(this.getAttribute('x1').getPixels('x'), this.getAttribute('y1').getPixels('y')), new Point(this.getAttribute('x2').getPixels('x'), this.getAttribute('y2').getPixels('y'))];
+    }
+  }, {
+    key: "path",
+    value: function path(ctx) {
+      var _this$getPoints = this.getPoints(),
+          _this$getPoints2 = _slicedToArray__default["default"](_this$getPoints, 2),
+          _this$getPoints2$ = _this$getPoints2[0],
+          x0 = _this$getPoints2$.x,
+          y0 = _this$getPoints2$.y,
+          _this$getPoints2$2 = _this$getPoints2[1],
+          x1 = _this$getPoints2$2.x,
+          y1 = _this$getPoints2$2.y;
+
+      if (ctx) {
+        ctx.beginPath();
+        ctx.moveTo(x0, y0);
+        ctx.lineTo(x1, y1);
+      }
+
+      return new BoundingBox(x0, y0, x1, y1);
+    }
+  }, {
+    key: "getMarkers",
+    value: function getMarkers() {
+      var _this$getPoints3 = this.getPoints(),
+          _this$getPoints4 = _slicedToArray__default["default"](_this$getPoints3, 2),
+          p0 = _this$getPoints4[0],
+          p1 = _this$getPoints4[1];
+
+      var a = p0.angleTo(p1);
+      return [[p0, a], [p1, a]];
+    }
+  }]);
+
+  return LineElement;
+}(PathElement);
+
+function _createSuper$w(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$w(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$w() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var PolylineElement = /*#__PURE__*/function (_PathElement) {
+  _inherits__default["default"](PolylineElement, _PathElement);
+
+  var _super = _createSuper$w(PolylineElement);
+
+  function PolylineElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default["default"](this, PolylineElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+    _this.type = 'polyline';
+    _this.points = [];
+    _this.points = Point.parsePath(_this.getAttribute('points').getString());
+    return _this;
+  }
+
+  _createClass__default["default"](PolylineElement, [{
+    key: "path",
+    value: function path(ctx) {
+      var points = this.points;
+
+      var _points = _slicedToArray__default["default"](points, 1),
+          _points$ = _points[0],
+          x0 = _points$.x,
+          y0 = _points$.y;
+
+      var boundingBox = new BoundingBox(x0, y0);
+
+      if (ctx) {
+        ctx.beginPath();
+        ctx.moveTo(x0, y0);
+      }
+
+      points.forEach(function (_ref) {
+        var x = _ref.x,
+            y = _ref.y;
+        boundingBox.addPoint(x, y);
+
+        if (ctx) {
+          ctx.lineTo(x, y);
+        }
+      });
+      return boundingBox;
+    }
+  }, {
+    key: "getMarkers",
+    value: function getMarkers() {
+      var points = this.points;
+      var lastIndex = points.length - 1;
+      var markers = [];
+      points.forEach(function (point, i) {
+        if (i === lastIndex) {
+          return;
+        }
+
+        markers.push([point, point.angleTo(points[i + 1])]);
+      });
+
+      if (markers.length > 0) {
+        markers.push([points[points.length - 1], markers[markers.length - 1][1]]);
+      }
+
+      return markers;
+    }
+  }]);
+
+  return PolylineElement;
+}(PathElement);
+
+function _createSuper$v(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$v(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$v() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var PolygonElement = /*#__PURE__*/function (_PolylineElement) {
+  _inherits__default["default"](PolygonElement, _PolylineElement);
+
+  var _super = _createSuper$v(PolygonElement);
+
+  function PolygonElement() {
+    var _this;
+
+    _classCallCheck__default["default"](this, PolygonElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'polygon';
+    return _this;
+  }
+
+  _createClass__default["default"](PolygonElement, [{
+    key: "path",
+    value: function path(ctx) {
+      var boundingBox = _get__default["default"](_getPrototypeOf__default["default"](PolygonElement.prototype), "path", this).call(this, ctx);
+
+      var _this$points = _slicedToArray__default["default"](this.points, 1),
+          _this$points$ = _this$points[0],
+          x = _this$points$.x,
+          y = _this$points$.y;
+
+      if (ctx) {
+        ctx.lineTo(x, y);
+        ctx.closePath();
+      }
+
+      return boundingBox;
+    }
+  }]);
+
+  return PolygonElement;
+}(PolylineElement);
+
+function _createSuper$u(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$u(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$u() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var PatternElement = /*#__PURE__*/function (_Element) {
+  _inherits__default["default"](PatternElement, _Element);
+
+  var _super = _createSuper$u(PatternElement);
+
+  function PatternElement() {
+    var _this;
+
+    _classCallCheck__default["default"](this, PatternElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'pattern';
+    return _this;
+  }
+
+  _createClass__default["default"](PatternElement, [{
+    key: "createPattern",
+    value: function createPattern(ctx, _, parentOpacityProp) {
+      var width = this.getStyle('width').getPixels('x', true);
+      var height = this.getStyle('height').getPixels('y', true); // render me using a temporary svg element
+
+      var patternSvg = new SVGElement(this.document, null);
+      patternSvg.attributes.viewBox = new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue());
+      patternSvg.attributes.width = new Property(this.document, 'width', "".concat(width, "px"));
+      patternSvg.attributes.height = new Property(this.document, 'height', "".concat(height, "px"));
+      patternSvg.attributes.transform = new Property(this.document, 'transform', this.getAttribute('patternTransform').getValue());
+      patternSvg.children = this.children;
+      var patternCanvas = this.document.createCanvas(width, height);
+      var patternCtx = patternCanvas.getContext('2d');
+      var xAttr = this.getAttribute('x');
+      var yAttr = this.getAttribute('y');
+
+      if (xAttr.hasValue() && yAttr.hasValue()) {
+        patternCtx.translate(xAttr.getPixels('x', true), yAttr.getPixels('y', true));
+      }
+
+      if (parentOpacityProp.hasValue()) {
+        this.styles['fill-opacity'] = parentOpacityProp;
+      } else {
+        Reflect.deleteProperty(this.styles, 'fill-opacity');
+      } // render 3x3 grid so when we transform there's no white space on edges
+
+
+      for (var x = -1; x <= 1; x++) {
+        for (var y = -1; y <= 1; y++) {
+          patternCtx.save();
+          patternSvg.attributes.x = new Property(this.document, 'x', x * patternCanvas.width);
+          patternSvg.attributes.y = new Property(this.document, 'y', y * patternCanvas.height);
+          patternSvg.render(patternCtx);
+          patternCtx.restore();
+        }
+      }
+
+      var pattern = ctx.createPattern(patternCanvas, 'repeat');
+      return pattern;
+    }
+  }]);
+
+  return PatternElement;
+}(Element);
+
+function _createSuper$t(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$t(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$t() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var MarkerElement = /*#__PURE__*/function (_Element) {
+  _inherits__default["default"](MarkerElement, _Element);
+
+  var _super = _createSuper$t(MarkerElement);
+
+  function MarkerElement() {
+    var _this;
+
+    _classCallCheck__default["default"](this, MarkerElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'marker';
+    return _this;
+  }
+
+  _createClass__default["default"](MarkerElement, [{
+    key: "render",
+    value: function render(ctx, point, angle) {
+      if (!point) {
+        return;
+      }
+
+      var x = point.x,
+          y = point.y;
+      var orient = this.getAttribute('orient').getString('auto');
+      var markerUnits = this.getAttribute('markerUnits').getString('strokeWidth');
+      ctx.translate(x, y);
+
+      if (orient === 'auto') {
+        ctx.rotate(angle);
+      }
+
+      if (markerUnits === 'strokeWidth') {
+        ctx.scale(ctx.lineWidth, ctx.lineWidth);
+      }
+
+      ctx.save(); // render me using a temporary svg element
+
+      var markerSvg = new SVGElement(this.document, null);
+      markerSvg.type = this.type;
+      markerSvg.attributes.viewBox = new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue());
+      markerSvg.attributes.refX = new Property(this.document, 'refX', this.getAttribute('refX').getValue());
+      markerSvg.attributes.refY = new Property(this.document, 'refY', this.getAttribute('refY').getValue());
+      markerSvg.attributes.width = new Property(this.document, 'width', this.getAttribute('markerWidth').getValue());
+      markerSvg.attributes.height = new Property(this.document, 'height', this.getAttribute('markerHeight').getValue());
+      markerSvg.attributes.overflow = new Property(this.document, 'overflow', this.getAttribute('overflow').getValue());
+      markerSvg.attributes.fill = new Property(this.document, 'fill', this.getAttribute('fill').getColor('black'));
+      markerSvg.attributes.stroke = new Property(this.document, 'stroke', this.getAttribute('stroke').getValue('none'));
+      markerSvg.children = this.children;
+      markerSvg.render(ctx);
+      ctx.restore();
+
+      if (markerUnits === 'strokeWidth') {
+        ctx.scale(1 / ctx.lineWidth, 1 / ctx.lineWidth);
+      }
+
+      if (orient === 'auto') {
+        ctx.rotate(-angle);
+      }
+
+      ctx.translate(-x, -y);
+    }
+  }]);
+
+  return MarkerElement;
+}(Element);
+
+function _createSuper$s(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$s(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$s() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var DefsElement = /*#__PURE__*/function (_Element) {
+  _inherits__default["default"](DefsElement, _Element);
+
+  var _super = _createSuper$s(DefsElement);
+
+  function DefsElement() {
+    var _this;
+
+    _classCallCheck__default["default"](this, DefsElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'defs';
+    return _this;
+  }
+
+  _createClass__default["default"](DefsElement, [{
+    key: "render",
+    value: function render() {// NOOP
+    }
+  }]);
+
+  return DefsElement;
+}(Element);
+
+function _createSuper$r(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$r(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$r() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var GElement = /*#__PURE__*/function (_RenderedElement) {
+  _inherits__default["default"](GElement, _RenderedElement);
+
+  var _super = _createSuper$r(GElement);
+
+  function GElement() {
+    var _this;
+
+    _classCallCheck__default["default"](this, GElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'g';
+    return _this;
+  }
+
+  _createClass__default["default"](GElement, [{
+    key: "getBoundingBox",
+    value: function getBoundingBox(ctx) {
+      var boundingBox = new BoundingBox();
+      this.children.forEach(function (child) {
+        boundingBox.addBoundingBox(child.getBoundingBox(ctx));
+      });
+      return boundingBox;
+    }
+  }]);
+
+  return GElement;
+}(RenderedElement);
+
+function _createSuper$q(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$q(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$q() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var GradientElement = /*#__PURE__*/function (_Element) {
+  _inherits__default["default"](GradientElement, _Element);
+
+  var _super = _createSuper$q(GradientElement);
+
+  function GradientElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default["default"](this, GradientElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+    _this.attributesToInherit = ['gradientUnits'];
+    _this.stops = [];
+
+    var _assertThisInitialize = _assertThisInitialized__default["default"](_this),
+        stops = _assertThisInitialize.stops,
+        children = _assertThisInitialize.children;
+
+    children.forEach(function (child) {
+      if (child.type === 'stop') {
+        stops.push(child);
+      }
+    });
+    return _this;
+  }
+
+  _createClass__default["default"](GradientElement, [{
+    key: "getGradientUnits",
+    value: function getGradientUnits() {
+      return this.getAttribute('gradientUnits').getString('objectBoundingBox');
+    }
+  }, {
+    key: "createGradient",
+    value: function createGradient(ctx, element, parentOpacityProp) {
+      var _this2 = this;
+
+      // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this
+      var stopsContainer = this;
+
+      if (this.getHrefAttribute().hasValue()) {
+        stopsContainer = this.getHrefAttribute().getDefinition();
+        this.inheritStopContainer(stopsContainer);
+      }
+
+      var _stopsContainer = stopsContainer,
+          stops = _stopsContainer.stops;
+      var gradient = this.getGradient(ctx, element);
+
+      if (!gradient) {
+        return this.addParentOpacity(parentOpacityProp, stops[stops.length - 1].color);
+      }
+
+      stops.forEach(function (stop) {
+        gradient.addColorStop(stop.offset, _this2.addParentOpacity(parentOpacityProp, stop.color));
+      });
+
+      if (this.getAttribute('gradientTransform').hasValue()) {
+        // render as transformed pattern on temporary canvas
+        var document = this.document;
+        var _document$screen = document.screen,
+            MAX_VIRTUAL_PIXELS = _document$screen.MAX_VIRTUAL_PIXELS,
+            viewPort = _document$screen.viewPort;
+
+        var _viewPort$viewPorts = _slicedToArray__default["default"](viewPort.viewPorts, 1),
+            rootView = _viewPort$viewPorts[0];
+
+        var rect = new RectElement(document, null);
+        rect.attributes.x = new Property(document, 'x', -MAX_VIRTUAL_PIXELS / 3.0);
+        rect.attributes.y = new Property(document, 'y', -MAX_VIRTUAL_PIXELS / 3.0);
+        rect.attributes.width = new Property(document, 'width', MAX_VIRTUAL_PIXELS);
+        rect.attributes.height = new Property(document, 'height', MAX_VIRTUAL_PIXELS);
+        var group = new GElement(document, null);
+        group.attributes.transform = new Property(document, 'transform', this.getAttribute('gradientTransform').getValue());
+        group.children = [rect];
+        var patternSvg = new SVGElement(document, null);
+        patternSvg.attributes.x = new Property(document, 'x', 0);
+        patternSvg.attributes.y = new Property(document, 'y', 0);
+        patternSvg.attributes.width = new Property(document, 'width', rootView.width);
+        patternSvg.attributes.height = new Property(document, 'height', rootView.height);
+        patternSvg.children = [group];
+        var patternCanvas = document.createCanvas(rootView.width, rootView.height);
+        var patternCtx = patternCanvas.getContext('2d');
+        patternCtx.fillStyle = gradient;
+        patternSvg.render(patternCtx);
+        return patternCtx.createPattern(patternCanvas, 'no-repeat');
+      }
+
+      return gradient;
+    }
+  }, {
+    key: "inheritStopContainer",
+    value: function inheritStopContainer(stopsContainer) {
+      var _this3 = this;
+
+      this.attributesToInherit.forEach(function (attributeToInherit) {
+        if (!_this3.getAttribute(attributeToInherit).hasValue() && stopsContainer.getAttribute(attributeToInherit).hasValue()) {
+          _this3.getAttribute(attributeToInherit, true).setValue(stopsContainer.getAttribute(attributeToInherit).getValue());
+        }
+      });
+    }
+  }, {
+    key: "addParentOpacity",
+    value: function addParentOpacity(parentOpacityProp, color) {
+      if (parentOpacityProp.hasValue()) {
+        var colorProp = new Property(this.document, 'color', color);
+        return colorProp.addOpacity(parentOpacityProp).getColor();
+      }
+
+      return color;
+    }
+  }]);
+
+  return GradientElement;
+}(Element);
+
+function _createSuper$p(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$p(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$p() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var LinearGradientElement = /*#__PURE__*/function (_GradientElement) {
+  _inherits__default["default"](LinearGradientElement, _GradientElement);
+
+  var _super = _createSuper$p(LinearGradientElement);
+
+  function LinearGradientElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default["default"](this, LinearGradientElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+    _this.type = 'linearGradient';
+
+    _this.attributesToInherit.push('x1', 'y1', 'x2', 'y2');
+
+    return _this;
+  }
+
+  _createClass__default["default"](LinearGradientElement, [{
+    key: "getGradient",
+    value: function getGradient(ctx, element) {
+      var isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';
+      var boundingBox = isBoundingBoxUnits ? element.getBoundingBox(ctx) : null;
+
+      if (isBoundingBoxUnits && !boundingBox) {
+        return null;
+      }
+
+      if (!this.getAttribute('x1').hasValue() && !this.getAttribute('y1').hasValue() && !this.getAttribute('x2').hasValue() && !this.getAttribute('y2').hasValue()) {
+        this.getAttribute('x1', true).setValue(0);
+        this.getAttribute('y1', true).setValue(0);
+        this.getAttribute('x2', true).setValue(1);
+        this.getAttribute('y2', true).setValue(0);
+      }
+
+      var x1 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('x1').getNumber() : this.getAttribute('x1').getPixels('x');
+      var y1 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('y1').getNumber() : this.getAttribute('y1').getPixels('y');
+      var x2 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('x2').getNumber() : this.getAttribute('x2').getPixels('x');
+      var y2 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('y2').getNumber() : this.getAttribute('y2').getPixels('y');
+
+      if (x1 === x2 && y1 === y2) {
+        return null;
+      }
+
+      return ctx.createLinearGradient(x1, y1, x2, y2);
+    }
+  }]);
+
+  return LinearGradientElement;
+}(GradientElement);
+
+function _createSuper$o(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$o(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$o() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var RadialGradientElement = /*#__PURE__*/function (_GradientElement) {
+  _inherits__default["default"](RadialGradientElement, _GradientElement);
+
+  var _super = _createSuper$o(RadialGradientElement);
+
+  function RadialGradientElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default["default"](this, RadialGradientElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+    _this.type = 'radialGradient';
+
+    _this.attributesToInherit.push('cx', 'cy', 'r', 'fx', 'fy', 'fr');
+
+    return _this;
+  }
+
+  _createClass__default["default"](RadialGradientElement, [{
+    key: "getGradient",
+    value: function getGradient(ctx, element) {
+      var isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';
+      var boundingBox = element.getBoundingBox(ctx);
+
+      if (isBoundingBoxUnits && !boundingBox) {
+        return null;
+      }
+
+      if (!this.getAttribute('cx').hasValue()) {
+        this.getAttribute('cx', true).setValue('50%');
+      }
+
+      if (!this.getAttribute('cy').hasValue()) {
+        this.getAttribute('cy', true).setValue('50%');
+      }
+
+      if (!this.getAttribute('r').hasValue()) {
+        this.getAttribute('r', true).setValue('50%');
+      }
+
+      var cx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('cx').getNumber() : this.getAttribute('cx').getPixels('x');
+      var cy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('cy').getNumber() : this.getAttribute('cy').getPixels('y');
+      var fx = cx;
+      var fy = cy;
+
+      if (this.getAttribute('fx').hasValue()) {
+        fx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('fx').getNumber() : this.getAttribute('fx').getPixels('x');
+      }
+
+      if (this.getAttribute('fy').hasValue()) {
+        fy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('fy').getNumber() : this.getAttribute('fy').getPixels('y');
+      }
+
+      var r = isBoundingBoxUnits ? (boundingBox.width + boundingBox.height) / 2.0 * this.getAttribute('r').getNumber() : this.getAttribute('r').getPixels();
+      var fr = this.getAttribute('fr').getPixels();
+      return ctx.createRadialGradient(fx, fy, fr, cx, cy, r);
+    }
+  }]);
+
+  return RadialGradientElement;
+}(GradientElement);
+
+function _createSuper$n(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$n(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$n() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var StopElement = /*#__PURE__*/function (_Element) {
+  _inherits__default["default"](StopElement, _Element);
+
+  var _super = _createSuper$n(StopElement);
+
+  function StopElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default["default"](this, StopElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+    _this.type = 'stop';
+    var offset = Math.max(0, Math.min(1, _this.getAttribute('offset').getNumber()));
+
+    var stopOpacity = _this.getStyle('stop-opacity');
+
+    var stopColor = _this.getStyle('stop-color', true);
+
+    if (stopColor.getString() === '') {
+      stopColor.setValue('#000');
+    }
+
+    if (stopOpacity.hasValue()) {
+      stopColor = stopColor.addOpacity(stopOpacity);
+    }
+
+    _this.offset = offset;
+    _this.color = stopColor.getColor();
+    return _this;
+  }
+
+  return StopElement;
+}(Element);
+
+function _createSuper$m(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$m(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$m() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var AnimateElement = /*#__PURE__*/function (_Element) {
+  _inherits__default["default"](AnimateElement, _Element);
+
+  var _super = _createSuper$m(AnimateElement);
+
+  function AnimateElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default["default"](this, AnimateElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+    _this.type = 'animate';
+    _this.duration = 0;
+    _this.initialValue = null;
+    _this.initialUnits = '';
+    _this.removed = false;
+    _this.frozen = false;
+    document.screen.animations.push(_assertThisInitialized__default["default"](_this));
+    _this.begin = _this.getAttribute('begin').getMilliseconds();
+    _this.maxDuration = _this.begin + _this.getAttribute('dur').getMilliseconds();
+    _this.from = _this.getAttribute('from');
+    _this.to = _this.getAttribute('to');
+    _this.values = new Property(document, 'values', null);
+
+    var valuesAttr = _this.getAttribute('values');
+
+    if (valuesAttr.hasValue()) {
+      _this.values.setValue(valuesAttr.getString().split(';'));
+    }
+
+    return _this;
+  }
+
+  _createClass__default["default"](AnimateElement, [{
+    key: "getProperty",
+    value: function getProperty() {
+      var attributeType = this.getAttribute('attributeType').getString();
+      var attributeName = this.getAttribute('attributeName').getString();
+
+      if (attributeType === 'CSS') {
+        return this.parent.getStyle(attributeName, true);
+      }
+
+      return this.parent.getAttribute(attributeName, true);
+    }
+  }, {
+    key: "calcValue",
+    value: function calcValue() {
+      var initialUnits = this.initialUnits;
+
+      var _this$getProgress = this.getProgress(),
+          progress = _this$getProgress.progress,
+          from = _this$getProgress.from,
+          to = _this$getProgress.to; // tween value linearly
+
+
+      var newValue = from.getNumber() + (to.getNumber() - from.getNumber()) * progress;
+
+      if (initialUnits === '%') {
+        newValue *= 100.0; // numValue() returns 0-1 whereas properties are 0-100
+      }
+
+      return "".concat(newValue).concat(initialUnits);
+    }
+  }, {
+    key: "update",
+    value: function update(delta) {
+      var parent = this.parent;
+      var prop = this.getProperty(); // set initial value
+
+      if (!this.initialValue) {
+        this.initialValue = prop.getString();
+        this.initialUnits = prop.getUnits();
+      } // if we're past the end time
+
+
+      if (this.duration > this.maxDuration) {
+        var fill = this.getAttribute('fill').getString('remove'); // loop for indefinitely repeating animations
+
+        if (this.getAttribute('repeatCount').getString() === 'indefinite' || this.getAttribute('repeatDur').getString() === 'indefinite') {
+          this.duration = 0;
+        } else if (fill === 'freeze' && !this.frozen) {
+          this.frozen = true;
+          parent.animationFrozen = true;
+          parent.animationFrozenValue = prop.getString();
+        } else if (fill === 'remove' && !this.removed) {
+          this.removed = true;
+          prop.setValue(parent.animationFrozen ? parent.animationFrozenValue : this.initialValue);
+          return true;
+        }
+
+        return false;
+      }
+
+      this.duration += delta; // if we're past the begin time
+
+      var updated = false;
+
+      if (this.begin < this.duration) {
+        var newValue = this.calcValue(); // tween
+
+        var typeAttr = this.getAttribute('type');
+
+        if (typeAttr.hasValue()) {
+          // for transform, etc.
+          var type = typeAttr.getString();
+          newValue = "".concat(type, "(").concat(newValue, ")");
+        }
+
+        prop.setValue(newValue);
+        updated = true;
+      }
+
+      return updated;
+    }
+  }, {
+    key: "getProgress",
+    value: function getProgress() {
+      var document = this.document,
+          values = this.values;
+      var result = {
+        progress: (this.duration - this.begin) / (this.maxDuration - this.begin)
+      };
+
+      if (values.hasValue()) {
+        var p = result.progress * (values.getValue().length - 1);
+        var lb = Math.floor(p);
+        var ub = Math.ceil(p);
+        result.from = new Property(document, 'from', parseFloat(values.getValue()[lb]));
+        result.to = new Property(document, 'to', parseFloat(values.getValue()[ub]));
+        result.progress = (p - lb) / (ub - lb);
+      } else {
+        result.from = this.from;
+        result.to = this.to;
+      }
+
+      return result;
+    }
+  }]);
+
+  return AnimateElement;
+}(Element);
+
+function _createSuper$l(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$l(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$l() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var AnimateColorElement = /*#__PURE__*/function (_AnimateElement) {
+  _inherits__default["default"](AnimateColorElement, _AnimateElement);
+
+  var _super = _createSuper$l(AnimateColorElement);
+
+  function AnimateColorElement() {
+    var _this;
+
+    _classCallCheck__default["default"](this, AnimateColorElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'animateColor';
+    return _this;
+  }
+
+  _createClass__default["default"](AnimateColorElement, [{
+    key: "calcValue",
+    value: function calcValue() {
+      var _this$getProgress = this.getProgress(),
+          progress = _this$getProgress.progress,
+          from = _this$getProgress.from,
+          to = _this$getProgress.to;
+
+      var colorFrom = new RGBColor__default["default"](from.getColor());
+      var colorTo = new RGBColor__default["default"](to.getColor());
+
+      if (colorFrom.ok && colorTo.ok) {
+        // tween color linearly
+        var r = colorFrom.r + (colorTo.r - colorFrom.r) * progress;
+        var g = colorFrom.g + (colorTo.g - colorFrom.g) * progress;
+        var b = colorFrom.b + (colorTo.b - colorFrom.b) * progress; // ? alpha
+
+        return "rgb(".concat(Math.floor(r), ", ").concat(Math.floor(g), ", ").concat(Math.floor(b), ")");
+      }
+
+      return this.getAttribute('from').getColor();
+    }
+  }]);
+
+  return AnimateColorElement;
+}(AnimateElement);
+
+function _createSuper$k(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$k(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$k() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var AnimateTransformElement = /*#__PURE__*/function (_AnimateElement) {
+  _inherits__default["default"](AnimateTransformElement, _AnimateElement);
+
+  var _super = _createSuper$k(AnimateTransformElement);
+
+  function AnimateTransformElement() {
+    var _this;
+
+    _classCallCheck__default["default"](this, AnimateTransformElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'animateTransform';
+    return _this;
+  }
+
+  _createClass__default["default"](AnimateTransformElement, [{
+    key: "calcValue",
+    value: function calcValue() {
+      var _this$getProgress = this.getProgress(),
+          progress = _this$getProgress.progress,
+          from = _this$getProgress.from,
+          to = _this$getProgress.to; // tween value linearly
+
+
+      var transformFrom = toNumbers(from.getString());
+      var transformTo = toNumbers(to.getString());
+      var newValue = transformFrom.map(function (from, i) {
+        var to = transformTo[i];
+        return from + (to - from) * progress;
+      }).join(' ');
+      return newValue;
+    }
+  }]);
+
+  return AnimateTransformElement;
+}(AnimateElement);
+
+function _createForOfIteratorHelper$1(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$1(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
+
+function _unsupportedIterableToArray$1(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$1(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen); }
+
+function _arrayLikeToArray$1(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
+
+function _createSuper$j(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$j(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$j() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var FontElement = /*#__PURE__*/function (_Element) {
+  _inherits__default["default"](FontElement, _Element);
+
+  var _super = _createSuper$j(FontElement);
+
+  function FontElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default["default"](this, FontElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+    _this.type = 'font';
+    _this.glyphs = {};
+    _this.horizAdvX = _this.getAttribute('horiz-adv-x').getNumber();
+    var definitions = document.definitions;
+
+    var _assertThisInitialize = _assertThisInitialized__default["default"](_this),
+        children = _assertThisInitialize.children;
+
+    var _iterator = _createForOfIteratorHelper$1(children),
+        _step;
+
+    try {
+      for (_iterator.s(); !(_step = _iterator.n()).done;) {
+        var child = _step.value;
+
+        switch (child.type) {
+          case 'font-face':
+            {
+              _this.fontFace = child;
+              var fontFamilyStyle = child.getStyle('font-family');
+
+              if (fontFamilyStyle.hasValue()) {
+                definitions[fontFamilyStyle.getString()] = _assertThisInitialized__default["default"](_this);
+              }
+
+              break;
+            }
+
+          case 'missing-glyph':
+            _this.missingGlyph = child;
+            break;
+
+          case 'glyph':
+            {
+              var glyph = child;
+
+              if (glyph.arabicForm) {
+                _this.isRTL = true;
+                _this.isArabic = true;
+
+                if (typeof _this.glyphs[glyph.unicode] === 'undefined') {
+                  _this.glyphs[glyph.unicode] = {};
+                }
+
+                _this.glyphs[glyph.unicode][glyph.arabicForm] = glyph;
+              } else {
+                _this.glyphs[glyph.unicode] = glyph;
+              }
+
+              break;
+            }
+
+          default:
+        }
+      }
+    } catch (err) {
+      _iterator.e(err);
+    } finally {
+      _iterator.f();
+    }
+
+    return _this;
+  }
+
+  _createClass__default["default"](FontElement, [{
+    key: "render",
+    value: function render() {// NO RENDER
+    }
+  }]);
+
+  return FontElement;
+}(Element);
+
+function _createSuper$i(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$i(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$i() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var FontFaceElement = /*#__PURE__*/function (_Element) {
+  _inherits__default["default"](FontFaceElement, _Element);
+
+  var _super = _createSuper$i(FontFaceElement);
+
+  function FontFaceElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default["default"](this, FontFaceElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+    _this.type = 'font-face';
+    _this.ascent = _this.getAttribute('ascent').getNumber();
+    _this.descent = _this.getAttribute('descent').getNumber();
+    _this.unitsPerEm = _this.getAttribute('units-per-em').getNumber();
+    return _this;
+  }
+
+  return FontFaceElement;
+}(Element);
+
+function _createSuper$h(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$h(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$h() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var MissingGlyphElement = /*#__PURE__*/function (_PathElement) {
+  _inherits__default["default"](MissingGlyphElement, _PathElement);
+
+  var _super = _createSuper$h(MissingGlyphElement);
+
+  function MissingGlyphElement() {
+    var _this;
+
+    _classCallCheck__default["default"](this, MissingGlyphElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'missing-glyph';
+    _this.horizAdvX = 0;
+    return _this;
+  }
+
+  return MissingGlyphElement;
+}(PathElement);
+
+function _createSuper$g(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$g(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$g() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var TRefElement = /*#__PURE__*/function (_TextElement) {
+  _inherits__default["default"](TRefElement, _TextElement);
+
+  var _super = _createSuper$g(TRefElement);
+
+  function TRefElement() {
+    var _this;
+
+    _classCallCheck__default["default"](this, TRefElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'tref';
+    return _this;
+  }
+
+  _createClass__default["default"](TRefElement, [{
+    key: "getText",
+    value: function getText() {
+      var element = this.getHrefAttribute().getDefinition();
+
+      if (element) {
+        var firstChild = element.children[0];
+
+        if (firstChild) {
+          return firstChild.getText();
+        }
+      }
+
+      return '';
+    }
+  }]);
+
+  return TRefElement;
+}(TextElement);
+
+function _createSuper$f(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$f(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$f() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var AElement = /*#__PURE__*/function (_TextElement) {
+  _inherits__default["default"](AElement, _TextElement);
+
+  var _super = _createSuper$f(AElement);
+
+  function AElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default["default"](this, AElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+    _this.type = 'a';
+    var childNodes = node.childNodes;
+    var firstChild = childNodes[0];
+    var hasText = childNodes.length > 0 && Array.from(childNodes).every(function (node) {
+      return node.nodeType === 3;
+    });
+    _this.hasText = hasText;
+    _this.text = hasText ? _this.getTextFromNode(firstChild) : '';
+    return _this;
+  }
+
+  _createClass__default["default"](AElement, [{
+    key: "getText",
+    value: function getText() {
+      return this.text;
+    }
+  }, {
+    key: "renderChildren",
+    value: function renderChildren(ctx) {
+      if (this.hasText) {
+        // render as text element
+        _get__default["default"](_getPrototypeOf__default["default"](AElement.prototype), "renderChildren", this).call(this, ctx);
+
+        var document = this.document,
+            x = this.x,
+            y = this.y;
+        var mouse = document.screen.mouse;
+        var fontSize = new Property(document, 'fontSize', Font.parse(document.ctx.font).fontSize); // Do not calc bounding box if mouse is not working.
+
+        if (mouse.isWorking()) {
+          mouse.checkBoundingBox(this, new BoundingBox(x, y - fontSize.getPixels('y'), x + this.measureText(ctx), y));
+        }
+      } else if (this.children.length > 0) {
+        // render as temporary group
+        var g = new GElement(this.document, null);
+        g.children = this.children;
+        g.parent = this;
+        g.render(ctx);
+      }
+    }
+  }, {
+    key: "onClick",
+    value: function onClick() {
+      var window = this.document.window;
+
+      if (window) {
+        window.open(this.getHrefAttribute().getString());
+      }
+    }
+  }, {
+    key: "onMouseMove",
+    value: function onMouseMove() {
+      var ctx = this.document.ctx;
+      ctx.canvas.style.cursor = 'pointer';
+    }
+  }]);
+
+  return AElement;
+}(TextElement);
+
+function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
+
+function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
+
+function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
+
+function ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
+
+function _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+
+function _createSuper$e(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$e(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$e() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var TextPathElement = /*#__PURE__*/function (_TextElement) {
+  _inherits__default["default"](TextPathElement, _TextElement);
+
+  var _super = _createSuper$e(TextPathElement);
+
+  function TextPathElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default["default"](this, TextPathElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+    _this.type = 'textPath';
+    _this.textWidth = 0;
+    _this.textHeight = 0;
+    _this.pathLength = -1;
+    _this.glyphInfo = null;
+    _this.letterSpacingCache = [];
+    _this.measuresCache = new Map([['', 0]]);
+
+    var pathElement = _this.getHrefAttribute().getDefinition();
+
+    _this.text = _this.getTextFromNode();
+    _this.dataArray = _this.parsePathData(pathElement);
+    return _this;
+  }
+
+  _createClass__default["default"](TextPathElement, [{
+    key: "getText",
+    value: function getText() {
+      return this.text;
+    }
+  }, {
+    key: "path",
+    value: function path(ctx) {
+      var dataArray = this.dataArray;
+
+      if (ctx) {
+        ctx.beginPath();
+      }
+
+      dataArray.forEach(function (_ref) {
+        var type = _ref.type,
+            points = _ref.points;
+
+        switch (type) {
+          case PathParser.LINE_TO:
+            if (ctx) {
+              ctx.lineTo(points[0], points[1]);
+            }
+
+            break;
+
+          case PathParser.MOVE_TO:
+            if (ctx) {
+              ctx.moveTo(points[0], points[1]);
+            }
+
+            break;
+
+          case PathParser.CURVE_TO:
+            if (ctx) {
+              ctx.bezierCurveTo(points[0], points[1], points[2], points[3], points[4], points[5]);
+            }
+
+            break;
+
+          case PathParser.QUAD_TO:
+            if (ctx) {
+              ctx.quadraticCurveTo(points[0], points[1], points[2], points[3]);
+            }
+
+            break;
+
+          case PathParser.ARC:
+            {
+              var _points = _slicedToArray__default["default"](points, 8),
+                  cx = _points[0],
+                  cy = _points[1],
+                  rx = _points[2],
+                  ry = _points[3],
+                  theta = _points[4],
+                  dTheta = _points[5],
+                  psi = _points[6],
+                  fs = _points[7];
+
+              var r = rx > ry ? rx : ry;
+              var scaleX = rx > ry ? 1 : rx / ry;
+              var scaleY = rx > ry ? ry / rx : 1;
+
+              if (ctx) {
+                ctx.translate(cx, cy);
+                ctx.rotate(psi);
+                ctx.scale(scaleX, scaleY);
+                ctx.arc(0, 0, r, theta, theta + dTheta, Boolean(1 - fs));
+                ctx.scale(1 / scaleX, 1 / scaleY);
+                ctx.rotate(-psi);
+                ctx.translate(-cx, -cy);
+              }
+
+              break;
+            }
+
+          case PathParser.CLOSE_PATH:
+            if (ctx) {
+              ctx.closePath();
+            }
+
+            break;
+        }
+      });
+    }
+  }, {
+    key: "renderChildren",
+    value: function renderChildren(ctx) {
+      this.setTextData(ctx);
+      ctx.save();
+      var textDecoration = this.parent.getStyle('text-decoration').getString();
+      var fontSize = this.getFontSize();
+      var glyphInfo = this.glyphInfo;
+      var fill = ctx.fillStyle;
+
+      if (textDecoration === 'underline') {
+        ctx.beginPath();
+      }
+
+      glyphInfo.forEach(function (glyph, i) {
+        var p0 = glyph.p0,
+            p1 = glyph.p1,
+            rotation = glyph.rotation,
+            partialText = glyph.text;
+        ctx.save();
+        ctx.translate(p0.x, p0.y);
+        ctx.rotate(rotation);
+
+        if (ctx.fillStyle) {
+          ctx.fillText(partialText, 0, 0);
+        }
+
+        if (ctx.strokeStyle) {
+          ctx.strokeText(partialText, 0, 0);
+        }
+
+        ctx.restore();
+
+        if (textDecoration === 'underline') {
+          if (i === 0) {
+            ctx.moveTo(p0.x, p0.y + fontSize / 8);
+          }
+
+          ctx.lineTo(p1.x, p1.y + fontSize / 5);
+        } // // To assist with debugging visually, uncomment following
+        //
+        // ctx.beginPath();
+        // if (i % 2)
+        // 	ctx.strokeStyle = 'red';
+        // else
+        // 	ctx.strokeStyle = 'green';
+        // ctx.moveTo(p0.x, p0.y);
+        // ctx.lineTo(p1.x, p1.y);
+        // ctx.stroke();
+        // ctx.closePath();
+
+      });
+
+      if (textDecoration === 'underline') {
+        ctx.lineWidth = fontSize / 20;
+        ctx.strokeStyle = fill;
+        ctx.stroke();
+        ctx.closePath();
+      }
+
+      ctx.restore();
+    }
+  }, {
+    key: "getLetterSpacingAt",
+    value: function getLetterSpacingAt() {
+      var idx = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
+      return this.letterSpacingCache[idx] || 0;
+    }
+  }, {
+    key: "findSegmentToFitChar",
+    value: function findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, inputOffset, dy, c, charI) {
+      var offset = inputOffset;
+      var glyphWidth = this.measureText(ctx, c);
+
+      if (c === ' ' && anchor === 'justify' && textFullWidth < fullPathWidth) {
+        glyphWidth += (fullPathWidth - textFullWidth) / spacesNumber;
+      }
+
+      if (charI > -1) {
+        offset += this.getLetterSpacingAt(charI);
+      }
+
+      var splineStep = this.textHeight / 20;
+      var p0 = this.getEquidistantPointOnPath(offset, splineStep, 0);
+      var p1 = this.getEquidistantPointOnPath(offset + glyphWidth, splineStep, 0);
+      var segment = {
+        p0: p0,
+        p1: p1
+      };
+      var rotation = p0 && p1 ? Math.atan2(p1.y - p0.y, p1.x - p0.x) : 0;
+
+      if (dy) {
+        var dyX = Math.cos(Math.PI / 2 + rotation) * dy;
+        var dyY = Math.cos(-rotation) * dy;
+        segment.p0 = _objectSpread$2(_objectSpread$2({}, p0), {}, {
+          x: p0.x + dyX,
+          y: p0.y + dyY
+        });
+        segment.p1 = _objectSpread$2(_objectSpread$2({}, p1), {}, {
+          x: p1.x + dyX,
+          y: p1.y + dyY
+        });
+      }
+
+      offset += glyphWidth;
+      return {
+        offset: offset,
+        segment: segment,
+        rotation: rotation
+      };
+    }
+  }, {
+    key: "measureText",
+    value: function measureText(ctx, text) {
+      var measuresCache = this.measuresCache;
+      var targetText = text || this.getText();
+
+      if (measuresCache.has(targetText)) {
+        return measuresCache.get(targetText);
+      }
+
+      var measure = this.measureTargetText(ctx, targetText);
+      measuresCache.set(targetText, measure);
+      return measure;
+    } // This method supposes what all custom fonts already loaded.
+    // If some font will be loaded after this method call, <textPath> will not be rendered correctly.
+    // You need to call this method manually to update glyphs cache.
+
+  }, {
+    key: "setTextData",
+    value: function setTextData(ctx) {
+      var _this2 = this;
+
+      if (this.glyphInfo) {
+        return;
+      }
+
+      var renderText = this.getText();
+      var chars = renderText.split('');
+      var spacesNumber = renderText.split(' ').length - 1;
+      var dx = this.parent.getAttribute('dx').split().map(function (_) {
+        return _.getPixels('x');
+      });
+      var dy = this.parent.getAttribute('dy').getPixels('y');
+      var anchor = this.parent.getStyle('text-anchor').getString('start');
+      var thisSpacing = this.getStyle('letter-spacing');
+      var parentSpacing = this.parent.getStyle('letter-spacing');
+      var letterSpacing = 0;
+
+      if (!thisSpacing.hasValue() || thisSpacing.getValue() === 'inherit') {
+        letterSpacing = parentSpacing.getPixels();
+      } else if (thisSpacing.hasValue()) {
+        if (thisSpacing.getValue() !== 'initial' && thisSpacing.getValue() !== 'unset') {
+          letterSpacing = thisSpacing.getPixels();
+        }
+      } // fill letter-spacing cache
+
+
+      var letterSpacingCache = [];
+      var textLen = renderText.length;
+      this.letterSpacingCache = letterSpacingCache;
+
+      for (var i = 0; i < textLen; i++) {
+        letterSpacingCache.push(typeof dx[i] !== 'undefined' ? dx[i] : letterSpacing);
+      }
+
+      var dxSum = letterSpacingCache.reduce(function (acc, cur, i) {
+        return i === 0 ? 0 : acc + cur || 0;
+      }, 0);
+      var textWidth = this.measureText(ctx);
+      var textFullWidth = Math.max(textWidth + dxSum, 0);
+      this.textWidth = textWidth;
+      this.textHeight = this.getFontSize();
+      this.glyphInfo = [];
+      var fullPathWidth = this.getPathLength();
+      var startOffset = this.getStyle('startOffset').getNumber(0) * fullPathWidth;
+      var offset = 0;
+
+      if (anchor === 'middle' || anchor === 'center') {
+        offset = -textFullWidth / 2;
+      }
+
+      if (anchor === 'end' || anchor === 'right') {
+        offset = -textFullWidth;
+      }
+
+      offset += startOffset;
+      chars.forEach(function (char, i) {
+        // Find such segment what distance between p0 and p1 is approx. width of glyph
+        var _this2$findSegmentToF = _this2.findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, offset, dy, char, i),
+            nextOffset = _this2$findSegmentToF.offset,
+            segment = _this2$findSegmentToF.segment,
+            rotation = _this2$findSegmentToF.rotation;
+
+        offset = nextOffset;
+
+        if (!segment.p0 || !segment.p1) {
+          return;
+        } // const width = this.getLineLength(
+        // 	segment.p0.x,
+        // 	segment.p0.y,
+        // 	segment.p1.x,
+        // 	segment.p1.y
+        // );
+        // Note: Since glyphs are rendered one at a time, any kerning pair data built into the font will not be used.
+        // Can foresee having a rough pair table built in that the developer can override as needed.
+        // Or use "dx" attribute of the <text> node as a naive replacement
+        // const kern = 0;
+        // placeholder for future implementation
+        // const midpoint = this.getPointOnLine(
+        // 	kern + width / 2.0,
+        // 	segment.p0.x, segment.p0.y, segment.p1.x, segment.p1.y
+        // );
+
+
+        _this2.glyphInfo.push({
+          // transposeX: midpoint.x,
+          // transposeY: midpoint.y,
+          text: chars[i],
+          p0: segment.p0,
+          p1: segment.p1,
+          rotation: rotation
+        });
+      });
+    }
+  }, {
+    key: "parsePathData",
+    value: function parsePathData(path) {
+      this.pathLength = -1; // reset path length
+
+      if (!path) {
+        return [];
+      }
+
+      var pathCommands = [];
+      var pathParser = path.pathParser;
+      pathParser.reset(); // convert l, H, h, V, and v to L
+
+      while (!pathParser.isEnd()) {
+        var current = pathParser.current;
+        var startX = current ? current.x : 0;
+        var startY = current ? current.y : 0;
+        var command = pathParser.next();
+        var nextCommandType = command.type;
+        var points = [];
+
+        switch (command.type) {
+          case PathParser.MOVE_TO:
+            this.pathM(pathParser, points);
+            break;
+
+          case PathParser.LINE_TO:
+            nextCommandType = this.pathL(pathParser, points);
+            break;
+
+          case PathParser.HORIZ_LINE_TO:
+            nextCommandType = this.pathH(pathParser, points);
+            break;
+
+          case PathParser.VERT_LINE_TO:
+            nextCommandType = this.pathV(pathParser, points);
+            break;
+
+          case PathParser.CURVE_TO:
+            this.pathC(pathParser, points);
+            break;
+
+          case PathParser.SMOOTH_CURVE_TO:
+            nextCommandType = this.pathS(pathParser, points);
+            break;
+
+          case PathParser.QUAD_TO:
+            this.pathQ(pathParser, points);
+            break;
+
+          case PathParser.SMOOTH_QUAD_TO:
+            nextCommandType = this.pathT(pathParser, points);
+            break;
+
+          case PathParser.ARC:
+            points = this.pathA(pathParser);
+            break;
+
+          case PathParser.CLOSE_PATH:
+            PathElement.pathZ(pathParser);
+            break;
+        }
+
+        if (command.type !== PathParser.CLOSE_PATH) {
+          pathCommands.push({
+            type: nextCommandType,
+            points: points,
+            start: {
+              x: startX,
+              y: startY
+            },
+            pathLength: this.calcLength(startX, startY, nextCommandType, points)
+          });
+        } else {
+          pathCommands.push({
+            type: PathParser.CLOSE_PATH,
+            points: [],
+            pathLength: 0
+          });
+        }
+      }
+
+      return pathCommands;
+    }
+  }, {
+    key: "pathM",
+    value: function pathM(pathParser, points) {
+      var _PathElement$pathM$po = PathElement.pathM(pathParser).point,
+          x = _PathElement$pathM$po.x,
+          y = _PathElement$pathM$po.y;
+      points.push(x, y);
+    }
+  }, {
+    key: "pathL",
+    value: function pathL(pathParser, points) {
+      var _PathElement$pathL$po = PathElement.pathL(pathParser).point,
+          x = _PathElement$pathL$po.x,
+          y = _PathElement$pathL$po.y;
+      points.push(x, y);
+      return PathParser.LINE_TO;
+    }
+  }, {
+    key: "pathH",
+    value: function pathH(pathParser, points) {
+      var _PathElement$pathH$po = PathElement.pathH(pathParser).point,
+          x = _PathElement$pathH$po.x,
+          y = _PathElement$pathH$po.y;
+      points.push(x, y);
+      return PathParser.LINE_TO;
+    }
+  }, {
+    key: "pathV",
+    value: function pathV(pathParser, points) {
+      var _PathElement$pathV$po = PathElement.pathV(pathParser).point,
+          x = _PathElement$pathV$po.x,
+          y = _PathElement$pathV$po.y;
+      points.push(x, y);
+      return PathParser.LINE_TO;
+    }
+  }, {
+    key: "pathC",
+    value: function pathC(pathParser, points) {
+      var _PathElement$pathC = PathElement.pathC(pathParser),
+          point = _PathElement$pathC.point,
+          controlPoint = _PathElement$pathC.controlPoint,
+          currentPoint = _PathElement$pathC.currentPoint;
+
+      points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+    }
+  }, {
+    key: "pathS",
+    value: function pathS(pathParser, points) {
+      var _PathElement$pathS = PathElement.pathS(pathParser),
+          point = _PathElement$pathS.point,
+          controlPoint = _PathElement$pathS.controlPoint,
+          currentPoint = _PathElement$pathS.currentPoint;
+
+      points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+      return PathParser.CURVE_TO;
+    }
+  }, {
+    key: "pathQ",
+    value: function pathQ(pathParser, points) {
+      var _PathElement$pathQ = PathElement.pathQ(pathParser),
+          controlPoint = _PathElement$pathQ.controlPoint,
+          currentPoint = _PathElement$pathQ.currentPoint;
+
+      points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+    }
+  }, {
+    key: "pathT",
+    value: function pathT(pathParser, points) {
+      var _PathElement$pathT = PathElement.pathT(pathParser),
+          controlPoint = _PathElement$pathT.controlPoint,
+          currentPoint = _PathElement$pathT.currentPoint;
+
+      points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+      return PathParser.QUAD_TO;
+    }
+  }, {
+    key: "pathA",
+    value: function pathA(pathParser) {
+      var _PathElement$pathA = PathElement.pathA(pathParser),
+          rX = _PathElement$pathA.rX,
+          rY = _PathElement$pathA.rY,
+          sweepFlag = _PathElement$pathA.sweepFlag,
+          xAxisRotation = _PathElement$pathA.xAxisRotation,
+          centp = _PathElement$pathA.centp,
+          a1 = _PathElement$pathA.a1,
+          ad = _PathElement$pathA.ad;
+
+      if (sweepFlag === 0 && ad > 0) {
+        ad -= 2 * Math.PI;
+      }
+
+      if (sweepFlag === 1 && ad < 0) {
+        ad += 2 * Math.PI;
+      }
+
+      return [centp.x, centp.y, rX, rY, a1, ad, xAxisRotation, sweepFlag];
+    }
+  }, {
+    key: "calcLength",
+    value: function calcLength(x, y, commandType, points) {
+      var len = 0;
+      var p1 = null;
+      var p2 = null;
+      var t = 0;
+
+      switch (commandType) {
+        case PathParser.LINE_TO:
+          return this.getLineLength(x, y, points[0], points[1]);
+
+        case PathParser.CURVE_TO:
+          // Approximates by breaking curve into 100 line segments
+          len = 0.0;
+          p1 = this.getPointOnCubicBezier(0, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);
+
+          for (t = 0.01; t <= 1; t += 0.01) {
+            p2 = this.getPointOnCubicBezier(t, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);
+            len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);
+            p1 = p2;
+          }
+
+          return len;
+
+        case PathParser.QUAD_TO:
+          // Approximates by breaking curve into 100 line segments
+          len = 0.0;
+          p1 = this.getPointOnQuadraticBezier(0, x, y, points[0], points[1], points[2], points[3]);
+
+          for (t = 0.01; t <= 1; t += 0.01) {
+            p2 = this.getPointOnQuadraticBezier(t, x, y, points[0], points[1], points[2], points[3]);
+            len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);
+            p1 = p2;
+          }
+
+          return len;
+
+        case PathParser.ARC:
+          {
+            // Approximates by breaking curve into line segments
+            len = 0.0;
+            var start = points[4]; // 4 = theta
+
+            var dTheta = points[5]; // 5 = dTheta
+
+            var end = points[4] + dTheta;
+            var inc = Math.PI / 180.0; // 1 degree resolution
+
+            if (Math.abs(start - end) < inc) {
+              inc = Math.abs(start - end);
+            } // Note: for purpose of calculating arc length, not going to worry about rotating X-axis by angle psi
+
+
+            p1 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], start, 0);
+
+            if (dTheta < 0) {
+              // clockwise
+              for (t = start - inc; t > end; t -= inc) {
+                p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);
+                len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);
+                p1 = p2;
+              }
+            } else {
+              // counter-clockwise
+              for (t = start + inc; t < end; t += inc) {
+                p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);
+                len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);
+                p1 = p2;
+              }
+            }
+
+            p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], end, 0);
+            len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);
+            return len;
+          }
+      }
+
+      return 0;
+    }
+  }, {
+    key: "getPointOnLine",
+    value: function getPointOnLine(dist, p1x, p1y, p2x, p2y) {
+      var fromX = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : p1x;
+      var fromY = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : p1y;
+      var m = (p2y - p1y) / (p2x - p1x + PSEUDO_ZERO);
+      var run = Math.sqrt(dist * dist / (1 + m * m));
+
+      if (p2x < p1x) {
+        run *= -1;
+      }
+
+      var rise = m * run;
+      var pt = null;
+
+      if (p2x === p1x) {
+        // vertical line
+        pt = {
+          x: fromX,
+          y: fromY + rise
+        };
+      } else if ((fromY - p1y) / (fromX - p1x + PSEUDO_ZERO) === m) {
+        pt = {
+          x: fromX + run,
+          y: fromY + rise
+        };
+      } else {
+        var ix = 0;
+        var iy = 0;
+        var len = this.getLineLength(p1x, p1y, p2x, p2y);
+
+        if (len < PSEUDO_ZERO) {
+          return null;
+        }
+
+        var u = (fromX - p1x) * (p2x - p1x) + (fromY - p1y) * (p2y - p1y);
+        u /= len * len;
+        ix = p1x + u * (p2x - p1x);
+        iy = p1y + u * (p2y - p1y);
+        var pRise = this.getLineLength(fromX, fromY, ix, iy);
+        var pRun = Math.sqrt(dist * dist - pRise * pRise);
+        run = Math.sqrt(pRun * pRun / (1 + m * m));
+
+        if (p2x < p1x) {
+          run *= -1;
+        }
+
+        rise = m * run;
+        pt = {
+          x: ix + run,
+          y: iy + rise
+        };
+      }
+
+      return pt;
+    }
+  }, {
+    key: "getPointOnPath",
+    value: function getPointOnPath(distance) {
+      var fullLen = this.getPathLength();
+      var cumulativePathLength = 0;
+      var p = null;
+
+      if (distance < -0.00005 || distance - 0.00005 > fullLen) {
+        return null;
+      }
+
+      var dataArray = this.dataArray;
+
+      var _iterator = _createForOfIteratorHelper(dataArray),
+          _step;
+
+      try {
+        for (_iterator.s(); !(_step = _iterator.n()).done;) {
+          var command = _step.value;
+
+          if (command && (command.pathLength < 0.00005 || cumulativePathLength + command.pathLength + 0.00005 < distance)) {
+            cumulativePathLength += command.pathLength;
+            continue;
+          }
+
+          var delta = distance - cumulativePathLength;
+          var currentT = 0;
+
+          switch (command.type) {
+            case PathParser.LINE_TO:
+              p = this.getPointOnLine(delta, command.start.x, command.start.y, command.points[0], command.points[1], command.start.x, command.start.y);
+              break;
+
+            case PathParser.ARC:
+              {
+                var start = command.points[4]; // 4 = theta
+
+                var dTheta = command.points[5]; // 5 = dTheta
+
+                var end = command.points[4] + dTheta;
+                currentT = start + delta / command.pathLength * dTheta;
+
+                if (dTheta < 0 && currentT < end || dTheta >= 0 && currentT > end) {
+                  break;
+                }
+
+                p = this.getPointOnEllipticalArc(command.points[0], command.points[1], command.points[2], command.points[3], currentT, command.points[6]);
+                break;
+              }
+
+            case PathParser.CURVE_TO:
+              currentT = delta / command.pathLength;
+
+              if (currentT > 1) {
+                currentT = 1;
+              }
+
+              p = this.getPointOnCubicBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3], command.points[4], command.points[5]);
+              break;
+
+            case PathParser.QUAD_TO:
+              currentT = delta / command.pathLength;
+
+              if (currentT > 1) {
+                currentT = 1;
+              }
+
+              p = this.getPointOnQuadraticBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3]);
+              break;
+
+            default:
+          }
+
+          if (p) {
+            return p;
+          }
+
+          break;
+        }
+      } catch (err) {
+        _iterator.e(err);
+      } finally {
+        _iterator.f();
+      }
+
+      return null;
+    }
+  }, {
+    key: "getLineLength",
+    value: function getLineLength(x1, y1, x2, y2) {
+      return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
+    }
+  }, {
+    key: "getPathLength",
+    value: function getPathLength() {
+      if (this.pathLength === -1) {
+        this.pathLength = this.dataArray.reduce(function (length, command) {
+          return command.pathLength > 0 ? length + command.pathLength : length;
+        }, 0);
+      }
+
+      return this.pathLength;
+    }
+  }, {
+    key: "getPointOnCubicBezier",
+    value: function getPointOnCubicBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y) {
+      var x = p4x * CB1(pct) + p3x * CB2(pct) + p2x * CB3(pct) + p1x * CB4(pct);
+      var y = p4y * CB1(pct) + p3y * CB2(pct) + p2y * CB3(pct) + p1y * CB4(pct);
+      return {
+        x: x,
+        y: y
+      };
+    }
+  }, {
+    key: "getPointOnQuadraticBezier",
+    value: function getPointOnQuadraticBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y) {
+      var x = p3x * QB1(pct) + p2x * QB2(pct) + p1x * QB3(pct);
+      var y = p3y * QB1(pct) + p2y * QB2(pct) + p1y * QB3(pct);
+      return {
+        x: x,
+        y: y
+      };
+    }
+  }, {
+    key: "getPointOnEllipticalArc",
+    value: function getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi) {
+      var cosPsi = Math.cos(psi);
+      var sinPsi = Math.sin(psi);
+      var pt = {
+        x: rx * Math.cos(theta),
+        y: ry * Math.sin(theta)
+      };
+      return {
+        x: cx + (pt.x * cosPsi - pt.y * sinPsi),
+        y: cy + (pt.x * sinPsi + pt.y * cosPsi)
+      };
+    } // TODO need some optimisations. possibly build cache only for curved segments?
+
+  }, {
+    key: "buildEquidistantCache",
+    value: function buildEquidistantCache(inputStep, inputPrecision) {
+      var fullLen = this.getPathLength();
+      var precision = inputPrecision || 0.25; // accuracy vs performance
+
+      var step = inputStep || fullLen / 100;
+
+      if (!this.equidistantCache || this.equidistantCache.step !== step || this.equidistantCache.precision !== precision) {
+        // Prepare cache
+        this.equidistantCache = {
+          step: step,
+          precision: precision,
+          points: []
+        }; // Calculate points
+
+        var s = 0;
+
+        for (var l = 0; l <= fullLen; l += precision) {
+          var p0 = this.getPointOnPath(l);
+          var p1 = this.getPointOnPath(l + precision);
+
+          if (!p0 || !p1) {
+            continue;
+          }
+
+          s += this.getLineLength(p0.x, p0.y, p1.x, p1.y);
+
+          if (s >= step) {
+            this.equidistantCache.points.push({
+              x: p0.x,
+              y: p0.y,
+              distance: l
+            });
+            s -= step;
+          }
+        }
+      }
+    }
+  }, {
+    key: "getEquidistantPointOnPath",
+    value: function getEquidistantPointOnPath(targetDistance, step, precision) {
+      this.buildEquidistantCache(step, precision);
+
+      if (targetDistance < 0 || targetDistance - this.getPathLength() > 0.00005) {
+        return null;
+      }
+
+      var idx = Math.round(targetDistance / this.getPathLength() * (this.equidistantCache.points.length - 1));
+      return this.equidistantCache.points[idx] || null;
+    }
+  }]);
+
+  return TextPathElement;
+}(TextElement);
+
+function _createSuper$d(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$d(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$d() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var dataUriRegex = /^\s*data:(([^/,;]+\/[^/,;]+)(?:;([^,;=]+=[^,;=]+))?)?(?:;(base64))?,(.*)$/i;
+
+var ImageElement = /*#__PURE__*/function (_RenderedElement) {
+  _inherits__default["default"](ImageElement, _RenderedElement);
+
+  var _super = _createSuper$d(ImageElement);
+
+  function ImageElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default["default"](this, ImageElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+    _this.type = 'image';
+    _this.loaded = false;
+
+    var href = _this.getHrefAttribute().getString();
+
+    if (!href) {
+      return _possibleConstructorReturn__default["default"](_this);
+    }
+
+    var isSvg = href.endsWith('.svg') || /^\s*data:image\/svg\+xml/i.test(href);
+    document.images.push(_assertThisInitialized__default["default"](_this));
+
+    if (!isSvg) {
+      void _this.loadImage(href);
+    } else {
+      void _this.loadSvg(href);
+    }
+
+    _this.isSvg = isSvg;
+    return _this;
+  }
+
+  _createClass__default["default"](ImageElement, [{
+    key: "loadImage",
+    value: function () {
+      var _loadImage = _asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee(href) {
+        var image;
+        return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
+          while (1) {
+            switch (_context.prev = _context.next) {
+              case 0:
+                _context.prev = 0;
+                _context.next = 3;
+                return this.document.createImage(href);
+
+              case 3:
+                image = _context.sent;
+                this.image = image;
+                _context.next = 10;
+                break;
+
+              case 7:
+                _context.prev = 7;
+                _context.t0 = _context["catch"](0);
+                console.error("Error while loading image \"".concat(href, "\":"), _context.t0);
+
+              case 10:
+                this.loaded = true;
+
+              case 11:
+              case "end":
+                return _context.stop();
+            }
+          }
+        }, _callee, this, [[0, 7]]);
+      }));
+
+      function loadImage(_x) {
+        return _loadImage.apply(this, arguments);
+      }
+
+      return loadImage;
+    }()
+  }, {
+    key: "loadSvg",
+    value: function () {
+      var _loadSvg = _asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee2(href) {
+        var match, data, response, svg;
+        return _regeneratorRuntime__default["default"].wrap(function _callee2$(_context2) {
+          while (1) {
+            switch (_context2.prev = _context2.next) {
+              case 0:
+                match = dataUriRegex.exec(href);
+
+                if (!match) {
+                  _context2.next = 6;
+                  break;
+                }
+
+                data = match[5];
+
+                if (match[4] === 'base64') {
+                  this.image = atob(data);
+                } else {
+                  this.image = decodeURIComponent(data);
+                }
+
+                _context2.next = 19;
+                break;
+
+              case 6:
+                _context2.prev = 6;
+                _context2.next = 9;
+                return this.document.fetch(href);
+
+              case 9:
+                response = _context2.sent;
+                _context2.next = 12;
+                return response.text();
+
+              case 12:
+                svg = _context2.sent;
+                this.image = svg;
+                _context2.next = 19;
+                break;
+
+              case 16:
+                _context2.prev = 16;
+                _context2.t0 = _context2["catch"](6);
+                console.error("Error while loading image \"".concat(href, "\":"), _context2.t0);
+
+              case 19:
+                this.loaded = true;
+
+              case 20:
+              case "end":
+                return _context2.stop();
+            }
+          }
+        }, _callee2, this, [[6, 16]]);
+      }));
+
+      function loadSvg(_x2) {
+        return _loadSvg.apply(this, arguments);
+      }
+
+      return loadSvg;
+    }()
+  }, {
+    key: "renderChildren",
+    value: function renderChildren(ctx) {
+      var document = this.document,
+          image = this.image,
+          loaded = this.loaded;
+      var x = this.getAttribute('x').getPixels('x');
+      var y = this.getAttribute('y').getPixels('y');
+      var width = this.getStyle('width').getPixels('x');
+      var height = this.getStyle('height').getPixels('y');
+
+      if (!loaded || !image || !width || !height) {
+        return;
+      }
+
+      ctx.save();
+      ctx.translate(x, y);
+
+      if (this.isSvg) {
+        var subDocument = document.canvg.forkString(ctx, this.image, {
+          ignoreMouse: true,
+          ignoreAnimation: true,
+          ignoreDimensions: true,
+          ignoreClear: true,
+          offsetX: 0,
+          offsetY: 0,
+          scaleWidth: width,
+          scaleHeight: height
+        });
+        subDocument.document.documentElement.parent = this;
+        void subDocument.render();
+      } else {
+        var _image = this.image;
+        document.setViewBox({
+          ctx: ctx,
+          aspectRatio: this.getAttribute('preserveAspectRatio').getString(),
+          width: width,
+          desiredWidth: _image.width,
+          height: height,
+          desiredHeight: _image.height
+        });
+
+        if (this.loaded) {
+          if (typeof _image.complete === 'undefined' || _image.complete) {
+            ctx.drawImage(_image, 0, 0);
+          }
+        }
+      }
+
+      ctx.restore();
+    }
+  }, {
+    key: "getBoundingBox",
+    value: function getBoundingBox() {
+      var x = this.getAttribute('x').getPixels('x');
+      var y = this.getAttribute('y').getPixels('y');
+      var width = this.getStyle('width').getPixels('x');
+      var height = this.getStyle('height').getPixels('y');
+      return new BoundingBox(x, y, x + width, y + height);
+    }
+  }]);
+
+  return ImageElement;
+}(RenderedElement);
+
+function _createSuper$c(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$c(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$c() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var SymbolElement = /*#__PURE__*/function (_RenderedElement) {
+  _inherits__default["default"](SymbolElement, _RenderedElement);
+
+  var _super = _createSuper$c(SymbolElement);
+
+  function SymbolElement() {
+    var _this;
+
+    _classCallCheck__default["default"](this, SymbolElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'symbol';
+    return _this;
+  }
+
+  _createClass__default["default"](SymbolElement, [{
+    key: "render",
+    value: function render(_) {// NO RENDER
+    }
+  }]);
+
+  return SymbolElement;
+}(RenderedElement);
+
+var SVGFontLoader = /*#__PURE__*/function () {
+  function SVGFontLoader(document) {
+    _classCallCheck__default["default"](this, SVGFontLoader);
+
+    this.document = document;
+    this.loaded = false;
+    document.fonts.push(this);
+  }
+
+  _createClass__default["default"](SVGFontLoader, [{
+    key: "load",
+    value: function () {
+      var _load = _asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee(fontFamily, url) {
+        var document, svgDocument, fonts;
+        return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
+          while (1) {
+            switch (_context.prev = _context.next) {
+              case 0:
+                _context.prev = 0;
+                document = this.document;
+                _context.next = 4;
+                return document.canvg.parser.load(url);
+
+              case 4:
+                svgDocument = _context.sent;
+                fonts = svgDocument.getElementsByTagName('font');
+                Array.from(fonts).forEach(function (fontNode) {
+                  var font = document.createElement(fontNode);
+                  document.definitions[fontFamily] = font;
+                });
+                _context.next = 12;
+                break;
+
+              case 9:
+                _context.prev = 9;
+                _context.t0 = _context["catch"](0);
+                console.error("Error while loading font \"".concat(url, "\":"), _context.t0);
+
+              case 12:
+                this.loaded = true;
+
+              case 13:
+              case "end":
+                return _context.stop();
+            }
+          }
+        }, _callee, this, [[0, 9]]);
+      }));
+
+      function load(_x, _x2) {
+        return _load.apply(this, arguments);
+      }
+
+      return load;
+    }()
+  }]);
+
+  return SVGFontLoader;
+}();
+
+function _createSuper$b(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$b(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$b() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var StyleElement = /*#__PURE__*/function (_Element) {
+  _inherits__default["default"](StyleElement, _Element);
+
+  var _super = _createSuper$b(StyleElement);
+
+  function StyleElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default["default"](this, StyleElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+    _this.type = 'style';
+    var css = compressSpaces(Array.from(node.childNodes) // NEED TEST
+    .map(function (_) {
+      return _.textContent;
+    }).join('').replace(/(\/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+\/)|(^[\s]*\/\/.*)/gm, '') // remove comments
+    .replace(/@import.*;/g, '') // remove imports
+    );
+    var cssDefs = css.split('}');
+    cssDefs.forEach(function (_) {
+      var def = _.trim();
+
+      if (!def) {
+        return;
+      }
+
+      var cssParts = def.split('{');
+      var cssClasses = cssParts[0].split(',');
+      var cssProps = cssParts[1].split(';');
+      cssClasses.forEach(function (_) {
+        var cssClass = _.trim();
+
+        if (!cssClass) {
+          return;
+        }
+
+        var props = document.styles[cssClass] || {};
+        cssProps.forEach(function (cssProp) {
+          var prop = cssProp.indexOf(':');
+          var name = cssProp.substr(0, prop).trim();
+          var value = cssProp.substr(prop + 1, cssProp.length - prop).trim();
+
+          if (name && value) {
+            props[name] = new Property(document, name, value);
+          }
+        });
+        document.styles[cssClass] = props;
+        document.stylesSpecificity[cssClass] = getSelectorSpecificity(cssClass);
+
+        if (cssClass === '@font-face') {
+          //  && !nodeEnv
+          var fontFamily = props['font-family'].getString().replace(/"|'/g, '');
+          var srcs = props.src.getString().split(',');
+          srcs.forEach(function (src) {
+            if (src.indexOf('format("svg")') > 0) {
+              var url = parseExternalUrl(src);
+
+              if (url) {
+                void new SVGFontLoader(document).load(fontFamily, url);
+              }
+            }
+          });
+        }
+      });
+    });
+    return _this;
+  }
+
+  return StyleElement;
+}(Element);
+StyleElement.parseExternalUrl = parseExternalUrl;
+
+function _createSuper$a(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$a(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$a() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var UseElement = /*#__PURE__*/function (_RenderedElement) {
+  _inherits__default["default"](UseElement, _RenderedElement);
+
+  var _super = _createSuper$a(UseElement);
+
+  function UseElement() {
+    var _this;
+
+    _classCallCheck__default["default"](this, UseElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'use';
+    return _this;
+  }
+
+  _createClass__default["default"](UseElement, [{
+    key: "setContext",
+    value: function setContext(ctx) {
+      _get__default["default"](_getPrototypeOf__default["default"](UseElement.prototype), "setContext", this).call(this, ctx);
+
+      var xAttr = this.getAttribute('x');
+      var yAttr = this.getAttribute('y');
+
+      if (xAttr.hasValue()) {
+        ctx.translate(xAttr.getPixels('x'), 0);
+      }
+
+      if (yAttr.hasValue()) {
+        ctx.translate(0, yAttr.getPixels('y'));
+      }
+    }
+  }, {
+    key: "path",
+    value: function path(ctx) {
+      var element = this.element;
+
+      if (element) {
+        element.path(ctx);
+      }
+    }
+  }, {
+    key: "renderChildren",
+    value: function renderChildren(ctx) {
+      var document = this.document,
+          element = this.element;
+
+      if (element) {
+        var tempSvg = element;
+
+        if (element.type === 'symbol') {
+          // render me using a temporary svg element in symbol cases (http://www.w3.org/TR/SVG/struct.html#UseElement)
+          tempSvg = new SVGElement(document, null);
+          tempSvg.attributes.viewBox = new Property(document, 'viewBox', element.getAttribute('viewBox').getString());
+          tempSvg.attributes.preserveAspectRatio = new Property(document, 'preserveAspectRatio', element.getAttribute('preserveAspectRatio').getString());
+          tempSvg.attributes.overflow = new Property(document, 'overflow', element.getAttribute('overflow').getString());
+          tempSvg.children = element.children; // element is still the parent of the children
+
+          element.styles.opacity = new Property(document, 'opacity', this.calculateOpacity());
+        }
+
+        if (tempSvg.type === 'svg') {
+          var widthStyle = this.getStyle('width', false, true);
+          var heightStyle = this.getStyle('height', false, true); // if symbol or svg, inherit width/height from me
+
+          if (widthStyle.hasValue()) {
+            tempSvg.attributes.width = new Property(document, 'width', widthStyle.getString());
+          }
+
+          if (heightStyle.hasValue()) {
+            tempSvg.attributes.height = new Property(document, 'height', heightStyle.getString());
+          }
+        }
+
+        var oldParent = tempSvg.parent;
+        tempSvg.parent = this;
+        tempSvg.render(ctx);
+        tempSvg.parent = oldParent;
+      }
+    }
+  }, {
+    key: "getBoundingBox",
+    value: function getBoundingBox(ctx) {
+      var element = this.element;
+
+      if (element) {
+        return element.getBoundingBox(ctx);
+      }
+
+      return null;
+    }
+  }, {
+    key: "elementTransform",
+    value: function elementTransform() {
+      var document = this.document,
+          element = this.element;
+      return Transform.fromElement(document, element);
+    }
+  }, {
+    key: "element",
+    get: function get() {
+      if (!this.cachedElement) {
+        this.cachedElement = this.getHrefAttribute().getDefinition();
+      }
+
+      return this.cachedElement;
+    }
+  }]);
+
+  return UseElement;
+}(RenderedElement);
+
+function _createSuper$9(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$9(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$9() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+function imGet(img, x, y, width, _height, rgba) {
+  return img[y * width * 4 + x * 4 + rgba];
+}
+
+function imSet(img, x, y, width, _height, rgba, val) {
+  img[y * width * 4 + x * 4 + rgba] = val;
+}
+
+function m(matrix, i, v) {
+  var mi = matrix[i];
+  return mi * v;
+}
+
+function c(a, m1, m2, m3) {
+  return m1 + Math.cos(a) * m2 + Math.sin(a) * m3;
+}
+
+var FeColorMatrixElement = /*#__PURE__*/function (_Element) {
+  _inherits__default["default"](FeColorMatrixElement, _Element);
+
+  var _super = _createSuper$9(FeColorMatrixElement);
+
+  function FeColorMatrixElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default["default"](this, FeColorMatrixElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+    _this.type = 'feColorMatrix';
+    var matrix = toNumbers(_this.getAttribute('values').getString());
+
+    switch (_this.getAttribute('type').getString('matrix')) {
+      // http://www.w3.org/TR/SVG/filters.html#feColorMatrixElement
+      case 'saturate':
+        {
+          var s = matrix[0];
+          /* eslint-disable array-element-newline */
+
+          matrix = [0.213 + 0.787 * s, 0.715 - 0.715 * s, 0.072 - 0.072 * s, 0, 0, 0.213 - 0.213 * s, 0.715 + 0.285 * s, 0.072 - 0.072 * s, 0, 0, 0.213 - 0.213 * s, 0.715 - 0.715 * s, 0.072 + 0.928 * s, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];
+          /* eslint-enable array-element-newline */
+
+          break;
+        }
+
+      case 'hueRotate':
+        {
+          var a = matrix[0] * Math.PI / 180.0;
+          /* eslint-disable array-element-newline */
+
+          matrix = [c(a, 0.213, 0.787, -0.213), c(a, 0.715, -0.715, -0.715), c(a, 0.072, -0.072, 0.928), 0, 0, c(a, 0.213, -0.213, 0.143), c(a, 0.715, 0.285, 0.140), c(a, 0.072, -0.072, -0.283), 0, 0, c(a, 0.213, -0.213, -0.787), c(a, 0.715, -0.715, 0.715), c(a, 0.072, 0.928, 0.072), 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];
+          /* eslint-enable array-element-newline */
+
+          break;
+        }
+
+      case 'luminanceToAlpha':
+        /* eslint-disable array-element-newline */
+        matrix = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2125, 0.7154, 0.0721, 0, 0, 0, 0, 0, 0, 1];
+        /* eslint-enable array-element-newline */
+
+        break;
+    }
+
+    _this.matrix = matrix;
+    _this.includeOpacity = _this.getAttribute('includeOpacity').hasValue();
+    return _this;
+  }
+
+  _createClass__default["default"](FeColorMatrixElement, [{
+    key: "apply",
+    value: function apply(ctx, _x, _y, width, height) {
+      // assuming x==0 && y==0 for now
+      var includeOpacity = this.includeOpacity,
+          matrix = this.matrix;
+      var srcData = ctx.getImageData(0, 0, width, height);
+
+      for (var y = 0; y < height; y++) {
+        for (var x = 0; x < width; x++) {
+          var r = imGet(srcData.data, x, y, width, height, 0);
+          var g = imGet(srcData.data, x, y, width, height, 1);
+          var b = imGet(srcData.data, x, y, width, height, 2);
+          var a = imGet(srcData.data, x, y, width, height, 3);
+          var nr = m(matrix, 0, r) + m(matrix, 1, g) + m(matrix, 2, b) + m(matrix, 3, a) + m(matrix, 4, 1);
+          var ng = m(matrix, 5, r) + m(matrix, 6, g) + m(matrix, 7, b) + m(matrix, 8, a) + m(matrix, 9, 1);
+          var nb = m(matrix, 10, r) + m(matrix, 11, g) + m(matrix, 12, b) + m(matrix, 13, a) + m(matrix, 14, 1);
+          var na = m(matrix, 15, r) + m(matrix, 16, g) + m(matrix, 17, b) + m(matrix, 18, a) + m(matrix, 19, 1);
+
+          if (includeOpacity) {
+            nr = 0;
+            ng = 0;
+            nb = 0;
+            na *= a / 255;
+          }
+
+          imSet(srcData.data, x, y, width, height, 0, nr);
+          imSet(srcData.data, x, y, width, height, 1, ng);
+          imSet(srcData.data, x, y, width, height, 2, nb);
+          imSet(srcData.data, x, y, width, height, 3, na);
+        }
+      }
+
+      ctx.clearRect(0, 0, width, height);
+      ctx.putImageData(srcData, 0, 0);
+    }
+  }]);
+
+  return FeColorMatrixElement;
+}(Element);
+
+function _createSuper$8(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$8(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$8() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var MaskElement = /*#__PURE__*/function (_Element) {
+  _inherits__default["default"](MaskElement, _Element);
+
+  var _super = _createSuper$8(MaskElement);
+
+  function MaskElement() {
+    var _this;
+
+    _classCallCheck__default["default"](this, MaskElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'mask';
+    return _this;
+  }
+
+  _createClass__default["default"](MaskElement, [{
+    key: "apply",
+    value: function apply(ctx, element) {
+      var document = this.document; // render as temp svg
+
+      var x = this.getAttribute('x').getPixels('x');
+      var y = this.getAttribute('y').getPixels('y');
+      var width = this.getStyle('width').getPixels('x');
+      var height = this.getStyle('height').getPixels('y');
+
+      if (!width && !height) {
+        var boundingBox = new BoundingBox();
+        this.children.forEach(function (child) {
+          boundingBox.addBoundingBox(child.getBoundingBox(ctx));
+        });
+        x = Math.floor(boundingBox.x1);
+        y = Math.floor(boundingBox.y1);
+        width = Math.floor(boundingBox.width);
+        height = Math.floor(boundingBox.height);
+      }
+
+      var ignoredStyles = this.removeStyles(element, MaskElement.ignoreStyles);
+      var maskCanvas = document.createCanvas(x + width, y + height);
+      var maskCtx = maskCanvas.getContext('2d');
+      document.screen.setDefaults(maskCtx);
+      this.renderChildren(maskCtx); // convert mask to alpha with a fake node
+      // TODO: refactor out apply from feColorMatrix
+
+      new FeColorMatrixElement(document, {
+        nodeType: 1,
+        childNodes: [],
+        attributes: [{
+          nodeName: 'type',
+          value: 'luminanceToAlpha'
+        }, {
+          nodeName: 'includeOpacity',
+          value: 'true'
+        }]
+      }).apply(maskCtx, 0, 0, x + width, y + height);
+      var tmpCanvas = document.createCanvas(x + width, y + height);
+      var tmpCtx = tmpCanvas.getContext('2d');
+      document.screen.setDefaults(tmpCtx);
+      element.render(tmpCtx);
+      tmpCtx.globalCompositeOperation = 'destination-in';
+      tmpCtx.fillStyle = maskCtx.createPattern(maskCanvas, 'no-repeat');
+      tmpCtx.fillRect(0, 0, x + width, y + height);
+      ctx.fillStyle = tmpCtx.createPattern(tmpCanvas, 'no-repeat');
+      ctx.fillRect(0, 0, x + width, y + height); // reassign mask
+
+      this.restoreStyles(element, ignoredStyles);
+    }
+  }, {
+    key: "render",
+    value: function render(_) {// NO RENDER
+    }
+  }]);
+
+  return MaskElement;
+}(Element);
+MaskElement.ignoreStyles = ['mask', 'transform', 'clip-path'];
+
+function _createSuper$7(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$7(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$7() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var noop = function noop() {// NOOP
+};
+
+var ClipPathElement = /*#__PURE__*/function (_Element) {
+  _inherits__default["default"](ClipPathElement, _Element);
+
+  var _super = _createSuper$7(ClipPathElement);
+
+  function ClipPathElement() {
+    var _this;
+
+    _classCallCheck__default["default"](this, ClipPathElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'clipPath';
+    return _this;
+  }
+
+  _createClass__default["default"](ClipPathElement, [{
+    key: "apply",
+    value: function apply(ctx) {
+      var document = this.document;
+      var contextProto = Reflect.getPrototypeOf(ctx);
+      var beginPath = ctx.beginPath,
+          closePath = ctx.closePath;
+
+      if (contextProto) {
+        contextProto.beginPath = noop;
+        contextProto.closePath = noop;
+      }
+
+      Reflect.apply(beginPath, ctx, []);
+      this.children.forEach(function (child) {
+        if (typeof child.path === 'undefined') {
+          return;
+        }
+
+        var transform = typeof child.elementTransform !== 'undefined' ? child.elementTransform() : null; // handle <use />
+
+        if (!transform) {
+          transform = Transform.fromElement(document, child);
+        }
+
+        if (transform) {
+          transform.apply(ctx);
+        }
+
+        child.path(ctx);
+
+        if (contextProto) {
+          contextProto.closePath = closePath;
+        }
+
+        if (transform) {
+          transform.unapply(ctx);
+        }
+      });
+      Reflect.apply(closePath, ctx, []);
+      ctx.clip();
+
+      if (contextProto) {
+        contextProto.beginPath = beginPath;
+        contextProto.closePath = closePath;
+      }
+    }
+  }, {
+    key: "render",
+    value: function render(_) {// NO RENDER
+    }
+  }]);
+
+  return ClipPathElement;
+}(Element);
+
+function _createSuper$6(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$6(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$6() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var FilterElement = /*#__PURE__*/function (_Element) {
+  _inherits__default["default"](FilterElement, _Element);
+
+  var _super = _createSuper$6(FilterElement);
+
+  function FilterElement() {
+    var _this;
+
+    _classCallCheck__default["default"](this, FilterElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'filter';
+    return _this;
+  }
+
+  _createClass__default["default"](FilterElement, [{
+    key: "apply",
+    value: function apply(ctx, element) {
+      // render as temp svg
+      var document = this.document,
+          children = this.children;
+      var boundingBox = element.getBoundingBox(ctx);
+
+      if (!boundingBox) {
+        return;
+      }
+
+      var px = 0;
+      var py = 0;
+      children.forEach(function (child) {
+        var efd = child.extraFilterDistance || 0;
+        px = Math.max(px, efd);
+        py = Math.max(py, efd);
+      });
+      var width = Math.floor(boundingBox.width);
+      var height = Math.floor(boundingBox.height);
+      var tmpCanvasWidth = width + 2 * px;
+      var tmpCanvasHeight = height + 2 * py;
+
+      if (tmpCanvasWidth < 1 || tmpCanvasHeight < 1) {
+        return;
+      }
+
+      var x = Math.floor(boundingBox.x);
+      var y = Math.floor(boundingBox.y);
+      var ignoredStyles = this.removeStyles(element, FilterElement.ignoreStyles);
+      var tmpCanvas = document.createCanvas(tmpCanvasWidth, tmpCanvasHeight);
+      var tmpCtx = tmpCanvas.getContext('2d');
+      document.screen.setDefaults(tmpCtx);
+      tmpCtx.translate(-x + px, -y + py);
+      element.render(tmpCtx); // apply filters
+
+      children.forEach(function (child) {
+        if (typeof child.apply === 'function') {
+          child.apply(tmpCtx, 0, 0, tmpCanvasWidth, tmpCanvasHeight);
+        }
+      }); // render on me
+
+      ctx.drawImage(tmpCanvas, 0, 0, tmpCanvasWidth, tmpCanvasHeight, x - px, y - py, tmpCanvasWidth, tmpCanvasHeight);
+      this.restoreStyles(element, ignoredStyles);
+    }
+  }, {
+    key: "render",
+    value: function render(_) {// NO RENDER
+    }
+  }]);
+
+  return FilterElement;
+}(Element);
+FilterElement.ignoreStyles = ['filter', 'transform', 'clip-path'];
+
+function _createSuper$5(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$5(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$5() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var FeDropShadowElement = /*#__PURE__*/function (_Element) {
+  _inherits__default["default"](FeDropShadowElement, _Element);
+
+  var _super = _createSuper$5(FeDropShadowElement);
+
+  function FeDropShadowElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default["default"](this, FeDropShadowElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+    _this.type = 'feDropShadow';
+
+    _this.addStylesFromStyleDefinition();
+
+    return _this;
+  }
+
+  _createClass__default["default"](FeDropShadowElement, [{
+    key: "apply",
+    value: function apply(_, _x, _y, _width, _height) {// TODO: implement
+    }
+  }]);
+
+  return FeDropShadowElement;
+}(Element);
+
+function _createSuper$4(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$4(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$4() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var FeMorphologyElement = /*#__PURE__*/function (_Element) {
+  _inherits__default["default"](FeMorphologyElement, _Element);
+
+  var _super = _createSuper$4(FeMorphologyElement);
+
+  function FeMorphologyElement() {
+    var _this;
+
+    _classCallCheck__default["default"](this, FeMorphologyElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'feMorphology';
+    return _this;
+  }
+
+  _createClass__default["default"](FeMorphologyElement, [{
+    key: "apply",
+    value: function apply(_, _x, _y, _width, _height) {// TODO: implement
+    }
+  }]);
+
+  return FeMorphologyElement;
+}(Element);
+
+function _createSuper$3(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$3(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$3() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var FeCompositeElement = /*#__PURE__*/function (_Element) {
+  _inherits__default["default"](FeCompositeElement, _Element);
+
+  var _super = _createSuper$3(FeCompositeElement);
+
+  function FeCompositeElement() {
+    var _this;
+
+    _classCallCheck__default["default"](this, FeCompositeElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'feComposite';
+    return _this;
+  }
+
+  _createClass__default["default"](FeCompositeElement, [{
+    key: "apply",
+    value: function apply(_, _x, _y, _width, _height) {// TODO: implement
+    }
+  }]);
+
+  return FeCompositeElement;
+}(Element);
+
+function _createSuper$2(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$2(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$2() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var FeGaussianBlurElement = /*#__PURE__*/function (_Element) {
+  _inherits__default["default"](FeGaussianBlurElement, _Element);
+
+  var _super = _createSuper$2(FeGaussianBlurElement);
+
+  function FeGaussianBlurElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default["default"](this, FeGaussianBlurElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+    _this.type = 'feGaussianBlur';
+    _this.blurRadius = Math.floor(_this.getAttribute('stdDeviation').getNumber());
+    _this.extraFilterDistance = _this.blurRadius;
+    return _this;
+  }
+
+  _createClass__default["default"](FeGaussianBlurElement, [{
+    key: "apply",
+    value: function apply(ctx, x, y, width, height) {
+      var document = this.document,
+          blurRadius = this.blurRadius;
+      var body = document.window ? document.window.document.body : null;
+      var canvas = ctx.canvas; // StackBlur requires canvas be on document
+
+      canvas.id = document.getUniqueId();
+
+      if (body) {
+        canvas.style.display = 'none';
+        body.appendChild(canvas);
+      }
+
+      stackblurCanvas.canvasRGBA(canvas, x, y, width, height, blurRadius);
+
+      if (body) {
+        body.removeChild(canvas);
+      }
+    }
+  }]);
+
+  return FeGaussianBlurElement;
+}(Element);
+
+function _createSuper$1(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$1(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct$1() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var TitleElement = /*#__PURE__*/function (_Element) {
+  _inherits__default["default"](TitleElement, _Element);
+
+  var _super = _createSuper$1(TitleElement);
+
+  function TitleElement() {
+    var _this;
+
+    _classCallCheck__default["default"](this, TitleElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'title';
+    return _this;
+  }
+
+  return TitleElement;
+}(Element);
+
+function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
+
+function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+var DescElement = /*#__PURE__*/function (_Element) {
+  _inherits__default["default"](DescElement, _Element);
+
+  var _super = _createSuper(DescElement);
+
+  function DescElement() {
+    var _this;
+
+    _classCallCheck__default["default"](this, DescElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'desc';
+    return _this;
+  }
+
+  return DescElement;
+}(Element);
+
+var elements = {
+  'svg': SVGElement,
+  'rect': RectElement,
+  'circle': CircleElement,
+  'ellipse': EllipseElement,
+  'line': LineElement,
+  'polyline': PolylineElement,
+  'polygon': PolygonElement,
+  'path': PathElement,
+  'pattern': PatternElement,
+  'marker': MarkerElement,
+  'defs': DefsElement,
+  'linearGradient': LinearGradientElement,
+  'radialGradient': RadialGradientElement,
+  'stop': StopElement,
+  'animate': AnimateElement,
+  'animateColor': AnimateColorElement,
+  'animateTransform': AnimateTransformElement,
+  'font': FontElement,
+  'font-face': FontFaceElement,
+  'missing-glyph': MissingGlyphElement,
+  'glyph': GlyphElement,
+  'text': TextElement,
+  'tspan': TSpanElement,
+  'tref': TRefElement,
+  'a': AElement,
+  'textPath': TextPathElement,
+  'image': ImageElement,
+  'g': GElement,
+  'symbol': SymbolElement,
+  'style': StyleElement,
+  'use': UseElement,
+  'mask': MaskElement,
+  'clipPath': ClipPathElement,
+  'filter': FilterElement,
+  'feDropShadow': FeDropShadowElement,
+  'feMorphology': FeMorphologyElement,
+  'feComposite': FeCompositeElement,
+  'feColorMatrix': FeColorMatrixElement,
+  'feGaussianBlur': FeGaussianBlurElement,
+  'title': TitleElement,
+  'desc': DescElement
+};
+
+function ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
+
+function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+
+function createCanvas(width, height) {
+  var canvas = document.createElement('canvas');
+  canvas.width = width;
+  canvas.height = height;
+  return canvas;
+}
+
+function createImage(_x) {
+  return _createImage.apply(this, arguments);
+}
+
+function _createImage() {
+  _createImage = _asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee(src) {
+    var anonymousCrossOrigin,
+        image,
+        _args = arguments;
+    return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
+      while (1) {
+        switch (_context.prev = _context.next) {
+          case 0:
+            anonymousCrossOrigin = _args.length > 1 && _args[1] !== undefined ? _args[1] : false;
+            image = document.createElement('img');
+
+            if (anonymousCrossOrigin) {
+              image.crossOrigin = 'Anonymous';
+            }
+
+            return _context.abrupt("return", new Promise(function (resolve, reject) {
+              image.onload = function () {
+                resolve(image);
+              };
+
+              image.onerror = function (_event, _source, _lineno, _colno, error) {
+                reject(error);
+              };
+
+              image.src = src;
+            }));
+
+          case 4:
+          case "end":
+            return _context.stop();
+        }
+      }
+    }, _callee);
+  }));
+  return _createImage.apply(this, arguments);
+}
+
+var Document = /*#__PURE__*/function () {
+  function Document(canvg) {
+    var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
+        _ref$rootEmSize = _ref.rootEmSize,
+        rootEmSize = _ref$rootEmSize === void 0 ? 12 : _ref$rootEmSize,
+        _ref$emSize = _ref.emSize,
+        emSize = _ref$emSize === void 0 ? 12 : _ref$emSize,
+        _ref$createCanvas = _ref.createCanvas,
+        createCanvas = _ref$createCanvas === void 0 ? Document.createCanvas : _ref$createCanvas,
+        _ref$createImage = _ref.createImage,
+        createImage = _ref$createImage === void 0 ? Document.createImage : _ref$createImage,
+        anonymousCrossOrigin = _ref.anonymousCrossOrigin;
+
+    _classCallCheck__default["default"](this, Document);
+
+    this.canvg = canvg;
+    this.definitions = {};
+    this.styles = {};
+    this.stylesSpecificity = {};
+    this.images = [];
+    this.fonts = [];
+    this.emSizeStack = [];
+    this.uniqueId = 0;
+    this.screen = canvg.screen;
+    this.rootEmSize = rootEmSize;
+    this.emSize = emSize;
+    this.createCanvas = createCanvas;
+    this.createImage = this.bindCreateImage(createImage, anonymousCrossOrigin);
+    this.screen.wait(this.isImagesLoaded.bind(this));
+    this.screen.wait(this.isFontsLoaded.bind(this));
+  }
+
+  _createClass__default["default"](Document, [{
+    key: "bindCreateImage",
+    value: function bindCreateImage(createImage, anonymousCrossOrigin) {
+      if (typeof anonymousCrossOrigin === 'boolean') {
+        return function (source, forceAnonymousCrossOrigin) {
+          return createImage(source, typeof forceAnonymousCrossOrigin === 'boolean' ? forceAnonymousCrossOrigin : anonymousCrossOrigin);
+        };
+      }
+
+      return createImage;
+    }
+  }, {
+    key: "popEmSize",
+    value: function popEmSize() {
+      var emSizeStack = this.emSizeStack;
+      emSizeStack.pop();
+    }
+  }, {
+    key: "getUniqueId",
+    value: function getUniqueId() {
+      return "canvg".concat(++this.uniqueId);
+    }
+  }, {
+    key: "isImagesLoaded",
+    value: function isImagesLoaded() {
+      return this.images.every(function (_) {
+        return _.loaded;
+      });
+    }
+  }, {
+    key: "isFontsLoaded",
+    value: function isFontsLoaded() {
+      return this.fonts.every(function (_) {
+        return _.loaded;
+      });
+    }
+  }, {
+    key: "createDocumentElement",
+    value: function createDocumentElement(document) {
+      var documentElement = this.createElement(document.documentElement);
+      documentElement.root = true;
+      documentElement.addStylesFromStyleDefinition();
+      this.documentElement = documentElement;
+      return documentElement;
+    }
+  }, {
+    key: "createElement",
+    value: function createElement(node) {
+      var elementType = node.nodeName.replace(/^[^:]+:/, '');
+      var ElementType = Document.elementTypes[elementType];
+
+      if (typeof ElementType !== 'undefined') {
+        return new ElementType(this, node);
+      }
+
+      return new UnknownElement(this, node);
+    }
+  }, {
+    key: "createTextNode",
+    value: function createTextNode(node) {
+      return new TextNode(this, node);
+    }
+  }, {
+    key: "setViewBox",
+    value: function setViewBox(config) {
+      this.screen.setViewBox(_objectSpread$1({
+        document: this
+      }, config));
+    }
+  }, {
+    key: "window",
+    get: function get() {
+      return this.screen.window;
+    }
+  }, {
+    key: "fetch",
+    get: function get() {
+      return this.screen.fetch;
+    }
+  }, {
+    key: "ctx",
+    get: function get() {
+      return this.screen.ctx;
+    }
+  }, {
+    key: "emSize",
+    get: function get() {
+      var emSizeStack = this.emSizeStack;
+      return emSizeStack[emSizeStack.length - 1];
+    },
+    set: function set(value) {
+      var emSizeStack = this.emSizeStack;
+      emSizeStack.push(value);
+    }
+  }]);
+
+  return Document;
+}();
+Document.createCanvas = createCanvas;
+Document.createImage = createImage;
+Document.elementTypes = elements;
+
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
+
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+/**
+ * SVG renderer on canvas.
+ */
+
+var Canvg = /*#__PURE__*/function () {
+  /**
+   * Main constructor.
+   * @param ctx - Rendering context.
+   * @param svg - SVG Document.
+   * @param options - Rendering options.
+   */
+  function Canvg(ctx, svg) {
+    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+
+    _classCallCheck__default["default"](this, Canvg);
+
+    this.parser = new Parser(options);
+    this.screen = new Screen(ctx, options);
+    this.options = options;
+    var document = new Document(this, options);
+    var documentElement = document.createDocumentElement(svg);
+    this.document = document;
+    this.documentElement = documentElement;
+  }
+  /**
+   * Create Canvg instance from SVG source string or URL.
+   * @param ctx - Rendering context.
+   * @param svg - SVG source string or URL.
+   * @param options - Rendering options.
+   * @returns Canvg instance.
+   */
+
+
+  _createClass__default["default"](Canvg, [{
+    key: "fork",
+
+    /**
+     * Create new Canvg instance with inherited options.
+     * @param ctx - Rendering context.
+     * @param svg - SVG source string or URL.
+     * @param options - Rendering options.
+     * @returns Canvg instance.
+     */
+    value: function fork(ctx, svg) {
+      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+      return Canvg.from(ctx, svg, _objectSpread(_objectSpread({}, this.options), options));
+    }
+    /**
+     * Create new Canvg instance with inherited options.
+     * @param ctx - Rendering context.
+     * @param svg - SVG source string.
+     * @param options - Rendering options.
+     * @returns Canvg instance.
+     */
+
+  }, {
+    key: "forkString",
+    value: function forkString(ctx, svg) {
+      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+      return Canvg.fromString(ctx, svg, _objectSpread(_objectSpread({}, this.options), options));
+    }
+    /**
+     * Document is ready promise.
+     * @returns Ready promise.
+     */
+
+  }, {
+    key: "ready",
+    value: function ready() {
+      return this.screen.ready();
+    }
+    /**
+     * Document is ready value.
+     * @returns Is ready or not.
+     */
+
+  }, {
+    key: "isReady",
+    value: function isReady() {
+      return this.screen.isReady();
+    }
+    /**
+     * Render only first frame, ignoring animations and mouse.
+     * @param options - Rendering options.
+     */
+
+  }, {
+    key: "render",
+    value: function () {
+      var _render = _asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee() {
+        var options,
+            _args = arguments;
+        return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
+          while (1) {
+            switch (_context.prev = _context.next) {
+              case 0:
+                options = _args.length > 0 && _args[0] !== undefined ? _args[0] : {};
+                this.start(_objectSpread({
+                  enableRedraw: true,
+                  ignoreAnimation: true,
+                  ignoreMouse: true
+                }, options));
+                _context.next = 4;
+                return this.ready();
+
+              case 4:
+                this.stop();
+
+              case 5:
+              case "end":
+                return _context.stop();
+            }
+          }
+        }, _callee, this);
+      }));
+
+      function render() {
+        return _render.apply(this, arguments);
+      }
+
+      return render;
+    }()
+    /**
+     * Start rendering.
+     * @param options - Render options.
+     */
+
+  }, {
+    key: "start",
+    value: function start() {
+      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+      var documentElement = this.documentElement,
+          screen = this.screen,
+          baseOptions = this.options;
+      screen.start(documentElement, _objectSpread(_objectSpread({
+        enableRedraw: true
+      }, baseOptions), options));
+    }
+    /**
+     * Stop rendering.
+     */
+
+  }, {
+    key: "stop",
+    value: function stop() {
+      this.screen.stop();
+    }
+    /**
+     * Resize SVG to fit in given size.
+     * @param width
+     * @param height
+     * @param preserveAspectRatio
+     */
+
+  }, {
+    key: "resize",
+    value: function resize(width) {
+      var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : width;
+      var preserveAspectRatio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
+      this.documentElement.resize(width, height, preserveAspectRatio);
+    }
+  }], [{
+    key: "from",
+    value: function () {
+      var _from = _asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee2(ctx, svg) {
+        var options,
+            parser,
+            svgDocument,
+            _args2 = arguments;
+        return _regeneratorRuntime__default["default"].wrap(function _callee2$(_context2) {
+          while (1) {
+            switch (_context2.prev = _context2.next) {
+              case 0:
+                options = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : {};
+                parser = new Parser(options);
+                _context2.next = 4;
+                return parser.parse(svg);
+
+              case 4:
+                svgDocument = _context2.sent;
+                return _context2.abrupt("return", new Canvg(ctx, svgDocument, options));
+
+              case 6:
+              case "end":
+                return _context2.stop();
+            }
+          }
+        }, _callee2);
+      }));
+
+      function from(_x, _x2) {
+        return _from.apply(this, arguments);
+      }
+
+      return from;
+    }()
+    /**
+     * Create Canvg instance from SVG source string.
+     * @param ctx - Rendering context.
+     * @param svg - SVG source string.
+     * @param options - Rendering options.
+     * @returns Canvg instance.
+     */
+
+  }, {
+    key: "fromString",
+    value: function fromString(ctx, svg) {
+      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+      var parser = new Parser(options);
+      var svgDocument = parser.parseFromString(svg);
+      return new Canvg(ctx, svgDocument, options);
+    }
+  }]);
+
+  return Canvg;
+}();
+
+exports.AElement = AElement;
+exports.AnimateColorElement = AnimateColorElement;
+exports.AnimateElement = AnimateElement;
+exports.AnimateTransformElement = AnimateTransformElement;
+exports.BoundingBox = BoundingBox;
+exports.CB1 = CB1;
+exports.CB2 = CB2;
+exports.CB3 = CB3;
+exports.CB4 = CB4;
+exports.Canvg = Canvg;
+exports.CircleElement = CircleElement;
+exports.ClipPathElement = ClipPathElement;
+exports.DefsElement = DefsElement;
+exports.DescElement = DescElement;
+exports.Document = Document;
+exports.Element = Element;
+exports.EllipseElement = EllipseElement;
+exports.FeColorMatrixElement = FeColorMatrixElement;
+exports.FeCompositeElement = FeCompositeElement;
+exports.FeDropShadowElement = FeDropShadowElement;
+exports.FeGaussianBlurElement = FeGaussianBlurElement;
+exports.FeMorphologyElement = FeMorphologyElement;
+exports.FilterElement = FilterElement;
+exports.Font = Font;
+exports.FontElement = FontElement;
+exports.FontFaceElement = FontFaceElement;
+exports.GElement = GElement;
+exports.GlyphElement = GlyphElement;
+exports.GradientElement = GradientElement;
+exports.ImageElement = ImageElement;
+exports.LineElement = LineElement;
+exports.LinearGradientElement = LinearGradientElement;
+exports.MarkerElement = MarkerElement;
+exports.MaskElement = MaskElement;
+exports.Matrix = Matrix;
+exports.MissingGlyphElement = MissingGlyphElement;
+exports.Mouse = Mouse;
+exports.PSEUDO_ZERO = PSEUDO_ZERO;
+exports.Parser = Parser;
+exports.PathElement = PathElement;
+exports.PathParser = PathParser;
+exports.PatternElement = PatternElement;
+exports.Point = Point;
+exports.PolygonElement = PolygonElement;
+exports.PolylineElement = PolylineElement;
+exports.Property = Property;
+exports.QB1 = QB1;
+exports.QB2 = QB2;
+exports.QB3 = QB3;
+exports.RadialGradientElement = RadialGradientElement;
+exports.RectElement = RectElement;
+exports.RenderedElement = RenderedElement;
+exports.Rotate = Rotate;
+exports.SVGElement = SVGElement;
+exports.SVGFontLoader = SVGFontLoader;
+exports.Scale = Scale;
+exports.Screen = Screen;
+exports.Skew = Skew;
+exports.SkewX = SkewX;
+exports.SkewY = SkewY;
+exports.StopElement = StopElement;
+exports.StyleElement = StyleElement;
+exports.SymbolElement = SymbolElement;
+exports.TRefElement = TRefElement;
+exports.TSpanElement = TSpanElement;
+exports.TextElement = TextElement;
+exports.TextPathElement = TextPathElement;
+exports.TitleElement = TitleElement;
+exports.Transform = Transform;
+exports.Translate = Translate;
+exports.UnknownElement = UnknownElement;
+exports.UseElement = UseElement;
+exports.ViewPort = ViewPort;
+exports.compressSpaces = compressSpaces;
+exports["default"] = Canvg;
+exports.getSelectorSpecificity = getSelectorSpecificity;
+exports.normalizeAttributeName = normalizeAttributeName;
+exports.normalizeColor = normalizeColor;
+exports.parseExternalUrl = parseExternalUrl;
+exports.presets = index;
+exports.toNumbers = toNumbers;
+exports.trimLeft = trimLeft;
+exports.trimRight = trimRight;
+exports.vectorMagnitude = vectorMagnitude;
+exports.vectorsAngle = vectorsAngle;
+exports.vectorsRatio = vectorsRatio;
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY2pzIiwic291cmNlcyI6W10sInNvdXJjZXNDb250ZW50IjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsifQ==
diff --git a/node_modules/canvg/lib/index.d.ts b/node_modules/canvg/lib/index.d.ts
new file mode 100644
index 0000000..938a23d
--- /dev/null
+++ b/node_modules/canvg/lib/index.d.ts
@@ -0,0 +1,32 @@
+import * as presets from './presets';
+export * from './types';
+export * from './util';
+export { default } from './Canvg';
+export { default as Canvg } from './Canvg';
+export * from './Canvg';
+export { default as Parser } from './Parser';
+export * from './Parser';
+export { default as Screen } from './Screen';
+export * from './Screen';
+export { default as Document } from './Document';
+export * from './Document';
+export { default as Transform } from './Transform';
+export * from './Transform';
+export { default as BoundingBox } from './BoundingBox';
+export * from './BoundingBox';
+export { default as Point } from './Point';
+export * from './Point';
+export { default as Property } from './Property';
+export * from './Property';
+export { default as Font } from './Font';
+export * from './Font';
+export { default as Mouse } from './Mouse';
+export * from './Mouse';
+export { default as ViewPort } from './ViewPort';
+export * from './ViewPort';
+export { default as SVGFontLoader } from './SVGFontLoader';
+export * from './SVGFontLoader';
+export { default as PathParser } from './PathParser';
+export * from './PathParser';
+export { presets };
+//# sourceMappingURL=index.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/index.d.ts.map b/node_modules/canvg/lib/index.d.ts.map
new file mode 100644
index 0000000..a70895d
--- /dev/null
+++ b/node_modules/canvg/lib/index.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AAErC,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,OAAO,EACN,OAAO,EACP,MAAM,SAAS,CAAC;AACjB,OAAO,EACN,OAAO,IAAI,KAAK,EAChB,MAAM,SAAS,CAAC;AACjB,cAAc,SAAS,CAAC;AACxB,OAAO,EACN,OAAO,IAAI,MAAM,EACjB,MAAM,UAAU,CAAC;AAClB,cAAc,UAAU,CAAC;AACzB,OAAO,EACN,OAAO,IAAI,MAAM,EACjB,MAAM,UAAU,CAAC;AAClB,cAAc,UAAU,CAAC;AACzB,OAAO,EACN,OAAO,IAAI,QAAQ,EACnB,MAAM,YAAY,CAAC;AACpB,cAAc,YAAY,CAAC;AAC3B,OAAO,EACN,OAAO,IAAI,SAAS,EACpB,MAAM,aAAa,CAAC;AACrB,cAAc,aAAa,CAAC;AAC5B,OAAO,EACN,OAAO,IAAI,WAAW,EACtB,MAAM,eAAe,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,OAAO,EACN,OAAO,IAAI,KAAK,EAChB,MAAM,SAAS,CAAC;AACjB,cAAc,SAAS,CAAC;AACxB,OAAO,EACN,OAAO,IAAI,QAAQ,EACnB,MAAM,YAAY,CAAC;AACpB,cAAc,YAAY,CAAC;AAC3B,OAAO,EACN,OAAO,IAAI,IAAI,EACf,MAAM,QAAQ,CAAC;AAChB,cAAc,QAAQ,CAAC;AACvB,OAAO,EACN,OAAO,IAAI,KAAK,EAChB,MAAM,SAAS,CAAC;AACjB,cAAc,SAAS,CAAC;AACxB,OAAO,EACN,OAAO,IAAI,QAAQ,EACnB,MAAM,YAAY,CAAC;AACpB,cAAc,YAAY,CAAC;AAC3B,OAAO,EACN,OAAO,IAAI,aAAa,EACxB,MAAM,iBAAiB,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,OAAO,EACN,OAAO,IAAI,UAAU,EACrB,MAAM,cAAc,CAAC;AACtB,cAAc,cAAc,CAAC;AAE7B,OAAO,EACN,OAAO,EACP,CAAC"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/index.es.js b/node_modules/canvg/lib/index.es.js
new file mode 100644
index 0000000..1c4eeb1
--- /dev/null
+++ b/node_modules/canvg/lib/index.es.js
@@ -0,0 +1,6551 @@
+import 'core-js/modules/es.promise.js';
+import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
+import 'core-js/modules/es.string.match.js';
+import 'core-js/modules/es.string.replace.js';
+import 'core-js/modules/es.string.starts-with.js';
+import 'core-js/modules/es.array.iterator.js';
+import 'core-js/modules/web.dom-collections.iterator.js';
+import _defineProperty from '@babel/runtime/helpers/defineProperty';
+import 'core-js/modules/es.array.reduce.js';
+import 'core-js/modules/es.string.ends-with.js';
+import 'core-js/modules/es.string.split.js';
+import requestAnimationFrame from 'raf';
+import 'core-js/modules/es.string.trim.js';
+import RGBColor from 'rgbcolor';
+import 'core-js/modules/es.array.index-of.js';
+import 'core-js/modules/es.string.includes.js';
+import 'core-js/modules/es.array.reverse.js';
+import { SVGPathData } from 'svg-pathdata';
+import 'core-js/modules/es.regexp.to-string.js';
+import { canvasRGBA } from 'stackblur-canvas';
+
+/**
+ * Options preset for `OffscreenCanvas`.
+ * @param config - Preset requirements.
+ * @param config.DOMParser - XML/HTML parser from string into DOM Document.
+ * @returns Preset object.
+ */
+function offscreen() {
+  var {
+    DOMParser: DOMParserFallback
+  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+  var preset = {
+    window: null,
+    ignoreAnimation: true,
+    ignoreMouse: true,
+    DOMParser: DOMParserFallback,
+
+    createCanvas(width, height) {
+      return new OffscreenCanvas(width, height);
+    },
+
+    createImage(url) {
+      return _asyncToGenerator(function* () {
+        var response = yield fetch(url);
+        var blob = yield response.blob();
+        var img = yield createImageBitmap(blob);
+        return img;
+      })();
+    }
+
+  };
+
+  if (typeof DOMParser !== 'undefined' || typeof DOMParserFallback === 'undefined') {
+    Reflect.deleteProperty(preset, 'DOMParser');
+  }
+
+  return preset;
+}
+
+/**
+ * Options preset for `node-canvas`.
+ * @param config - Preset requirements.
+ * @param config.DOMParser - XML/HTML parser from string into DOM Document.
+ * @param config.canvas - `node-canvas` exports.
+ * @param config.fetch - WHATWG-compatible `fetch` function.
+ * @returns Preset object.
+ */
+function node(_ref) {
+  var {
+    DOMParser,
+    canvas,
+    fetch
+  } = _ref;
+  return {
+    window: null,
+    ignoreAnimation: true,
+    ignoreMouse: true,
+    DOMParser,
+    fetch,
+    createCanvas: canvas.createCanvas,
+    createImage: canvas.loadImage
+  };
+}
+
+var index = /*#__PURE__*/Object.freeze({
+	__proto__: null,
+	offscreen: offscreen,
+	node: node
+});
+
+/**
+ * HTML-safe compress white-spaces.
+ * @param str - String to compress.
+ * @returns String.
+ */
+function compressSpaces(str) {
+  return str.replace(/(?!\u3000)\s+/gm, ' ');
+}
+/**
+ * HTML-safe left trim.
+ * @param str - String to trim.
+ * @returns String.
+ */
+
+function trimLeft(str) {
+  return str.replace(/^[\n \t]+/, '');
+}
+/**
+ * HTML-safe right trim.
+ * @param str - String to trim.
+ * @returns String.
+ */
+
+function trimRight(str) {
+  return str.replace(/[\n \t]+$/, '');
+}
+/**
+ * String to numbers array.
+ * @param str - Numbers string.
+ * @returns Numbers array.
+ */
+
+function toNumbers(str) {
+  var matches = (str || '').match(/-?(\d+(?:\.\d*(?:[eE][+-]?\d+)?)?|\.\d+)(?=\D|$)/gm) || [];
+  return matches.map(parseFloat);
+} // Microsoft Edge fix
+
+var allUppercase = /^[A-Z-]+$/;
+/**
+ * Normalize attribute name.
+ * @param name - Attribute name.
+ * @returns Normalized attribute name.
+ */
+
+function normalizeAttributeName(name) {
+  if (allUppercase.test(name)) {
+    return name.toLowerCase();
+  }
+
+  return name;
+}
+/**
+ * Parse external URL.
+ * @param url - CSS url string.
+ * @returns Parsed URL.
+ */
+
+function parseExternalUrl(url) {
+  //                      single quotes [2]
+  //                      v         double quotes [3]
+  //                      v         v         no quotes [4]
+  //                      v         v         v
+  var urlMatch = /url\(('([^']+)'|"([^"]+)"|([^'")]+))\)/.exec(url) || [];
+  return urlMatch[2] || urlMatch[3] || urlMatch[4];
+}
+/**
+ * Transform floats to integers in rgb colors.
+ * @param color - Color to normalize.
+ * @returns Normalized color.
+ */
+
+function normalizeColor(color) {
+  if (!color.startsWith('rgb')) {
+    return color;
+  }
+
+  var rgbParts = 3;
+  var normalizedColor = color.replace(/\d+(\.\d+)?/g, (num, isFloat) => rgbParts-- && isFloat ? String(Math.round(parseFloat(num))) : num);
+  return normalizedColor;
+}
+
+// slightly modified version of https://github.com/keeganstreet/specificity/blob/master/specificity.js
+var attributeRegex = /(\[[^\]]+\])/g;
+var idRegex = /(#[^\s+>~.[:]+)/g;
+var classRegex = /(\.[^\s+>~.[:]+)/g;
+var pseudoElementRegex = /(::[^\s+>~.[:]+|:first-line|:first-letter|:before|:after)/gi;
+var pseudoClassWithBracketsRegex = /(:[\w-]+\([^)]*\))/gi;
+var pseudoClassRegex = /(:[^\s+>~.[:]+)/g;
+var elementRegex = /([^\s+>~.[:]+)/g;
+
+function findSelectorMatch(selector, regex) {
+  var matches = regex.exec(selector);
+
+  if (!matches) {
+    return [selector, 0];
+  }
+
+  return [selector.replace(regex, ' '), matches.length];
+}
+/**
+ * Measure selector specificity.
+ * @param selector - Selector to measure.
+ * @returns Specificity.
+ */
+
+
+function getSelectorSpecificity(selector) {
+  var specificity = [0, 0, 0];
+  var currentSelector = selector.replace(/:not\(([^)]*)\)/g, '     $1 ').replace(/{[\s\S]*/gm, ' ');
+  var delta = 0;
+  [currentSelector, delta] = findSelectorMatch(currentSelector, attributeRegex);
+  specificity[1] += delta;
+  [currentSelector, delta] = findSelectorMatch(currentSelector, idRegex);
+  specificity[0] += delta;
+  [currentSelector, delta] = findSelectorMatch(currentSelector, classRegex);
+  specificity[1] += delta;
+  [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoElementRegex);
+  specificity[2] += delta;
+  [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassWithBracketsRegex);
+  specificity[1] += delta;
+  [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassRegex);
+  specificity[1] += delta;
+  currentSelector = currentSelector.replace(/[*\s+>~]/g, ' ').replace(/[#.]/g, ' ');
+  [currentSelector, delta] = findSelectorMatch(currentSelector, elementRegex); // lgtm [js/useless-assignment-to-local]
+
+  specificity[2] += delta;
+  return specificity.join('');
+}
+
+var PSEUDO_ZERO = .00000001;
+/**
+ * Vector magnitude.
+ * @param v
+ * @returns Number result.
+ */
+
+function vectorMagnitude(v) {
+  return Math.sqrt(Math.pow(v[0], 2) + Math.pow(v[1], 2));
+}
+/**
+ * Ratio between two vectors.
+ * @param u
+ * @param v
+ * @returns Number result.
+ */
+
+function vectorsRatio(u, v) {
+  return (u[0] * v[0] + u[1] * v[1]) / (vectorMagnitude(u) * vectorMagnitude(v));
+}
+/**
+ * Angle between two vectors.
+ * @param u
+ * @param v
+ * @returns Number result.
+ */
+
+function vectorsAngle(u, v) {
+  return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vectorsRatio(u, v));
+}
+function CB1(t) {
+  return t * t * t;
+}
+function CB2(t) {
+  return 3 * t * t * (1 - t);
+}
+function CB3(t) {
+  return 3 * t * (1 - t) * (1 - t);
+}
+function CB4(t) {
+  return (1 - t) * (1 - t) * (1 - t);
+}
+function QB1(t) {
+  return t * t;
+}
+function QB2(t) {
+  return 2 * t * (1 - t);
+}
+function QB3(t) {
+  return (1 - t) * (1 - t);
+}
+
+class Property {
+  constructor(document, name, value) {
+    this.document = document;
+    this.name = name;
+    this.value = value;
+    this.isNormalizedColor = false;
+  }
+
+  static empty(document) {
+    return new Property(document, 'EMPTY', '');
+  }
+
+  split() {
+    var separator = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ' ';
+    var {
+      document,
+      name
+    } = this;
+    return compressSpaces(this.getString()).trim().split(separator).map(value => new Property(document, name, value));
+  }
+
+  hasValue(zeroIsValue) {
+    var {
+      value
+    } = this;
+    return value !== null && value !== '' && (zeroIsValue || value !== 0) && typeof value !== 'undefined';
+  }
+
+  isString(regexp) {
+    var {
+      value
+    } = this;
+    var result = typeof value === 'string';
+
+    if (!result || !regexp) {
+      return result;
+    }
+
+    return regexp.test(value);
+  }
+
+  isUrlDefinition() {
+    return this.isString(/^url\(/);
+  }
+
+  isPixels() {
+    if (!this.hasValue()) {
+      return false;
+    }
+
+    var asString = this.getString();
+
+    switch (true) {
+      case asString.endsWith('px'):
+      case /^[0-9]+$/.test(asString):
+        return true;
+
+      default:
+        return false;
+    }
+  }
+
+  setValue(value) {
+    this.value = value;
+    return this;
+  }
+
+  getValue(def) {
+    if (typeof def === 'undefined' || this.hasValue()) {
+      return this.value;
+    }
+
+    return def;
+  }
+
+  getNumber(def) {
+    if (!this.hasValue()) {
+      if (typeof def === 'undefined') {
+        return 0;
+      }
+
+      return parseFloat(def);
+    }
+
+    var {
+      value
+    } = this;
+    var n = parseFloat(value);
+
+    if (this.isString(/%$/)) {
+      n /= 100.0;
+    }
+
+    return n;
+  }
+
+  getString(def) {
+    if (typeof def === 'undefined' || this.hasValue()) {
+      return typeof this.value === 'undefined' ? '' : String(this.value);
+    }
+
+    return String(def);
+  }
+
+  getColor(def) {
+    var color = this.getString(def);
+
+    if (this.isNormalizedColor) {
+      return color;
+    }
+
+    this.isNormalizedColor = true;
+    color = normalizeColor(color);
+    this.value = color;
+    return color;
+  }
+
+  getDpi() {
+    return 96.0; // TODO: compute?
+  }
+
+  getRem() {
+    return this.document.rootEmSize;
+  }
+
+  getEm() {
+    return this.document.emSize;
+  }
+
+  getUnits() {
+    return this.getString().replace(/[0-9.-]/g, '');
+  }
+
+  getPixels(axisOrIsFontSize) {
+    var processPercent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+
+    if (!this.hasValue()) {
+      return 0;
+    }
+
+    var [axis, isFontSize] = typeof axisOrIsFontSize === 'boolean' ? [undefined, axisOrIsFontSize] : [axisOrIsFontSize];
+    var {
+      viewPort
+    } = this.document.screen;
+
+    switch (true) {
+      case this.isString(/vmin$/):
+        return this.getNumber() / 100.0 * Math.min(viewPort.computeSize('x'), viewPort.computeSize('y'));
+
+      case this.isString(/vmax$/):
+        return this.getNumber() / 100.0 * Math.max(viewPort.computeSize('x'), viewPort.computeSize('y'));
+
+      case this.isString(/vw$/):
+        return this.getNumber() / 100.0 * viewPort.computeSize('x');
+
+      case this.isString(/vh$/):
+        return this.getNumber() / 100.0 * viewPort.computeSize('y');
+
+      case this.isString(/rem$/):
+        return this.getNumber() * this.getRem();
+
+      case this.isString(/em$/):
+        return this.getNumber() * this.getEm();
+
+      case this.isString(/ex$/):
+        return this.getNumber() * this.getEm() / 2.0;
+
+      case this.isString(/px$/):
+        return this.getNumber();
+
+      case this.isString(/pt$/):
+        return this.getNumber() * this.getDpi() * (1.0 / 72.0);
+
+      case this.isString(/pc$/):
+        return this.getNumber() * 15;
+
+      case this.isString(/cm$/):
+        return this.getNumber() * this.getDpi() / 2.54;
+
+      case this.isString(/mm$/):
+        return this.getNumber() * this.getDpi() / 25.4;
+
+      case this.isString(/in$/):
+        return this.getNumber() * this.getDpi();
+
+      case this.isString(/%$/) && isFontSize:
+        return this.getNumber() * this.getEm();
+
+      case this.isString(/%$/):
+        return this.getNumber() * viewPort.computeSize(axis);
+
+      default:
+        {
+          var n = this.getNumber();
+
+          if (processPercent && n < 1.0) {
+            return n * viewPort.computeSize(axis);
+          }
+
+          return n;
+        }
+    }
+  }
+
+  getMilliseconds() {
+    if (!this.hasValue()) {
+      return 0;
+    }
+
+    if (this.isString(/ms$/)) {
+      return this.getNumber();
+    }
+
+    return this.getNumber() * 1000;
+  }
+
+  getRadians() {
+    if (!this.hasValue()) {
+      return 0;
+    }
+
+    switch (true) {
+      case this.isString(/deg$/):
+        return this.getNumber() * (Math.PI / 180.0);
+
+      case this.isString(/grad$/):
+        return this.getNumber() * (Math.PI / 200.0);
+
+      case this.isString(/rad$/):
+        return this.getNumber();
+
+      default:
+        return this.getNumber() * (Math.PI / 180.0);
+    }
+  }
+
+  getDefinition() {
+    var asString = this.getString();
+    var name = /#([^)'"]+)/.exec(asString);
+
+    if (name) {
+      name = name[1];
+    }
+
+    if (!name) {
+      name = asString;
+    }
+
+    return this.document.definitions[name];
+  }
+
+  getFillStyleDefinition(element, opacity) {
+    var def = this.getDefinition();
+
+    if (!def) {
+      return null;
+    } // gradient
+
+
+    if (typeof def.createGradient === 'function') {
+      return def.createGradient(this.document.ctx, element, opacity);
+    } // pattern
+
+
+    if (typeof def.createPattern === 'function') {
+      if (def.getHrefAttribute().hasValue()) {
+        var patternTransform = def.getAttribute('patternTransform');
+        def = def.getHrefAttribute().getDefinition();
+
+        if (patternTransform.hasValue()) {
+          def.getAttribute('patternTransform', true).setValue(patternTransform.value);
+        }
+      }
+
+      return def.createPattern(this.document.ctx, element, opacity);
+    }
+
+    return null;
+  }
+
+  getTextBaseline() {
+    if (!this.hasValue()) {
+      return null;
+    }
+
+    return Property.textBaselineMapping[this.getString()];
+  }
+
+  addOpacity(opacity) {
+    var value = this.getColor();
+    var len = value.length;
+    var commas = 0; // Simulate old RGBColor version, which can't parse rgba.
+
+    for (var i = 0; i < len; i++) {
+      if (value[i] === ',') {
+        commas++;
+      }
+
+      if (commas === 3) {
+        break;
+      }
+    }
+
+    if (opacity.hasValue() && this.isString() && commas !== 3) {
+      var color = new RGBColor(value);
+
+      if (color.ok) {
+        color.alpha = opacity.getNumber();
+        value = color.toRGBA();
+      }
+    }
+
+    return new Property(this.document, this.name, value);
+  }
+
+}
+Property.textBaselineMapping = {
+  'baseline': 'alphabetic',
+  'before-edge': 'top',
+  'text-before-edge': 'top',
+  'middle': 'middle',
+  'central': 'middle',
+  'after-edge': 'bottom',
+  'text-after-edge': 'bottom',
+  'ideographic': 'ideographic',
+  'alphabetic': 'alphabetic',
+  'hanging': 'hanging',
+  'mathematical': 'alphabetic'
+};
+
+class ViewPort {
+  constructor() {
+    this.viewPorts = [];
+  }
+
+  clear() {
+    this.viewPorts = [];
+  }
+
+  setCurrent(width, height) {
+    this.viewPorts.push({
+      width,
+      height
+    });
+  }
+
+  removeCurrent() {
+    this.viewPorts.pop();
+  }
+
+  getCurrent() {
+    var {
+      viewPorts
+    } = this;
+    return viewPorts[viewPorts.length - 1];
+  }
+
+  get width() {
+    return this.getCurrent().width;
+  }
+
+  get height() {
+    return this.getCurrent().height;
+  }
+
+  computeSize(d) {
+    if (typeof d === 'number') {
+      return d;
+    }
+
+    if (d === 'x') {
+      return this.width;
+    }
+
+    if (d === 'y') {
+      return this.height;
+    }
+
+    return Math.sqrt(Math.pow(this.width, 2) + Math.pow(this.height, 2)) / Math.sqrt(2);
+  }
+
+}
+
+class Point {
+  constructor(x, y) {
+    this.x = x;
+    this.y = y;
+  }
+
+  static parse(point) {
+    var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
+    var [x = defaultValue, y = defaultValue] = toNumbers(point);
+    return new Point(x, y);
+  }
+
+  static parseScale(scale) {
+    var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
+    var [x = defaultValue, y = x] = toNumbers(scale);
+    return new Point(x, y);
+  }
+
+  static parsePath(path) {
+    var points = toNumbers(path);
+    var len = points.length;
+    var pathPoints = [];
+
+    for (var i = 0; i < len; i += 2) {
+      pathPoints.push(new Point(points[i], points[i + 1]));
+    }
+
+    return pathPoints;
+  }
+
+  angleTo(point) {
+    return Math.atan2(point.y - this.y, point.x - this.x);
+  }
+
+  applyTransform(transform) {
+    var {
+      x,
+      y
+    } = this;
+    var xp = x * transform[0] + y * transform[2] + transform[4];
+    var yp = x * transform[1] + y * transform[3] + transform[5];
+    this.x = xp;
+    this.y = yp;
+  }
+
+}
+
+class Mouse {
+  constructor(screen) {
+    this.screen = screen;
+    this.working = false;
+    this.events = [];
+    this.eventElements = []; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
+
+    this.onClick = this.onClick.bind(this); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
+
+    this.onMouseMove = this.onMouseMove.bind(this);
+  }
+
+  isWorking() {
+    return this.working;
+  }
+
+  start() {
+    if (this.working) {
+      return;
+    }
+
+    var {
+      screen,
+      onClick,
+      onMouseMove
+    } = this;
+    var canvas = screen.ctx.canvas;
+    canvas.onclick = onClick;
+    canvas.onmousemove = onMouseMove;
+    this.working = true;
+  }
+
+  stop() {
+    if (!this.working) {
+      return;
+    }
+
+    var canvas = this.screen.ctx.canvas;
+    this.working = false;
+    canvas.onclick = null;
+    canvas.onmousemove = null;
+  }
+
+  hasEvents() {
+    return this.working && this.events.length > 0;
+  }
+
+  runEvents() {
+    if (!this.working) {
+      return;
+    }
+
+    var {
+      screen: document,
+      events,
+      eventElements
+    } = this;
+    var {
+      style
+    } = document.ctx.canvas;
+
+    if (style) {
+      style.cursor = '';
+    }
+
+    events.forEach((_ref, i) => {
+      var {
+        run
+      } = _ref;
+      var element = eventElements[i];
+
+      while (element) {
+        run(element);
+        element = element.parent;
+      }
+    }); // done running, clear
+
+    this.events = [];
+    this.eventElements = [];
+  }
+
+  checkPath(element, ctx) {
+    if (!this.working || !ctx) {
+      return;
+    }
+
+    var {
+      events,
+      eventElements
+    } = this;
+    events.forEach((_ref2, i) => {
+      var {
+        x,
+        y
+      } = _ref2;
+
+      if (!eventElements[i] && ctx.isPointInPath && ctx.isPointInPath(x, y)) {
+        eventElements[i] = element;
+      }
+    });
+  }
+
+  checkBoundingBox(element, boundingBox) {
+    if (!this.working || !boundingBox) {
+      return;
+    }
+
+    var {
+      events,
+      eventElements
+    } = this;
+    events.forEach((_ref3, i) => {
+      var {
+        x,
+        y
+      } = _ref3;
+
+      if (!eventElements[i] && boundingBox.isPointInBox(x, y)) {
+        eventElements[i] = element;
+      }
+    });
+  }
+
+  mapXY(x, y) {
+    var {
+      window,
+      ctx
+    } = this.screen;
+    var point = new Point(x, y);
+    var element = ctx.canvas;
+
+    while (element) {
+      point.x -= element.offsetLeft;
+      point.y -= element.offsetTop;
+      element = element.offsetParent;
+    }
+
+    if (window.scrollX) {
+      point.x += window.scrollX;
+    }
+
+    if (window.scrollY) {
+      point.y += window.scrollY;
+    }
+
+    return point;
+  }
+
+  onClick(event) {
+    var {
+      x,
+      y
+    } = this.mapXY(event.clientX, event.clientY);
+    this.events.push({
+      type: 'onclick',
+      x,
+      y,
+
+      run(eventTarget) {
+        if (eventTarget.onClick) {
+          eventTarget.onClick();
+        }
+      }
+
+    });
+  }
+
+  onMouseMove(event) {
+    var {
+      x,
+      y
+    } = this.mapXY(event.clientX, event.clientY);
+    this.events.push({
+      type: 'onmousemove',
+      x,
+      y,
+
+      run(eventTarget) {
+        if (eventTarget.onMouseMove) {
+          eventTarget.onMouseMove();
+        }
+      }
+
+    });
+  }
+
+}
+
+var defaultWindow = typeof window !== 'undefined' ? window : null;
+var defaultFetch$1 = typeof fetch !== 'undefined' ? fetch.bind(undefined) // `fetch` depends on context: `someObject.fetch(...)` will throw error.
+: null;
+class Screen {
+  constructor(ctx) {
+    var {
+      fetch = defaultFetch$1,
+      window = defaultWindow
+    } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+    this.ctx = ctx;
+    this.FRAMERATE = 30;
+    this.MAX_VIRTUAL_PIXELS = 30000;
+    this.CLIENT_WIDTH = 800;
+    this.CLIENT_HEIGHT = 600;
+    this.viewPort = new ViewPort();
+    this.mouse = new Mouse(this);
+    this.animations = [];
+    this.waits = [];
+    this.frameDuration = 0;
+    this.isReadyLock = false;
+    this.isFirstRender = true;
+    this.intervalId = null;
+    this.window = window;
+    this.fetch = fetch;
+  }
+
+  wait(checker) {
+    this.waits.push(checker);
+  }
+
+  ready() {
+    // eslint-disable-next-line @typescript-eslint/no-misused-promises
+    if (!this.readyPromise) {
+      return Promise.resolve();
+    }
+
+    return this.readyPromise;
+  }
+
+  isReady() {
+    if (this.isReadyLock) {
+      return true;
+    }
+
+    var isReadyLock = this.waits.every(_ => _());
+
+    if (isReadyLock) {
+      this.waits = [];
+
+      if (this.resolveReady) {
+        this.resolveReady();
+      }
+    }
+
+    this.isReadyLock = isReadyLock;
+    return isReadyLock;
+  }
+
+  setDefaults(ctx) {
+    // initial values and defaults
+    ctx.strokeStyle = 'rgba(0,0,0,0)';
+    ctx.lineCap = 'butt';
+    ctx.lineJoin = 'miter';
+    ctx.miterLimit = 4;
+  }
+
+  setViewBox(_ref) {
+    var {
+      document,
+      ctx,
+      aspectRatio,
+      width,
+      desiredWidth,
+      height,
+      desiredHeight,
+      minX = 0,
+      minY = 0,
+      refX,
+      refY,
+      clip = false,
+      clipX = 0,
+      clipY = 0
+    } = _ref;
+    // aspect ratio - http://www.w3.org/TR/SVG/coords.html#PreserveAspectRatioAttribute
+    var cleanAspectRatio = compressSpaces(aspectRatio).replace(/^defer\s/, ''); // ignore defer
+
+    var [aspectRatioAlign, aspectRatioMeetOrSlice] = cleanAspectRatio.split(' ');
+    var align = aspectRatioAlign || 'xMidYMid';
+    var meetOrSlice = aspectRatioMeetOrSlice || 'meet'; // calculate scale
+
+    var scaleX = width / desiredWidth;
+    var scaleY = height / desiredHeight;
+    var scaleMin = Math.min(scaleX, scaleY);
+    var scaleMax = Math.max(scaleX, scaleY);
+    var finalDesiredWidth = desiredWidth;
+    var finalDesiredHeight = desiredHeight;
+
+    if (meetOrSlice === 'meet') {
+      finalDesiredWidth *= scaleMin;
+      finalDesiredHeight *= scaleMin;
+    }
+
+    if (meetOrSlice === 'slice') {
+      finalDesiredWidth *= scaleMax;
+      finalDesiredHeight *= scaleMax;
+    }
+
+    var refXProp = new Property(document, 'refX', refX);
+    var refYProp = new Property(document, 'refY', refY);
+    var hasRefs = refXProp.hasValue() && refYProp.hasValue();
+
+    if (hasRefs) {
+      ctx.translate(-scaleMin * refXProp.getPixels('x'), -scaleMin * refYProp.getPixels('y'));
+    }
+
+    if (clip) {
+      var scaledClipX = scaleMin * clipX;
+      var scaledClipY = scaleMin * clipY;
+      ctx.beginPath();
+      ctx.moveTo(scaledClipX, scaledClipY);
+      ctx.lineTo(width, scaledClipY);
+      ctx.lineTo(width, height);
+      ctx.lineTo(scaledClipX, height);
+      ctx.closePath();
+      ctx.clip();
+    }
+
+    if (!hasRefs) {
+      var isMeetMinY = meetOrSlice === 'meet' && scaleMin === scaleY;
+      var isSliceMaxY = meetOrSlice === 'slice' && scaleMax === scaleY;
+      var isMeetMinX = meetOrSlice === 'meet' && scaleMin === scaleX;
+      var isSliceMaxX = meetOrSlice === 'slice' && scaleMax === scaleX;
+
+      if (align.startsWith('xMid') && (isMeetMinY || isSliceMaxY)) {
+        ctx.translate(width / 2.0 - finalDesiredWidth / 2.0, 0);
+      }
+
+      if (align.endsWith('YMid') && (isMeetMinX || isSliceMaxX)) {
+        ctx.translate(0, height / 2.0 - finalDesiredHeight / 2.0);
+      }
+
+      if (align.startsWith('xMax') && (isMeetMinY || isSliceMaxY)) {
+        ctx.translate(width - finalDesiredWidth, 0);
+      }
+
+      if (align.endsWith('YMax') && (isMeetMinX || isSliceMaxX)) {
+        ctx.translate(0, height - finalDesiredHeight);
+      }
+    } // scale
+
+
+    switch (true) {
+      case align === 'none':
+        ctx.scale(scaleX, scaleY);
+        break;
+
+      case meetOrSlice === 'meet':
+        ctx.scale(scaleMin, scaleMin);
+        break;
+
+      case meetOrSlice === 'slice':
+        ctx.scale(scaleMax, scaleMax);
+        break;
+    } // translate
+
+
+    ctx.translate(-minX, -minY);
+  }
+
+  start(element) {
+    var {
+      enableRedraw = false,
+      ignoreMouse = false,
+      ignoreAnimation = false,
+      ignoreDimensions = false,
+      ignoreClear = false,
+      forceRedraw,
+      scaleWidth,
+      scaleHeight,
+      offsetX,
+      offsetY
+    } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+    var {
+      FRAMERATE,
+      mouse
+    } = this;
+    var frameDuration = 1000 / FRAMERATE;
+    this.frameDuration = frameDuration;
+    this.readyPromise = new Promise(resolve => {
+      this.resolveReady = resolve;
+    });
+
+    if (this.isReady()) {
+      this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);
+    }
+
+    if (!enableRedraw) {
+      return;
+    }
+
+    var now = Date.now();
+    var then = now;
+    var delta = 0;
+
+    var tick = () => {
+      now = Date.now();
+      delta = now - then;
+
+      if (delta >= frameDuration) {
+        then = now - delta % frameDuration;
+
+        if (this.shouldUpdate(ignoreAnimation, forceRedraw)) {
+          this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);
+          mouse.runEvents();
+        }
+      }
+
+      this.intervalId = requestAnimationFrame(tick);
+    };
+
+    if (!ignoreMouse) {
+      mouse.start();
+    }
+
+    this.intervalId = requestAnimationFrame(tick);
+  }
+
+  stop() {
+    if (this.intervalId) {
+      requestAnimationFrame.cancel(this.intervalId);
+      this.intervalId = null;
+    }
+
+    this.mouse.stop();
+  }
+
+  shouldUpdate(ignoreAnimation, forceRedraw) {
+    // need update from animations?
+    if (!ignoreAnimation) {
+      var {
+        frameDuration
+      } = this;
+      var shouldUpdate = this.animations.reduce((shouldUpdate, animation) => animation.update(frameDuration) || shouldUpdate, false);
+
+      if (shouldUpdate) {
+        return true;
+      }
+    } // need update from redraw?
+
+
+    if (typeof forceRedraw === 'function' && forceRedraw()) {
+      return true;
+    }
+
+    if (!this.isReadyLock && this.isReady()) {
+      return true;
+    } // need update from mouse events?
+
+
+    if (this.mouse.hasEvents()) {
+      return true;
+    }
+
+    return false;
+  }
+
+  render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY) {
+    var {
+      CLIENT_WIDTH,
+      CLIENT_HEIGHT,
+      viewPort,
+      ctx,
+      isFirstRender
+    } = this;
+    var canvas = ctx.canvas;
+    viewPort.clear();
+
+    if (canvas.width && canvas.height) {
+      viewPort.setCurrent(canvas.width, canvas.height);
+    } else {
+      viewPort.setCurrent(CLIENT_WIDTH, CLIENT_HEIGHT);
+    }
+
+    var widthStyle = element.getStyle('width');
+    var heightStyle = element.getStyle('height');
+
+    if (!ignoreDimensions && (isFirstRender || typeof scaleWidth !== 'number' && typeof scaleHeight !== 'number')) {
+      // set canvas size
+      if (widthStyle.hasValue()) {
+        canvas.width = widthStyle.getPixels('x');
+
+        if (canvas.style) {
+          canvas.style.width = "".concat(canvas.width, "px");
+        }
+      }
+
+      if (heightStyle.hasValue()) {
+        canvas.height = heightStyle.getPixels('y');
+
+        if (canvas.style) {
+          canvas.style.height = "".concat(canvas.height, "px");
+        }
+      }
+    }
+
+    var cWidth = canvas.clientWidth || canvas.width;
+    var cHeight = canvas.clientHeight || canvas.height;
+
+    if (ignoreDimensions && widthStyle.hasValue() && heightStyle.hasValue()) {
+      cWidth = widthStyle.getPixels('x');
+      cHeight = heightStyle.getPixels('y');
+    }
+
+    viewPort.setCurrent(cWidth, cHeight);
+
+    if (typeof offsetX === 'number') {
+      element.getAttribute('x', true).setValue(offsetX);
+    }
+
+    if (typeof offsetY === 'number') {
+      element.getAttribute('y', true).setValue(offsetY);
+    }
+
+    if (typeof scaleWidth === 'number' || typeof scaleHeight === 'number') {
+      var viewBox = toNumbers(element.getAttribute('viewBox').getString());
+      var xRatio = 0;
+      var yRatio = 0;
+
+      if (typeof scaleWidth === 'number') {
+        var _widthStyle = element.getStyle('width');
+
+        if (_widthStyle.hasValue()) {
+          xRatio = _widthStyle.getPixels('x') / scaleWidth;
+        } else if (!isNaN(viewBox[2])) {
+          xRatio = viewBox[2] / scaleWidth;
+        }
+      }
+
+      if (typeof scaleHeight === 'number') {
+        var _heightStyle = element.getStyle('height');
+
+        if (_heightStyle.hasValue()) {
+          yRatio = _heightStyle.getPixels('y') / scaleHeight;
+        } else if (!isNaN(viewBox[3])) {
+          yRatio = viewBox[3] / scaleHeight;
+        }
+      }
+
+      if (!xRatio) {
+        xRatio = yRatio;
+      }
+
+      if (!yRatio) {
+        yRatio = xRatio;
+      }
+
+      element.getAttribute('width', true).setValue(scaleWidth);
+      element.getAttribute('height', true).setValue(scaleHeight);
+      var transformStyle = element.getStyle('transform', true, true);
+      transformStyle.setValue("".concat(transformStyle.getString(), " scale(").concat(1.0 / xRatio, ", ").concat(1.0 / yRatio, ")"));
+    } // clear and render
+
+
+    if (!ignoreClear) {
+      ctx.clearRect(0, 0, cWidth, cHeight);
+    }
+
+    element.render(ctx);
+
+    if (isFirstRender) {
+      this.isFirstRender = false;
+    }
+  }
+
+}
+Screen.defaultWindow = defaultWindow;
+Screen.defaultFetch = defaultFetch$1;
+
+var {
+  defaultFetch
+} = Screen;
+var DefaultDOMParser = typeof DOMParser !== 'undefined' ? DOMParser : null;
+class Parser {
+  constructor() {
+    var {
+      fetch = defaultFetch,
+      DOMParser = DefaultDOMParser
+    } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+    this.fetch = fetch;
+    this.DOMParser = DOMParser;
+  }
+
+  parse(resource) {
+    var _this = this;
+
+    return _asyncToGenerator(function* () {
+      if (resource.startsWith('<')) {
+        return _this.parseFromString(resource);
+      }
+
+      return _this.load(resource);
+    })();
+  }
+
+  parseFromString(xml) {
+    var parser = new this.DOMParser();
+
+    try {
+      return this.checkDocument(parser.parseFromString(xml, 'image/svg+xml'));
+    } catch (err) {
+      return this.checkDocument(parser.parseFromString(xml, 'text/xml'));
+    }
+  }
+
+  checkDocument(document) {
+    var parserError = document.getElementsByTagName('parsererror')[0];
+
+    if (parserError) {
+      throw new Error(parserError.textContent);
+    }
+
+    return document;
+  }
+
+  load(url) {
+    var _this2 = this;
+
+    return _asyncToGenerator(function* () {
+      var response = yield _this2.fetch(url);
+      var xml = yield response.text();
+      return _this2.parseFromString(xml);
+    })();
+  }
+
+}
+
+class Translate {
+  constructor(_, point) {
+    this.type = 'translate';
+    this.point = null;
+    this.point = Point.parse(point);
+  }
+
+  apply(ctx) {
+    var {
+      x,
+      y
+    } = this.point;
+    ctx.translate(x || 0.0, y || 0.0);
+  }
+
+  unapply(ctx) {
+    var {
+      x,
+      y
+    } = this.point;
+    ctx.translate(-1.0 * x || 0.0, -1.0 * y || 0.0);
+  }
+
+  applyToPoint(point) {
+    var {
+      x,
+      y
+    } = this.point;
+    point.applyTransform([1, 0, 0, 1, x || 0.0, y || 0.0]);
+  }
+
+}
+
+class Rotate {
+  constructor(document, rotate, transformOrigin) {
+    this.type = 'rotate';
+    this.angle = null;
+    this.originX = null;
+    this.originY = null;
+    this.cx = 0;
+    this.cy = 0;
+    var numbers = toNumbers(rotate);
+    this.angle = new Property(document, 'angle', numbers[0]);
+    this.originX = transformOrigin[0];
+    this.originY = transformOrigin[1];
+    this.cx = numbers[1] || 0;
+    this.cy = numbers[2] || 0;
+  }
+
+  apply(ctx) {
+    var {
+      cx,
+      cy,
+      originX,
+      originY,
+      angle
+    } = this;
+    var tx = cx + originX.getPixels('x');
+    var ty = cy + originY.getPixels('y');
+    ctx.translate(tx, ty);
+    ctx.rotate(angle.getRadians());
+    ctx.translate(-tx, -ty);
+  }
+
+  unapply(ctx) {
+    var {
+      cx,
+      cy,
+      originX,
+      originY,
+      angle
+    } = this;
+    var tx = cx + originX.getPixels('x');
+    var ty = cy + originY.getPixels('y');
+    ctx.translate(tx, ty);
+    ctx.rotate(-1.0 * angle.getRadians());
+    ctx.translate(-tx, -ty);
+  }
+
+  applyToPoint(point) {
+    var {
+      cx,
+      cy,
+      angle
+    } = this;
+    var rad = angle.getRadians();
+    point.applyTransform([1, 0, 0, 1, cx || 0.0, cy || 0.0 // this.p.y
+    ]);
+    point.applyTransform([Math.cos(rad), Math.sin(rad), -Math.sin(rad), Math.cos(rad), 0, 0]);
+    point.applyTransform([1, 0, 0, 1, -cx || 0.0, -cy || 0.0 // -this.p.y
+    ]);
+  }
+
+}
+
+class Scale {
+  constructor(_, scale, transformOrigin) {
+    this.type = 'scale';
+    this.scale = null;
+    this.originX = null;
+    this.originY = null;
+    var scaleSize = Point.parseScale(scale); // Workaround for node-canvas
+
+    if (scaleSize.x === 0 || scaleSize.y === 0) {
+      scaleSize.x = PSEUDO_ZERO;
+      scaleSize.y = PSEUDO_ZERO;
+    }
+
+    this.scale = scaleSize;
+    this.originX = transformOrigin[0];
+    this.originY = transformOrigin[1];
+  }
+
+  apply(ctx) {
+    var {
+      scale: {
+        x,
+        y
+      },
+      originX,
+      originY
+    } = this;
+    var tx = originX.getPixels('x');
+    var ty = originY.getPixels('y');
+    ctx.translate(tx, ty);
+    ctx.scale(x, y || x);
+    ctx.translate(-tx, -ty);
+  }
+
+  unapply(ctx) {
+    var {
+      scale: {
+        x,
+        y
+      },
+      originX,
+      originY
+    } = this;
+    var tx = originX.getPixels('x');
+    var ty = originY.getPixels('y');
+    ctx.translate(tx, ty);
+    ctx.scale(1.0 / x, 1.0 / y || x);
+    ctx.translate(-tx, -ty);
+  }
+
+  applyToPoint(point) {
+    var {
+      x,
+      y
+    } = this.scale;
+    point.applyTransform([x || 0.0, 0, 0, y || 0.0, 0, 0]);
+  }
+
+}
+
+class Matrix {
+  constructor(_, matrix, transformOrigin) {
+    this.type = 'matrix';
+    this.matrix = [];
+    this.originX = null;
+    this.originY = null;
+    this.matrix = toNumbers(matrix);
+    this.originX = transformOrigin[0];
+    this.originY = transformOrigin[1];
+  }
+
+  apply(ctx) {
+    var {
+      originX,
+      originY,
+      matrix
+    } = this;
+    var tx = originX.getPixels('x');
+    var ty = originY.getPixels('y');
+    ctx.translate(tx, ty);
+    ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);
+    ctx.translate(-tx, -ty);
+  }
+
+  unapply(ctx) {
+    var {
+      originX,
+      originY,
+      matrix
+    } = this;
+    var a = matrix[0];
+    var b = matrix[2];
+    var c = matrix[4];
+    var d = matrix[1];
+    var e = matrix[3];
+    var f = matrix[5];
+    var g = 0.0;
+    var h = 0.0;
+    var i = 1.0;
+    var det = 1 / (a * (e * i - f * h) - b * (d * i - f * g) + c * (d * h - e * g));
+    var tx = originX.getPixels('x');
+    var ty = originY.getPixels('y');
+    ctx.translate(tx, ty);
+    ctx.transform(det * (e * i - f * h), det * (f * g - d * i), det * (c * h - b * i), det * (a * i - c * g), det * (b * f - c * e), det * (c * d - a * f));
+    ctx.translate(-tx, -ty);
+  }
+
+  applyToPoint(point) {
+    point.applyTransform(this.matrix);
+  }
+
+}
+
+class Skew extends Matrix {
+  constructor(document, skew, transformOrigin) {
+    super(document, skew, transformOrigin);
+    this.type = 'skew';
+    this.angle = null;
+    this.angle = new Property(document, 'angle', skew);
+  }
+
+}
+
+class SkewX extends Skew {
+  constructor(document, skew, transformOrigin) {
+    super(document, skew, transformOrigin);
+    this.type = 'skewX';
+    this.matrix = [1, 0, Math.tan(this.angle.getRadians()), 1, 0, 0];
+  }
+
+}
+
+class SkewY extends Skew {
+  constructor(document, skew, transformOrigin) {
+    super(document, skew, transformOrigin);
+    this.type = 'skewY';
+    this.matrix = [1, Math.tan(this.angle.getRadians()), 0, 1, 0, 0];
+  }
+
+}
+
+function parseTransforms(transform) {
+  return compressSpaces(transform).trim().replace(/\)([a-zA-Z])/g, ') $1').replace(/\)(\s?,\s?)/g, ') ').split(/\s(?=[a-z])/);
+}
+
+function parseTransform(transform) {
+  var [type, value] = transform.split('(');
+  return [type.trim(), value.trim().replace(')', '')];
+}
+
+class Transform {
+  constructor(document, transform, transformOrigin) {
+    this.document = document;
+    this.transforms = [];
+    var data = parseTransforms(transform);
+    data.forEach(transform => {
+      if (transform === 'none') {
+        return;
+      }
+
+      var [type, value] = parseTransform(transform);
+      var TransformType = Transform.transformTypes[type];
+
+      if (typeof TransformType !== 'undefined') {
+        this.transforms.push(new TransformType(this.document, value, transformOrigin));
+      }
+    });
+  }
+
+  static fromElement(document, element) {
+    var transformStyle = element.getStyle('transform', false, true);
+    var [transformOriginXProperty, transformOriginYProperty = transformOriginXProperty] = element.getStyle('transform-origin', false, true).split();
+    var transformOrigin = [transformOriginXProperty, transformOriginYProperty];
+
+    if (transformStyle.hasValue()) {
+      return new Transform(document, transformStyle.getString(), transformOrigin);
+    }
+
+    return null;
+  }
+
+  apply(ctx) {
+    var {
+      transforms
+    } = this;
+    var len = transforms.length;
+
+    for (var i = 0; i < len; i++) {
+      transforms[i].apply(ctx);
+    }
+  }
+
+  unapply(ctx) {
+    var {
+      transforms
+    } = this;
+    var len = transforms.length;
+
+    for (var i = len - 1; i >= 0; i--) {
+      transforms[i].unapply(ctx);
+    }
+  } // TODO: applyToPoint unused ... remove?
+
+
+  applyToPoint(point) {
+    var {
+      transforms
+    } = this;
+    var len = transforms.length;
+
+    for (var i = 0; i < len; i++) {
+      transforms[i].applyToPoint(point);
+    }
+  }
+
+}
+Transform.transformTypes = {
+  translate: Translate,
+  rotate: Rotate,
+  scale: Scale,
+  matrix: Matrix,
+  skewX: SkewX,
+  skewY: SkewY
+};
+
+class Element {
+  constructor(document, node) {
+    var captureTextNodes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
+    this.document = document;
+    this.node = node;
+    this.captureTextNodes = captureTextNodes;
+    this.attributes = {};
+    this.styles = {};
+    this.stylesSpecificity = {};
+    this.animationFrozen = false;
+    this.animationFrozenValue = '';
+    this.parent = null;
+    this.children = [];
+
+    if (!node || node.nodeType !== 1) {
+      // ELEMENT_NODE
+      return;
+    } // add attributes
+
+
+    Array.from(node.attributes).forEach(attribute => {
+      var nodeName = normalizeAttributeName(attribute.nodeName);
+      this.attributes[nodeName] = new Property(document, nodeName, attribute.value);
+    });
+    this.addStylesFromStyleDefinition(); // add inline styles
+
+    if (this.getAttribute('style').hasValue()) {
+      var styles = this.getAttribute('style').getString().split(';').map(_ => _.trim());
+      styles.forEach(style => {
+        if (!style) {
+          return;
+        }
+
+        var [name, value] = style.split(':').map(_ => _.trim());
+        this.styles[name] = new Property(document, name, value);
+      });
+    }
+
+    var {
+      definitions
+    } = document;
+    var id = this.getAttribute('id'); // add id
+
+    if (id.hasValue()) {
+      if (!definitions[id.getString()]) {
+        definitions[id.getString()] = this;
+      }
+    }
+
+    Array.from(node.childNodes).forEach(childNode => {
+      if (childNode.nodeType === 1) {
+        this.addChild(childNode); // ELEMENT_NODE
+      } else if (captureTextNodes && (childNode.nodeType === 3 || childNode.nodeType === 4)) {
+        var textNode = document.createTextNode(childNode);
+
+        if (textNode.getText().length > 0) {
+          this.addChild(textNode); // TEXT_NODE
+        }
+      }
+    });
+  }
+
+  getAttribute(name) {
+    var createIfNotExists = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+    var attr = this.attributes[name];
+
+    if (!attr && createIfNotExists) {
+      var _attr = new Property(this.document, name, '');
+
+      this.attributes[name] = _attr;
+      return _attr;
+    }
+
+    return attr || Property.empty(this.document);
+  }
+
+  getHrefAttribute() {
+    for (var key in this.attributes) {
+      if (key === 'href' || key.endsWith(':href')) {
+        return this.attributes[key];
+      }
+    }
+
+    return Property.empty(this.document);
+  }
+
+  getStyle(name) {
+    var createIfNotExists = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+    var skipAncestors = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
+    var style = this.styles[name];
+
+    if (style) {
+      return style;
+    }
+
+    var attr = this.getAttribute(name);
+
+    if (attr !== null && attr !== void 0 && attr.hasValue()) {
+      this.styles[name] = attr; // move up to me to cache
+
+      return attr;
+    }
+
+    if (!skipAncestors) {
+      var {
+        parent
+      } = this;
+
+      if (parent) {
+        var parentStyle = parent.getStyle(name);
+
+        if (parentStyle !== null && parentStyle !== void 0 && parentStyle.hasValue()) {
+          return parentStyle;
+        }
+      }
+    }
+
+    if (createIfNotExists) {
+      var _style = new Property(this.document, name, '');
+
+      this.styles[name] = _style;
+      return _style;
+    }
+
+    return style || Property.empty(this.document);
+  }
+
+  render(ctx) {
+    // don't render display=none
+    // don't render visibility=hidden
+    if (this.getStyle('display').getString() === 'none' || this.getStyle('visibility').getString() === 'hidden') {
+      return;
+    }
+
+    ctx.save();
+
+    if (this.getStyle('mask').hasValue()) {
+      // mask
+      var mask = this.getStyle('mask').getDefinition();
+
+      if (mask) {
+        this.applyEffects(ctx);
+        mask.apply(ctx, this);
+      }
+    } else if (this.getStyle('filter').getValue('none') !== 'none') {
+      // filter
+      var filter = this.getStyle('filter').getDefinition();
+
+      if (filter) {
+        this.applyEffects(ctx);
+        filter.apply(ctx, this);
+      }
+    } else {
+      this.setContext(ctx);
+      this.renderChildren(ctx);
+      this.clearContext(ctx);
+    }
+
+    ctx.restore();
+  }
+
+  setContext(_) {// NO RENDER
+  }
+
+  applyEffects(ctx) {
+    // transform
+    var transform = Transform.fromElement(this.document, this);
+
+    if (transform) {
+      transform.apply(ctx);
+    } // clip
+
+
+    var clipPathStyleProp = this.getStyle('clip-path', false, true);
+
+    if (clipPathStyleProp.hasValue()) {
+      var clip = clipPathStyleProp.getDefinition();
+
+      if (clip) {
+        clip.apply(ctx);
+      }
+    }
+  }
+
+  clearContext(_) {// NO RENDER
+  }
+
+  renderChildren(ctx) {
+    this.children.forEach(child => {
+      child.render(ctx);
+    });
+  }
+
+  addChild(childNode) {
+    var child = childNode instanceof Element ? childNode : this.document.createElement(childNode);
+    child.parent = this;
+
+    if (!Element.ignoreChildTypes.includes(child.type)) {
+      this.children.push(child);
+    }
+  }
+
+  matchesSelector(selector) {
+    var _node$getAttribute;
+
+    var {
+      node
+    } = this;
+
+    if (typeof node.matches === 'function') {
+      return node.matches(selector);
+    }
+
+    var styleClasses = (_node$getAttribute = node.getAttribute) === null || _node$getAttribute === void 0 ? void 0 : _node$getAttribute.call(node, 'class');
+
+    if (!styleClasses || styleClasses === '') {
+      return false;
+    }
+
+    return styleClasses.split(' ').some(styleClass => ".".concat(styleClass) === selector);
+  }
+
+  addStylesFromStyleDefinition() {
+    var {
+      styles,
+      stylesSpecificity
+    } = this.document;
+
+    for (var selector in styles) {
+      if (!selector.startsWith('@') && this.matchesSelector(selector)) {
+        var style = styles[selector];
+        var specificity = stylesSpecificity[selector];
+
+        if (style) {
+          for (var name in style) {
+            var existingSpecificity = this.stylesSpecificity[name];
+
+            if (typeof existingSpecificity === 'undefined') {
+              existingSpecificity = '000';
+            }
+
+            if (specificity >= existingSpecificity) {
+              this.styles[name] = style[name];
+              this.stylesSpecificity[name] = specificity;
+            }
+          }
+        }
+      }
+    }
+  }
+
+  removeStyles(element, ignoreStyles) {
+    var toRestore = ignoreStyles.reduce((toRestore, name) => {
+      var styleProp = element.getStyle(name);
+
+      if (!styleProp.hasValue()) {
+        return toRestore;
+      }
+
+      var value = styleProp.getString();
+      styleProp.setValue('');
+      return [...toRestore, [name, value]];
+    }, []);
+    return toRestore;
+  }
+
+  restoreStyles(element, styles) {
+    styles.forEach(_ref => {
+      var [name, value] = _ref;
+      element.getStyle(name, true).setValue(value);
+    });
+  }
+
+  isFirstChild() {
+    var _this$parent;
+
+    return ((_this$parent = this.parent) === null || _this$parent === void 0 ? void 0 : _this$parent.children.indexOf(this)) === 0;
+  }
+
+}
+Element.ignoreChildTypes = ['title'];
+
+class UnknownElement extends Element {
+  constructor(document, node, captureTextNodes) {
+    super(document, node, captureTextNodes);
+  }
+
+}
+
+function wrapFontFamily(fontFamily) {
+  var trimmed = fontFamily.trim();
+  return /^('|")/.test(trimmed) ? trimmed : "\"".concat(trimmed, "\"");
+}
+
+function prepareFontFamily(fontFamily) {
+  return typeof process === 'undefined' ? fontFamily : fontFamily.trim().split(',').map(wrapFontFamily).join(',');
+}
+/**
+ * https://developer.mozilla.org/en-US/docs/Web/CSS/font-style
+ * @param fontStyle
+ * @returns CSS font style.
+ */
+
+
+function prepareFontStyle(fontStyle) {
+  if (!fontStyle) {
+    return '';
+  }
+
+  var targetFontStyle = fontStyle.trim().toLowerCase();
+
+  switch (targetFontStyle) {
+    case 'normal':
+    case 'italic':
+    case 'oblique':
+    case 'inherit':
+    case 'initial':
+    case 'unset':
+      return targetFontStyle;
+
+    default:
+      if (/^oblique\s+(-|)\d+deg$/.test(targetFontStyle)) {
+        return targetFontStyle;
+      }
+
+      return '';
+  }
+}
+/**
+ * https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight
+ * @param fontWeight
+ * @returns CSS font weight.
+ */
+
+
+function prepareFontWeight(fontWeight) {
+  if (!fontWeight) {
+    return '';
+  }
+
+  var targetFontWeight = fontWeight.trim().toLowerCase();
+
+  switch (targetFontWeight) {
+    case 'normal':
+    case 'bold':
+    case 'lighter':
+    case 'bolder':
+    case 'inherit':
+    case 'initial':
+    case 'unset':
+      return targetFontWeight;
+
+    default:
+      if (/^[\d.]+$/.test(targetFontWeight)) {
+        return targetFontWeight;
+      }
+
+      return '';
+  }
+}
+
+class Font {
+  constructor(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit) {
+    var inheritFont = inherit ? typeof inherit === 'string' ? Font.parse(inherit) : inherit : {};
+    this.fontFamily = fontFamily || inheritFont.fontFamily;
+    this.fontSize = fontSize || inheritFont.fontSize;
+    this.fontStyle = fontStyle || inheritFont.fontStyle;
+    this.fontWeight = fontWeight || inheritFont.fontWeight;
+    this.fontVariant = fontVariant || inheritFont.fontVariant;
+  }
+
+  static parse() {
+    var font = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
+    var inherit = arguments.length > 1 ? arguments[1] : undefined;
+    var fontStyle = '';
+    var fontVariant = '';
+    var fontWeight = '';
+    var fontSize = '';
+    var fontFamily = '';
+    var parts = compressSpaces(font).trim().split(' ');
+    var set = {
+      fontSize: false,
+      fontStyle: false,
+      fontWeight: false,
+      fontVariant: false
+    };
+    parts.forEach(part => {
+      switch (true) {
+        case !set.fontStyle && Font.styles.includes(part):
+          if (part !== 'inherit') {
+            fontStyle = part;
+          }
+
+          set.fontStyle = true;
+          break;
+
+        case !set.fontVariant && Font.variants.includes(part):
+          if (part !== 'inherit') {
+            fontVariant = part;
+          }
+
+          set.fontStyle = true;
+          set.fontVariant = true;
+          break;
+
+        case !set.fontWeight && Font.weights.includes(part):
+          if (part !== 'inherit') {
+            fontWeight = part;
+          }
+
+          set.fontStyle = true;
+          set.fontVariant = true;
+          set.fontWeight = true;
+          break;
+
+        case !set.fontSize:
+          if (part !== 'inherit') {
+            [fontSize] = part.split('/');
+          }
+
+          set.fontStyle = true;
+          set.fontVariant = true;
+          set.fontWeight = true;
+          set.fontSize = true;
+          break;
+
+        default:
+          if (part !== 'inherit') {
+            fontFamily += part;
+          }
+
+      }
+    });
+    return new Font(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit);
+  }
+
+  toString() {
+    return [prepareFontStyle(this.fontStyle), this.fontVariant, prepareFontWeight(this.fontWeight), this.fontSize, // Wrap fontFamily only on nodejs and only for canvas.ctx
+    prepareFontFamily(this.fontFamily)].join(' ').trim();
+  }
+
+}
+Font.styles = 'normal|italic|oblique|inherit';
+Font.variants = 'normal|small-caps|inherit';
+Font.weights = 'normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit';
+
+class BoundingBox {
+  constructor() {
+    var x1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Number.NaN;
+    var y1 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.NaN;
+    var x2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Number.NaN;
+    var y2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Number.NaN;
+    this.x1 = x1;
+    this.y1 = y1;
+    this.x2 = x2;
+    this.y2 = y2;
+    this.addPoint(x1, y1);
+    this.addPoint(x2, y2);
+  }
+
+  get x() {
+    return this.x1;
+  }
+
+  get y() {
+    return this.y1;
+  }
+
+  get width() {
+    return this.x2 - this.x1;
+  }
+
+  get height() {
+    return this.y2 - this.y1;
+  }
+
+  addPoint(x, y) {
+    if (typeof x !== 'undefined') {
+      if (isNaN(this.x1) || isNaN(this.x2)) {
+        this.x1 = x;
+        this.x2 = x;
+      }
+
+      if (x < this.x1) {
+        this.x1 = x;
+      }
+
+      if (x > this.x2) {
+        this.x2 = x;
+      }
+    }
+
+    if (typeof y !== 'undefined') {
+      if (isNaN(this.y1) || isNaN(this.y2)) {
+        this.y1 = y;
+        this.y2 = y;
+      }
+
+      if (y < this.y1) {
+        this.y1 = y;
+      }
+
+      if (y > this.y2) {
+        this.y2 = y;
+      }
+    }
+  }
+
+  addX(x) {
+    this.addPoint(x, null);
+  }
+
+  addY(y) {
+    this.addPoint(null, y);
+  }
+
+  addBoundingBox(boundingBox) {
+    if (!boundingBox) {
+      return;
+    }
+
+    var {
+      x1,
+      y1,
+      x2,
+      y2
+    } = boundingBox;
+    this.addPoint(x1, y1);
+    this.addPoint(x2, y2);
+  }
+
+  sumCubic(t, p0, p1, p2, p3) {
+    return Math.pow(1 - t, 3) * p0 + 3 * Math.pow(1 - t, 2) * t * p1 + 3 * (1 - t) * Math.pow(t, 2) * p2 + Math.pow(t, 3) * p3;
+  }
+
+  bezierCurveAdd(forX, p0, p1, p2, p3) {
+    var b = 6 * p0 - 12 * p1 + 6 * p2;
+    var a = -3 * p0 + 9 * p1 - 9 * p2 + 3 * p3;
+    var c = 3 * p1 - 3 * p0;
+
+    if (a === 0) {
+      if (b === 0) {
+        return;
+      }
+
+      var t = -c / b;
+
+      if (0 < t && t < 1) {
+        if (forX) {
+          this.addX(this.sumCubic(t, p0, p1, p2, p3));
+        } else {
+          this.addY(this.sumCubic(t, p0, p1, p2, p3));
+        }
+      }
+
+      return;
+    }
+
+    var b2ac = Math.pow(b, 2) - 4 * c * a;
+
+    if (b2ac < 0) {
+      return;
+    }
+
+    var t1 = (-b + Math.sqrt(b2ac)) / (2 * a);
+
+    if (0 < t1 && t1 < 1) {
+      if (forX) {
+        this.addX(this.sumCubic(t1, p0, p1, p2, p3));
+      } else {
+        this.addY(this.sumCubic(t1, p0, p1, p2, p3));
+      }
+    }
+
+    var t2 = (-b - Math.sqrt(b2ac)) / (2 * a);
+
+    if (0 < t2 && t2 < 1) {
+      if (forX) {
+        this.addX(this.sumCubic(t2, p0, p1, p2, p3));
+      } else {
+        this.addY(this.sumCubic(t2, p0, p1, p2, p3));
+      }
+    }
+  } // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html
+
+
+  addBezierCurve(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {
+    this.addPoint(p0x, p0y);
+    this.addPoint(p3x, p3y);
+    this.bezierCurveAdd(true, p0x, p1x, p2x, p3x);
+    this.bezierCurveAdd(false, p0y, p1y, p2y, p3y);
+  }
+
+  addQuadraticCurve(p0x, p0y, p1x, p1y, p2x, p2y) {
+    var cp1x = p0x + 2 / 3 * (p1x - p0x); // CP1 = QP0 + 2/3 *(QP1-QP0)
+
+    var cp1y = p0y + 2 / 3 * (p1y - p0y); // CP1 = QP0 + 2/3 *(QP1-QP0)
+
+    var cp2x = cp1x + 1 / 3 * (p2x - p0x); // CP2 = CP1 + 1/3 *(QP2-QP0)
+
+    var cp2y = cp1y + 1 / 3 * (p2y - p0y); // CP2 = CP1 + 1/3 *(QP2-QP0)
+
+    this.addBezierCurve(p0x, p0y, cp1x, cp2x, cp1y, cp2y, p2x, p2y);
+  }
+
+  isPointInBox(x, y) {
+    var {
+      x1,
+      y1,
+      x2,
+      y2
+    } = this;
+    return x1 <= x && x <= x2 && y1 <= y && y <= y2;
+  }
+
+}
+
+class PathParser extends SVGPathData {
+  constructor(path) {
+    super(path // Fix spaces after signs.
+    .replace(/([+\-.])\s+/gm, '$1') // Remove invalid part.
+    .replace(/[^MmZzLlHhVvCcSsQqTtAae\d\s.,+-].*/g, ''));
+    this.control = null;
+    this.start = null;
+    this.current = null;
+    this.command = null;
+    this.commands = this.commands;
+    this.i = -1;
+    this.previousCommand = null;
+    this.points = [];
+    this.angles = [];
+  }
+
+  reset() {
+    this.i = -1;
+    this.command = null;
+    this.previousCommand = null;
+    this.start = new Point(0, 0);
+    this.control = new Point(0, 0);
+    this.current = new Point(0, 0);
+    this.points = [];
+    this.angles = [];
+  }
+
+  isEnd() {
+    var {
+      i,
+      commands
+    } = this;
+    return i >= commands.length - 1;
+  }
+
+  next() {
+    var command = this.commands[++this.i];
+    this.previousCommand = this.command;
+    this.command = command;
+    return command;
+  }
+
+  getPoint() {
+    var xProp = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'x';
+    var yProp = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'y';
+    var point = new Point(this.command[xProp], this.command[yProp]);
+    return this.makeAbsolute(point);
+  }
+
+  getAsControlPoint(xProp, yProp) {
+    var point = this.getPoint(xProp, yProp);
+    this.control = point;
+    return point;
+  }
+
+  getAsCurrentPoint(xProp, yProp) {
+    var point = this.getPoint(xProp, yProp);
+    this.current = point;
+    return point;
+  }
+
+  getReflectedControlPoint() {
+    var previousCommand = this.previousCommand.type;
+
+    if (previousCommand !== SVGPathData.CURVE_TO && previousCommand !== SVGPathData.SMOOTH_CURVE_TO && previousCommand !== SVGPathData.QUAD_TO && previousCommand !== SVGPathData.SMOOTH_QUAD_TO) {
+      return this.current;
+    } // reflect point
+
+
+    var {
+      current: {
+        x: cx,
+        y: cy
+      },
+      control: {
+        x: ox,
+        y: oy
+      }
+    } = this;
+    var point = new Point(2 * cx - ox, 2 * cy - oy);
+    return point;
+  }
+
+  makeAbsolute(point) {
+    if (this.command.relative) {
+      var {
+        x,
+        y
+      } = this.current;
+      point.x += x;
+      point.y += y;
+    }
+
+    return point;
+  }
+
+  addMarker(point, from, priorTo) {
+    var {
+      points,
+      angles
+    } = this; // if the last angle isn't filled in because we didn't have this point yet ...
+
+    if (priorTo && angles.length > 0 && !angles[angles.length - 1]) {
+      angles[angles.length - 1] = points[points.length - 1].angleTo(priorTo);
+    }
+
+    this.addMarkerAngle(point, from ? from.angleTo(point) : null);
+  }
+
+  addMarkerAngle(point, angle) {
+    this.points.push(point);
+    this.angles.push(angle);
+  }
+
+  getMarkerPoints() {
+    return this.points;
+  }
+
+  getMarkerAngles() {
+    var {
+      angles
+    } = this;
+    var len = angles.length;
+
+    for (var i = 0; i < len; i++) {
+      if (!angles[i]) {
+        for (var j = i + 1; j < len; j++) {
+          if (angles[j]) {
+            angles[i] = angles[j];
+            break;
+          }
+        }
+      }
+    }
+
+    return angles;
+  }
+
+}
+
+class RenderedElement extends Element {
+  constructor() {
+    super(...arguments);
+    this.modifiedEmSizeStack = false;
+  }
+
+  calculateOpacity() {
+    var opacity = 1.0; // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this
+
+    var element = this;
+
+    while (element) {
+      var opacityStyle = element.getStyle('opacity', false, true); // no ancestors on style call
+
+      if (opacityStyle.hasValue(true)) {
+        opacity *= opacityStyle.getNumber();
+      }
+
+      element = element.parent;
+    }
+
+    return opacity;
+  }
+
+  setContext(ctx) {
+    var fromMeasure = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+
+    if (!fromMeasure) {
+      // causes stack overflow when measuring text with gradients
+      // fill
+      var fillStyleProp = this.getStyle('fill');
+      var fillOpacityStyleProp = this.getStyle('fill-opacity');
+      var strokeStyleProp = this.getStyle('stroke');
+      var strokeOpacityProp = this.getStyle('stroke-opacity');
+
+      if (fillStyleProp.isUrlDefinition()) {
+        var fillStyle = fillStyleProp.getFillStyleDefinition(this, fillOpacityStyleProp);
+
+        if (fillStyle) {
+          ctx.fillStyle = fillStyle;
+        }
+      } else if (fillStyleProp.hasValue()) {
+        if (fillStyleProp.getString() === 'currentColor') {
+          fillStyleProp.setValue(this.getStyle('color').getColor());
+        }
+
+        var _fillStyle = fillStyleProp.getColor();
+
+        if (_fillStyle !== 'inherit') {
+          ctx.fillStyle = _fillStyle === 'none' ? 'rgba(0,0,0,0)' : _fillStyle;
+        }
+      }
+
+      if (fillOpacityStyleProp.hasValue()) {
+        var _fillStyle2 = new Property(this.document, 'fill', ctx.fillStyle).addOpacity(fillOpacityStyleProp).getColor();
+
+        ctx.fillStyle = _fillStyle2;
+      } // stroke
+
+
+      if (strokeStyleProp.isUrlDefinition()) {
+        var strokeStyle = strokeStyleProp.getFillStyleDefinition(this, strokeOpacityProp);
+
+        if (strokeStyle) {
+          ctx.strokeStyle = strokeStyle;
+        }
+      } else if (strokeStyleProp.hasValue()) {
+        if (strokeStyleProp.getString() === 'currentColor') {
+          strokeStyleProp.setValue(this.getStyle('color').getColor());
+        }
+
+        var _strokeStyle = strokeStyleProp.getString();
+
+        if (_strokeStyle !== 'inherit') {
+          ctx.strokeStyle = _strokeStyle === 'none' ? 'rgba(0,0,0,0)' : _strokeStyle;
+        }
+      }
+
+      if (strokeOpacityProp.hasValue()) {
+        var _strokeStyle2 = new Property(this.document, 'stroke', ctx.strokeStyle).addOpacity(strokeOpacityProp).getString();
+
+        ctx.strokeStyle = _strokeStyle2;
+      }
+
+      var strokeWidthStyleProp = this.getStyle('stroke-width');
+
+      if (strokeWidthStyleProp.hasValue()) {
+        var newLineWidth = strokeWidthStyleProp.getPixels();
+        ctx.lineWidth = !newLineWidth ? PSEUDO_ZERO // browsers don't respect 0 (or node-canvas? :-)
+        : newLineWidth;
+      }
+
+      var strokeLinecapStyleProp = this.getStyle('stroke-linecap');
+      var strokeLinejoinStyleProp = this.getStyle('stroke-linejoin');
+      var strokeMiterlimitProp = this.getStyle('stroke-miterlimit'); // NEED TEST
+      // const pointOrderStyleProp = this.getStyle('paint-order');
+
+      var strokeDasharrayStyleProp = this.getStyle('stroke-dasharray');
+      var strokeDashoffsetProp = this.getStyle('stroke-dashoffset');
+
+      if (strokeLinecapStyleProp.hasValue()) {
+        ctx.lineCap = strokeLinecapStyleProp.getString();
+      }
+
+      if (strokeLinejoinStyleProp.hasValue()) {
+        ctx.lineJoin = strokeLinejoinStyleProp.getString();
+      }
+
+      if (strokeMiterlimitProp.hasValue()) {
+        ctx.miterLimit = strokeMiterlimitProp.getNumber();
+      } // NEED TEST
+      // if (pointOrderStyleProp.hasValue()) {
+      // 	// ?
+      // 	ctx.paintOrder = pointOrderStyleProp.getValue();
+      // }
+
+
+      if (strokeDasharrayStyleProp.hasValue() && strokeDasharrayStyleProp.getString() !== 'none') {
+        var gaps = toNumbers(strokeDasharrayStyleProp.getString());
+
+        if (typeof ctx.setLineDash !== 'undefined') {
+          ctx.setLineDash(gaps);
+        } else // @ts-expect-error Handle browser prefix.
+          if (typeof ctx.webkitLineDash !== 'undefined') {
+            // @ts-expect-error Handle browser prefix.
+            ctx.webkitLineDash = gaps;
+          } else // @ts-expect-error Handle browser prefix.
+            if (typeof ctx.mozDash !== 'undefined' && !(gaps.length === 1 && gaps[0] === 0)) {
+              // @ts-expect-error Handle browser prefix.
+              ctx.mozDash = gaps;
+            }
+
+        var offset = strokeDashoffsetProp.getPixels();
+
+        if (typeof ctx.lineDashOffset !== 'undefined') {
+          ctx.lineDashOffset = offset;
+        } else // @ts-expect-error Handle browser prefix.
+          if (typeof ctx.webkitLineDashOffset !== 'undefined') {
+            // @ts-expect-error Handle browser prefix.
+            ctx.webkitLineDashOffset = offset;
+          } else // @ts-expect-error Handle browser prefix.
+            if (typeof ctx.mozDashOffset !== 'undefined') {
+              // @ts-expect-error Handle browser prefix.
+              ctx.mozDashOffset = offset;
+            }
+      }
+    } // font
+
+
+    this.modifiedEmSizeStack = false;
+
+    if (typeof ctx.font !== 'undefined') {
+      var fontStyleProp = this.getStyle('font');
+      var fontStyleStyleProp = this.getStyle('font-style');
+      var fontVariantStyleProp = this.getStyle('font-variant');
+      var fontWeightStyleProp = this.getStyle('font-weight');
+      var fontSizeStyleProp = this.getStyle('font-size');
+      var fontFamilyStyleProp = this.getStyle('font-family');
+      var font = new Font(fontStyleStyleProp.getString(), fontVariantStyleProp.getString(), fontWeightStyleProp.getString(), fontSizeStyleProp.hasValue() ? "".concat(fontSizeStyleProp.getPixels(true), "px") : '', fontFamilyStyleProp.getString(), Font.parse(fontStyleProp.getString(), ctx.font));
+      fontStyleStyleProp.setValue(font.fontStyle);
+      fontVariantStyleProp.setValue(font.fontVariant);
+      fontWeightStyleProp.setValue(font.fontWeight);
+      fontSizeStyleProp.setValue(font.fontSize);
+      fontFamilyStyleProp.setValue(font.fontFamily);
+      ctx.font = font.toString();
+
+      if (fontSizeStyleProp.isPixels()) {
+        this.document.emSize = fontSizeStyleProp.getPixels();
+        this.modifiedEmSizeStack = true;
+      }
+    }
+
+    if (!fromMeasure) {
+      // effects
+      this.applyEffects(ctx); // opacity
+
+      ctx.globalAlpha = this.calculateOpacity();
+    }
+  }
+
+  clearContext(ctx) {
+    super.clearContext(ctx);
+
+    if (this.modifiedEmSizeStack) {
+      this.document.popEmSize();
+    }
+  }
+
+}
+
+class PathElement extends RenderedElement {
+  constructor(document, node, captureTextNodes) {
+    super(document, node, captureTextNodes);
+    this.type = 'path';
+    this.pathParser = null;
+    this.pathParser = new PathParser(this.getAttribute('d').getString());
+  }
+
+  path(ctx) {
+    var {
+      pathParser
+    } = this;
+    var boundingBox = new BoundingBox();
+    pathParser.reset();
+
+    if (ctx) {
+      ctx.beginPath();
+    }
+
+    while (!pathParser.isEnd()) {
+      switch (pathParser.next().type) {
+        case PathParser.MOVE_TO:
+          this.pathM(ctx, boundingBox);
+          break;
+
+        case PathParser.LINE_TO:
+          this.pathL(ctx, boundingBox);
+          break;
+
+        case PathParser.HORIZ_LINE_TO:
+          this.pathH(ctx, boundingBox);
+          break;
+
+        case PathParser.VERT_LINE_TO:
+          this.pathV(ctx, boundingBox);
+          break;
+
+        case PathParser.CURVE_TO:
+          this.pathC(ctx, boundingBox);
+          break;
+
+        case PathParser.SMOOTH_CURVE_TO:
+          this.pathS(ctx, boundingBox);
+          break;
+
+        case PathParser.QUAD_TO:
+          this.pathQ(ctx, boundingBox);
+          break;
+
+        case PathParser.SMOOTH_QUAD_TO:
+          this.pathT(ctx, boundingBox);
+          break;
+
+        case PathParser.ARC:
+          this.pathA(ctx, boundingBox);
+          break;
+
+        case PathParser.CLOSE_PATH:
+          this.pathZ(ctx, boundingBox);
+          break;
+      }
+    }
+
+    return boundingBox;
+  }
+
+  getBoundingBox(_) {
+    return this.path();
+  }
+
+  getMarkers() {
+    var {
+      pathParser
+    } = this;
+    var points = pathParser.getMarkerPoints();
+    var angles = pathParser.getMarkerAngles();
+    var markers = points.map((point, i) => [point, angles[i]]);
+    return markers;
+  }
+
+  renderChildren(ctx) {
+    this.path(ctx);
+    this.document.screen.mouse.checkPath(this, ctx);
+    var fillRuleStyleProp = this.getStyle('fill-rule');
+
+    if (ctx.fillStyle !== '') {
+      if (fillRuleStyleProp.getString('inherit') !== 'inherit') {
+        ctx.fill(fillRuleStyleProp.getString());
+      } else {
+        ctx.fill();
+      }
+    }
+
+    if (ctx.strokeStyle !== '') {
+      if (this.getAttribute('vector-effect').getString() === 'non-scaling-stroke') {
+        ctx.save();
+        ctx.setTransform(1, 0, 0, 1, 0, 0);
+        ctx.stroke();
+        ctx.restore();
+      } else {
+        ctx.stroke();
+      }
+    }
+
+    var markers = this.getMarkers();
+
+    if (markers) {
+      var markersLastIndex = markers.length - 1;
+      var markerStartStyleProp = this.getStyle('marker-start');
+      var markerMidStyleProp = this.getStyle('marker-mid');
+      var markerEndStyleProp = this.getStyle('marker-end');
+
+      if (markerStartStyleProp.isUrlDefinition()) {
+        var marker = markerStartStyleProp.getDefinition();
+        var [point, angle] = markers[0];
+        marker.render(ctx, point, angle);
+      }
+
+      if (markerMidStyleProp.isUrlDefinition()) {
+        var _marker = markerMidStyleProp.getDefinition();
+
+        for (var i = 1; i < markersLastIndex; i++) {
+          var [_point, _angle] = markers[i];
+
+          _marker.render(ctx, _point, _angle);
+        }
+      }
+
+      if (markerEndStyleProp.isUrlDefinition()) {
+        var _marker2 = markerEndStyleProp.getDefinition();
+
+        var [_point2, _angle2] = markers[markersLastIndex];
+
+        _marker2.render(ctx, _point2, _angle2);
+      }
+    }
+  }
+
+  static pathM(pathParser) {
+    var point = pathParser.getAsCurrentPoint();
+    pathParser.start = pathParser.current;
+    return {
+      point
+    };
+  }
+
+  pathM(ctx, boundingBox) {
+    var {
+      pathParser
+    } = this;
+    var {
+      point
+    } = PathElement.pathM(pathParser);
+    var {
+      x,
+      y
+    } = point;
+    pathParser.addMarker(point);
+    boundingBox.addPoint(x, y);
+
+    if (ctx) {
+      ctx.moveTo(x, y);
+    }
+  }
+
+  static pathL(pathParser) {
+    var {
+      current
+    } = pathParser;
+    var point = pathParser.getAsCurrentPoint();
+    return {
+      current,
+      point
+    };
+  }
+
+  pathL(ctx, boundingBox) {
+    var {
+      pathParser
+    } = this;
+    var {
+      current,
+      point
+    } = PathElement.pathL(pathParser);
+    var {
+      x,
+      y
+    } = point;
+    pathParser.addMarker(point, current);
+    boundingBox.addPoint(x, y);
+
+    if (ctx) {
+      ctx.lineTo(x, y);
+    }
+  }
+
+  static pathH(pathParser) {
+    var {
+      current,
+      command
+    } = pathParser;
+    var point = new Point((command.relative ? current.x : 0) + command.x, current.y);
+    pathParser.current = point;
+    return {
+      current,
+      point
+    };
+  }
+
+  pathH(ctx, boundingBox) {
+    var {
+      pathParser
+    } = this;
+    var {
+      current,
+      point
+    } = PathElement.pathH(pathParser);
+    var {
+      x,
+      y
+    } = point;
+    pathParser.addMarker(point, current);
+    boundingBox.addPoint(x, y);
+
+    if (ctx) {
+      ctx.lineTo(x, y);
+    }
+  }
+
+  static pathV(pathParser) {
+    var {
+      current,
+      command
+    } = pathParser;
+    var point = new Point(current.x, (command.relative ? current.y : 0) + command.y);
+    pathParser.current = point;
+    return {
+      current,
+      point
+    };
+  }
+
+  pathV(ctx, boundingBox) {
+    var {
+      pathParser
+    } = this;
+    var {
+      current,
+      point
+    } = PathElement.pathV(pathParser);
+    var {
+      x,
+      y
+    } = point;
+    pathParser.addMarker(point, current);
+    boundingBox.addPoint(x, y);
+
+    if (ctx) {
+      ctx.lineTo(x, y);
+    }
+  }
+
+  static pathC(pathParser) {
+    var {
+      current
+    } = pathParser;
+    var point = pathParser.getPoint('x1', 'y1');
+    var controlPoint = pathParser.getAsControlPoint('x2', 'y2');
+    var currentPoint = pathParser.getAsCurrentPoint();
+    return {
+      current,
+      point,
+      controlPoint,
+      currentPoint
+    };
+  }
+
+  pathC(ctx, boundingBox) {
+    var {
+      pathParser
+    } = this;
+    var {
+      current,
+      point,
+      controlPoint,
+      currentPoint
+    } = PathElement.pathC(pathParser);
+    pathParser.addMarker(currentPoint, controlPoint, point);
+    boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+
+    if (ctx) {
+      ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+    }
+  }
+
+  static pathS(pathParser) {
+    var {
+      current
+    } = pathParser;
+    var point = pathParser.getReflectedControlPoint();
+    var controlPoint = pathParser.getAsControlPoint('x2', 'y2');
+    var currentPoint = pathParser.getAsCurrentPoint();
+    return {
+      current,
+      point,
+      controlPoint,
+      currentPoint
+    };
+  }
+
+  pathS(ctx, boundingBox) {
+    var {
+      pathParser
+    } = this;
+    var {
+      current,
+      point,
+      controlPoint,
+      currentPoint
+    } = PathElement.pathS(pathParser);
+    pathParser.addMarker(currentPoint, controlPoint, point);
+    boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+
+    if (ctx) {
+      ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+    }
+  }
+
+  static pathQ(pathParser) {
+    var {
+      current
+    } = pathParser;
+    var controlPoint = pathParser.getAsControlPoint('x1', 'y1');
+    var currentPoint = pathParser.getAsCurrentPoint();
+    return {
+      current,
+      controlPoint,
+      currentPoint
+    };
+  }
+
+  pathQ(ctx, boundingBox) {
+    var {
+      pathParser
+    } = this;
+    var {
+      current,
+      controlPoint,
+      currentPoint
+    } = PathElement.pathQ(pathParser);
+    pathParser.addMarker(currentPoint, controlPoint, controlPoint);
+    boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+
+    if (ctx) {
+      ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+    }
+  }
+
+  static pathT(pathParser) {
+    var {
+      current
+    } = pathParser;
+    var controlPoint = pathParser.getReflectedControlPoint();
+    pathParser.control = controlPoint;
+    var currentPoint = pathParser.getAsCurrentPoint();
+    return {
+      current,
+      controlPoint,
+      currentPoint
+    };
+  }
+
+  pathT(ctx, boundingBox) {
+    var {
+      pathParser
+    } = this;
+    var {
+      current,
+      controlPoint,
+      currentPoint
+    } = PathElement.pathT(pathParser);
+    pathParser.addMarker(currentPoint, controlPoint, controlPoint);
+    boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+
+    if (ctx) {
+      ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+    }
+  }
+
+  static pathA(pathParser) {
+    var {
+      current,
+      command
+    } = pathParser;
+    var {
+      rX,
+      rY,
+      xRot,
+      lArcFlag,
+      sweepFlag
+    } = command;
+    var xAxisRotation = xRot * (Math.PI / 180.0);
+    var currentPoint = pathParser.getAsCurrentPoint(); // Conversion from endpoint to center parameterization
+    // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes
+    // x1', y1'
+
+    var currp = new Point(Math.cos(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.sin(xAxisRotation) * (current.y - currentPoint.y) / 2.0, -Math.sin(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * (current.y - currentPoint.y) / 2.0); // adjust radii
+
+    var l = Math.pow(currp.x, 2) / Math.pow(rX, 2) + Math.pow(currp.y, 2) / Math.pow(rY, 2);
+
+    if (l > 1) {
+      rX *= Math.sqrt(l);
+      rY *= Math.sqrt(l);
+    } // cx', cy'
+
+
+    var s = (lArcFlag === sweepFlag ? -1 : 1) * Math.sqrt((Math.pow(rX, 2) * Math.pow(rY, 2) - Math.pow(rX, 2) * Math.pow(currp.y, 2) - Math.pow(rY, 2) * Math.pow(currp.x, 2)) / (Math.pow(rX, 2) * Math.pow(currp.y, 2) + Math.pow(rY, 2) * Math.pow(currp.x, 2)));
+
+    if (isNaN(s)) {
+      s = 0;
+    }
+
+    var cpp = new Point(s * rX * currp.y / rY, s * -rY * currp.x / rX); // cx, cy
+
+    var centp = new Point((current.x + currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * cpp.x - Math.sin(xAxisRotation) * cpp.y, (current.y + currentPoint.y) / 2.0 + Math.sin(xAxisRotation) * cpp.x + Math.cos(xAxisRotation) * cpp.y); // initial angle
+
+    var a1 = vectorsAngle([1, 0], [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY]); // θ1
+    // angle delta
+
+    var u = [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY];
+    var v = [(-currp.x - cpp.x) / rX, (-currp.y - cpp.y) / rY];
+    var ad = vectorsAngle(u, v); // Δθ
+
+    if (vectorsRatio(u, v) <= -1) {
+      ad = Math.PI;
+    }
+
+    if (vectorsRatio(u, v) >= 1) {
+      ad = 0;
+    }
+
+    return {
+      currentPoint,
+      rX,
+      rY,
+      sweepFlag,
+      xAxisRotation,
+      centp,
+      a1,
+      ad
+    };
+  }
+
+  pathA(ctx, boundingBox) {
+    var {
+      pathParser
+    } = this;
+    var {
+      currentPoint,
+      rX,
+      rY,
+      sweepFlag,
+      xAxisRotation,
+      centp,
+      a1,
+      ad
+    } = PathElement.pathA(pathParser); // for markers
+
+    var dir = 1 - sweepFlag ? 1.0 : -1.0;
+    var ah = a1 + dir * (ad / 2.0);
+    var halfWay = new Point(centp.x + rX * Math.cos(ah), centp.y + rY * Math.sin(ah));
+    pathParser.addMarkerAngle(halfWay, ah - dir * Math.PI / 2);
+    pathParser.addMarkerAngle(currentPoint, ah - dir * Math.PI);
+    boundingBox.addPoint(currentPoint.x, currentPoint.y); // TODO: this is too naive, make it better
+
+    if (ctx && !isNaN(a1) && !isNaN(ad)) {
+      var r = rX > rY ? rX : rY;
+      var sx = rX > rY ? 1 : rX / rY;
+      var sy = rX > rY ? rY / rX : 1;
+      ctx.translate(centp.x, centp.y);
+      ctx.rotate(xAxisRotation);
+      ctx.scale(sx, sy);
+      ctx.arc(0, 0, r, a1, a1 + ad, Boolean(1 - sweepFlag));
+      ctx.scale(1 / sx, 1 / sy);
+      ctx.rotate(-xAxisRotation);
+      ctx.translate(-centp.x, -centp.y);
+    }
+  }
+
+  static pathZ(pathParser) {
+    pathParser.current = pathParser.start;
+  }
+
+  pathZ(ctx, boundingBox) {
+    PathElement.pathZ(this.pathParser);
+
+    if (ctx) {
+      // only close path if it is not a straight line
+      if (boundingBox.x1 !== boundingBox.x2 && boundingBox.y1 !== boundingBox.y2) {
+        ctx.closePath();
+      }
+    }
+  }
+
+}
+
+class GlyphElement extends PathElement {
+  constructor(document, node, captureTextNodes) {
+    super(document, node, captureTextNodes);
+    this.type = 'glyph';
+    this.horizAdvX = this.getAttribute('horiz-adv-x').getNumber();
+    this.unicode = this.getAttribute('unicode').getString();
+    this.arabicForm = this.getAttribute('arabic-form').getString();
+  }
+
+}
+
+class TextElement extends RenderedElement {
+  constructor(document, node, captureTextNodes) {
+    super(document, node, new.target === TextElement ? true : captureTextNodes);
+    this.type = 'text';
+    this.x = 0;
+    this.y = 0;
+    this.measureCache = -1;
+  }
+
+  setContext(ctx) {
+    var fromMeasure = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+    super.setContext(ctx, fromMeasure);
+    var textBaseline = this.getStyle('dominant-baseline').getTextBaseline() || this.getStyle('alignment-baseline').getTextBaseline();
+
+    if (textBaseline) {
+      ctx.textBaseline = textBaseline;
+    }
+  }
+
+  initializeCoordinates() {
+    this.x = 0;
+    this.y = 0;
+    this.leafTexts = [];
+    this.textChunkStart = 0;
+    this.minX = Number.POSITIVE_INFINITY;
+    this.maxX = Number.NEGATIVE_INFINITY;
+  }
+
+  getBoundingBox(ctx) {
+    if (this.type !== 'text') {
+      return this.getTElementBoundingBox(ctx);
+    } // first, calculate child positions
+
+
+    this.initializeCoordinates();
+    this.adjustChildCoordinatesRecursive(ctx);
+    var boundingBox = null; // then calculate bounding box
+
+    this.children.forEach((_, i) => {
+      var childBoundingBox = this.getChildBoundingBox(ctx, this, this, i);
+
+      if (!boundingBox) {
+        boundingBox = childBoundingBox;
+      } else {
+        boundingBox.addBoundingBox(childBoundingBox);
+      }
+    });
+    return boundingBox;
+  }
+
+  getFontSize() {
+    var {
+      document,
+      parent
+    } = this;
+    var inheritFontSize = Font.parse(document.ctx.font).fontSize;
+    var fontSize = parent.getStyle('font-size').getNumber(inheritFontSize);
+    return fontSize;
+  }
+
+  getTElementBoundingBox(ctx) {
+    var fontSize = this.getFontSize();
+    return new BoundingBox(this.x, this.y - fontSize, this.x + this.measureText(ctx), this.y);
+  }
+
+  getGlyph(font, text, i) {
+    var char = text[i];
+    var glyph = null;
+
+    if (font.isArabic) {
+      var len = text.length;
+      var prevChar = text[i - 1];
+      var nextChar = text[i + 1];
+      var arabicForm = 'isolated';
+
+      if ((i === 0 || prevChar === ' ') && i < len - 1 && nextChar !== ' ') {
+        arabicForm = 'terminal';
+      }
+
+      if (i > 0 && prevChar !== ' ' && i < len - 1 && nextChar !== ' ') {
+        arabicForm = 'medial';
+      }
+
+      if (i > 0 && prevChar !== ' ' && (i === len - 1 || nextChar === ' ')) {
+        arabicForm = 'initial';
+      }
+
+      if (typeof font.glyphs[char] !== 'undefined') {
+        // NEED TEST
+        var maybeGlyph = font.glyphs[char];
+        glyph = maybeGlyph instanceof GlyphElement ? maybeGlyph : maybeGlyph[arabicForm];
+      }
+    } else {
+      glyph = font.glyphs[char];
+    }
+
+    if (!glyph) {
+      glyph = font.missingGlyph;
+    }
+
+    return glyph;
+  }
+
+  getText() {
+    return '';
+  }
+
+  getTextFromNode(node) {
+    var textNode = node || this.node;
+    var childNodes = Array.from(textNode.parentNode.childNodes);
+    var index = childNodes.indexOf(textNode);
+    var lastIndex = childNodes.length - 1;
+    var text = compressSpaces( // textNode.value
+    // || textNode.text
+    textNode.textContent || '');
+
+    if (index === 0) {
+      text = trimLeft(text);
+    }
+
+    if (index === lastIndex) {
+      text = trimRight(text);
+    }
+
+    return text;
+  }
+
+  renderChildren(ctx) {
+    if (this.type !== 'text') {
+      this.renderTElementChildren(ctx);
+      return;
+    } // first, calculate child positions
+
+
+    this.initializeCoordinates();
+    this.adjustChildCoordinatesRecursive(ctx); // then render
+
+    this.children.forEach((_, i) => {
+      this.renderChild(ctx, this, this, i);
+    });
+    var {
+      mouse
+    } = this.document.screen; // Do not calc bounding box if mouse is not working.
+
+    if (mouse.isWorking()) {
+      mouse.checkBoundingBox(this, this.getBoundingBox(ctx));
+    }
+  }
+
+  renderTElementChildren(ctx) {
+    var {
+      document,
+      parent
+    } = this;
+    var renderText = this.getText();
+    var customFont = parent.getStyle('font-family').getDefinition();
+
+    if (customFont) {
+      var {
+        unitsPerEm
+      } = customFont.fontFace;
+      var ctxFont = Font.parse(document.ctx.font);
+      var fontSize = parent.getStyle('font-size').getNumber(ctxFont.fontSize);
+      var fontStyle = parent.getStyle('font-style').getString(ctxFont.fontStyle);
+      var scale = fontSize / unitsPerEm;
+      var text = customFont.isRTL ? renderText.split('').reverse().join('') : renderText;
+      var dx = toNumbers(parent.getAttribute('dx').getString());
+      var len = text.length;
+
+      for (var i = 0; i < len; i++) {
+        var glyph = this.getGlyph(customFont, text, i);
+        ctx.translate(this.x, this.y);
+        ctx.scale(scale, -scale);
+        var lw = ctx.lineWidth;
+        ctx.lineWidth = ctx.lineWidth * unitsPerEm / fontSize;
+
+        if (fontStyle === 'italic') {
+          ctx.transform(1, 0, .4, 1, 0, 0);
+        }
+
+        glyph.render(ctx);
+
+        if (fontStyle === 'italic') {
+          ctx.transform(1, 0, -.4, 1, 0, 0);
+        }
+
+        ctx.lineWidth = lw;
+        ctx.scale(1 / scale, -1 / scale);
+        ctx.translate(-this.x, -this.y);
+        this.x += fontSize * (glyph.horizAdvX || customFont.horizAdvX) / unitsPerEm;
+
+        if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {
+          this.x += dx[i];
+        }
+      }
+
+      return;
+    }
+
+    var {
+      x,
+      y
+    } = this; // NEED TEST
+    // if (ctx.paintOrder === 'stroke') {
+    // 	if (ctx.strokeStyle) {
+    // 		ctx.strokeText(renderText, x, y);
+    // 	}
+    // 	if (ctx.fillStyle) {
+    // 		ctx.fillText(renderText, x, y);
+    // 	}
+    // } else {
+
+    if (ctx.fillStyle) {
+      ctx.fillText(renderText, x, y);
+    }
+
+    if (ctx.strokeStyle) {
+      ctx.strokeText(renderText, x, y);
+    } // }
+
+  }
+
+  applyAnchoring() {
+    if (this.textChunkStart >= this.leafTexts.length) {
+      return;
+    } // This is basically the "Apply anchoring" part of https://www.w3.org/TR/SVG2/text.html#TextLayoutAlgorithm.
+    // The difference is that we apply the anchoring as soon as a chunk is finished. This saves some extra looping.
+    // Vertical text is not supported.
+
+
+    var firstElement = this.leafTexts[this.textChunkStart];
+    var textAnchor = firstElement.getStyle('text-anchor').getString('start');
+    var isRTL = false; // we treat RTL like LTR
+
+    var shift = 0;
+
+    if (textAnchor === 'start' && !isRTL || textAnchor === 'end' && isRTL) {
+      shift = firstElement.x - this.minX;
+    } else if (textAnchor === 'end' && !isRTL || textAnchor === 'start' && isRTL) {
+      shift = firstElement.x - this.maxX;
+    } else {
+      shift = firstElement.x - (this.minX + this.maxX) / 2;
+    }
+
+    for (var i = this.textChunkStart; i < this.leafTexts.length; i++) {
+      this.leafTexts[i].x += shift;
+    } // start new chunk
+
+
+    this.minX = Number.POSITIVE_INFINITY;
+    this.maxX = Number.NEGATIVE_INFINITY;
+    this.textChunkStart = this.leafTexts.length;
+  }
+
+  adjustChildCoordinatesRecursive(ctx) {
+    this.children.forEach((_, i) => {
+      this.adjustChildCoordinatesRecursiveCore(ctx, this, this, i);
+    });
+    this.applyAnchoring();
+  }
+
+  adjustChildCoordinatesRecursiveCore(ctx, textParent, parent, i) {
+    var child = parent.children[i];
+
+    if (child.children.length > 0) {
+      child.children.forEach((_, i) => {
+        textParent.adjustChildCoordinatesRecursiveCore(ctx, textParent, child, i);
+      });
+    } else {
+      // only leafs are relevant
+      this.adjustChildCoordinates(ctx, textParent, parent, i);
+    }
+  }
+
+  adjustChildCoordinates(ctx, textParent, parent, i) {
+    var child = parent.children[i];
+
+    if (typeof child.measureText !== 'function') {
+      return child;
+    }
+
+    ctx.save();
+    child.setContext(ctx, true);
+    var xAttr = child.getAttribute('x');
+    var yAttr = child.getAttribute('y');
+    var dxAttr = child.getAttribute('dx');
+    var dyAttr = child.getAttribute('dy');
+    var customFont = child.getStyle('font-family').getDefinition();
+    var isRTL = Boolean(customFont) && customFont.isRTL;
+
+    if (i === 0) {
+      // First children inherit attributes from parent(s). Positional attributes
+      // are only inherited from a parent to it's first child.
+      if (!xAttr.hasValue()) {
+        xAttr.setValue(child.getInheritedAttribute('x'));
+      }
+
+      if (!yAttr.hasValue()) {
+        yAttr.setValue(child.getInheritedAttribute('y'));
+      }
+
+      if (!dxAttr.hasValue()) {
+        dxAttr.setValue(child.getInheritedAttribute('dx'));
+      }
+
+      if (!dyAttr.hasValue()) {
+        dyAttr.setValue(child.getInheritedAttribute('dy'));
+      }
+    }
+
+    var width = child.measureText(ctx);
+
+    if (isRTL) {
+      textParent.x -= width;
+    }
+
+    if (xAttr.hasValue()) {
+      // an "x" attribute marks the start of a new chunk
+      textParent.applyAnchoring();
+      child.x = xAttr.getPixels('x');
+
+      if (dxAttr.hasValue()) {
+        child.x += dxAttr.getPixels('x');
+      }
+    } else {
+      if (dxAttr.hasValue()) {
+        textParent.x += dxAttr.getPixels('x');
+      }
+
+      child.x = textParent.x;
+    }
+
+    textParent.x = child.x;
+
+    if (!isRTL) {
+      textParent.x += width;
+    }
+
+    if (yAttr.hasValue()) {
+      child.y = yAttr.getPixels('y');
+
+      if (dyAttr.hasValue()) {
+        child.y += dyAttr.getPixels('y');
+      }
+    } else {
+      if (dyAttr.hasValue()) {
+        textParent.y += dyAttr.getPixels('y');
+      }
+
+      child.y = textParent.y;
+    }
+
+    textParent.y = child.y; // update the current chunk and it's bounds
+
+    textParent.leafTexts.push(child);
+    textParent.minX = Math.min(textParent.minX, child.x, child.x + width);
+    textParent.maxX = Math.max(textParent.maxX, child.x, child.x + width);
+    child.clearContext(ctx);
+    ctx.restore();
+    return child;
+  }
+
+  getChildBoundingBox(ctx, textParent, parent, i) {
+    var child = parent.children[i]; // not a text node?
+
+    if (typeof child.getBoundingBox !== 'function') {
+      return null;
+    }
+
+    var boundingBox = child.getBoundingBox(ctx);
+
+    if (!boundingBox) {
+      return null;
+    }
+
+    child.children.forEach((_, i) => {
+      var childBoundingBox = textParent.getChildBoundingBox(ctx, textParent, child, i);
+      boundingBox.addBoundingBox(childBoundingBox);
+    });
+    return boundingBox;
+  }
+
+  renderChild(ctx, textParent, parent, i) {
+    var child = parent.children[i];
+    child.render(ctx);
+    child.children.forEach((_, i) => {
+      textParent.renderChild(ctx, textParent, child, i);
+    });
+  }
+
+  measureText(ctx) {
+    var {
+      measureCache
+    } = this;
+
+    if (~measureCache) {
+      return measureCache;
+    }
+
+    var renderText = this.getText();
+    var measure = this.measureTargetText(ctx, renderText);
+    this.measureCache = measure;
+    return measure;
+  }
+
+  measureTargetText(ctx, targetText) {
+    if (!targetText.length) {
+      return 0;
+    }
+
+    var {
+      parent
+    } = this;
+    var customFont = parent.getStyle('font-family').getDefinition();
+
+    if (customFont) {
+      var fontSize = this.getFontSize();
+      var text = customFont.isRTL ? targetText.split('').reverse().join('') : targetText;
+      var dx = toNumbers(parent.getAttribute('dx').getString());
+      var len = text.length;
+      var _measure = 0;
+
+      for (var i = 0; i < len; i++) {
+        var glyph = this.getGlyph(customFont, text, i);
+        _measure += (glyph.horizAdvX || customFont.horizAdvX) * fontSize / customFont.fontFace.unitsPerEm;
+
+        if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {
+          _measure += dx[i];
+        }
+      }
+
+      return _measure;
+    }
+
+    if (!ctx.measureText) {
+      return targetText.length * 10;
+    }
+
+    ctx.save();
+    this.setContext(ctx, true);
+    var {
+      width: measure
+    } = ctx.measureText(targetText);
+    this.clearContext(ctx);
+    ctx.restore();
+    return measure;
+  }
+  /**
+   * Inherits positional attributes from {@link TextElement} parent(s). Attributes
+   * are only inherited from a parent to its first child.
+   * @param name - The attribute name.
+   * @returns The attribute value or null.
+   */
+
+
+  getInheritedAttribute(name) {
+    // eslint-disable-next-line @typescript-eslint/no-this-alias,consistent-this
+    var current = this;
+
+    while (current instanceof TextElement && current.isFirstChild()) {
+      var parentAttr = current.parent.getAttribute(name);
+
+      if (parentAttr.hasValue(true)) {
+        return parentAttr.getValue('0');
+      }
+
+      current = current.parent;
+    }
+
+    return null;
+  }
+
+}
+
+class TSpanElement extends TextElement {
+  constructor(document, node, captureTextNodes) {
+    super(document, node, new.target === TSpanElement ? true : captureTextNodes);
+    this.type = 'tspan'; // if this node has children, then they own the text
+
+    this.text = this.children.length > 0 ? '' : this.getTextFromNode();
+  }
+
+  getText() {
+    return this.text;
+  }
+
+}
+
+class TextNode extends TSpanElement {
+  constructor() {
+    super(...arguments);
+    this.type = 'textNode';
+  }
+
+}
+
+class SVGElement extends RenderedElement {
+  constructor() {
+    super(...arguments);
+    this.type = 'svg';
+    this.root = false;
+  }
+
+  setContext(ctx) {
+    var _this$node$parentNode;
+
+    var {
+      document
+    } = this;
+    var {
+      screen,
+      window
+    } = document;
+    var canvas = ctx.canvas;
+    screen.setDefaults(ctx);
+
+    if (canvas.style && typeof ctx.font !== 'undefined' && window && typeof window.getComputedStyle !== 'undefined') {
+      ctx.font = window.getComputedStyle(canvas).getPropertyValue('font');
+      var fontSizeProp = new Property(document, 'fontSize', Font.parse(ctx.font).fontSize);
+
+      if (fontSizeProp.hasValue()) {
+        document.rootEmSize = fontSizeProp.getPixels('y');
+        document.emSize = document.rootEmSize;
+      }
+    } // create new view port
+
+
+    if (!this.getAttribute('x').hasValue()) {
+      this.getAttribute('x', true).setValue(0);
+    }
+
+    if (!this.getAttribute('y').hasValue()) {
+      this.getAttribute('y', true).setValue(0);
+    }
+
+    var {
+      width,
+      height
+    } = screen.viewPort;
+
+    if (!this.getStyle('width').hasValue()) {
+      this.getStyle('width', true).setValue('100%');
+    }
+
+    if (!this.getStyle('height').hasValue()) {
+      this.getStyle('height', true).setValue('100%');
+    }
+
+    if (!this.getStyle('color').hasValue()) {
+      this.getStyle('color', true).setValue('black');
+    }
+
+    var refXAttr = this.getAttribute('refX');
+    var refYAttr = this.getAttribute('refY');
+    var viewBoxAttr = this.getAttribute('viewBox');
+    var viewBox = viewBoxAttr.hasValue() ? toNumbers(viewBoxAttr.getString()) : null;
+    var clip = !this.root && this.getStyle('overflow').getValue('hidden') !== 'visible';
+    var minX = 0;
+    var minY = 0;
+    var clipX = 0;
+    var clipY = 0;
+
+    if (viewBox) {
+      minX = viewBox[0];
+      minY = viewBox[1];
+    }
+
+    if (!this.root) {
+      width = this.getStyle('width').getPixels('x');
+      height = this.getStyle('height').getPixels('y');
+
+      if (this.type === 'marker') {
+        clipX = minX;
+        clipY = minY;
+        minX = 0;
+        minY = 0;
+      }
+    }
+
+    screen.viewPort.setCurrent(width, height); // Default value of transform-origin is center only for root SVG elements
+    // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/transform-origin
+
+    if (this.node // is not temporary SVGElement
+    && (!this.parent || ((_this$node$parentNode = this.node.parentNode) === null || _this$node$parentNode === void 0 ? void 0 : _this$node$parentNode.nodeName) === 'foreignObject') && this.getStyle('transform', false, true).hasValue() && !this.getStyle('transform-origin', false, true).hasValue()) {
+      this.getStyle('transform-origin', true, true).setValue('50% 50%');
+    }
+
+    super.setContext(ctx);
+    ctx.translate(this.getAttribute('x').getPixels('x'), this.getAttribute('y').getPixels('y'));
+
+    if (viewBox) {
+      width = viewBox[2];
+      height = viewBox[3];
+    }
+
+    document.setViewBox({
+      ctx,
+      aspectRatio: this.getAttribute('preserveAspectRatio').getString(),
+      width: screen.viewPort.width,
+      desiredWidth: width,
+      height: screen.viewPort.height,
+      desiredHeight: height,
+      minX,
+      minY,
+      refX: refXAttr.getValue(),
+      refY: refYAttr.getValue(),
+      clip,
+      clipX,
+      clipY
+    });
+
+    if (viewBox) {
+      screen.viewPort.removeCurrent();
+      screen.viewPort.setCurrent(width, height);
+    }
+  }
+
+  clearContext(ctx) {
+    super.clearContext(ctx);
+    this.document.screen.viewPort.removeCurrent();
+  }
+  /**
+   * Resize SVG to fit in given size.
+   * @param width
+   * @param height
+   * @param preserveAspectRatio
+   */
+
+
+  resize(width) {
+    var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : width;
+    var preserveAspectRatio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
+    var widthAttr = this.getAttribute('width', true);
+    var heightAttr = this.getAttribute('height', true);
+    var viewBoxAttr = this.getAttribute('viewBox');
+    var styleAttr = this.getAttribute('style');
+    var originWidth = widthAttr.getNumber(0);
+    var originHeight = heightAttr.getNumber(0);
+
+    if (preserveAspectRatio) {
+      if (typeof preserveAspectRatio === 'string') {
+        this.getAttribute('preserveAspectRatio', true).setValue(preserveAspectRatio);
+      } else {
+        var preserveAspectRatioAttr = this.getAttribute('preserveAspectRatio');
+
+        if (preserveAspectRatioAttr.hasValue()) {
+          preserveAspectRatioAttr.setValue(preserveAspectRatioAttr.getString().replace(/^\s*(\S.*\S)\s*$/, '$1'));
+        }
+      }
+    }
+
+    widthAttr.setValue(width);
+    heightAttr.setValue(height);
+
+    if (!viewBoxAttr.hasValue()) {
+      viewBoxAttr.setValue("0 0 ".concat(originWidth || width, " ").concat(originHeight || height));
+    }
+
+    if (styleAttr.hasValue()) {
+      var widthStyle = this.getStyle('width');
+      var heightStyle = this.getStyle('height');
+
+      if (widthStyle.hasValue()) {
+        widthStyle.setValue("".concat(width, "px"));
+      }
+
+      if (heightStyle.hasValue()) {
+        heightStyle.setValue("".concat(height, "px"));
+      }
+    }
+  }
+
+}
+
+class RectElement extends PathElement {
+  constructor() {
+    super(...arguments);
+    this.type = 'rect';
+  }
+
+  path(ctx) {
+    var x = this.getAttribute('x').getPixels('x');
+    var y = this.getAttribute('y').getPixels('y');
+    var width = this.getStyle('width', false, true).getPixels('x');
+    var height = this.getStyle('height', false, true).getPixels('y');
+    var rxAttr = this.getAttribute('rx');
+    var ryAttr = this.getAttribute('ry');
+    var rx = rxAttr.getPixels('x');
+    var ry = ryAttr.getPixels('y');
+
+    if (rxAttr.hasValue() && !ryAttr.hasValue()) {
+      ry = rx;
+    }
+
+    if (ryAttr.hasValue() && !rxAttr.hasValue()) {
+      rx = ry;
+    }
+
+    rx = Math.min(rx, width / 2.0);
+    ry = Math.min(ry, height / 2.0);
+
+    if (ctx) {
+      var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);
+      ctx.beginPath(); // always start the path so we don't fill prior paths
+
+      if (height > 0 && width > 0) {
+        ctx.moveTo(x + rx, y);
+        ctx.lineTo(x + width - rx, y);
+        ctx.bezierCurveTo(x + width - rx + KAPPA * rx, y, x + width, y + ry - KAPPA * ry, x + width, y + ry);
+        ctx.lineTo(x + width, y + height - ry);
+        ctx.bezierCurveTo(x + width, y + height - ry + KAPPA * ry, x + width - rx + KAPPA * rx, y + height, x + width - rx, y + height);
+        ctx.lineTo(x + rx, y + height);
+        ctx.bezierCurveTo(x + rx - KAPPA * rx, y + height, x, y + height - ry + KAPPA * ry, x, y + height - ry);
+        ctx.lineTo(x, y + ry);
+        ctx.bezierCurveTo(x, y + ry - KAPPA * ry, x + rx - KAPPA * rx, y, x + rx, y);
+        ctx.closePath();
+      }
+    }
+
+    return new BoundingBox(x, y, x + width, y + height);
+  }
+
+  getMarkers() {
+    return null;
+  }
+
+}
+
+class CircleElement extends PathElement {
+  constructor() {
+    super(...arguments);
+    this.type = 'circle';
+  }
+
+  path(ctx) {
+    var cx = this.getAttribute('cx').getPixels('x');
+    var cy = this.getAttribute('cy').getPixels('y');
+    var r = this.getAttribute('r').getPixels();
+
+    if (ctx && r > 0) {
+      ctx.beginPath();
+      ctx.arc(cx, cy, r, 0, Math.PI * 2, false);
+      ctx.closePath();
+    }
+
+    return new BoundingBox(cx - r, cy - r, cx + r, cy + r);
+  }
+
+  getMarkers() {
+    return null;
+  }
+
+}
+
+class EllipseElement extends PathElement {
+  constructor() {
+    super(...arguments);
+    this.type = 'ellipse';
+  }
+
+  path(ctx) {
+    var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);
+    var rx = this.getAttribute('rx').getPixels('x');
+    var ry = this.getAttribute('ry').getPixels('y');
+    var cx = this.getAttribute('cx').getPixels('x');
+    var cy = this.getAttribute('cy').getPixels('y');
+
+    if (ctx && rx > 0 && ry > 0) {
+      ctx.beginPath();
+      ctx.moveTo(cx + rx, cy);
+      ctx.bezierCurveTo(cx + rx, cy + KAPPA * ry, cx + KAPPA * rx, cy + ry, cx, cy + ry);
+      ctx.bezierCurveTo(cx - KAPPA * rx, cy + ry, cx - rx, cy + KAPPA * ry, cx - rx, cy);
+      ctx.bezierCurveTo(cx - rx, cy - KAPPA * ry, cx - KAPPA * rx, cy - ry, cx, cy - ry);
+      ctx.bezierCurveTo(cx + KAPPA * rx, cy - ry, cx + rx, cy - KAPPA * ry, cx + rx, cy);
+      ctx.closePath();
+    }
+
+    return new BoundingBox(cx - rx, cy - ry, cx + rx, cy + ry);
+  }
+
+  getMarkers() {
+    return null;
+  }
+
+}
+
+class LineElement extends PathElement {
+  constructor() {
+    super(...arguments);
+    this.type = 'line';
+  }
+
+  getPoints() {
+    return [new Point(this.getAttribute('x1').getPixels('x'), this.getAttribute('y1').getPixels('y')), new Point(this.getAttribute('x2').getPixels('x'), this.getAttribute('y2').getPixels('y'))];
+  }
+
+  path(ctx) {
+    var [{
+      x: x0,
+      y: y0
+    }, {
+      x: x1,
+      y: y1
+    }] = this.getPoints();
+
+    if (ctx) {
+      ctx.beginPath();
+      ctx.moveTo(x0, y0);
+      ctx.lineTo(x1, y1);
+    }
+
+    return new BoundingBox(x0, y0, x1, y1);
+  }
+
+  getMarkers() {
+    var [p0, p1] = this.getPoints();
+    var a = p0.angleTo(p1);
+    return [[p0, a], [p1, a]];
+  }
+
+}
+
+class PolylineElement extends PathElement {
+  constructor(document, node, captureTextNodes) {
+    super(document, node, captureTextNodes);
+    this.type = 'polyline';
+    this.points = [];
+    this.points = Point.parsePath(this.getAttribute('points').getString());
+  }
+
+  path(ctx) {
+    var {
+      points
+    } = this;
+    var [{
+      x: x0,
+      y: y0
+    }] = points;
+    var boundingBox = new BoundingBox(x0, y0);
+
+    if (ctx) {
+      ctx.beginPath();
+      ctx.moveTo(x0, y0);
+    }
+
+    points.forEach(_ref => {
+      var {
+        x,
+        y
+      } = _ref;
+      boundingBox.addPoint(x, y);
+
+      if (ctx) {
+        ctx.lineTo(x, y);
+      }
+    });
+    return boundingBox;
+  }
+
+  getMarkers() {
+    var {
+      points
+    } = this;
+    var lastIndex = points.length - 1;
+    var markers = [];
+    points.forEach((point, i) => {
+      if (i === lastIndex) {
+        return;
+      }
+
+      markers.push([point, point.angleTo(points[i + 1])]);
+    });
+
+    if (markers.length > 0) {
+      markers.push([points[points.length - 1], markers[markers.length - 1][1]]);
+    }
+
+    return markers;
+  }
+
+}
+
+class PolygonElement extends PolylineElement {
+  constructor() {
+    super(...arguments);
+    this.type = 'polygon';
+  }
+
+  path(ctx) {
+    var boundingBox = super.path(ctx);
+    var [{
+      x,
+      y
+    }] = this.points;
+
+    if (ctx) {
+      ctx.lineTo(x, y);
+      ctx.closePath();
+    }
+
+    return boundingBox;
+  }
+
+}
+
+class PatternElement extends Element {
+  constructor() {
+    super(...arguments);
+    this.type = 'pattern';
+  }
+
+  createPattern(ctx, _, parentOpacityProp) {
+    var width = this.getStyle('width').getPixels('x', true);
+    var height = this.getStyle('height').getPixels('y', true); // render me using a temporary svg element
+
+    var patternSvg = new SVGElement(this.document, null);
+    patternSvg.attributes.viewBox = new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue());
+    patternSvg.attributes.width = new Property(this.document, 'width', "".concat(width, "px"));
+    patternSvg.attributes.height = new Property(this.document, 'height', "".concat(height, "px"));
+    patternSvg.attributes.transform = new Property(this.document, 'transform', this.getAttribute('patternTransform').getValue());
+    patternSvg.children = this.children;
+    var patternCanvas = this.document.createCanvas(width, height);
+    var patternCtx = patternCanvas.getContext('2d');
+    var xAttr = this.getAttribute('x');
+    var yAttr = this.getAttribute('y');
+
+    if (xAttr.hasValue() && yAttr.hasValue()) {
+      patternCtx.translate(xAttr.getPixels('x', true), yAttr.getPixels('y', true));
+    }
+
+    if (parentOpacityProp.hasValue()) {
+      this.styles['fill-opacity'] = parentOpacityProp;
+    } else {
+      Reflect.deleteProperty(this.styles, 'fill-opacity');
+    } // render 3x3 grid so when we transform there's no white space on edges
+
+
+    for (var x = -1; x <= 1; x++) {
+      for (var y = -1; y <= 1; y++) {
+        patternCtx.save();
+        patternSvg.attributes.x = new Property(this.document, 'x', x * patternCanvas.width);
+        patternSvg.attributes.y = new Property(this.document, 'y', y * patternCanvas.height);
+        patternSvg.render(patternCtx);
+        patternCtx.restore();
+      }
+    }
+
+    var pattern = ctx.createPattern(patternCanvas, 'repeat');
+    return pattern;
+  }
+
+}
+
+class MarkerElement extends Element {
+  constructor() {
+    super(...arguments);
+    this.type = 'marker';
+  }
+
+  render(ctx, point, angle) {
+    if (!point) {
+      return;
+    }
+
+    var {
+      x,
+      y
+    } = point;
+    var orient = this.getAttribute('orient').getString('auto');
+    var markerUnits = this.getAttribute('markerUnits').getString('strokeWidth');
+    ctx.translate(x, y);
+
+    if (orient === 'auto') {
+      ctx.rotate(angle);
+    }
+
+    if (markerUnits === 'strokeWidth') {
+      ctx.scale(ctx.lineWidth, ctx.lineWidth);
+    }
+
+    ctx.save(); // render me using a temporary svg element
+
+    var markerSvg = new SVGElement(this.document, null);
+    markerSvg.type = this.type;
+    markerSvg.attributes.viewBox = new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue());
+    markerSvg.attributes.refX = new Property(this.document, 'refX', this.getAttribute('refX').getValue());
+    markerSvg.attributes.refY = new Property(this.document, 'refY', this.getAttribute('refY').getValue());
+    markerSvg.attributes.width = new Property(this.document, 'width', this.getAttribute('markerWidth').getValue());
+    markerSvg.attributes.height = new Property(this.document, 'height', this.getAttribute('markerHeight').getValue());
+    markerSvg.attributes.overflow = new Property(this.document, 'overflow', this.getAttribute('overflow').getValue());
+    markerSvg.attributes.fill = new Property(this.document, 'fill', this.getAttribute('fill').getColor('black'));
+    markerSvg.attributes.stroke = new Property(this.document, 'stroke', this.getAttribute('stroke').getValue('none'));
+    markerSvg.children = this.children;
+    markerSvg.render(ctx);
+    ctx.restore();
+
+    if (markerUnits === 'strokeWidth') {
+      ctx.scale(1 / ctx.lineWidth, 1 / ctx.lineWidth);
+    }
+
+    if (orient === 'auto') {
+      ctx.rotate(-angle);
+    }
+
+    ctx.translate(-x, -y);
+  }
+
+}
+
+class DefsElement extends Element {
+  constructor() {
+    super(...arguments);
+    this.type = 'defs';
+  }
+
+  render() {// NOOP
+  }
+
+}
+
+class GElement extends RenderedElement {
+  constructor() {
+    super(...arguments);
+    this.type = 'g';
+  }
+
+  getBoundingBox(ctx) {
+    var boundingBox = new BoundingBox();
+    this.children.forEach(child => {
+      boundingBox.addBoundingBox(child.getBoundingBox(ctx));
+    });
+    return boundingBox;
+  }
+
+}
+
+class GradientElement extends Element {
+  constructor(document, node, captureTextNodes) {
+    super(document, node, captureTextNodes);
+    this.attributesToInherit = ['gradientUnits'];
+    this.stops = [];
+    var {
+      stops,
+      children
+    } = this;
+    children.forEach(child => {
+      if (child.type === 'stop') {
+        stops.push(child);
+      }
+    });
+  }
+
+  getGradientUnits() {
+    return this.getAttribute('gradientUnits').getString('objectBoundingBox');
+  }
+
+  createGradient(ctx, element, parentOpacityProp) {
+    // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this
+    var stopsContainer = this;
+
+    if (this.getHrefAttribute().hasValue()) {
+      stopsContainer = this.getHrefAttribute().getDefinition();
+      this.inheritStopContainer(stopsContainer);
+    }
+
+    var {
+      stops
+    } = stopsContainer;
+    var gradient = this.getGradient(ctx, element);
+
+    if (!gradient) {
+      return this.addParentOpacity(parentOpacityProp, stops[stops.length - 1].color);
+    }
+
+    stops.forEach(stop => {
+      gradient.addColorStop(stop.offset, this.addParentOpacity(parentOpacityProp, stop.color));
+    });
+
+    if (this.getAttribute('gradientTransform').hasValue()) {
+      // render as transformed pattern on temporary canvas
+      var {
+        document
+      } = this;
+      var {
+        MAX_VIRTUAL_PIXELS,
+        viewPort
+      } = document.screen;
+      var [rootView] = viewPort.viewPorts;
+      var rect = new RectElement(document, null);
+      rect.attributes.x = new Property(document, 'x', -MAX_VIRTUAL_PIXELS / 3.0);
+      rect.attributes.y = new Property(document, 'y', -MAX_VIRTUAL_PIXELS / 3.0);
+      rect.attributes.width = new Property(document, 'width', MAX_VIRTUAL_PIXELS);
+      rect.attributes.height = new Property(document, 'height', MAX_VIRTUAL_PIXELS);
+      var group = new GElement(document, null);
+      group.attributes.transform = new Property(document, 'transform', this.getAttribute('gradientTransform').getValue());
+      group.children = [rect];
+      var patternSvg = new SVGElement(document, null);
+      patternSvg.attributes.x = new Property(document, 'x', 0);
+      patternSvg.attributes.y = new Property(document, 'y', 0);
+      patternSvg.attributes.width = new Property(document, 'width', rootView.width);
+      patternSvg.attributes.height = new Property(document, 'height', rootView.height);
+      patternSvg.children = [group];
+      var patternCanvas = document.createCanvas(rootView.width, rootView.height);
+      var patternCtx = patternCanvas.getContext('2d');
+      patternCtx.fillStyle = gradient;
+      patternSvg.render(patternCtx);
+      return patternCtx.createPattern(patternCanvas, 'no-repeat');
+    }
+
+    return gradient;
+  }
+
+  inheritStopContainer(stopsContainer) {
+    this.attributesToInherit.forEach(attributeToInherit => {
+      if (!this.getAttribute(attributeToInherit).hasValue() && stopsContainer.getAttribute(attributeToInherit).hasValue()) {
+        this.getAttribute(attributeToInherit, true).setValue(stopsContainer.getAttribute(attributeToInherit).getValue());
+      }
+    });
+  }
+
+  addParentOpacity(parentOpacityProp, color) {
+    if (parentOpacityProp.hasValue()) {
+      var colorProp = new Property(this.document, 'color', color);
+      return colorProp.addOpacity(parentOpacityProp).getColor();
+    }
+
+    return color;
+  }
+
+}
+
+class LinearGradientElement extends GradientElement {
+  constructor(document, node, captureTextNodes) {
+    super(document, node, captureTextNodes);
+    this.type = 'linearGradient';
+    this.attributesToInherit.push('x1', 'y1', 'x2', 'y2');
+  }
+
+  getGradient(ctx, element) {
+    var isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';
+    var boundingBox = isBoundingBoxUnits ? element.getBoundingBox(ctx) : null;
+
+    if (isBoundingBoxUnits && !boundingBox) {
+      return null;
+    }
+
+    if (!this.getAttribute('x1').hasValue() && !this.getAttribute('y1').hasValue() && !this.getAttribute('x2').hasValue() && !this.getAttribute('y2').hasValue()) {
+      this.getAttribute('x1', true).setValue(0);
+      this.getAttribute('y1', true).setValue(0);
+      this.getAttribute('x2', true).setValue(1);
+      this.getAttribute('y2', true).setValue(0);
+    }
+
+    var x1 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('x1').getNumber() : this.getAttribute('x1').getPixels('x');
+    var y1 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('y1').getNumber() : this.getAttribute('y1').getPixels('y');
+    var x2 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('x2').getNumber() : this.getAttribute('x2').getPixels('x');
+    var y2 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('y2').getNumber() : this.getAttribute('y2').getPixels('y');
+
+    if (x1 === x2 && y1 === y2) {
+      return null;
+    }
+
+    return ctx.createLinearGradient(x1, y1, x2, y2);
+  }
+
+}
+
+class RadialGradientElement extends GradientElement {
+  constructor(document, node, captureTextNodes) {
+    super(document, node, captureTextNodes);
+    this.type = 'radialGradient';
+    this.attributesToInherit.push('cx', 'cy', 'r', 'fx', 'fy', 'fr');
+  }
+
+  getGradient(ctx, element) {
+    var isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';
+    var boundingBox = element.getBoundingBox(ctx);
+
+    if (isBoundingBoxUnits && !boundingBox) {
+      return null;
+    }
+
+    if (!this.getAttribute('cx').hasValue()) {
+      this.getAttribute('cx', true).setValue('50%');
+    }
+
+    if (!this.getAttribute('cy').hasValue()) {
+      this.getAttribute('cy', true).setValue('50%');
+    }
+
+    if (!this.getAttribute('r').hasValue()) {
+      this.getAttribute('r', true).setValue('50%');
+    }
+
+    var cx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('cx').getNumber() : this.getAttribute('cx').getPixels('x');
+    var cy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('cy').getNumber() : this.getAttribute('cy').getPixels('y');
+    var fx = cx;
+    var fy = cy;
+
+    if (this.getAttribute('fx').hasValue()) {
+      fx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('fx').getNumber() : this.getAttribute('fx').getPixels('x');
+    }
+
+    if (this.getAttribute('fy').hasValue()) {
+      fy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('fy').getNumber() : this.getAttribute('fy').getPixels('y');
+    }
+
+    var r = isBoundingBoxUnits ? (boundingBox.width + boundingBox.height) / 2.0 * this.getAttribute('r').getNumber() : this.getAttribute('r').getPixels();
+    var fr = this.getAttribute('fr').getPixels();
+    return ctx.createRadialGradient(fx, fy, fr, cx, cy, r);
+  }
+
+}
+
+class StopElement extends Element {
+  constructor(document, node, captureTextNodes) {
+    super(document, node, captureTextNodes);
+    this.type = 'stop';
+    var offset = Math.max(0, Math.min(1, this.getAttribute('offset').getNumber()));
+    var stopOpacity = this.getStyle('stop-opacity');
+    var stopColor = this.getStyle('stop-color', true);
+
+    if (stopColor.getString() === '') {
+      stopColor.setValue('#000');
+    }
+
+    if (stopOpacity.hasValue()) {
+      stopColor = stopColor.addOpacity(stopOpacity);
+    }
+
+    this.offset = offset;
+    this.color = stopColor.getColor();
+  }
+
+}
+
+class AnimateElement extends Element {
+  constructor(document, node, captureTextNodes) {
+    super(document, node, captureTextNodes);
+    this.type = 'animate';
+    this.duration = 0;
+    this.initialValue = null;
+    this.initialUnits = '';
+    this.removed = false;
+    this.frozen = false;
+    document.screen.animations.push(this);
+    this.begin = this.getAttribute('begin').getMilliseconds();
+    this.maxDuration = this.begin + this.getAttribute('dur').getMilliseconds();
+    this.from = this.getAttribute('from');
+    this.to = this.getAttribute('to');
+    this.values = new Property(document, 'values', null);
+    var valuesAttr = this.getAttribute('values');
+
+    if (valuesAttr.hasValue()) {
+      this.values.setValue(valuesAttr.getString().split(';'));
+    }
+  }
+
+  getProperty() {
+    var attributeType = this.getAttribute('attributeType').getString();
+    var attributeName = this.getAttribute('attributeName').getString();
+
+    if (attributeType === 'CSS') {
+      return this.parent.getStyle(attributeName, true);
+    }
+
+    return this.parent.getAttribute(attributeName, true);
+  }
+
+  calcValue() {
+    var {
+      initialUnits
+    } = this;
+    var {
+      progress,
+      from,
+      to
+    } = this.getProgress(); // tween value linearly
+
+    var newValue = from.getNumber() + (to.getNumber() - from.getNumber()) * progress;
+
+    if (initialUnits === '%') {
+      newValue *= 100.0; // numValue() returns 0-1 whereas properties are 0-100
+    }
+
+    return "".concat(newValue).concat(initialUnits);
+  }
+
+  update(delta) {
+    var {
+      parent
+    } = this;
+    var prop = this.getProperty(); // set initial value
+
+    if (!this.initialValue) {
+      this.initialValue = prop.getString();
+      this.initialUnits = prop.getUnits();
+    } // if we're past the end time
+
+
+    if (this.duration > this.maxDuration) {
+      var fill = this.getAttribute('fill').getString('remove'); // loop for indefinitely repeating animations
+
+      if (this.getAttribute('repeatCount').getString() === 'indefinite' || this.getAttribute('repeatDur').getString() === 'indefinite') {
+        this.duration = 0;
+      } else if (fill === 'freeze' && !this.frozen) {
+        this.frozen = true;
+        parent.animationFrozen = true;
+        parent.animationFrozenValue = prop.getString();
+      } else if (fill === 'remove' && !this.removed) {
+        this.removed = true;
+        prop.setValue(parent.animationFrozen ? parent.animationFrozenValue : this.initialValue);
+        return true;
+      }
+
+      return false;
+    }
+
+    this.duration += delta; // if we're past the begin time
+
+    var updated = false;
+
+    if (this.begin < this.duration) {
+      var newValue = this.calcValue(); // tween
+
+      var typeAttr = this.getAttribute('type');
+
+      if (typeAttr.hasValue()) {
+        // for transform, etc.
+        var type = typeAttr.getString();
+        newValue = "".concat(type, "(").concat(newValue, ")");
+      }
+
+      prop.setValue(newValue);
+      updated = true;
+    }
+
+    return updated;
+  }
+
+  getProgress() {
+    var {
+      document,
+      values
+    } = this;
+    var result = {
+      progress: (this.duration - this.begin) / (this.maxDuration - this.begin)
+    };
+
+    if (values.hasValue()) {
+      var p = result.progress * (values.getValue().length - 1);
+      var lb = Math.floor(p);
+      var ub = Math.ceil(p);
+      result.from = new Property(document, 'from', parseFloat(values.getValue()[lb]));
+      result.to = new Property(document, 'to', parseFloat(values.getValue()[ub]));
+      result.progress = (p - lb) / (ub - lb);
+    } else {
+      result.from = this.from;
+      result.to = this.to;
+    }
+
+    return result;
+  }
+
+}
+
+class AnimateColorElement extends AnimateElement {
+  constructor() {
+    super(...arguments);
+    this.type = 'animateColor';
+  }
+
+  calcValue() {
+    var {
+      progress,
+      from,
+      to
+    } = this.getProgress();
+    var colorFrom = new RGBColor(from.getColor());
+    var colorTo = new RGBColor(to.getColor());
+
+    if (colorFrom.ok && colorTo.ok) {
+      // tween color linearly
+      var r = colorFrom.r + (colorTo.r - colorFrom.r) * progress;
+      var g = colorFrom.g + (colorTo.g - colorFrom.g) * progress;
+      var b = colorFrom.b + (colorTo.b - colorFrom.b) * progress; // ? alpha
+
+      return "rgb(".concat(Math.floor(r), ", ").concat(Math.floor(g), ", ").concat(Math.floor(b), ")");
+    }
+
+    return this.getAttribute('from').getColor();
+  }
+
+}
+
+class AnimateTransformElement extends AnimateElement {
+  constructor() {
+    super(...arguments);
+    this.type = 'animateTransform';
+  }
+
+  calcValue() {
+    var {
+      progress,
+      from,
+      to
+    } = this.getProgress(); // tween value linearly
+
+    var transformFrom = toNumbers(from.getString());
+    var transformTo = toNumbers(to.getString());
+    var newValue = transformFrom.map((from, i) => {
+      var to = transformTo[i];
+      return from + (to - from) * progress;
+    }).join(' ');
+    return newValue;
+  }
+
+}
+
+class FontElement extends Element {
+  constructor(document, node, captureTextNodes) {
+    super(document, node, captureTextNodes);
+    this.type = 'font';
+    this.glyphs = {};
+    this.horizAdvX = this.getAttribute('horiz-adv-x').getNumber();
+    var {
+      definitions
+    } = document;
+    var {
+      children
+    } = this;
+
+    for (var child of children) {
+      switch (child.type) {
+        case 'font-face':
+          {
+            this.fontFace = child;
+            var fontFamilyStyle = child.getStyle('font-family');
+
+            if (fontFamilyStyle.hasValue()) {
+              definitions[fontFamilyStyle.getString()] = this;
+            }
+
+            break;
+          }
+
+        case 'missing-glyph':
+          this.missingGlyph = child;
+          break;
+
+        case 'glyph':
+          {
+            var glyph = child;
+
+            if (glyph.arabicForm) {
+              this.isRTL = true;
+              this.isArabic = true;
+
+              if (typeof this.glyphs[glyph.unicode] === 'undefined') {
+                this.glyphs[glyph.unicode] = {};
+              }
+
+              this.glyphs[glyph.unicode][glyph.arabicForm] = glyph;
+            } else {
+              this.glyphs[glyph.unicode] = glyph;
+            }
+
+            break;
+          }
+      }
+    }
+  }
+
+  render() {// NO RENDER
+  }
+
+}
+
+class FontFaceElement extends Element {
+  constructor(document, node, captureTextNodes) {
+    super(document, node, captureTextNodes);
+    this.type = 'font-face';
+    this.ascent = this.getAttribute('ascent').getNumber();
+    this.descent = this.getAttribute('descent').getNumber();
+    this.unitsPerEm = this.getAttribute('units-per-em').getNumber();
+  }
+
+}
+
+class MissingGlyphElement extends PathElement {
+  constructor() {
+    super(...arguments);
+    this.type = 'missing-glyph';
+    this.horizAdvX = 0;
+  }
+
+}
+
+class TRefElement extends TextElement {
+  constructor() {
+    super(...arguments);
+    this.type = 'tref';
+  }
+
+  getText() {
+    var element = this.getHrefAttribute().getDefinition();
+
+    if (element) {
+      var firstChild = element.children[0];
+
+      if (firstChild) {
+        return firstChild.getText();
+      }
+    }
+
+    return '';
+  }
+
+}
+
+class AElement extends TextElement {
+  constructor(document, node, captureTextNodes) {
+    super(document, node, captureTextNodes);
+    this.type = 'a';
+    var {
+      childNodes
+    } = node;
+    var firstChild = childNodes[0];
+    var hasText = childNodes.length > 0 && Array.from(childNodes).every(node => node.nodeType === 3);
+    this.hasText = hasText;
+    this.text = hasText ? this.getTextFromNode(firstChild) : '';
+  }
+
+  getText() {
+    return this.text;
+  }
+
+  renderChildren(ctx) {
+    if (this.hasText) {
+      // render as text element
+      super.renderChildren(ctx);
+      var {
+        document,
+        x,
+        y
+      } = this;
+      var {
+        mouse
+      } = document.screen;
+      var fontSize = new Property(document, 'fontSize', Font.parse(document.ctx.font).fontSize); // Do not calc bounding box if mouse is not working.
+
+      if (mouse.isWorking()) {
+        mouse.checkBoundingBox(this, new BoundingBox(x, y - fontSize.getPixels('y'), x + this.measureText(ctx), y));
+      }
+    } else if (this.children.length > 0) {
+      // render as temporary group
+      var g = new GElement(this.document, null);
+      g.children = this.children;
+      g.parent = this;
+      g.render(ctx);
+    }
+  }
+
+  onClick() {
+    var {
+      window
+    } = this.document;
+
+    if (window) {
+      window.open(this.getHrefAttribute().getString());
+    }
+  }
+
+  onMouseMove() {
+    var ctx = this.document.ctx;
+    ctx.canvas.style.cursor = 'pointer';
+  }
+
+}
+
+function ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
+
+function _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+class TextPathElement extends TextElement {
+  constructor(document, node, captureTextNodes) {
+    super(document, node, captureTextNodes);
+    this.type = 'textPath';
+    this.textWidth = 0;
+    this.textHeight = 0;
+    this.pathLength = -1;
+    this.glyphInfo = null;
+    this.letterSpacingCache = [];
+    this.measuresCache = new Map([['', 0]]);
+    var pathElement = this.getHrefAttribute().getDefinition();
+    this.text = this.getTextFromNode();
+    this.dataArray = this.parsePathData(pathElement);
+  }
+
+  getText() {
+    return this.text;
+  }
+
+  path(ctx) {
+    var {
+      dataArray
+    } = this;
+
+    if (ctx) {
+      ctx.beginPath();
+    }
+
+    dataArray.forEach(_ref => {
+      var {
+        type,
+        points
+      } = _ref;
+
+      switch (type) {
+        case PathParser.LINE_TO:
+          if (ctx) {
+            ctx.lineTo(points[0], points[1]);
+          }
+
+          break;
+
+        case PathParser.MOVE_TO:
+          if (ctx) {
+            ctx.moveTo(points[0], points[1]);
+          }
+
+          break;
+
+        case PathParser.CURVE_TO:
+          if (ctx) {
+            ctx.bezierCurveTo(points[0], points[1], points[2], points[3], points[4], points[5]);
+          }
+
+          break;
+
+        case PathParser.QUAD_TO:
+          if (ctx) {
+            ctx.quadraticCurveTo(points[0], points[1], points[2], points[3]);
+          }
+
+          break;
+
+        case PathParser.ARC:
+          {
+            var [cx, cy, rx, ry, theta, dTheta, psi, fs] = points;
+            var r = rx > ry ? rx : ry;
+            var scaleX = rx > ry ? 1 : rx / ry;
+            var scaleY = rx > ry ? ry / rx : 1;
+
+            if (ctx) {
+              ctx.translate(cx, cy);
+              ctx.rotate(psi);
+              ctx.scale(scaleX, scaleY);
+              ctx.arc(0, 0, r, theta, theta + dTheta, Boolean(1 - fs));
+              ctx.scale(1 / scaleX, 1 / scaleY);
+              ctx.rotate(-psi);
+              ctx.translate(-cx, -cy);
+            }
+
+            break;
+          }
+
+        case PathParser.CLOSE_PATH:
+          if (ctx) {
+            ctx.closePath();
+          }
+
+          break;
+      }
+    });
+  }
+
+  renderChildren(ctx) {
+    this.setTextData(ctx);
+    ctx.save();
+    var textDecoration = this.parent.getStyle('text-decoration').getString();
+    var fontSize = this.getFontSize();
+    var {
+      glyphInfo
+    } = this;
+    var fill = ctx.fillStyle;
+
+    if (textDecoration === 'underline') {
+      ctx.beginPath();
+    }
+
+    glyphInfo.forEach((glyph, i) => {
+      var {
+        p0,
+        p1,
+        rotation,
+        text: partialText
+      } = glyph;
+      ctx.save();
+      ctx.translate(p0.x, p0.y);
+      ctx.rotate(rotation);
+
+      if (ctx.fillStyle) {
+        ctx.fillText(partialText, 0, 0);
+      }
+
+      if (ctx.strokeStyle) {
+        ctx.strokeText(partialText, 0, 0);
+      }
+
+      ctx.restore();
+
+      if (textDecoration === 'underline') {
+        if (i === 0) {
+          ctx.moveTo(p0.x, p0.y + fontSize / 8);
+        }
+
+        ctx.lineTo(p1.x, p1.y + fontSize / 5);
+      } // // To assist with debugging visually, uncomment following
+      //
+      // ctx.beginPath();
+      // if (i % 2)
+      // 	ctx.strokeStyle = 'red';
+      // else
+      // 	ctx.strokeStyle = 'green';
+      // ctx.moveTo(p0.x, p0.y);
+      // ctx.lineTo(p1.x, p1.y);
+      // ctx.stroke();
+      // ctx.closePath();
+
+    });
+
+    if (textDecoration === 'underline') {
+      ctx.lineWidth = fontSize / 20;
+      ctx.strokeStyle = fill;
+      ctx.stroke();
+      ctx.closePath();
+    }
+
+    ctx.restore();
+  }
+
+  getLetterSpacingAt() {
+    var idx = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
+    return this.letterSpacingCache[idx] || 0;
+  }
+
+  findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, inputOffset, dy, c, charI) {
+    var offset = inputOffset;
+    var glyphWidth = this.measureText(ctx, c);
+
+    if (c === ' ' && anchor === 'justify' && textFullWidth < fullPathWidth) {
+      glyphWidth += (fullPathWidth - textFullWidth) / spacesNumber;
+    }
+
+    if (charI > -1) {
+      offset += this.getLetterSpacingAt(charI);
+    }
+
+    var splineStep = this.textHeight / 20;
+    var p0 = this.getEquidistantPointOnPath(offset, splineStep, 0);
+    var p1 = this.getEquidistantPointOnPath(offset + glyphWidth, splineStep, 0);
+    var segment = {
+      p0,
+      p1
+    };
+    var rotation = p0 && p1 ? Math.atan2(p1.y - p0.y, p1.x - p0.x) : 0;
+
+    if (dy) {
+      var dyX = Math.cos(Math.PI / 2 + rotation) * dy;
+      var dyY = Math.cos(-rotation) * dy;
+      segment.p0 = _objectSpread$2(_objectSpread$2({}, p0), {}, {
+        x: p0.x + dyX,
+        y: p0.y + dyY
+      });
+      segment.p1 = _objectSpread$2(_objectSpread$2({}, p1), {}, {
+        x: p1.x + dyX,
+        y: p1.y + dyY
+      });
+    }
+
+    offset += glyphWidth;
+    return {
+      offset,
+      segment,
+      rotation
+    };
+  }
+
+  measureText(ctx, text) {
+    var {
+      measuresCache
+    } = this;
+    var targetText = text || this.getText();
+
+    if (measuresCache.has(targetText)) {
+      return measuresCache.get(targetText);
+    }
+
+    var measure = this.measureTargetText(ctx, targetText);
+    measuresCache.set(targetText, measure);
+    return measure;
+  } // This method supposes what all custom fonts already loaded.
+  // If some font will be loaded after this method call, <textPath> will not be rendered correctly.
+  // You need to call this method manually to update glyphs cache.
+
+
+  setTextData(ctx) {
+    if (this.glyphInfo) {
+      return;
+    }
+
+    var renderText = this.getText();
+    var chars = renderText.split('');
+    var spacesNumber = renderText.split(' ').length - 1;
+    var dx = this.parent.getAttribute('dx').split().map(_ => _.getPixels('x'));
+    var dy = this.parent.getAttribute('dy').getPixels('y');
+    var anchor = this.parent.getStyle('text-anchor').getString('start');
+    var thisSpacing = this.getStyle('letter-spacing');
+    var parentSpacing = this.parent.getStyle('letter-spacing');
+    var letterSpacing = 0;
+
+    if (!thisSpacing.hasValue() || thisSpacing.getValue() === 'inherit') {
+      letterSpacing = parentSpacing.getPixels();
+    } else if (thisSpacing.hasValue()) {
+      if (thisSpacing.getValue() !== 'initial' && thisSpacing.getValue() !== 'unset') {
+        letterSpacing = thisSpacing.getPixels();
+      }
+    } // fill letter-spacing cache
+
+
+    var letterSpacingCache = [];
+    var textLen = renderText.length;
+    this.letterSpacingCache = letterSpacingCache;
+
+    for (var i = 0; i < textLen; i++) {
+      letterSpacingCache.push(typeof dx[i] !== 'undefined' ? dx[i] : letterSpacing);
+    }
+
+    var dxSum = letterSpacingCache.reduce((acc, cur, i) => i === 0 ? 0 : acc + cur || 0, 0);
+    var textWidth = this.measureText(ctx);
+    var textFullWidth = Math.max(textWidth + dxSum, 0);
+    this.textWidth = textWidth;
+    this.textHeight = this.getFontSize();
+    this.glyphInfo = [];
+    var fullPathWidth = this.getPathLength();
+    var startOffset = this.getStyle('startOffset').getNumber(0) * fullPathWidth;
+    var offset = 0;
+
+    if (anchor === 'middle' || anchor === 'center') {
+      offset = -textFullWidth / 2;
+    }
+
+    if (anchor === 'end' || anchor === 'right') {
+      offset = -textFullWidth;
+    }
+
+    offset += startOffset;
+    chars.forEach((char, i) => {
+      // Find such segment what distance between p0 and p1 is approx. width of glyph
+      var {
+        offset: nextOffset,
+        segment,
+        rotation
+      } = this.findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, offset, dy, char, i);
+      offset = nextOffset;
+
+      if (!segment.p0 || !segment.p1) {
+        return;
+      } // const width = this.getLineLength(
+      // 	segment.p0.x,
+      // 	segment.p0.y,
+      // 	segment.p1.x,
+      // 	segment.p1.y
+      // );
+      // Note: Since glyphs are rendered one at a time, any kerning pair data built into the font will not be used.
+      // Can foresee having a rough pair table built in that the developer can override as needed.
+      // Or use "dx" attribute of the <text> node as a naive replacement
+      // const kern = 0;
+      // placeholder for future implementation
+      // const midpoint = this.getPointOnLine(
+      // 	kern + width / 2.0,
+      // 	segment.p0.x, segment.p0.y, segment.p1.x, segment.p1.y
+      // );
+
+
+      this.glyphInfo.push({
+        // transposeX: midpoint.x,
+        // transposeY: midpoint.y,
+        text: chars[i],
+        p0: segment.p0,
+        p1: segment.p1,
+        rotation
+      });
+    });
+  }
+
+  parsePathData(path) {
+    this.pathLength = -1; // reset path length
+
+    if (!path) {
+      return [];
+    }
+
+    var pathCommands = [];
+    var {
+      pathParser
+    } = path;
+    pathParser.reset(); // convert l, H, h, V, and v to L
+
+    while (!pathParser.isEnd()) {
+      var {
+        current
+      } = pathParser;
+      var startX = current ? current.x : 0;
+      var startY = current ? current.y : 0;
+      var command = pathParser.next();
+      var nextCommandType = command.type;
+      var points = [];
+
+      switch (command.type) {
+        case PathParser.MOVE_TO:
+          this.pathM(pathParser, points);
+          break;
+
+        case PathParser.LINE_TO:
+          nextCommandType = this.pathL(pathParser, points);
+          break;
+
+        case PathParser.HORIZ_LINE_TO:
+          nextCommandType = this.pathH(pathParser, points);
+          break;
+
+        case PathParser.VERT_LINE_TO:
+          nextCommandType = this.pathV(pathParser, points);
+          break;
+
+        case PathParser.CURVE_TO:
+          this.pathC(pathParser, points);
+          break;
+
+        case PathParser.SMOOTH_CURVE_TO:
+          nextCommandType = this.pathS(pathParser, points);
+          break;
+
+        case PathParser.QUAD_TO:
+          this.pathQ(pathParser, points);
+          break;
+
+        case PathParser.SMOOTH_QUAD_TO:
+          nextCommandType = this.pathT(pathParser, points);
+          break;
+
+        case PathParser.ARC:
+          points = this.pathA(pathParser);
+          break;
+
+        case PathParser.CLOSE_PATH:
+          PathElement.pathZ(pathParser);
+          break;
+      }
+
+      if (command.type !== PathParser.CLOSE_PATH) {
+        pathCommands.push({
+          type: nextCommandType,
+          points,
+          start: {
+            x: startX,
+            y: startY
+          },
+          pathLength: this.calcLength(startX, startY, nextCommandType, points)
+        });
+      } else {
+        pathCommands.push({
+          type: PathParser.CLOSE_PATH,
+          points: [],
+          pathLength: 0
+        });
+      }
+    }
+
+    return pathCommands;
+  }
+
+  pathM(pathParser, points) {
+    var {
+      x,
+      y
+    } = PathElement.pathM(pathParser).point;
+    points.push(x, y);
+  }
+
+  pathL(pathParser, points) {
+    var {
+      x,
+      y
+    } = PathElement.pathL(pathParser).point;
+    points.push(x, y);
+    return PathParser.LINE_TO;
+  }
+
+  pathH(pathParser, points) {
+    var {
+      x,
+      y
+    } = PathElement.pathH(pathParser).point;
+    points.push(x, y);
+    return PathParser.LINE_TO;
+  }
+
+  pathV(pathParser, points) {
+    var {
+      x,
+      y
+    } = PathElement.pathV(pathParser).point;
+    points.push(x, y);
+    return PathParser.LINE_TO;
+  }
+
+  pathC(pathParser, points) {
+    var {
+      point,
+      controlPoint,
+      currentPoint
+    } = PathElement.pathC(pathParser);
+    points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+  }
+
+  pathS(pathParser, points) {
+    var {
+      point,
+      controlPoint,
+      currentPoint
+    } = PathElement.pathS(pathParser);
+    points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+    return PathParser.CURVE_TO;
+  }
+
+  pathQ(pathParser, points) {
+    var {
+      controlPoint,
+      currentPoint
+    } = PathElement.pathQ(pathParser);
+    points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+  }
+
+  pathT(pathParser, points) {
+    var {
+      controlPoint,
+      currentPoint
+    } = PathElement.pathT(pathParser);
+    points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+    return PathParser.QUAD_TO;
+  }
+
+  pathA(pathParser) {
+    var {
+      rX,
+      rY,
+      sweepFlag,
+      xAxisRotation,
+      centp,
+      a1,
+      ad
+    } = PathElement.pathA(pathParser);
+
+    if (sweepFlag === 0 && ad > 0) {
+      ad -= 2 * Math.PI;
+    }
+
+    if (sweepFlag === 1 && ad < 0) {
+      ad += 2 * Math.PI;
+    }
+
+    return [centp.x, centp.y, rX, rY, a1, ad, xAxisRotation, sweepFlag];
+  }
+
+  calcLength(x, y, commandType, points) {
+    var len = 0;
+    var p1 = null;
+    var p2 = null;
+    var t = 0;
+
+    switch (commandType) {
+      case PathParser.LINE_TO:
+        return this.getLineLength(x, y, points[0], points[1]);
+
+      case PathParser.CURVE_TO:
+        // Approximates by breaking curve into 100 line segments
+        len = 0.0;
+        p1 = this.getPointOnCubicBezier(0, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);
+
+        for (t = 0.01; t <= 1; t += 0.01) {
+          p2 = this.getPointOnCubicBezier(t, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);
+          len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);
+          p1 = p2;
+        }
+
+        return len;
+
+      case PathParser.QUAD_TO:
+        // Approximates by breaking curve into 100 line segments
+        len = 0.0;
+        p1 = this.getPointOnQuadraticBezier(0, x, y, points[0], points[1], points[2], points[3]);
+
+        for (t = 0.01; t <= 1; t += 0.01) {
+          p2 = this.getPointOnQuadraticBezier(t, x, y, points[0], points[1], points[2], points[3]);
+          len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);
+          p1 = p2;
+        }
+
+        return len;
+
+      case PathParser.ARC:
+        {
+          // Approximates by breaking curve into line segments
+          len = 0.0;
+          var start = points[4]; // 4 = theta
+
+          var dTheta = points[5]; // 5 = dTheta
+
+          var end = points[4] + dTheta;
+          var inc = Math.PI / 180.0; // 1 degree resolution
+
+          if (Math.abs(start - end) < inc) {
+            inc = Math.abs(start - end);
+          } // Note: for purpose of calculating arc length, not going to worry about rotating X-axis by angle psi
+
+
+          p1 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], start, 0);
+
+          if (dTheta < 0) {
+            // clockwise
+            for (t = start - inc; t > end; t -= inc) {
+              p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);
+              len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);
+              p1 = p2;
+            }
+          } else {
+            // counter-clockwise
+            for (t = start + inc; t < end; t += inc) {
+              p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);
+              len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);
+              p1 = p2;
+            }
+          }
+
+          p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], end, 0);
+          len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);
+          return len;
+        }
+    }
+
+    return 0;
+  }
+
+  getPointOnLine(dist, p1x, p1y, p2x, p2y) {
+    var fromX = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : p1x;
+    var fromY = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : p1y;
+    var m = (p2y - p1y) / (p2x - p1x + PSEUDO_ZERO);
+    var run = Math.sqrt(dist * dist / (1 + m * m));
+
+    if (p2x < p1x) {
+      run *= -1;
+    }
+
+    var rise = m * run;
+    var pt = null;
+
+    if (p2x === p1x) {
+      // vertical line
+      pt = {
+        x: fromX,
+        y: fromY + rise
+      };
+    } else if ((fromY - p1y) / (fromX - p1x + PSEUDO_ZERO) === m) {
+      pt = {
+        x: fromX + run,
+        y: fromY + rise
+      };
+    } else {
+      var ix = 0;
+      var iy = 0;
+      var len = this.getLineLength(p1x, p1y, p2x, p2y);
+
+      if (len < PSEUDO_ZERO) {
+        return null;
+      }
+
+      var u = (fromX - p1x) * (p2x - p1x) + (fromY - p1y) * (p2y - p1y);
+      u /= len * len;
+      ix = p1x + u * (p2x - p1x);
+      iy = p1y + u * (p2y - p1y);
+      var pRise = this.getLineLength(fromX, fromY, ix, iy);
+      var pRun = Math.sqrt(dist * dist - pRise * pRise);
+      run = Math.sqrt(pRun * pRun / (1 + m * m));
+
+      if (p2x < p1x) {
+        run *= -1;
+      }
+
+      rise = m * run;
+      pt = {
+        x: ix + run,
+        y: iy + rise
+      };
+    }
+
+    return pt;
+  }
+
+  getPointOnPath(distance) {
+    var fullLen = this.getPathLength();
+    var cumulativePathLength = 0;
+    var p = null;
+
+    if (distance < -0.00005 || distance - 0.00005 > fullLen) {
+      return null;
+    }
+
+    var {
+      dataArray
+    } = this;
+
+    for (var command of dataArray) {
+      if (command && (command.pathLength < 0.00005 || cumulativePathLength + command.pathLength + 0.00005 < distance)) {
+        cumulativePathLength += command.pathLength;
+        continue;
+      }
+
+      var delta = distance - cumulativePathLength;
+      var currentT = 0;
+
+      switch (command.type) {
+        case PathParser.LINE_TO:
+          p = this.getPointOnLine(delta, command.start.x, command.start.y, command.points[0], command.points[1], command.start.x, command.start.y);
+          break;
+
+        case PathParser.ARC:
+          {
+            var start = command.points[4]; // 4 = theta
+
+            var dTheta = command.points[5]; // 5 = dTheta
+
+            var end = command.points[4] + dTheta;
+            currentT = start + delta / command.pathLength * dTheta;
+
+            if (dTheta < 0 && currentT < end || dTheta >= 0 && currentT > end) {
+              break;
+            }
+
+            p = this.getPointOnEllipticalArc(command.points[0], command.points[1], command.points[2], command.points[3], currentT, command.points[6]);
+            break;
+          }
+
+        case PathParser.CURVE_TO:
+          currentT = delta / command.pathLength;
+
+          if (currentT > 1) {
+            currentT = 1;
+          }
+
+          p = this.getPointOnCubicBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3], command.points[4], command.points[5]);
+          break;
+
+        case PathParser.QUAD_TO:
+          currentT = delta / command.pathLength;
+
+          if (currentT > 1) {
+            currentT = 1;
+          }
+
+          p = this.getPointOnQuadraticBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3]);
+          break;
+      }
+
+      if (p) {
+        return p;
+      }
+
+      break;
+    }
+
+    return null;
+  }
+
+  getLineLength(x1, y1, x2, y2) {
+    return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
+  }
+
+  getPathLength() {
+    if (this.pathLength === -1) {
+      this.pathLength = this.dataArray.reduce((length, command) => command.pathLength > 0 ? length + command.pathLength : length, 0);
+    }
+
+    return this.pathLength;
+  }
+
+  getPointOnCubicBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y) {
+    var x = p4x * CB1(pct) + p3x * CB2(pct) + p2x * CB3(pct) + p1x * CB4(pct);
+    var y = p4y * CB1(pct) + p3y * CB2(pct) + p2y * CB3(pct) + p1y * CB4(pct);
+    return {
+      x,
+      y
+    };
+  }
+
+  getPointOnQuadraticBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y) {
+    var x = p3x * QB1(pct) + p2x * QB2(pct) + p1x * QB3(pct);
+    var y = p3y * QB1(pct) + p2y * QB2(pct) + p1y * QB3(pct);
+    return {
+      x,
+      y
+    };
+  }
+
+  getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi) {
+    var cosPsi = Math.cos(psi);
+    var sinPsi = Math.sin(psi);
+    var pt = {
+      x: rx * Math.cos(theta),
+      y: ry * Math.sin(theta)
+    };
+    return {
+      x: cx + (pt.x * cosPsi - pt.y * sinPsi),
+      y: cy + (pt.x * sinPsi + pt.y * cosPsi)
+    };
+  } // TODO need some optimisations. possibly build cache only for curved segments?
+
+
+  buildEquidistantCache(inputStep, inputPrecision) {
+    var fullLen = this.getPathLength();
+    var precision = inputPrecision || 0.25; // accuracy vs performance
+
+    var step = inputStep || fullLen / 100;
+
+    if (!this.equidistantCache || this.equidistantCache.step !== step || this.equidistantCache.precision !== precision) {
+      // Prepare cache
+      this.equidistantCache = {
+        step,
+        precision,
+        points: []
+      }; // Calculate points
+
+      var s = 0;
+
+      for (var l = 0; l <= fullLen; l += precision) {
+        var p0 = this.getPointOnPath(l);
+        var p1 = this.getPointOnPath(l + precision);
+
+        if (!p0 || !p1) {
+          continue;
+        }
+
+        s += this.getLineLength(p0.x, p0.y, p1.x, p1.y);
+
+        if (s >= step) {
+          this.equidistantCache.points.push({
+            x: p0.x,
+            y: p0.y,
+            distance: l
+          });
+          s -= step;
+        }
+      }
+    }
+  }
+
+  getEquidistantPointOnPath(targetDistance, step, precision) {
+    this.buildEquidistantCache(step, precision);
+
+    if (targetDistance < 0 || targetDistance - this.getPathLength() > 0.00005) {
+      return null;
+    }
+
+    var idx = Math.round(targetDistance / this.getPathLength() * (this.equidistantCache.points.length - 1));
+    return this.equidistantCache.points[idx] || null;
+  }
+
+}
+
+var dataUriRegex = /^\s*data:(([^/,;]+\/[^/,;]+)(?:;([^,;=]+=[^,;=]+))?)?(?:;(base64))?,(.*)$/i;
+class ImageElement extends RenderedElement {
+  constructor(document, node, captureTextNodes) {
+    super(document, node, captureTextNodes);
+    this.type = 'image';
+    this.loaded = false;
+    var href = this.getHrefAttribute().getString();
+
+    if (!href) {
+      return;
+    }
+
+    var isSvg = href.endsWith('.svg') || /^\s*data:image\/svg\+xml/i.test(href);
+    document.images.push(this);
+
+    if (!isSvg) {
+      void this.loadImage(href);
+    } else {
+      void this.loadSvg(href);
+    }
+
+    this.isSvg = isSvg;
+  }
+
+  loadImage(href) {
+    var _this = this;
+
+    return _asyncToGenerator(function* () {
+      try {
+        var image = yield _this.document.createImage(href);
+        _this.image = image;
+      } catch (err) {
+        console.error("Error while loading image \"".concat(href, "\":"), err);
+      }
+
+      _this.loaded = true;
+    })();
+  }
+
+  loadSvg(href) {
+    var _this2 = this;
+
+    return _asyncToGenerator(function* () {
+      var match = dataUriRegex.exec(href);
+
+      if (match) {
+        var data = match[5];
+
+        if (match[4] === 'base64') {
+          _this2.image = atob(data);
+        } else {
+          _this2.image = decodeURIComponent(data);
+        }
+      } else {
+        try {
+          var response = yield _this2.document.fetch(href);
+          var svg = yield response.text();
+          _this2.image = svg;
+        } catch (err) {
+          console.error("Error while loading image \"".concat(href, "\":"), err);
+        }
+      }
+
+      _this2.loaded = true;
+    })();
+  }
+
+  renderChildren(ctx) {
+    var {
+      document,
+      image,
+      loaded
+    } = this;
+    var x = this.getAttribute('x').getPixels('x');
+    var y = this.getAttribute('y').getPixels('y');
+    var width = this.getStyle('width').getPixels('x');
+    var height = this.getStyle('height').getPixels('y');
+
+    if (!loaded || !image || !width || !height) {
+      return;
+    }
+
+    ctx.save();
+    ctx.translate(x, y);
+
+    if (this.isSvg) {
+      var subDocument = document.canvg.forkString(ctx, this.image, {
+        ignoreMouse: true,
+        ignoreAnimation: true,
+        ignoreDimensions: true,
+        ignoreClear: true,
+        offsetX: 0,
+        offsetY: 0,
+        scaleWidth: width,
+        scaleHeight: height
+      });
+      subDocument.document.documentElement.parent = this;
+      void subDocument.render();
+    } else {
+      var _image = this.image;
+      document.setViewBox({
+        ctx,
+        aspectRatio: this.getAttribute('preserveAspectRatio').getString(),
+        width,
+        desiredWidth: _image.width,
+        height,
+        desiredHeight: _image.height
+      });
+
+      if (this.loaded) {
+        if (typeof _image.complete === 'undefined' || _image.complete) {
+          ctx.drawImage(_image, 0, 0);
+        }
+      }
+    }
+
+    ctx.restore();
+  }
+
+  getBoundingBox() {
+    var x = this.getAttribute('x').getPixels('x');
+    var y = this.getAttribute('y').getPixels('y');
+    var width = this.getStyle('width').getPixels('x');
+    var height = this.getStyle('height').getPixels('y');
+    return new BoundingBox(x, y, x + width, y + height);
+  }
+
+}
+
+class SymbolElement extends RenderedElement {
+  constructor() {
+    super(...arguments);
+    this.type = 'symbol';
+  }
+
+  render(_) {// NO RENDER
+  }
+
+}
+
+class SVGFontLoader {
+  constructor(document) {
+    this.document = document;
+    this.loaded = false;
+    document.fonts.push(this);
+  }
+
+  load(fontFamily, url) {
+    var _this = this;
+
+    return _asyncToGenerator(function* () {
+      try {
+        var {
+          document
+        } = _this;
+        var svgDocument = yield document.canvg.parser.load(url);
+        var fonts = svgDocument.getElementsByTagName('font');
+        Array.from(fonts).forEach(fontNode => {
+          var font = document.createElement(fontNode);
+          document.definitions[fontFamily] = font;
+        });
+      } catch (err) {
+        console.error("Error while loading font \"".concat(url, "\":"), err);
+      }
+
+      _this.loaded = true;
+    })();
+  }
+
+}
+
+class StyleElement extends Element {
+  constructor(document, node, captureTextNodes) {
+    super(document, node, captureTextNodes);
+    this.type = 'style';
+    var css = compressSpaces(Array.from(node.childNodes) // NEED TEST
+    .map(_ => _.textContent).join('').replace(/(\/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+\/)|(^[\s]*\/\/.*)/gm, '') // remove comments
+    .replace(/@import.*;/g, '') // remove imports
+    );
+    var cssDefs = css.split('}');
+    cssDefs.forEach(_ => {
+      var def = _.trim();
+
+      if (!def) {
+        return;
+      }
+
+      var cssParts = def.split('{');
+      var cssClasses = cssParts[0].split(',');
+      var cssProps = cssParts[1].split(';');
+      cssClasses.forEach(_ => {
+        var cssClass = _.trim();
+
+        if (!cssClass) {
+          return;
+        }
+
+        var props = document.styles[cssClass] || {};
+        cssProps.forEach(cssProp => {
+          var prop = cssProp.indexOf(':');
+          var name = cssProp.substr(0, prop).trim();
+          var value = cssProp.substr(prop + 1, cssProp.length - prop).trim();
+
+          if (name && value) {
+            props[name] = new Property(document, name, value);
+          }
+        });
+        document.styles[cssClass] = props;
+        document.stylesSpecificity[cssClass] = getSelectorSpecificity(cssClass);
+
+        if (cssClass === '@font-face') {
+          //  && !nodeEnv
+          var fontFamily = props['font-family'].getString().replace(/"|'/g, '');
+          var srcs = props.src.getString().split(',');
+          srcs.forEach(src => {
+            if (src.indexOf('format("svg")') > 0) {
+              var url = parseExternalUrl(src);
+
+              if (url) {
+                void new SVGFontLoader(document).load(fontFamily, url);
+              }
+            }
+          });
+        }
+      });
+    });
+  }
+
+}
+StyleElement.parseExternalUrl = parseExternalUrl;
+
+class UseElement extends RenderedElement {
+  constructor() {
+    super(...arguments);
+    this.type = 'use';
+  }
+
+  setContext(ctx) {
+    super.setContext(ctx);
+    var xAttr = this.getAttribute('x');
+    var yAttr = this.getAttribute('y');
+
+    if (xAttr.hasValue()) {
+      ctx.translate(xAttr.getPixels('x'), 0);
+    }
+
+    if (yAttr.hasValue()) {
+      ctx.translate(0, yAttr.getPixels('y'));
+    }
+  }
+
+  path(ctx) {
+    var {
+      element
+    } = this;
+
+    if (element) {
+      element.path(ctx);
+    }
+  }
+
+  renderChildren(ctx) {
+    var {
+      document,
+      element
+    } = this;
+
+    if (element) {
+      var tempSvg = element;
+
+      if (element.type === 'symbol') {
+        // render me using a temporary svg element in symbol cases (http://www.w3.org/TR/SVG/struct.html#UseElement)
+        tempSvg = new SVGElement(document, null);
+        tempSvg.attributes.viewBox = new Property(document, 'viewBox', element.getAttribute('viewBox').getString());
+        tempSvg.attributes.preserveAspectRatio = new Property(document, 'preserveAspectRatio', element.getAttribute('preserveAspectRatio').getString());
+        tempSvg.attributes.overflow = new Property(document, 'overflow', element.getAttribute('overflow').getString());
+        tempSvg.children = element.children; // element is still the parent of the children
+
+        element.styles.opacity = new Property(document, 'opacity', this.calculateOpacity());
+      }
+
+      if (tempSvg.type === 'svg') {
+        var widthStyle = this.getStyle('width', false, true);
+        var heightStyle = this.getStyle('height', false, true); // if symbol or svg, inherit width/height from me
+
+        if (widthStyle.hasValue()) {
+          tempSvg.attributes.width = new Property(document, 'width', widthStyle.getString());
+        }
+
+        if (heightStyle.hasValue()) {
+          tempSvg.attributes.height = new Property(document, 'height', heightStyle.getString());
+        }
+      }
+
+      var oldParent = tempSvg.parent;
+      tempSvg.parent = this;
+      tempSvg.render(ctx);
+      tempSvg.parent = oldParent;
+    }
+  }
+
+  getBoundingBox(ctx) {
+    var {
+      element
+    } = this;
+
+    if (element) {
+      return element.getBoundingBox(ctx);
+    }
+
+    return null;
+  }
+
+  elementTransform() {
+    var {
+      document,
+      element
+    } = this;
+    return Transform.fromElement(document, element);
+  }
+
+  get element() {
+    if (!this.cachedElement) {
+      this.cachedElement = this.getHrefAttribute().getDefinition();
+    }
+
+    return this.cachedElement;
+  }
+
+}
+
+function imGet(img, x, y, width, _height, rgba) {
+  return img[y * width * 4 + x * 4 + rgba];
+}
+
+function imSet(img, x, y, width, _height, rgba, val) {
+  img[y * width * 4 + x * 4 + rgba] = val;
+}
+
+function m(matrix, i, v) {
+  var mi = matrix[i];
+  return mi * v;
+}
+
+function c(a, m1, m2, m3) {
+  return m1 + Math.cos(a) * m2 + Math.sin(a) * m3;
+}
+
+class FeColorMatrixElement extends Element {
+  constructor(document, node, captureTextNodes) {
+    super(document, node, captureTextNodes);
+    this.type = 'feColorMatrix';
+    var matrix = toNumbers(this.getAttribute('values').getString());
+
+    switch (this.getAttribute('type').getString('matrix')) {
+      // http://www.w3.org/TR/SVG/filters.html#feColorMatrixElement
+      case 'saturate':
+        {
+          var s = matrix[0];
+          /* eslint-disable array-element-newline */
+
+          matrix = [0.213 + 0.787 * s, 0.715 - 0.715 * s, 0.072 - 0.072 * s, 0, 0, 0.213 - 0.213 * s, 0.715 + 0.285 * s, 0.072 - 0.072 * s, 0, 0, 0.213 - 0.213 * s, 0.715 - 0.715 * s, 0.072 + 0.928 * s, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];
+          /* eslint-enable array-element-newline */
+
+          break;
+        }
+
+      case 'hueRotate':
+        {
+          var a = matrix[0] * Math.PI / 180.0;
+          /* eslint-disable array-element-newline */
+
+          matrix = [c(a, 0.213, 0.787, -0.213), c(a, 0.715, -0.715, -0.715), c(a, 0.072, -0.072, 0.928), 0, 0, c(a, 0.213, -0.213, 0.143), c(a, 0.715, 0.285, 0.140), c(a, 0.072, -0.072, -0.283), 0, 0, c(a, 0.213, -0.213, -0.787), c(a, 0.715, -0.715, 0.715), c(a, 0.072, 0.928, 0.072), 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];
+          /* eslint-enable array-element-newline */
+
+          break;
+        }
+
+      case 'luminanceToAlpha':
+        /* eslint-disable array-element-newline */
+        matrix = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2125, 0.7154, 0.0721, 0, 0, 0, 0, 0, 0, 1];
+        /* eslint-enable array-element-newline */
+
+        break;
+    }
+
+    this.matrix = matrix;
+    this.includeOpacity = this.getAttribute('includeOpacity').hasValue();
+  }
+
+  apply(ctx, _x, _y, width, height) {
+    // assuming x==0 && y==0 for now
+    var {
+      includeOpacity,
+      matrix
+    } = this;
+    var srcData = ctx.getImageData(0, 0, width, height);
+
+    for (var y = 0; y < height; y++) {
+      for (var x = 0; x < width; x++) {
+        var r = imGet(srcData.data, x, y, width, height, 0);
+        var g = imGet(srcData.data, x, y, width, height, 1);
+        var b = imGet(srcData.data, x, y, width, height, 2);
+        var a = imGet(srcData.data, x, y, width, height, 3);
+        var nr = m(matrix, 0, r) + m(matrix, 1, g) + m(matrix, 2, b) + m(matrix, 3, a) + m(matrix, 4, 1);
+        var ng = m(matrix, 5, r) + m(matrix, 6, g) + m(matrix, 7, b) + m(matrix, 8, a) + m(matrix, 9, 1);
+        var nb = m(matrix, 10, r) + m(matrix, 11, g) + m(matrix, 12, b) + m(matrix, 13, a) + m(matrix, 14, 1);
+        var na = m(matrix, 15, r) + m(matrix, 16, g) + m(matrix, 17, b) + m(matrix, 18, a) + m(matrix, 19, 1);
+
+        if (includeOpacity) {
+          nr = 0;
+          ng = 0;
+          nb = 0;
+          na *= a / 255;
+        }
+
+        imSet(srcData.data, x, y, width, height, 0, nr);
+        imSet(srcData.data, x, y, width, height, 1, ng);
+        imSet(srcData.data, x, y, width, height, 2, nb);
+        imSet(srcData.data, x, y, width, height, 3, na);
+      }
+    }
+
+    ctx.clearRect(0, 0, width, height);
+    ctx.putImageData(srcData, 0, 0);
+  }
+
+}
+
+class MaskElement extends Element {
+  constructor() {
+    super(...arguments);
+    this.type = 'mask';
+  }
+
+  apply(ctx, element) {
+    var {
+      document
+    } = this; // render as temp svg
+
+    var x = this.getAttribute('x').getPixels('x');
+    var y = this.getAttribute('y').getPixels('y');
+    var width = this.getStyle('width').getPixels('x');
+    var height = this.getStyle('height').getPixels('y');
+
+    if (!width && !height) {
+      var boundingBox = new BoundingBox();
+      this.children.forEach(child => {
+        boundingBox.addBoundingBox(child.getBoundingBox(ctx));
+      });
+      x = Math.floor(boundingBox.x1);
+      y = Math.floor(boundingBox.y1);
+      width = Math.floor(boundingBox.width);
+      height = Math.floor(boundingBox.height);
+    }
+
+    var ignoredStyles = this.removeStyles(element, MaskElement.ignoreStyles);
+    var maskCanvas = document.createCanvas(x + width, y + height);
+    var maskCtx = maskCanvas.getContext('2d');
+    document.screen.setDefaults(maskCtx);
+    this.renderChildren(maskCtx); // convert mask to alpha with a fake node
+    // TODO: refactor out apply from feColorMatrix
+
+    new FeColorMatrixElement(document, {
+      nodeType: 1,
+      childNodes: [],
+      attributes: [{
+        nodeName: 'type',
+        value: 'luminanceToAlpha'
+      }, {
+        nodeName: 'includeOpacity',
+        value: 'true'
+      }]
+    }).apply(maskCtx, 0, 0, x + width, y + height);
+    var tmpCanvas = document.createCanvas(x + width, y + height);
+    var tmpCtx = tmpCanvas.getContext('2d');
+    document.screen.setDefaults(tmpCtx);
+    element.render(tmpCtx);
+    tmpCtx.globalCompositeOperation = 'destination-in';
+    tmpCtx.fillStyle = maskCtx.createPattern(maskCanvas, 'no-repeat');
+    tmpCtx.fillRect(0, 0, x + width, y + height);
+    ctx.fillStyle = tmpCtx.createPattern(tmpCanvas, 'no-repeat');
+    ctx.fillRect(0, 0, x + width, y + height); // reassign mask
+
+    this.restoreStyles(element, ignoredStyles);
+  }
+
+  render(_) {// NO RENDER
+  }
+
+}
+MaskElement.ignoreStyles = ['mask', 'transform', 'clip-path'];
+
+var noop = () => {// NOOP
+};
+
+class ClipPathElement extends Element {
+  constructor() {
+    super(...arguments);
+    this.type = 'clipPath';
+  }
+
+  apply(ctx) {
+    var {
+      document
+    } = this;
+    var contextProto = Reflect.getPrototypeOf(ctx);
+    var {
+      beginPath,
+      closePath
+    } = ctx;
+
+    if (contextProto) {
+      contextProto.beginPath = noop;
+      contextProto.closePath = noop;
+    }
+
+    Reflect.apply(beginPath, ctx, []);
+    this.children.forEach(child => {
+      if (typeof child.path === 'undefined') {
+        return;
+      }
+
+      var transform = typeof child.elementTransform !== 'undefined' ? child.elementTransform() : null; // handle <use />
+
+      if (!transform) {
+        transform = Transform.fromElement(document, child);
+      }
+
+      if (transform) {
+        transform.apply(ctx);
+      }
+
+      child.path(ctx);
+
+      if (contextProto) {
+        contextProto.closePath = closePath;
+      }
+
+      if (transform) {
+        transform.unapply(ctx);
+      }
+    });
+    Reflect.apply(closePath, ctx, []);
+    ctx.clip();
+
+    if (contextProto) {
+      contextProto.beginPath = beginPath;
+      contextProto.closePath = closePath;
+    }
+  }
+
+  render(_) {// NO RENDER
+  }
+
+}
+
+class FilterElement extends Element {
+  constructor() {
+    super(...arguments);
+    this.type = 'filter';
+  }
+
+  apply(ctx, element) {
+    // render as temp svg
+    var {
+      document,
+      children
+    } = this;
+    var boundingBox = element.getBoundingBox(ctx);
+
+    if (!boundingBox) {
+      return;
+    }
+
+    var px = 0;
+    var py = 0;
+    children.forEach(child => {
+      var efd = child.extraFilterDistance || 0;
+      px = Math.max(px, efd);
+      py = Math.max(py, efd);
+    });
+    var width = Math.floor(boundingBox.width);
+    var height = Math.floor(boundingBox.height);
+    var tmpCanvasWidth = width + 2 * px;
+    var tmpCanvasHeight = height + 2 * py;
+
+    if (tmpCanvasWidth < 1 || tmpCanvasHeight < 1) {
+      return;
+    }
+
+    var x = Math.floor(boundingBox.x);
+    var y = Math.floor(boundingBox.y);
+    var ignoredStyles = this.removeStyles(element, FilterElement.ignoreStyles);
+    var tmpCanvas = document.createCanvas(tmpCanvasWidth, tmpCanvasHeight);
+    var tmpCtx = tmpCanvas.getContext('2d');
+    document.screen.setDefaults(tmpCtx);
+    tmpCtx.translate(-x + px, -y + py);
+    element.render(tmpCtx); // apply filters
+
+    children.forEach(child => {
+      if (typeof child.apply === 'function') {
+        child.apply(tmpCtx, 0, 0, tmpCanvasWidth, tmpCanvasHeight);
+      }
+    }); // render on me
+
+    ctx.drawImage(tmpCanvas, 0, 0, tmpCanvasWidth, tmpCanvasHeight, x - px, y - py, tmpCanvasWidth, tmpCanvasHeight);
+    this.restoreStyles(element, ignoredStyles);
+  }
+
+  render(_) {// NO RENDER
+  }
+
+}
+FilterElement.ignoreStyles = ['filter', 'transform', 'clip-path'];
+
+class FeDropShadowElement extends Element {
+  constructor(document, node, captureTextNodes) {
+    super(document, node, captureTextNodes);
+    this.type = 'feDropShadow';
+    this.addStylesFromStyleDefinition();
+  }
+
+  apply(_, _x, _y, _width, _height) {// TODO: implement
+  }
+
+}
+
+class FeMorphologyElement extends Element {
+  constructor() {
+    super(...arguments);
+    this.type = 'feMorphology';
+  }
+
+  apply(_, _x, _y, _width, _height) {// TODO: implement
+  }
+
+}
+
+class FeCompositeElement extends Element {
+  constructor() {
+    super(...arguments);
+    this.type = 'feComposite';
+  }
+
+  apply(_, _x, _y, _width, _height) {// TODO: implement
+  }
+
+}
+
+class FeGaussianBlurElement extends Element {
+  constructor(document, node, captureTextNodes) {
+    super(document, node, captureTextNodes);
+    this.type = 'feGaussianBlur';
+    this.blurRadius = Math.floor(this.getAttribute('stdDeviation').getNumber());
+    this.extraFilterDistance = this.blurRadius;
+  }
+
+  apply(ctx, x, y, width, height) {
+    var {
+      document,
+      blurRadius
+    } = this;
+    var body = document.window ? document.window.document.body : null;
+    var canvas = ctx.canvas; // StackBlur requires canvas be on document
+
+    canvas.id = document.getUniqueId();
+
+    if (body) {
+      canvas.style.display = 'none';
+      body.appendChild(canvas);
+    }
+
+    canvasRGBA(canvas, x, y, width, height, blurRadius);
+
+    if (body) {
+      body.removeChild(canvas);
+    }
+  }
+
+}
+
+class TitleElement extends Element {
+  constructor() {
+    super(...arguments);
+    this.type = 'title';
+  }
+
+}
+
+class DescElement extends Element {
+  constructor() {
+    super(...arguments);
+    this.type = 'desc';
+  }
+
+}
+
+var elements = {
+  'svg': SVGElement,
+  'rect': RectElement,
+  'circle': CircleElement,
+  'ellipse': EllipseElement,
+  'line': LineElement,
+  'polyline': PolylineElement,
+  'polygon': PolygonElement,
+  'path': PathElement,
+  'pattern': PatternElement,
+  'marker': MarkerElement,
+  'defs': DefsElement,
+  'linearGradient': LinearGradientElement,
+  'radialGradient': RadialGradientElement,
+  'stop': StopElement,
+  'animate': AnimateElement,
+  'animateColor': AnimateColorElement,
+  'animateTransform': AnimateTransformElement,
+  'font': FontElement,
+  'font-face': FontFaceElement,
+  'missing-glyph': MissingGlyphElement,
+  'glyph': GlyphElement,
+  'text': TextElement,
+  'tspan': TSpanElement,
+  'tref': TRefElement,
+  'a': AElement,
+  'textPath': TextPathElement,
+  'image': ImageElement,
+  'g': GElement,
+  'symbol': SymbolElement,
+  'style': StyleElement,
+  'use': UseElement,
+  'mask': MaskElement,
+  'clipPath': ClipPathElement,
+  'filter': FilterElement,
+  'feDropShadow': FeDropShadowElement,
+  'feMorphology': FeMorphologyElement,
+  'feComposite': FeCompositeElement,
+  'feColorMatrix': FeColorMatrixElement,
+  'feGaussianBlur': FeGaussianBlurElement,
+  'title': TitleElement,
+  'desc': DescElement
+};
+
+function ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
+
+function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+
+function createCanvas(width, height) {
+  var canvas = document.createElement('canvas');
+  canvas.width = width;
+  canvas.height = height;
+  return canvas;
+}
+
+function createImage(_x) {
+  return _createImage.apply(this, arguments);
+}
+
+function _createImage() {
+  _createImage = _asyncToGenerator(function* (src) {
+    var anonymousCrossOrigin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+    var image = document.createElement('img');
+
+    if (anonymousCrossOrigin) {
+      image.crossOrigin = 'Anonymous';
+    }
+
+    return new Promise((resolve, reject) => {
+      image.onload = () => {
+        resolve(image);
+      };
+
+      image.onerror = (_event, _source, _lineno, _colno, error) => {
+        reject(error);
+      };
+
+      image.src = src;
+    });
+  });
+  return _createImage.apply(this, arguments);
+}
+
+class Document {
+  constructor(canvg) {
+    var {
+      rootEmSize = 12,
+      emSize = 12,
+      createCanvas = Document.createCanvas,
+      createImage = Document.createImage,
+      anonymousCrossOrigin
+    } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+    this.canvg = canvg;
+    this.definitions = {};
+    this.styles = {};
+    this.stylesSpecificity = {};
+    this.images = [];
+    this.fonts = [];
+    this.emSizeStack = [];
+    this.uniqueId = 0;
+    this.screen = canvg.screen;
+    this.rootEmSize = rootEmSize;
+    this.emSize = emSize;
+    this.createCanvas = createCanvas;
+    this.createImage = this.bindCreateImage(createImage, anonymousCrossOrigin);
+    this.screen.wait(this.isImagesLoaded.bind(this));
+    this.screen.wait(this.isFontsLoaded.bind(this));
+  }
+
+  bindCreateImage(createImage, anonymousCrossOrigin) {
+    if (typeof anonymousCrossOrigin === 'boolean') {
+      return (source, forceAnonymousCrossOrigin) => createImage(source, typeof forceAnonymousCrossOrigin === 'boolean' ? forceAnonymousCrossOrigin : anonymousCrossOrigin);
+    }
+
+    return createImage;
+  }
+
+  get window() {
+    return this.screen.window;
+  }
+
+  get fetch() {
+    return this.screen.fetch;
+  }
+
+  get ctx() {
+    return this.screen.ctx;
+  }
+
+  get emSize() {
+    var {
+      emSizeStack
+    } = this;
+    return emSizeStack[emSizeStack.length - 1];
+  }
+
+  set emSize(value) {
+    var {
+      emSizeStack
+    } = this;
+    emSizeStack.push(value);
+  }
+
+  popEmSize() {
+    var {
+      emSizeStack
+    } = this;
+    emSizeStack.pop();
+  }
+
+  getUniqueId() {
+    return "canvg".concat(++this.uniqueId);
+  }
+
+  isImagesLoaded() {
+    return this.images.every(_ => _.loaded);
+  }
+
+  isFontsLoaded() {
+    return this.fonts.every(_ => _.loaded);
+  }
+
+  createDocumentElement(document) {
+    var documentElement = this.createElement(document.documentElement);
+    documentElement.root = true;
+    documentElement.addStylesFromStyleDefinition();
+    this.documentElement = documentElement;
+    return documentElement;
+  }
+
+  createElement(node) {
+    var elementType = node.nodeName.replace(/^[^:]+:/, '');
+    var ElementType = Document.elementTypes[elementType];
+
+    if (typeof ElementType !== 'undefined') {
+      return new ElementType(this, node);
+    }
+
+    return new UnknownElement(this, node);
+  }
+
+  createTextNode(node) {
+    return new TextNode(this, node);
+  }
+
+  setViewBox(config) {
+    this.screen.setViewBox(_objectSpread$1({
+      document: this
+    }, config));
+  }
+
+}
+Document.createCanvas = createCanvas;
+Document.createImage = createImage;
+Document.elementTypes = elements;
+
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
+
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+/**
+ * SVG renderer on canvas.
+ */
+
+class Canvg {
+  /**
+   * Main constructor.
+   * @param ctx - Rendering context.
+   * @param svg - SVG Document.
+   * @param options - Rendering options.
+   */
+  constructor(ctx, svg) {
+    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+    this.parser = new Parser(options);
+    this.screen = new Screen(ctx, options);
+    this.options = options;
+    var document = new Document(this, options);
+    var documentElement = document.createDocumentElement(svg);
+    this.document = document;
+    this.documentElement = documentElement;
+  }
+  /**
+   * Create Canvg instance from SVG source string or URL.
+   * @param ctx - Rendering context.
+   * @param svg - SVG source string or URL.
+   * @param options - Rendering options.
+   * @returns Canvg instance.
+   */
+
+
+  static from(ctx, svg) {
+    var _arguments = arguments;
+    return _asyncToGenerator(function* () {
+      var options = _arguments.length > 2 && _arguments[2] !== undefined ? _arguments[2] : {};
+      var parser = new Parser(options);
+      var svgDocument = yield parser.parse(svg);
+      return new Canvg(ctx, svgDocument, options);
+    })();
+  }
+  /**
+   * Create Canvg instance from SVG source string.
+   * @param ctx - Rendering context.
+   * @param svg - SVG source string.
+   * @param options - Rendering options.
+   * @returns Canvg instance.
+   */
+
+
+  static fromString(ctx, svg) {
+    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+    var parser = new Parser(options);
+    var svgDocument = parser.parseFromString(svg);
+    return new Canvg(ctx, svgDocument, options);
+  }
+  /**
+   * Create new Canvg instance with inherited options.
+   * @param ctx - Rendering context.
+   * @param svg - SVG source string or URL.
+   * @param options - Rendering options.
+   * @returns Canvg instance.
+   */
+
+
+  fork(ctx, svg) {
+    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+    return Canvg.from(ctx, svg, _objectSpread(_objectSpread({}, this.options), options));
+  }
+  /**
+   * Create new Canvg instance with inherited options.
+   * @param ctx - Rendering context.
+   * @param svg - SVG source string.
+   * @param options - Rendering options.
+   * @returns Canvg instance.
+   */
+
+
+  forkString(ctx, svg) {
+    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+    return Canvg.fromString(ctx, svg, _objectSpread(_objectSpread({}, this.options), options));
+  }
+  /**
+   * Document is ready promise.
+   * @returns Ready promise.
+   */
+
+
+  ready() {
+    return this.screen.ready();
+  }
+  /**
+   * Document is ready value.
+   * @returns Is ready or not.
+   */
+
+
+  isReady() {
+    return this.screen.isReady();
+  }
+  /**
+   * Render only first frame, ignoring animations and mouse.
+   * @param options - Rendering options.
+   */
+
+
+  render() {
+    var _arguments2 = arguments,
+        _this = this;
+
+    return _asyncToGenerator(function* () {
+      var options = _arguments2.length > 0 && _arguments2[0] !== undefined ? _arguments2[0] : {};
+
+      _this.start(_objectSpread({
+        enableRedraw: true,
+        ignoreAnimation: true,
+        ignoreMouse: true
+      }, options));
+
+      yield _this.ready();
+
+      _this.stop();
+    })();
+  }
+  /**
+   * Start rendering.
+   * @param options - Render options.
+   */
+
+
+  start() {
+    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+    var {
+      documentElement,
+      screen,
+      options: baseOptions
+    } = this;
+    screen.start(documentElement, _objectSpread(_objectSpread({
+      enableRedraw: true
+    }, baseOptions), options));
+  }
+  /**
+   * Stop rendering.
+   */
+
+
+  stop() {
+    this.screen.stop();
+  }
+  /**
+   * Resize SVG to fit in given size.
+   * @param width
+   * @param height
+   * @param preserveAspectRatio
+   */
+
+
+  resize(width) {
+    var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : width;
+    var preserveAspectRatio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
+    this.documentElement.resize(width, height, preserveAspectRatio);
+  }
+
+}
+
+export { AElement, AnimateColorElement, AnimateElement, AnimateTransformElement, BoundingBox, CB1, CB2, CB3, CB4, Canvg, CircleElement, ClipPathElement, DefsElement, DescElement, Document, Element, EllipseElement, FeColorMatrixElement, FeCompositeElement, FeDropShadowElement, FeGaussianBlurElement, FeMorphologyElement, FilterElement, Font, FontElement, FontFaceElement, GElement, GlyphElement, GradientElement, ImageElement, LineElement, LinearGradientElement, MarkerElement, MaskElement, Matrix, MissingGlyphElement, Mouse, PSEUDO_ZERO, Parser, PathElement, PathParser, PatternElement, Point, PolygonElement, PolylineElement, Property, QB1, QB2, QB3, RadialGradientElement, RectElement, RenderedElement, Rotate, SVGElement, SVGFontLoader, Scale, Screen, Skew, SkewX, SkewY, StopElement, StyleElement, SymbolElement, TRefElement, TSpanElement, TextElement, TextPathElement, TitleElement, Transform, Translate, UnknownElement, UseElement, ViewPort, compressSpaces, Canvg as default, getSelectorSpecificity, normalizeAttributeName, normalizeColor, parseExternalUrl, index as presets, toNumbers, trimLeft, trimRight, vectorMagnitude, vectorsAngle, vectorsRatio };
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZXMuanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsifQ==
diff --git a/node_modules/canvg/lib/index.js b/node_modules/canvg/lib/index.js
new file mode 100644
index 0000000..6d35e7a
--- /dev/null
+++ b/node_modules/canvg/lib/index.js
@@ -0,0 +1,7966 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+require('core-js/modules/es.object.to-string.js');
+require('core-js/modules/es.promise.js');
+require('core-js/modules/es.reflect.delete-property.js');
+var _regeneratorRuntime = require('@babel/runtime/regenerator');
+var _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');
+require('core-js/modules/es.array.map.js');
+require('core-js/modules/es.parse-float.js');
+require('core-js/modules/es.regexp.exec.js');
+require('core-js/modules/es.string.match.js');
+require('core-js/modules/es.string.replace.js');
+require('core-js/modules/es.string.starts-with.js');
+require('core-js/modules/es.array.join.js');
+var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
+var _defineProperty = require('@babel/runtime/helpers/defineProperty');
+var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
+var _createClass = require('@babel/runtime/helpers/createClass');
+require('core-js/modules/es.array.concat.js');
+require('core-js/modules/es.array.every.js');
+require('core-js/modules/es.array.reduce.js');
+require('core-js/modules/es.string.ends-with.js');
+require('core-js/modules/es.string.split.js');
+var requestAnimationFrame = require('raf');
+require('core-js/modules/es.function.name.js');
+require('core-js/modules/es.string.trim.js');
+var RGBColor = require('rgbcolor');
+require('core-js/modules/es.array.for-each.js');
+require('core-js/modules/web.dom-collections.for-each.js');
+var _inherits = require('@babel/runtime/helpers/inherits');
+var _possibleConstructorReturn = require('@babel/runtime/helpers/possibleConstructorReturn');
+var _getPrototypeOf = require('@babel/runtime/helpers/getPrototypeOf');
+require('core-js/modules/es.array.from.js');
+require('core-js/modules/es.array.includes.js');
+require('core-js/modules/es.array.some.js');
+require('core-js/modules/es.string.includes.js');
+require('core-js/modules/es.string.iterator.js');
+var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
+require('core-js/modules/es.array.index-of.js');
+require('core-js/modules/es.array.reverse.js');
+var _get = require('@babel/runtime/helpers/get');
+require('core-js/modules/es.number.constructor.js');
+require('core-js/modules/es.array.fill.js');
+var svgPathdata = require('svg-pathdata');
+require('core-js/modules/es.regexp.to-string.js');
+var _assertThisInitialized = require('@babel/runtime/helpers/assertThisInitialized');
+require('core-js/modules/es.array.iterator.js');
+require('core-js/modules/web.dom-collections.iterator.js');
+require('core-js/modules/es.map.js');
+require('core-js/modules/es.reflect.apply.js');
+require('core-js/modules/es.reflect.get-prototype-of.js');
+var stackblurCanvas = require('stackblur-canvas');
+
+function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
+
+var _regeneratorRuntime__default = /*#__PURE__*/_interopDefaultLegacy(_regeneratorRuntime);
+var _asyncToGenerator__default = /*#__PURE__*/_interopDefaultLegacy(_asyncToGenerator);
+var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
+var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
+var _classCallCheck__default = /*#__PURE__*/_interopDefaultLegacy(_classCallCheck);
+var _createClass__default = /*#__PURE__*/_interopDefaultLegacy(_createClass);
+var requestAnimationFrame__default = /*#__PURE__*/_interopDefaultLegacy(requestAnimationFrame);
+var RGBColor__default = /*#__PURE__*/_interopDefaultLegacy(RGBColor);
+var _inherits__default = /*#__PURE__*/_interopDefaultLegacy(_inherits);
+var _possibleConstructorReturn__default = /*#__PURE__*/_interopDefaultLegacy(_possibleConstructorReturn);
+var _getPrototypeOf__default = /*#__PURE__*/_interopDefaultLegacy(_getPrototypeOf);
+var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
+var _get__default = /*#__PURE__*/_interopDefaultLegacy(_get);
+var _assertThisInitialized__default = /*#__PURE__*/_interopDefaultLegacy(_assertThisInitialized);
+
+/**
+ * Options preset for `OffscreenCanvas`.
+ * @param config - Preset requirements.
+ * @param config.DOMParser - XML/HTML parser from string into DOM Document.
+ * @returns Preset object.
+ */
+function offscreen() {
+  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
+      DOMParserFallback = _ref.DOMParser;
+
+  var preset = {
+    window: null,
+    ignoreAnimation: true,
+    ignoreMouse: true,
+    DOMParser: DOMParserFallback,
+    createCanvas: function createCanvas(width, height) {
+      return new OffscreenCanvas(width, height);
+    },
+    createImage: function createImage(url) {
+      return _asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee() {
+        var response, blob, img;
+        return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
+          while (1) {
+            switch (_context.prev = _context.next) {
+              case 0:
+                _context.next = 2;
+                return fetch(url);
+
+              case 2:
+                response = _context.sent;
+                _context.next = 5;
+                return response.blob();
+
+              case 5:
+                blob = _context.sent;
+                _context.next = 8;
+                return createImageBitmap(blob);
+
+              case 8:
+                img = _context.sent;
+                return _context.abrupt("return", img);
+
+              case 10:
+              case "end":
+                return _context.stop();
+            }
+          }
+        }, _callee);
+      }))();
+    }
+  };
+
+  if (typeof DOMParser !== 'undefined' || typeof DOMParserFallback === 'undefined') {
+    Reflect.deleteProperty(preset, 'DOMParser');
+  }
+
+  return preset;
+}
+
+/**
+ * Options preset for `node-canvas`.
+ * @param config - Preset requirements.
+ * @param config.DOMParser - XML/HTML parser from string into DOM Document.
+ * @param config.canvas - `node-canvas` exports.
+ * @param config.fetch - WHATWG-compatible `fetch` function.
+ * @returns Preset object.
+ */
+function node(_ref) {
+  var DOMParser = _ref.DOMParser,
+      canvas = _ref.canvas,
+      fetch = _ref.fetch;
+  return {
+    window: null,
+    ignoreAnimation: true,
+    ignoreMouse: true,
+    DOMParser: DOMParser,
+    fetch: fetch,
+    createCanvas: canvas.createCanvas,
+    createImage: canvas.loadImage
+  };
+}
+
+var index = /*#__PURE__*/Object.freeze({
+	__proto__: null,
+	offscreen: offscreen,
+	node: node
+});
+
+/**
+ * HTML-safe compress white-spaces.
+ * @param str - String to compress.
+ * @returns String.
+ */
+function compressSpaces(str) {
+  return str.replace(/(?!\u3000)\s+/gm, ' ');
+}
+/**
+ * HTML-safe left trim.
+ * @param str - String to trim.
+ * @returns String.
+ */
+
+function trimLeft(str) {
+  return str.replace(/^[\n \t]+/, '');
+}
+/**
+ * HTML-safe right trim.
+ * @param str - String to trim.
+ * @returns String.
+ */
+
+function trimRight(str) {
+  return str.replace(/[\n \t]+$/, '');
+}
+/**
+ * String to numbers array.
+ * @param str - Numbers string.
+ * @returns Numbers array.
+ */
+
+function toNumbers(str) {
+  var matches = (str || '').match(/-?(\d+(?:\.\d*(?:[eE][+-]?\d+)?)?|\.\d+)(?=\D|$)/gm) || [];
+  return matches.map(parseFloat);
+} // Microsoft Edge fix
+
+var allUppercase = /^[A-Z-]+$/;
+/**
+ * Normalize attribute name.
+ * @param name - Attribute name.
+ * @returns Normalized attribute name.
+ */
+
+function normalizeAttributeName(name) {
+  if (allUppercase.test(name)) {
+    return name.toLowerCase();
+  }
+
+  return name;
+}
+/**
+ * Parse external URL.
+ * @param url - CSS url string.
+ * @returns Parsed URL.
+ */
+
+function parseExternalUrl(url) {
+  //                      single quotes [2]
+  //                      v         double quotes [3]
+  //                      v         v         no quotes [4]
+  //                      v         v         v
+  var urlMatch = /url\(('([^']+)'|"([^"]+)"|([^'")]+))\)/.exec(url) || [];
+  return urlMatch[2] || urlMatch[3] || urlMatch[4];
+}
+/**
+ * Transform floats to integers in rgb colors.
+ * @param color - Color to normalize.
+ * @returns Normalized color.
+ */
+
+function normalizeColor(color) {
+  if (!color.startsWith('rgb')) {
+    return color;
+  }
+
+  var rgbParts = 3;
+  var normalizedColor = color.replace(/\d+(\.\d+)?/g, function (num, isFloat) {
+    return rgbParts-- && isFloat ? String(Math.round(parseFloat(num))) : num;
+  });
+  return normalizedColor;
+}
+
+// slightly modified version of https://github.com/keeganstreet/specificity/blob/master/specificity.js
+var attributeRegex = /(\[[^\]]+\])/g;
+var idRegex = /(#[^\s+>~.[:]+)/g;
+var classRegex = /(\.[^\s+>~.[:]+)/g;
+var pseudoElementRegex = /(::[^\s+>~.[:]+|:first-line|:first-letter|:before|:after)/gi;
+var pseudoClassWithBracketsRegex = /(:[\w-]+\([^)]*\))/gi;
+var pseudoClassRegex = /(:[^\s+>~.[:]+)/g;
+var elementRegex = /([^\s+>~.[:]+)/g;
+
+function findSelectorMatch(selector, regex) {
+  var matches = regex.exec(selector);
+
+  if (!matches) {
+    return [selector, 0];
+  }
+
+  return [selector.replace(regex, ' '), matches.length];
+}
+/**
+ * Measure selector specificity.
+ * @param selector - Selector to measure.
+ * @returns Specificity.
+ */
+
+
+function getSelectorSpecificity(selector) {
+  var specificity = [0, 0, 0];
+  var currentSelector = selector.replace(/:not\(([^)]*)\)/g, '     $1 ').replace(/{[\s\S]*/gm, ' ');
+  var delta = 0;
+
+  var _findSelectorMatch = findSelectorMatch(currentSelector, attributeRegex);
+
+  var _findSelectorMatch2 = _slicedToArray__default['default'](_findSelectorMatch, 2);
+
+  currentSelector = _findSelectorMatch2[0];
+  delta = _findSelectorMatch2[1];
+  specificity[1] += delta;
+
+  var _findSelectorMatch3 = findSelectorMatch(currentSelector, idRegex);
+
+  var _findSelectorMatch4 = _slicedToArray__default['default'](_findSelectorMatch3, 2);
+
+  currentSelector = _findSelectorMatch4[0];
+  delta = _findSelectorMatch4[1];
+  specificity[0] += delta;
+
+  var _findSelectorMatch5 = findSelectorMatch(currentSelector, classRegex);
+
+  var _findSelectorMatch6 = _slicedToArray__default['default'](_findSelectorMatch5, 2);
+
+  currentSelector = _findSelectorMatch6[0];
+  delta = _findSelectorMatch6[1];
+  specificity[1] += delta;
+
+  var _findSelectorMatch7 = findSelectorMatch(currentSelector, pseudoElementRegex);
+
+  var _findSelectorMatch8 = _slicedToArray__default['default'](_findSelectorMatch7, 2);
+
+  currentSelector = _findSelectorMatch8[0];
+  delta = _findSelectorMatch8[1];
+  specificity[2] += delta;
+
+  var _findSelectorMatch9 = findSelectorMatch(currentSelector, pseudoClassWithBracketsRegex);
+
+  var _findSelectorMatch10 = _slicedToArray__default['default'](_findSelectorMatch9, 2);
+
+  currentSelector = _findSelectorMatch10[0];
+  delta = _findSelectorMatch10[1];
+  specificity[1] += delta;
+
+  var _findSelectorMatch11 = findSelectorMatch(currentSelector, pseudoClassRegex);
+
+  var _findSelectorMatch12 = _slicedToArray__default['default'](_findSelectorMatch11, 2);
+
+  currentSelector = _findSelectorMatch12[0];
+  delta = _findSelectorMatch12[1];
+  specificity[1] += delta;
+  currentSelector = currentSelector.replace(/[*\s+>~]/g, ' ').replace(/[#.]/g, ' ');
+
+  var _findSelectorMatch13 = findSelectorMatch(currentSelector, elementRegex);
+
+  var _findSelectorMatch14 = _slicedToArray__default['default'](_findSelectorMatch13, 2);
+
+  currentSelector = _findSelectorMatch14[0];
+  delta = _findSelectorMatch14[1];
+  // lgtm [js/useless-assignment-to-local]
+  specificity[2] += delta;
+  return specificity.join('');
+}
+
+var PSEUDO_ZERO = .00000001;
+/**
+ * Vector magnitude.
+ * @param v
+ * @returns Number result.
+ */
+
+function vectorMagnitude(v) {
+  return Math.sqrt(Math.pow(v[0], 2) + Math.pow(v[1], 2));
+}
+/**
+ * Ratio between two vectors.
+ * @param u
+ * @param v
+ * @returns Number result.
+ */
+
+function vectorsRatio(u, v) {
+  return (u[0] * v[0] + u[1] * v[1]) / (vectorMagnitude(u) * vectorMagnitude(v));
+}
+/**
+ * Angle between two vectors.
+ * @param u
+ * @param v
+ * @returns Number result.
+ */
+
+function vectorsAngle(u, v) {
+  return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vectorsRatio(u, v));
+}
+function CB1(t) {
+  return t * t * t;
+}
+function CB2(t) {
+  return 3 * t * t * (1 - t);
+}
+function CB3(t) {
+  return 3 * t * (1 - t) * (1 - t);
+}
+function CB4(t) {
+  return (1 - t) * (1 - t) * (1 - t);
+}
+function QB1(t) {
+  return t * t;
+}
+function QB2(t) {
+  return 2 * t * (1 - t);
+}
+function QB3(t) {
+  return (1 - t) * (1 - t);
+}
+
+var Property = /*#__PURE__*/function () {
+  function Property(document, name, value) {
+    _classCallCheck__default['default'](this, Property);
+
+    this.document = document;
+    this.name = name;
+    this.value = value;
+    this.isNormalizedColor = false;
+  }
+
+  _createClass__default['default'](Property, [{
+    key: "split",
+    value: function split() {
+      var separator = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ' ';
+      var document = this.document,
+          name = this.name;
+      return compressSpaces(this.getString()).trim().split(separator).map(function (value) {
+        return new Property(document, name, value);
+      });
+    }
+  }, {
+    key: "hasValue",
+    value: function hasValue(zeroIsValue) {
+      var value = this.value;
+      return value !== null && value !== '' && (zeroIsValue || value !== 0) && typeof value !== 'undefined';
+    }
+  }, {
+    key: "isString",
+    value: function isString(regexp) {
+      var value = this.value;
+      var result = typeof value === 'string';
+
+      if (!result || !regexp) {
+        return result;
+      }
+
+      return regexp.test(value);
+    }
+  }, {
+    key: "isUrlDefinition",
+    value: function isUrlDefinition() {
+      return this.isString(/^url\(/);
+    }
+  }, {
+    key: "isPixels",
+    value: function isPixels() {
+      if (!this.hasValue()) {
+        return false;
+      }
+
+      var asString = this.getString();
+
+      switch (true) {
+        case asString.endsWith('px'):
+        case /^[0-9]+$/.test(asString):
+          return true;
+
+        default:
+          return false;
+      }
+    }
+  }, {
+    key: "setValue",
+    value: function setValue(value) {
+      this.value = value;
+      return this;
+    }
+  }, {
+    key: "getValue",
+    value: function getValue(def) {
+      if (typeof def === 'undefined' || this.hasValue()) {
+        return this.value;
+      }
+
+      return def;
+    }
+  }, {
+    key: "getNumber",
+    value: function getNumber(def) {
+      if (!this.hasValue()) {
+        if (typeof def === 'undefined') {
+          return 0;
+        }
+
+        return parseFloat(def);
+      }
+
+      var value = this.value;
+      var n = parseFloat(value);
+
+      if (this.isString(/%$/)) {
+        n /= 100.0;
+      }
+
+      return n;
+    }
+  }, {
+    key: "getString",
+    value: function getString(def) {
+      if (typeof def === 'undefined' || this.hasValue()) {
+        return typeof this.value === 'undefined' ? '' : String(this.value);
+      }
+
+      return String(def);
+    }
+  }, {
+    key: "getColor",
+    value: function getColor(def) {
+      var color = this.getString(def);
+
+      if (this.isNormalizedColor) {
+        return color;
+      }
+
+      this.isNormalizedColor = true;
+      color = normalizeColor(color);
+      this.value = color;
+      return color;
+    }
+  }, {
+    key: "getDpi",
+    value: function getDpi() {
+      return 96.0; // TODO: compute?
+    }
+  }, {
+    key: "getRem",
+    value: function getRem() {
+      return this.document.rootEmSize;
+    }
+  }, {
+    key: "getEm",
+    value: function getEm() {
+      return this.document.emSize;
+    }
+  }, {
+    key: "getUnits",
+    value: function getUnits() {
+      return this.getString().replace(/[0-9.-]/g, '');
+    }
+  }, {
+    key: "getPixels",
+    value: function getPixels(axisOrIsFontSize) {
+      var processPercent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+
+      if (!this.hasValue()) {
+        return 0;
+      }
+
+      var _ref = typeof axisOrIsFontSize === 'boolean' ? [undefined, axisOrIsFontSize] : [axisOrIsFontSize],
+          _ref2 = _slicedToArray__default['default'](_ref, 2),
+          axis = _ref2[0],
+          isFontSize = _ref2[1];
+
+      var viewPort = this.document.screen.viewPort;
+
+      switch (true) {
+        case this.isString(/vmin$/):
+          return this.getNumber() / 100.0 * Math.min(viewPort.computeSize('x'), viewPort.computeSize('y'));
+
+        case this.isString(/vmax$/):
+          return this.getNumber() / 100.0 * Math.max(viewPort.computeSize('x'), viewPort.computeSize('y'));
+
+        case this.isString(/vw$/):
+          return this.getNumber() / 100.0 * viewPort.computeSize('x');
+
+        case this.isString(/vh$/):
+          return this.getNumber() / 100.0 * viewPort.computeSize('y');
+
+        case this.isString(/rem$/):
+          return this.getNumber() * this.getRem();
+
+        case this.isString(/em$/):
+          return this.getNumber() * this.getEm();
+
+        case this.isString(/ex$/):
+          return this.getNumber() * this.getEm() / 2.0;
+
+        case this.isString(/px$/):
+          return this.getNumber();
+
+        case this.isString(/pt$/):
+          return this.getNumber() * this.getDpi() * (1.0 / 72.0);
+
+        case this.isString(/pc$/):
+          return this.getNumber() * 15;
+
+        case this.isString(/cm$/):
+          return this.getNumber() * this.getDpi() / 2.54;
+
+        case this.isString(/mm$/):
+          return this.getNumber() * this.getDpi() / 25.4;
+
+        case this.isString(/in$/):
+          return this.getNumber() * this.getDpi();
+
+        case this.isString(/%$/) && isFontSize:
+          return this.getNumber() * this.getEm();
+
+        case this.isString(/%$/):
+          return this.getNumber() * viewPort.computeSize(axis);
+
+        default:
+          {
+            var n = this.getNumber();
+
+            if (processPercent && n < 1.0) {
+              return n * viewPort.computeSize(axis);
+            }
+
+            return n;
+          }
+      }
+    }
+  }, {
+    key: "getMilliseconds",
+    value: function getMilliseconds() {
+      if (!this.hasValue()) {
+        return 0;
+      }
+
+      if (this.isString(/ms$/)) {
+        return this.getNumber();
+      }
+
+      return this.getNumber() * 1000;
+    }
+  }, {
+    key: "getRadians",
+    value: function getRadians() {
+      if (!this.hasValue()) {
+        return 0;
+      }
+
+      switch (true) {
+        case this.isString(/deg$/):
+          return this.getNumber() * (Math.PI / 180.0);
+
+        case this.isString(/grad$/):
+          return this.getNumber() * (Math.PI / 200.0);
+
+        case this.isString(/rad$/):
+          return this.getNumber();
+
+        default:
+          return this.getNumber() * (Math.PI / 180.0);
+      }
+    }
+  }, {
+    key: "getDefinition",
+    value: function getDefinition() {
+      var asString = this.getString();
+      var name = /#([^)'"]+)/.exec(asString);
+
+      if (name) {
+        name = name[1];
+      }
+
+      if (!name) {
+        name = asString;
+      }
+
+      return this.document.definitions[name];
+    }
+  }, {
+    key: "getFillStyleDefinition",
+    value: function getFillStyleDefinition(element, opacity) {
+      var def = this.getDefinition();
+
+      if (!def) {
+        return null;
+      } // gradient
+
+
+      if (typeof def.createGradient === 'function') {
+        return def.createGradient(this.document.ctx, element, opacity);
+      } // pattern
+
+
+      if (typeof def.createPattern === 'function') {
+        if (def.getHrefAttribute().hasValue()) {
+          var patternTransform = def.getAttribute('patternTransform');
+          def = def.getHrefAttribute().getDefinition();
+
+          if (patternTransform.hasValue()) {
+            def.getAttribute('patternTransform', true).setValue(patternTransform.value);
+          }
+        }
+
+        return def.createPattern(this.document.ctx, element, opacity);
+      }
+
+      return null;
+    }
+  }, {
+    key: "getTextBaseline",
+    value: function getTextBaseline() {
+      if (!this.hasValue()) {
+        return null;
+      }
+
+      return Property.textBaselineMapping[this.getString()];
+    }
+  }, {
+    key: "addOpacity",
+    value: function addOpacity(opacity) {
+      var value = this.getColor();
+      var len = value.length;
+      var commas = 0; // Simulate old RGBColor version, which can't parse rgba.
+
+      for (var i = 0; i < len; i++) {
+        if (value[i] === ',') {
+          commas++;
+        }
+
+        if (commas === 3) {
+          break;
+        }
+      }
+
+      if (opacity.hasValue() && this.isString() && commas !== 3) {
+        var color = new RGBColor__default['default'](value);
+
+        if (color.ok) {
+          color.alpha = opacity.getNumber();
+          value = color.toRGBA();
+        }
+      }
+
+      return new Property(this.document, this.name, value);
+    }
+  }], [{
+    key: "empty",
+    value: function empty(document) {
+      return new Property(document, 'EMPTY', '');
+    }
+  }]);
+
+  return Property;
+}();
+Property.textBaselineMapping = {
+  'baseline': 'alphabetic',
+  'before-edge': 'top',
+  'text-before-edge': 'top',
+  'middle': 'middle',
+  'central': 'middle',
+  'after-edge': 'bottom',
+  'text-after-edge': 'bottom',
+  'ideographic': 'ideographic',
+  'alphabetic': 'alphabetic',
+  'hanging': 'hanging',
+  'mathematical': 'alphabetic'
+};
+
+var ViewPort = /*#__PURE__*/function () {
+  function ViewPort() {
+    _classCallCheck__default['default'](this, ViewPort);
+
+    this.viewPorts = [];
+  }
+
+  _createClass__default['default'](ViewPort, [{
+    key: "clear",
+    value: function clear() {
+      this.viewPorts = [];
+    }
+  }, {
+    key: "setCurrent",
+    value: function setCurrent(width, height) {
+      this.viewPorts.push({
+        width: width,
+        height: height
+      });
+    }
+  }, {
+    key: "removeCurrent",
+    value: function removeCurrent() {
+      this.viewPorts.pop();
+    }
+  }, {
+    key: "getCurrent",
+    value: function getCurrent() {
+      var viewPorts = this.viewPorts;
+      return viewPorts[viewPorts.length - 1];
+    }
+  }, {
+    key: "computeSize",
+    value: function computeSize(d) {
+      if (typeof d === 'number') {
+        return d;
+      }
+
+      if (d === 'x') {
+        return this.width;
+      }
+
+      if (d === 'y') {
+        return this.height;
+      }
+
+      return Math.sqrt(Math.pow(this.width, 2) + Math.pow(this.height, 2)) / Math.sqrt(2);
+    }
+  }, {
+    key: "width",
+    get: function get() {
+      return this.getCurrent().width;
+    }
+  }, {
+    key: "height",
+    get: function get() {
+      return this.getCurrent().height;
+    }
+  }]);
+
+  return ViewPort;
+}();
+
+var Point = /*#__PURE__*/function () {
+  function Point(x, y) {
+    _classCallCheck__default['default'](this, Point);
+
+    this.x = x;
+    this.y = y;
+  }
+
+  _createClass__default['default'](Point, [{
+    key: "angleTo",
+    value: function angleTo(point) {
+      return Math.atan2(point.y - this.y, point.x - this.x);
+    }
+  }, {
+    key: "applyTransform",
+    value: function applyTransform(transform) {
+      var x = this.x,
+          y = this.y;
+      var xp = x * transform[0] + y * transform[2] + transform[4];
+      var yp = x * transform[1] + y * transform[3] + transform[5];
+      this.x = xp;
+      this.y = yp;
+    }
+  }], [{
+    key: "parse",
+    value: function parse(point) {
+      var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
+
+      var _toNumbers = toNumbers(point),
+          _toNumbers2 = _slicedToArray__default['default'](_toNumbers, 2),
+          _toNumbers2$ = _toNumbers2[0],
+          x = _toNumbers2$ === void 0 ? defaultValue : _toNumbers2$,
+          _toNumbers2$2 = _toNumbers2[1],
+          y = _toNumbers2$2 === void 0 ? defaultValue : _toNumbers2$2;
+
+      return new Point(x, y);
+    }
+  }, {
+    key: "parseScale",
+    value: function parseScale(scale) {
+      var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
+
+      var _toNumbers3 = toNumbers(scale),
+          _toNumbers4 = _slicedToArray__default['default'](_toNumbers3, 2),
+          _toNumbers4$ = _toNumbers4[0],
+          x = _toNumbers4$ === void 0 ? defaultValue : _toNumbers4$,
+          _toNumbers4$2 = _toNumbers4[1],
+          y = _toNumbers4$2 === void 0 ? x : _toNumbers4$2;
+
+      return new Point(x, y);
+    }
+  }, {
+    key: "parsePath",
+    value: function parsePath(path) {
+      var points = toNumbers(path);
+      var len = points.length;
+      var pathPoints = [];
+
+      for (var i = 0; i < len; i += 2) {
+        pathPoints.push(new Point(points[i], points[i + 1]));
+      }
+
+      return pathPoints;
+    }
+  }]);
+
+  return Point;
+}();
+
+var Mouse = /*#__PURE__*/function () {
+  function Mouse(screen) {
+    _classCallCheck__default['default'](this, Mouse);
+
+    this.screen = screen;
+    this.working = false;
+    this.events = [];
+    this.eventElements = []; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
+
+    this.onClick = this.onClick.bind(this); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
+
+    this.onMouseMove = this.onMouseMove.bind(this);
+  }
+
+  _createClass__default['default'](Mouse, [{
+    key: "isWorking",
+    value: function isWorking() {
+      return this.working;
+    }
+  }, {
+    key: "start",
+    value: function start() {
+      if (this.working) {
+        return;
+      }
+
+      var screen = this.screen,
+          onClick = this.onClick,
+          onMouseMove = this.onMouseMove;
+      var canvas = screen.ctx.canvas;
+      canvas.onclick = onClick;
+      canvas.onmousemove = onMouseMove;
+      this.working = true;
+    }
+  }, {
+    key: "stop",
+    value: function stop() {
+      if (!this.working) {
+        return;
+      }
+
+      var canvas = this.screen.ctx.canvas;
+      this.working = false;
+      canvas.onclick = null;
+      canvas.onmousemove = null;
+    }
+  }, {
+    key: "hasEvents",
+    value: function hasEvents() {
+      return this.working && this.events.length > 0;
+    }
+  }, {
+    key: "runEvents",
+    value: function runEvents() {
+      if (!this.working) {
+        return;
+      }
+
+      var document = this.screen,
+          events = this.events,
+          eventElements = this.eventElements;
+      var style = document.ctx.canvas.style;
+
+      if (style) {
+        style.cursor = '';
+      }
+
+      events.forEach(function (_ref, i) {
+        var run = _ref.run;
+        var element = eventElements[i];
+
+        while (element) {
+          run(element);
+          element = element.parent;
+        }
+      }); // done running, clear
+
+      this.events = [];
+      this.eventElements = [];
+    }
+  }, {
+    key: "checkPath",
+    value: function checkPath(element, ctx) {
+      if (!this.working || !ctx) {
+        return;
+      }
+
+      var events = this.events,
+          eventElements = this.eventElements;
+      events.forEach(function (_ref2, i) {
+        var x = _ref2.x,
+            y = _ref2.y;
+
+        if (!eventElements[i] && ctx.isPointInPath && ctx.isPointInPath(x, y)) {
+          eventElements[i] = element;
+        }
+      });
+    }
+  }, {
+    key: "checkBoundingBox",
+    value: function checkBoundingBox(element, boundingBox) {
+      if (!this.working || !boundingBox) {
+        return;
+      }
+
+      var events = this.events,
+          eventElements = this.eventElements;
+      events.forEach(function (_ref3, i) {
+        var x = _ref3.x,
+            y = _ref3.y;
+
+        if (!eventElements[i] && boundingBox.isPointInBox(x, y)) {
+          eventElements[i] = element;
+        }
+      });
+    }
+  }, {
+    key: "mapXY",
+    value: function mapXY(x, y) {
+      var _this$screen = this.screen,
+          window = _this$screen.window,
+          ctx = _this$screen.ctx;
+      var point = new Point(x, y);
+      var element = ctx.canvas;
+
+      while (element) {
+        point.x -= element.offsetLeft;
+        point.y -= element.offsetTop;
+        element = element.offsetParent;
+      }
+
+      if (window.scrollX) {
+        point.x += window.scrollX;
+      }
+
+      if (window.scrollY) {
+        point.y += window.scrollY;
+      }
+
+      return point;
+    }
+  }, {
+    key: "onClick",
+    value: function onClick(event) {
+      var _this$mapXY = this.mapXY(event.clientX, event.clientY),
+          x = _this$mapXY.x,
+          y = _this$mapXY.y;
+
+      this.events.push({
+        type: 'onclick',
+        x: x,
+        y: y,
+        run: function run(eventTarget) {
+          if (eventTarget.onClick) {
+            eventTarget.onClick();
+          }
+        }
+      });
+    }
+  }, {
+    key: "onMouseMove",
+    value: function onMouseMove(event) {
+      var _this$mapXY2 = this.mapXY(event.clientX, event.clientY),
+          x = _this$mapXY2.x,
+          y = _this$mapXY2.y;
+
+      this.events.push({
+        type: 'onmousemove',
+        x: x,
+        y: y,
+        run: function run(eventTarget) {
+          if (eventTarget.onMouseMove) {
+            eventTarget.onMouseMove();
+          }
+        }
+      });
+    }
+  }]);
+
+  return Mouse;
+}();
+
+var defaultWindow = typeof window !== 'undefined' ? window : null;
+var defaultFetch$1 = typeof fetch !== 'undefined' ? fetch.bind(undefined) // `fetch` depends on context: `someObject.fetch(...)` will throw error.
+: null;
+
+var Screen = /*#__PURE__*/function () {
+  function Screen(ctx) {
+    var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
+        _ref$fetch = _ref.fetch,
+        fetch = _ref$fetch === void 0 ? defaultFetch$1 : _ref$fetch,
+        _ref$window = _ref.window,
+        window = _ref$window === void 0 ? defaultWindow : _ref$window;
+
+    _classCallCheck__default['default'](this, Screen);
+
+    this.ctx = ctx;
+    this.FRAMERATE = 30;
+    this.MAX_VIRTUAL_PIXELS = 30000;
+    this.CLIENT_WIDTH = 800;
+    this.CLIENT_HEIGHT = 600;
+    this.viewPort = new ViewPort();
+    this.mouse = new Mouse(this);
+    this.animations = [];
+    this.waits = [];
+    this.frameDuration = 0;
+    this.isReadyLock = false;
+    this.isFirstRender = true;
+    this.intervalId = null;
+    this.window = window;
+    this.fetch = fetch;
+  }
+
+  _createClass__default['default'](Screen, [{
+    key: "wait",
+    value: function wait(checker) {
+      this.waits.push(checker);
+    }
+  }, {
+    key: "ready",
+    value: function ready() {
+      // eslint-disable-next-line @typescript-eslint/no-misused-promises
+      if (!this.readyPromise) {
+        return Promise.resolve();
+      }
+
+      return this.readyPromise;
+    }
+  }, {
+    key: "isReady",
+    value: function isReady() {
+      if (this.isReadyLock) {
+        return true;
+      }
+
+      var isReadyLock = this.waits.every(function (_) {
+        return _();
+      });
+
+      if (isReadyLock) {
+        this.waits = [];
+
+        if (this.resolveReady) {
+          this.resolveReady();
+        }
+      }
+
+      this.isReadyLock = isReadyLock;
+      return isReadyLock;
+    }
+  }, {
+    key: "setDefaults",
+    value: function setDefaults(ctx) {
+      // initial values and defaults
+      ctx.strokeStyle = 'rgba(0,0,0,0)';
+      ctx.lineCap = 'butt';
+      ctx.lineJoin = 'miter';
+      ctx.miterLimit = 4;
+    }
+  }, {
+    key: "setViewBox",
+    value: function setViewBox(_ref2) {
+      var document = _ref2.document,
+          ctx = _ref2.ctx,
+          aspectRatio = _ref2.aspectRatio,
+          width = _ref2.width,
+          desiredWidth = _ref2.desiredWidth,
+          height = _ref2.height,
+          desiredHeight = _ref2.desiredHeight,
+          _ref2$minX = _ref2.minX,
+          minX = _ref2$minX === void 0 ? 0 : _ref2$minX,
+          _ref2$minY = _ref2.minY,
+          minY = _ref2$minY === void 0 ? 0 : _ref2$minY,
+          refX = _ref2.refX,
+          refY = _ref2.refY,
+          _ref2$clip = _ref2.clip,
+          clip = _ref2$clip === void 0 ? false : _ref2$clip,
+          _ref2$clipX = _ref2.clipX,
+          clipX = _ref2$clipX === void 0 ? 0 : _ref2$clipX,
+          _ref2$clipY = _ref2.clipY,
+          clipY = _ref2$clipY === void 0 ? 0 : _ref2$clipY;
+      // aspect ratio - http://www.w3.org/TR/SVG/coords.html#PreserveAspectRatioAttribute
+      var cleanAspectRatio = compressSpaces(aspectRatio).replace(/^defer\s/, ''); // ignore defer
+
+      var _cleanAspectRatio$spl = cleanAspectRatio.split(' '),
+          _cleanAspectRatio$spl2 = _slicedToArray__default['default'](_cleanAspectRatio$spl, 2),
+          aspectRatioAlign = _cleanAspectRatio$spl2[0],
+          aspectRatioMeetOrSlice = _cleanAspectRatio$spl2[1];
+
+      var align = aspectRatioAlign || 'xMidYMid';
+      var meetOrSlice = aspectRatioMeetOrSlice || 'meet'; // calculate scale
+
+      var scaleX = width / desiredWidth;
+      var scaleY = height / desiredHeight;
+      var scaleMin = Math.min(scaleX, scaleY);
+      var scaleMax = Math.max(scaleX, scaleY);
+      var finalDesiredWidth = desiredWidth;
+      var finalDesiredHeight = desiredHeight;
+
+      if (meetOrSlice === 'meet') {
+        finalDesiredWidth *= scaleMin;
+        finalDesiredHeight *= scaleMin;
+      }
+
+      if (meetOrSlice === 'slice') {
+        finalDesiredWidth *= scaleMax;
+        finalDesiredHeight *= scaleMax;
+      }
+
+      var refXProp = new Property(document, 'refX', refX);
+      var refYProp = new Property(document, 'refY', refY);
+      var hasRefs = refXProp.hasValue() && refYProp.hasValue();
+
+      if (hasRefs) {
+        ctx.translate(-scaleMin * refXProp.getPixels('x'), -scaleMin * refYProp.getPixels('y'));
+      }
+
+      if (clip) {
+        var scaledClipX = scaleMin * clipX;
+        var scaledClipY = scaleMin * clipY;
+        ctx.beginPath();
+        ctx.moveTo(scaledClipX, scaledClipY);
+        ctx.lineTo(width, scaledClipY);
+        ctx.lineTo(width, height);
+        ctx.lineTo(scaledClipX, height);
+        ctx.closePath();
+        ctx.clip();
+      }
+
+      if (!hasRefs) {
+        var isMeetMinY = meetOrSlice === 'meet' && scaleMin === scaleY;
+        var isSliceMaxY = meetOrSlice === 'slice' && scaleMax === scaleY;
+        var isMeetMinX = meetOrSlice === 'meet' && scaleMin === scaleX;
+        var isSliceMaxX = meetOrSlice === 'slice' && scaleMax === scaleX;
+
+        if (align.startsWith('xMid') && (isMeetMinY || isSliceMaxY)) {
+          ctx.translate(width / 2.0 - finalDesiredWidth / 2.0, 0);
+        }
+
+        if (align.endsWith('YMid') && (isMeetMinX || isSliceMaxX)) {
+          ctx.translate(0, height / 2.0 - finalDesiredHeight / 2.0);
+        }
+
+        if (align.startsWith('xMax') && (isMeetMinY || isSliceMaxY)) {
+          ctx.translate(width - finalDesiredWidth, 0);
+        }
+
+        if (align.endsWith('YMax') && (isMeetMinX || isSliceMaxX)) {
+          ctx.translate(0, height - finalDesiredHeight);
+        }
+      } // scale
+
+
+      switch (true) {
+        case align === 'none':
+          ctx.scale(scaleX, scaleY);
+          break;
+
+        case meetOrSlice === 'meet':
+          ctx.scale(scaleMin, scaleMin);
+          break;
+
+        case meetOrSlice === 'slice':
+          ctx.scale(scaleMax, scaleMax);
+          break;
+      } // translate
+
+
+      ctx.translate(-minX, -minY);
+    }
+  }, {
+    key: "start",
+    value: function start(element) {
+      var _this = this;
+
+      var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
+          _ref3$enableRedraw = _ref3.enableRedraw,
+          enableRedraw = _ref3$enableRedraw === void 0 ? false : _ref3$enableRedraw,
+          _ref3$ignoreMouse = _ref3.ignoreMouse,
+          ignoreMouse = _ref3$ignoreMouse === void 0 ? false : _ref3$ignoreMouse,
+          _ref3$ignoreAnimation = _ref3.ignoreAnimation,
+          ignoreAnimation = _ref3$ignoreAnimation === void 0 ? false : _ref3$ignoreAnimation,
+          _ref3$ignoreDimension = _ref3.ignoreDimensions,
+          ignoreDimensions = _ref3$ignoreDimension === void 0 ? false : _ref3$ignoreDimension,
+          _ref3$ignoreClear = _ref3.ignoreClear,
+          ignoreClear = _ref3$ignoreClear === void 0 ? false : _ref3$ignoreClear,
+          forceRedraw = _ref3.forceRedraw,
+          scaleWidth = _ref3.scaleWidth,
+          scaleHeight = _ref3.scaleHeight,
+          offsetX = _ref3.offsetX,
+          offsetY = _ref3.offsetY;
+
+      var FRAMERATE = this.FRAMERATE,
+          mouse = this.mouse;
+      var frameDuration = 1000 / FRAMERATE;
+      this.frameDuration = frameDuration;
+      this.readyPromise = new Promise(function (resolve) {
+        _this.resolveReady = resolve;
+      });
+
+      if (this.isReady()) {
+        this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);
+      }
+
+      if (!enableRedraw) {
+        return;
+      }
+
+      var now = Date.now();
+      var then = now;
+      var delta = 0;
+
+      var tick = function tick() {
+        now = Date.now();
+        delta = now - then;
+
+        if (delta >= frameDuration) {
+          then = now - delta % frameDuration;
+
+          if (_this.shouldUpdate(ignoreAnimation, forceRedraw)) {
+            _this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);
+
+            mouse.runEvents();
+          }
+        }
+
+        _this.intervalId = requestAnimationFrame__default['default'](tick);
+      };
+
+      if (!ignoreMouse) {
+        mouse.start();
+      }
+
+      this.intervalId = requestAnimationFrame__default['default'](tick);
+    }
+  }, {
+    key: "stop",
+    value: function stop() {
+      if (this.intervalId) {
+        requestAnimationFrame__default['default'].cancel(this.intervalId);
+        this.intervalId = null;
+      }
+
+      this.mouse.stop();
+    }
+  }, {
+    key: "shouldUpdate",
+    value: function shouldUpdate(ignoreAnimation, forceRedraw) {
+      // need update from animations?
+      if (!ignoreAnimation) {
+        var frameDuration = this.frameDuration;
+        var shouldUpdate = this.animations.reduce(function (shouldUpdate, animation) {
+          return animation.update(frameDuration) || shouldUpdate;
+        }, false);
+
+        if (shouldUpdate) {
+          return true;
+        }
+      } // need update from redraw?
+
+
+      if (typeof forceRedraw === 'function' && forceRedraw()) {
+        return true;
+      }
+
+      if (!this.isReadyLock && this.isReady()) {
+        return true;
+      } // need update from mouse events?
+
+
+      if (this.mouse.hasEvents()) {
+        return true;
+      }
+
+      return false;
+    }
+  }, {
+    key: "render",
+    value: function render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY) {
+      var CLIENT_WIDTH = this.CLIENT_WIDTH,
+          CLIENT_HEIGHT = this.CLIENT_HEIGHT,
+          viewPort = this.viewPort,
+          ctx = this.ctx,
+          isFirstRender = this.isFirstRender;
+      var canvas = ctx.canvas;
+      viewPort.clear();
+
+      if (canvas.width && canvas.height) {
+        viewPort.setCurrent(canvas.width, canvas.height);
+      } else {
+        viewPort.setCurrent(CLIENT_WIDTH, CLIENT_HEIGHT);
+      }
+
+      var widthStyle = element.getStyle('width');
+      var heightStyle = element.getStyle('height');
+
+      if (!ignoreDimensions && (isFirstRender || typeof scaleWidth !== 'number' && typeof scaleHeight !== 'number')) {
+        // set canvas size
+        if (widthStyle.hasValue()) {
+          canvas.width = widthStyle.getPixels('x');
+
+          if (canvas.style) {
+            canvas.style.width = "".concat(canvas.width, "px");
+          }
+        }
+
+        if (heightStyle.hasValue()) {
+          canvas.height = heightStyle.getPixels('y');
+
+          if (canvas.style) {
+            canvas.style.height = "".concat(canvas.height, "px");
+          }
+        }
+      }
+
+      var cWidth = canvas.clientWidth || canvas.width;
+      var cHeight = canvas.clientHeight || canvas.height;
+
+      if (ignoreDimensions && widthStyle.hasValue() && heightStyle.hasValue()) {
+        cWidth = widthStyle.getPixels('x');
+        cHeight = heightStyle.getPixels('y');
+      }
+
+      viewPort.setCurrent(cWidth, cHeight);
+
+      if (typeof offsetX === 'number') {
+        element.getAttribute('x', true).setValue(offsetX);
+      }
+
+      if (typeof offsetY === 'number') {
+        element.getAttribute('y', true).setValue(offsetY);
+      }
+
+      if (typeof scaleWidth === 'number' || typeof scaleHeight === 'number') {
+        var viewBox = toNumbers(element.getAttribute('viewBox').getString());
+        var xRatio = 0;
+        var yRatio = 0;
+
+        if (typeof scaleWidth === 'number') {
+          var _widthStyle = element.getStyle('width');
+
+          if (_widthStyle.hasValue()) {
+            xRatio = _widthStyle.getPixels('x') / scaleWidth;
+          } else if (!isNaN(viewBox[2])) {
+            xRatio = viewBox[2] / scaleWidth;
+          }
+        }
+
+        if (typeof scaleHeight === 'number') {
+          var _heightStyle = element.getStyle('height');
+
+          if (_heightStyle.hasValue()) {
+            yRatio = _heightStyle.getPixels('y') / scaleHeight;
+          } else if (!isNaN(viewBox[3])) {
+            yRatio = viewBox[3] / scaleHeight;
+          }
+        }
+
+        if (!xRatio) {
+          xRatio = yRatio;
+        }
+
+        if (!yRatio) {
+          yRatio = xRatio;
+        }
+
+        element.getAttribute('width', true).setValue(scaleWidth);
+        element.getAttribute('height', true).setValue(scaleHeight);
+        var transformStyle = element.getStyle('transform', true, true);
+        transformStyle.setValue("".concat(transformStyle.getString(), " scale(").concat(1.0 / xRatio, ", ").concat(1.0 / yRatio, ")"));
+      } // clear and render
+
+
+      if (!ignoreClear) {
+        ctx.clearRect(0, 0, cWidth, cHeight);
+      }
+
+      element.render(ctx);
+
+      if (isFirstRender) {
+        this.isFirstRender = false;
+      }
+    }
+  }]);
+
+  return Screen;
+}();
+Screen.defaultWindow = defaultWindow;
+Screen.defaultFetch = defaultFetch$1;
+
+var defaultFetch = Screen.defaultFetch;
+var DefaultDOMParser = typeof DOMParser !== 'undefined' ? DOMParser : null;
+
+var Parser = /*#__PURE__*/function () {
+  function Parser() {
+    var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
+        _ref$fetch = _ref.fetch,
+        fetch = _ref$fetch === void 0 ? defaultFetch : _ref$fetch,
+        _ref$DOMParser = _ref.DOMParser,
+        DOMParser = _ref$DOMParser === void 0 ? DefaultDOMParser : _ref$DOMParser;
+
+    _classCallCheck__default['default'](this, Parser);
+
+    this.fetch = fetch;
+    this.DOMParser = DOMParser;
+  }
+
+  _createClass__default['default'](Parser, [{
+    key: "parse",
+    value: function () {
+      var _parse = _asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee(resource) {
+        return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
+          while (1) {
+            switch (_context.prev = _context.next) {
+              case 0:
+                if (!resource.startsWith('<')) {
+                  _context.next = 2;
+                  break;
+                }
+
+                return _context.abrupt("return", this.parseFromString(resource));
+
+              case 2:
+                return _context.abrupt("return", this.load(resource));
+
+              case 3:
+              case "end":
+                return _context.stop();
+            }
+          }
+        }, _callee, this);
+      }));
+
+      function parse(_x) {
+        return _parse.apply(this, arguments);
+      }
+
+      return parse;
+    }()
+  }, {
+    key: "parseFromString",
+    value: function parseFromString(xml) {
+      var parser = new this.DOMParser();
+
+      try {
+        return this.checkDocument(parser.parseFromString(xml, 'image/svg+xml'));
+      } catch (err) {
+        return this.checkDocument(parser.parseFromString(xml, 'text/xml'));
+      }
+    }
+  }, {
+    key: "checkDocument",
+    value: function checkDocument(document) {
+      var parserError = document.getElementsByTagName('parsererror')[0];
+
+      if (parserError) {
+        throw new Error(parserError.textContent);
+      }
+
+      return document;
+    }
+  }, {
+    key: "load",
+    value: function () {
+      var _load = _asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee2(url) {
+        var response, xml;
+        return _regeneratorRuntime__default['default'].wrap(function _callee2$(_context2) {
+          while (1) {
+            switch (_context2.prev = _context2.next) {
+              case 0:
+                _context2.next = 2;
+                return this.fetch(url);
+
+              case 2:
+                response = _context2.sent;
+                _context2.next = 5;
+                return response.text();
+
+              case 5:
+                xml = _context2.sent;
+                return _context2.abrupt("return", this.parseFromString(xml));
+
+              case 7:
+              case "end":
+                return _context2.stop();
+            }
+          }
+        }, _callee2, this);
+      }));
+
+      function load(_x2) {
+        return _load.apply(this, arguments);
+      }
+
+      return load;
+    }()
+  }]);
+
+  return Parser;
+}();
+
+var Translate = /*#__PURE__*/function () {
+  function Translate(_, point) {
+    _classCallCheck__default['default'](this, Translate);
+
+    this.type = 'translate';
+    this.point = null;
+    this.point = Point.parse(point);
+  }
+
+  _createClass__default['default'](Translate, [{
+    key: "apply",
+    value: function apply(ctx) {
+      var _this$point = this.point,
+          x = _this$point.x,
+          y = _this$point.y;
+      ctx.translate(x || 0.0, y || 0.0);
+    }
+  }, {
+    key: "unapply",
+    value: function unapply(ctx) {
+      var _this$point2 = this.point,
+          x = _this$point2.x,
+          y = _this$point2.y;
+      ctx.translate(-1.0 * x || 0.0, -1.0 * y || 0.0);
+    }
+  }, {
+    key: "applyToPoint",
+    value: function applyToPoint(point) {
+      var _this$point3 = this.point,
+          x = _this$point3.x,
+          y = _this$point3.y;
+      point.applyTransform([1, 0, 0, 1, x || 0.0, y || 0.0]);
+    }
+  }]);
+
+  return Translate;
+}();
+
+var Rotate = /*#__PURE__*/function () {
+  function Rotate(document, rotate, transformOrigin) {
+    _classCallCheck__default['default'](this, Rotate);
+
+    this.type = 'rotate';
+    this.angle = null;
+    this.originX = null;
+    this.originY = null;
+    this.cx = 0;
+    this.cy = 0;
+    var numbers = toNumbers(rotate);
+    this.angle = new Property(document, 'angle', numbers[0]);
+    this.originX = transformOrigin[0];
+    this.originY = transformOrigin[1];
+    this.cx = numbers[1] || 0;
+    this.cy = numbers[2] || 0;
+  }
+
+  _createClass__default['default'](Rotate, [{
+    key: "apply",
+    value: function apply(ctx) {
+      var cx = this.cx,
+          cy = this.cy,
+          originX = this.originX,
+          originY = this.originY,
+          angle = this.angle;
+      var tx = cx + originX.getPixels('x');
+      var ty = cy + originY.getPixels('y');
+      ctx.translate(tx, ty);
+      ctx.rotate(angle.getRadians());
+      ctx.translate(-tx, -ty);
+    }
+  }, {
+    key: "unapply",
+    value: function unapply(ctx) {
+      var cx = this.cx,
+          cy = this.cy,
+          originX = this.originX,
+          originY = this.originY,
+          angle = this.angle;
+      var tx = cx + originX.getPixels('x');
+      var ty = cy + originY.getPixels('y');
+      ctx.translate(tx, ty);
+      ctx.rotate(-1.0 * angle.getRadians());
+      ctx.translate(-tx, -ty);
+    }
+  }, {
+    key: "applyToPoint",
+    value: function applyToPoint(point) {
+      var cx = this.cx,
+          cy = this.cy,
+          angle = this.angle;
+      var rad = angle.getRadians();
+      point.applyTransform([1, 0, 0, 1, cx || 0.0, cy || 0.0 // this.p.y
+      ]);
+      point.applyTransform([Math.cos(rad), Math.sin(rad), -Math.sin(rad), Math.cos(rad), 0, 0]);
+      point.applyTransform([1, 0, 0, 1, -cx || 0.0, -cy || 0.0 // -this.p.y
+      ]);
+    }
+  }]);
+
+  return Rotate;
+}();
+
+var Scale = /*#__PURE__*/function () {
+  function Scale(_, scale, transformOrigin) {
+    _classCallCheck__default['default'](this, Scale);
+
+    this.type = 'scale';
+    this.scale = null;
+    this.originX = null;
+    this.originY = null;
+    var scaleSize = Point.parseScale(scale); // Workaround for node-canvas
+
+    if (scaleSize.x === 0 || scaleSize.y === 0) {
+      scaleSize.x = PSEUDO_ZERO;
+      scaleSize.y = PSEUDO_ZERO;
+    }
+
+    this.scale = scaleSize;
+    this.originX = transformOrigin[0];
+    this.originY = transformOrigin[1];
+  }
+
+  _createClass__default['default'](Scale, [{
+    key: "apply",
+    value: function apply(ctx) {
+      var _this$scale = this.scale,
+          x = _this$scale.x,
+          y = _this$scale.y,
+          originX = this.originX,
+          originY = this.originY;
+      var tx = originX.getPixels('x');
+      var ty = originY.getPixels('y');
+      ctx.translate(tx, ty);
+      ctx.scale(x, y || x);
+      ctx.translate(-tx, -ty);
+    }
+  }, {
+    key: "unapply",
+    value: function unapply(ctx) {
+      var _this$scale2 = this.scale,
+          x = _this$scale2.x,
+          y = _this$scale2.y,
+          originX = this.originX,
+          originY = this.originY;
+      var tx = originX.getPixels('x');
+      var ty = originY.getPixels('y');
+      ctx.translate(tx, ty);
+      ctx.scale(1.0 / x, 1.0 / y || x);
+      ctx.translate(-tx, -ty);
+    }
+  }, {
+    key: "applyToPoint",
+    value: function applyToPoint(point) {
+      var _this$scale3 = this.scale,
+          x = _this$scale3.x,
+          y = _this$scale3.y;
+      point.applyTransform([x || 0.0, 0, 0, y || 0.0, 0, 0]);
+    }
+  }]);
+
+  return Scale;
+}();
+
+var Matrix = /*#__PURE__*/function () {
+  function Matrix(_, matrix, transformOrigin) {
+    _classCallCheck__default['default'](this, Matrix);
+
+    this.type = 'matrix';
+    this.matrix = [];
+    this.originX = null;
+    this.originY = null;
+    this.matrix = toNumbers(matrix);
+    this.originX = transformOrigin[0];
+    this.originY = transformOrigin[1];
+  }
+
+  _createClass__default['default'](Matrix, [{
+    key: "apply",
+    value: function apply(ctx) {
+      var originX = this.originX,
+          originY = this.originY,
+          matrix = this.matrix;
+      var tx = originX.getPixels('x');
+      var ty = originY.getPixels('y');
+      ctx.translate(tx, ty);
+      ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);
+      ctx.translate(-tx, -ty);
+    }
+  }, {
+    key: "unapply",
+    value: function unapply(ctx) {
+      var originX = this.originX,
+          originY = this.originY,
+          matrix = this.matrix;
+      var a = matrix[0];
+      var b = matrix[2];
+      var c = matrix[4];
+      var d = matrix[1];
+      var e = matrix[3];
+      var f = matrix[5];
+      var g = 0.0;
+      var h = 0.0;
+      var i = 1.0;
+      var det = 1 / (a * (e * i - f * h) - b * (d * i - f * g) + c * (d * h - e * g));
+      var tx = originX.getPixels('x');
+      var ty = originY.getPixels('y');
+      ctx.translate(tx, ty);
+      ctx.transform(det * (e * i - f * h), det * (f * g - d * i), det * (c * h - b * i), det * (a * i - c * g), det * (b * f - c * e), det * (c * d - a * f));
+      ctx.translate(-tx, -ty);
+    }
+  }, {
+    key: "applyToPoint",
+    value: function applyToPoint(point) {
+      point.applyTransform(this.matrix);
+    }
+  }]);
+
+  return Matrix;
+}();
+
+function _createSuper$M(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$M(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$M() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var Skew = /*#__PURE__*/function (_Matrix) {
+  _inherits__default['default'](Skew, _Matrix);
+
+  var _super = _createSuper$M(Skew);
+
+  function Skew(document, skew, transformOrigin) {
+    var _this;
+
+    _classCallCheck__default['default'](this, Skew);
+
+    _this = _super.call(this, document, skew, transformOrigin);
+    _this.type = 'skew';
+    _this.angle = null;
+    _this.angle = new Property(document, 'angle', skew);
+    return _this;
+  }
+
+  return Skew;
+}(Matrix);
+
+function _createSuper$L(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$L(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$L() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var SkewX = /*#__PURE__*/function (_Skew) {
+  _inherits__default['default'](SkewX, _Skew);
+
+  var _super = _createSuper$L(SkewX);
+
+  function SkewX(document, skew, transformOrigin) {
+    var _this;
+
+    _classCallCheck__default['default'](this, SkewX);
+
+    _this = _super.call(this, document, skew, transformOrigin);
+    _this.type = 'skewX';
+    _this.matrix = [1, 0, Math.tan(_this.angle.getRadians()), 1, 0, 0];
+    return _this;
+  }
+
+  return SkewX;
+}(Skew);
+
+function _createSuper$K(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$K(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$K() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var SkewY = /*#__PURE__*/function (_Skew) {
+  _inherits__default['default'](SkewY, _Skew);
+
+  var _super = _createSuper$K(SkewY);
+
+  function SkewY(document, skew, transformOrigin) {
+    var _this;
+
+    _classCallCheck__default['default'](this, SkewY);
+
+    _this = _super.call(this, document, skew, transformOrigin);
+    _this.type = 'skewY';
+    _this.matrix = [1, Math.tan(_this.angle.getRadians()), 0, 1, 0, 0];
+    return _this;
+  }
+
+  return SkewY;
+}(Skew);
+
+function parseTransforms(transform) {
+  return compressSpaces(transform).trim().replace(/\)([a-zA-Z])/g, ') $1').replace(/\)(\s?,\s?)/g, ') ').split(/\s(?=[a-z])/);
+}
+
+function parseTransform(transform) {
+  var _transform$split = transform.split('('),
+      _transform$split2 = _slicedToArray__default['default'](_transform$split, 2),
+      type = _transform$split2[0],
+      value = _transform$split2[1];
+
+  return [type.trim(), value.trim().replace(')', '')];
+}
+
+var Transform = /*#__PURE__*/function () {
+  function Transform(document, transform, transformOrigin) {
+    var _this = this;
+
+    _classCallCheck__default['default'](this, Transform);
+
+    this.document = document;
+    this.transforms = [];
+    var data = parseTransforms(transform);
+    data.forEach(function (transform) {
+      if (transform === 'none') {
+        return;
+      }
+
+      var _parseTransform = parseTransform(transform),
+          _parseTransform2 = _slicedToArray__default['default'](_parseTransform, 2),
+          type = _parseTransform2[0],
+          value = _parseTransform2[1];
+
+      var TransformType = Transform.transformTypes[type];
+
+      if (typeof TransformType !== 'undefined') {
+        _this.transforms.push(new TransformType(_this.document, value, transformOrigin));
+      }
+    });
+  }
+
+  _createClass__default['default'](Transform, [{
+    key: "apply",
+    value: function apply(ctx) {
+      var transforms = this.transforms;
+      var len = transforms.length;
+
+      for (var i = 0; i < len; i++) {
+        transforms[i].apply(ctx);
+      }
+    }
+  }, {
+    key: "unapply",
+    value: function unapply(ctx) {
+      var transforms = this.transforms;
+      var len = transforms.length;
+
+      for (var i = len - 1; i >= 0; i--) {
+        transforms[i].unapply(ctx);
+      }
+    } // TODO: applyToPoint unused ... remove?
+
+  }, {
+    key: "applyToPoint",
+    value: function applyToPoint(point) {
+      var transforms = this.transforms;
+      var len = transforms.length;
+
+      for (var i = 0; i < len; i++) {
+        transforms[i].applyToPoint(point);
+      }
+    }
+  }], [{
+    key: "fromElement",
+    value: function fromElement(document, element) {
+      var transformStyle = element.getStyle('transform', false, true);
+
+      var _element$getStyle$spl = element.getStyle('transform-origin', false, true).split(),
+          _element$getStyle$spl2 = _slicedToArray__default['default'](_element$getStyle$spl, 2),
+          transformOriginXProperty = _element$getStyle$spl2[0],
+          _element$getStyle$spl3 = _element$getStyle$spl2[1],
+          transformOriginYProperty = _element$getStyle$spl3 === void 0 ? transformOriginXProperty : _element$getStyle$spl3;
+
+      var transformOrigin = [transformOriginXProperty, transformOriginYProperty];
+
+      if (transformStyle.hasValue()) {
+        return new Transform(document, transformStyle.getString(), transformOrigin);
+      }
+
+      return null;
+    }
+  }]);
+
+  return Transform;
+}();
+Transform.transformTypes = {
+  translate: Translate,
+  rotate: Rotate,
+  scale: Scale,
+  matrix: Matrix,
+  skewX: SkewX,
+  skewY: SkewY
+};
+
+var Element = /*#__PURE__*/function () {
+  function Element(document, node) {
+    var _this = this;
+
+    var captureTextNodes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
+
+    _classCallCheck__default['default'](this, Element);
+
+    this.document = document;
+    this.node = node;
+    this.captureTextNodes = captureTextNodes;
+    this.attributes = {};
+    this.styles = {};
+    this.stylesSpecificity = {};
+    this.animationFrozen = false;
+    this.animationFrozenValue = '';
+    this.parent = null;
+    this.children = [];
+
+    if (!node || node.nodeType !== 1) {
+      // ELEMENT_NODE
+      return;
+    } // add attributes
+
+
+    Array.from(node.attributes).forEach(function (attribute) {
+      var nodeName = normalizeAttributeName(attribute.nodeName);
+      _this.attributes[nodeName] = new Property(document, nodeName, attribute.value);
+    });
+    this.addStylesFromStyleDefinition(); // add inline styles
+
+    if (this.getAttribute('style').hasValue()) {
+      var styles = this.getAttribute('style').getString().split(';').map(function (_) {
+        return _.trim();
+      });
+      styles.forEach(function (style) {
+        if (!style) {
+          return;
+        }
+
+        var _style$split$map = style.split(':').map(function (_) {
+          return _.trim();
+        }),
+            _style$split$map2 = _slicedToArray__default['default'](_style$split$map, 2),
+            name = _style$split$map2[0],
+            value = _style$split$map2[1];
+
+        _this.styles[name] = new Property(document, name, value);
+      });
+    }
+
+    var definitions = document.definitions;
+    var id = this.getAttribute('id'); // add id
+
+    if (id.hasValue()) {
+      if (!definitions[id.getString()]) {
+        definitions[id.getString()] = this;
+      }
+    }
+
+    Array.from(node.childNodes).forEach(function (childNode) {
+      if (childNode.nodeType === 1) {
+        _this.addChild(childNode); // ELEMENT_NODE
+
+      } else if (captureTextNodes && (childNode.nodeType === 3 || childNode.nodeType === 4)) {
+        var textNode = document.createTextNode(childNode);
+
+        if (textNode.getText().length > 0) {
+          _this.addChild(textNode); // TEXT_NODE
+
+        }
+      }
+    });
+  }
+
+  _createClass__default['default'](Element, [{
+    key: "getAttribute",
+    value: function getAttribute(name) {
+      var createIfNotExists = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+      var attr = this.attributes[name];
+
+      if (!attr && createIfNotExists) {
+        var _attr = new Property(this.document, name, '');
+
+        this.attributes[name] = _attr;
+        return _attr;
+      }
+
+      return attr || Property.empty(this.document);
+    }
+  }, {
+    key: "getHrefAttribute",
+    value: function getHrefAttribute() {
+      for (var key in this.attributes) {
+        if (key === 'href' || key.endsWith(':href')) {
+          return this.attributes[key];
+        }
+      }
+
+      return Property.empty(this.document);
+    }
+  }, {
+    key: "getStyle",
+    value: function getStyle(name) {
+      var createIfNotExists = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+      var skipAncestors = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
+      var style = this.styles[name];
+
+      if (style) {
+        return style;
+      }
+
+      var attr = this.getAttribute(name);
+
+      if (attr !== null && attr !== void 0 && attr.hasValue()) {
+        this.styles[name] = attr; // move up to me to cache
+
+        return attr;
+      }
+
+      if (!skipAncestors) {
+        var parent = this.parent;
+
+        if (parent) {
+          var parentStyle = parent.getStyle(name);
+
+          if (parentStyle !== null && parentStyle !== void 0 && parentStyle.hasValue()) {
+            return parentStyle;
+          }
+        }
+      }
+
+      if (createIfNotExists) {
+        var _style = new Property(this.document, name, '');
+
+        this.styles[name] = _style;
+        return _style;
+      }
+
+      return style || Property.empty(this.document);
+    }
+  }, {
+    key: "render",
+    value: function render(ctx) {
+      // don't render display=none
+      // don't render visibility=hidden
+      if (this.getStyle('display').getString() === 'none' || this.getStyle('visibility').getString() === 'hidden') {
+        return;
+      }
+
+      ctx.save();
+
+      if (this.getStyle('mask').hasValue()) {
+        // mask
+        var mask = this.getStyle('mask').getDefinition();
+
+        if (mask) {
+          this.applyEffects(ctx);
+          mask.apply(ctx, this);
+        }
+      } else if (this.getStyle('filter').getValue('none') !== 'none') {
+        // filter
+        var filter = this.getStyle('filter').getDefinition();
+
+        if (filter) {
+          this.applyEffects(ctx);
+          filter.apply(ctx, this);
+        }
+      } else {
+        this.setContext(ctx);
+        this.renderChildren(ctx);
+        this.clearContext(ctx);
+      }
+
+      ctx.restore();
+    }
+  }, {
+    key: "setContext",
+    value: function setContext(_) {// NO RENDER
+    }
+  }, {
+    key: "applyEffects",
+    value: function applyEffects(ctx) {
+      // transform
+      var transform = Transform.fromElement(this.document, this);
+
+      if (transform) {
+        transform.apply(ctx);
+      } // clip
+
+
+      var clipPathStyleProp = this.getStyle('clip-path', false, true);
+
+      if (clipPathStyleProp.hasValue()) {
+        var clip = clipPathStyleProp.getDefinition();
+
+        if (clip) {
+          clip.apply(ctx);
+        }
+      }
+    }
+  }, {
+    key: "clearContext",
+    value: function clearContext(_) {// NO RENDER
+    }
+  }, {
+    key: "renderChildren",
+    value: function renderChildren(ctx) {
+      this.children.forEach(function (child) {
+        child.render(ctx);
+      });
+    }
+  }, {
+    key: "addChild",
+    value: function addChild(childNode) {
+      var child = childNode instanceof Element ? childNode : this.document.createElement(childNode);
+      child.parent = this;
+
+      if (!Element.ignoreChildTypes.includes(child.type)) {
+        this.children.push(child);
+      }
+    }
+  }, {
+    key: "matchesSelector",
+    value: function matchesSelector(selector) {
+      var node = this.node;
+
+      if (typeof node.matches === 'function') {
+        return node.matches(selector);
+      }
+
+      var styleClasses = node.getAttribute('class');
+
+      if (!styleClasses || styleClasses === '') {
+        return false;
+      }
+
+      return styleClasses.split(' ').some(function (styleClass) {
+        return ".".concat(styleClass) === selector;
+      });
+    }
+  }, {
+    key: "addStylesFromStyleDefinition",
+    value: function addStylesFromStyleDefinition() {
+      var _this$document = this.document,
+          styles = _this$document.styles,
+          stylesSpecificity = _this$document.stylesSpecificity;
+
+      for (var selector in styles) {
+        if (!selector.startsWith('@') && this.matchesSelector(selector)) {
+          var style = styles[selector];
+          var specificity = stylesSpecificity[selector];
+
+          if (style) {
+            for (var name in style) {
+              var existingSpecificity = this.stylesSpecificity[name];
+
+              if (typeof existingSpecificity === 'undefined') {
+                existingSpecificity = '000';
+              }
+
+              if (specificity >= existingSpecificity) {
+                this.styles[name] = style[name];
+                this.stylesSpecificity[name] = specificity;
+              }
+            }
+          }
+        }
+      }
+    }
+  }, {
+    key: "removeStyles",
+    value: function removeStyles(element, ignoreStyles) {
+      var toRestore = ignoreStyles.reduce(function (toRestore, name) {
+        var styleProp = element.getStyle(name);
+
+        if (!styleProp.hasValue()) {
+          return toRestore;
+        }
+
+        var value = styleProp.getString();
+        styleProp.setValue('');
+        return [].concat(_toConsumableArray__default['default'](toRestore), [[name, value]]);
+      }, []);
+      return toRestore;
+    }
+  }, {
+    key: "restoreStyles",
+    value: function restoreStyles(element, styles) {
+      styles.forEach(function (_ref) {
+        var _ref2 = _slicedToArray__default['default'](_ref, 2),
+            name = _ref2[0],
+            value = _ref2[1];
+
+        element.getStyle(name, true).setValue(value);
+      });
+    }
+  }]);
+
+  return Element;
+}();
+Element.ignoreChildTypes = ['title'];
+
+function _createSuper$J(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$J(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$J() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var UnknownElement = /*#__PURE__*/function (_Element) {
+  _inherits__default['default'](UnknownElement, _Element);
+
+  var _super = _createSuper$J(UnknownElement);
+
+  function UnknownElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default['default'](this, UnknownElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+
+    return _this;
+  }
+
+  return UnknownElement;
+}(Element);
+
+function wrapFontFamily(fontFamily) {
+  var trimmed = fontFamily.trim();
+  return /^('|")/.test(trimmed) ? trimmed : "\"".concat(trimmed, "\"");
+}
+
+function prepareFontFamily(fontFamily) {
+  return typeof process === 'undefined' ? fontFamily : fontFamily.trim().split(',').map(wrapFontFamily).join(',');
+}
+/**
+ * https://developer.mozilla.org/en-US/docs/Web/CSS/font-style
+ * @param fontStyle
+ * @returns CSS font style.
+ */
+
+
+function prepareFontStyle(fontStyle) {
+  if (!fontStyle) {
+    return '';
+  }
+
+  var targetFontStyle = fontStyle.trim().toLowerCase();
+
+  switch (targetFontStyle) {
+    case 'normal':
+    case 'italic':
+    case 'oblique':
+    case 'inherit':
+    case 'initial':
+    case 'unset':
+      return targetFontStyle;
+
+    default:
+      if (/^oblique\s+(-|)\d+deg$/.test(targetFontStyle)) {
+        return targetFontStyle;
+      }
+
+      return '';
+  }
+}
+/**
+ * https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight
+ * @param fontWeight
+ * @returns CSS font weight.
+ */
+
+
+function prepareFontWeight(fontWeight) {
+  if (!fontWeight) {
+    return '';
+  }
+
+  var targetFontWeight = fontWeight.trim().toLowerCase();
+
+  switch (targetFontWeight) {
+    case 'normal':
+    case 'bold':
+    case 'lighter':
+    case 'bolder':
+    case 'inherit':
+    case 'initial':
+    case 'unset':
+      return targetFontWeight;
+
+    default:
+      if (/^[\d.]+$/.test(targetFontWeight)) {
+        return targetFontWeight;
+      }
+
+      return '';
+  }
+}
+
+var Font = /*#__PURE__*/function () {
+  function Font(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit) {
+    _classCallCheck__default['default'](this, Font);
+
+    var inheritFont = inherit ? typeof inherit === 'string' ? Font.parse(inherit) : inherit : {};
+    this.fontFamily = fontFamily || inheritFont.fontFamily;
+    this.fontSize = fontSize || inheritFont.fontSize;
+    this.fontStyle = fontStyle || inheritFont.fontStyle;
+    this.fontWeight = fontWeight || inheritFont.fontWeight;
+    this.fontVariant = fontVariant || inheritFont.fontVariant;
+  }
+
+  _createClass__default['default'](Font, [{
+    key: "toString",
+    value: function toString() {
+      return [prepareFontStyle(this.fontStyle), this.fontVariant, prepareFontWeight(this.fontWeight), this.fontSize, // Wrap fontFamily only on nodejs and only for canvas.ctx
+      prepareFontFamily(this.fontFamily)].join(' ').trim();
+    }
+  }], [{
+    key: "parse",
+    value: function parse() {
+      var font = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
+      var inherit = arguments.length > 1 ? arguments[1] : undefined;
+      var fontStyle = '';
+      var fontVariant = '';
+      var fontWeight = '';
+      var fontSize = '';
+      var fontFamily = '';
+      var parts = compressSpaces(font).trim().split(' ');
+      var set = {
+        fontSize: false,
+        fontStyle: false,
+        fontWeight: false,
+        fontVariant: false
+      };
+      parts.forEach(function (part) {
+        switch (true) {
+          case !set.fontStyle && Font.styles.includes(part):
+            if (part !== 'inherit') {
+              fontStyle = part;
+            }
+
+            set.fontStyle = true;
+            break;
+
+          case !set.fontVariant && Font.variants.includes(part):
+            if (part !== 'inherit') {
+              fontVariant = part;
+            }
+
+            set.fontStyle = true;
+            set.fontVariant = true;
+            break;
+
+          case !set.fontWeight && Font.weights.includes(part):
+            if (part !== 'inherit') {
+              fontWeight = part;
+            }
+
+            set.fontStyle = true;
+            set.fontVariant = true;
+            set.fontWeight = true;
+            break;
+
+          case !set.fontSize:
+            if (part !== 'inherit') {
+              var _part$split = part.split('/');
+
+              var _part$split2 = _slicedToArray__default['default'](_part$split, 1);
+
+              fontSize = _part$split2[0];
+            }
+
+            set.fontStyle = true;
+            set.fontVariant = true;
+            set.fontWeight = true;
+            set.fontSize = true;
+            break;
+
+          default:
+            if (part !== 'inherit') {
+              fontFamily += part;
+            }
+
+        }
+      });
+      return new Font(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit);
+    }
+  }]);
+
+  return Font;
+}();
+Font.styles = 'normal|italic|oblique|inherit';
+Font.variants = 'normal|small-caps|inherit';
+Font.weights = 'normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit';
+
+var BoundingBox = /*#__PURE__*/function () {
+  function BoundingBox() {
+    var x1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Number.NaN;
+    var y1 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.NaN;
+    var x2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Number.NaN;
+    var y2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Number.NaN;
+
+    _classCallCheck__default['default'](this, BoundingBox);
+
+    this.x1 = x1;
+    this.y1 = y1;
+    this.x2 = x2;
+    this.y2 = y2;
+    this.addPoint(x1, y1);
+    this.addPoint(x2, y2);
+  }
+
+  _createClass__default['default'](BoundingBox, [{
+    key: "addPoint",
+    value: function addPoint(x, y) {
+      if (typeof x !== 'undefined') {
+        if (isNaN(this.x1) || isNaN(this.x2)) {
+          this.x1 = x;
+          this.x2 = x;
+        }
+
+        if (x < this.x1) {
+          this.x1 = x;
+        }
+
+        if (x > this.x2) {
+          this.x2 = x;
+        }
+      }
+
+      if (typeof y !== 'undefined') {
+        if (isNaN(this.y1) || isNaN(this.y2)) {
+          this.y1 = y;
+          this.y2 = y;
+        }
+
+        if (y < this.y1) {
+          this.y1 = y;
+        }
+
+        if (y > this.y2) {
+          this.y2 = y;
+        }
+      }
+    }
+  }, {
+    key: "addX",
+    value: function addX(x) {
+      this.addPoint(x, null);
+    }
+  }, {
+    key: "addY",
+    value: function addY(y) {
+      this.addPoint(null, y);
+    }
+  }, {
+    key: "addBoundingBox",
+    value: function addBoundingBox(boundingBox) {
+      if (!boundingBox) {
+        return;
+      }
+
+      var x1 = boundingBox.x1,
+          y1 = boundingBox.y1,
+          x2 = boundingBox.x2,
+          y2 = boundingBox.y2;
+      this.addPoint(x1, y1);
+      this.addPoint(x2, y2);
+    }
+  }, {
+    key: "sumCubic",
+    value: function sumCubic(t, p0, p1, p2, p3) {
+      return Math.pow(1 - t, 3) * p0 + 3 * Math.pow(1 - t, 2) * t * p1 + 3 * (1 - t) * Math.pow(t, 2) * p2 + Math.pow(t, 3) * p3;
+    }
+  }, {
+    key: "bezierCurveAdd",
+    value: function bezierCurveAdd(forX, p0, p1, p2, p3) {
+      var b = 6 * p0 - 12 * p1 + 6 * p2;
+      var a = -3 * p0 + 9 * p1 - 9 * p2 + 3 * p3;
+      var c = 3 * p1 - 3 * p0;
+
+      if (a === 0) {
+        if (b === 0) {
+          return;
+        }
+
+        var t = -c / b;
+
+        if (0 < t && t < 1) {
+          if (forX) {
+            this.addX(this.sumCubic(t, p0, p1, p2, p3));
+          } else {
+            this.addY(this.sumCubic(t, p0, p1, p2, p3));
+          }
+        }
+
+        return;
+      }
+
+      var b2ac = Math.pow(b, 2) - 4 * c * a;
+
+      if (b2ac < 0) {
+        return;
+      }
+
+      var t1 = (-b + Math.sqrt(b2ac)) / (2 * a);
+
+      if (0 < t1 && t1 < 1) {
+        if (forX) {
+          this.addX(this.sumCubic(t1, p0, p1, p2, p3));
+        } else {
+          this.addY(this.sumCubic(t1, p0, p1, p2, p3));
+        }
+      }
+
+      var t2 = (-b - Math.sqrt(b2ac)) / (2 * a);
+
+      if (0 < t2 && t2 < 1) {
+        if (forX) {
+          this.addX(this.sumCubic(t2, p0, p1, p2, p3));
+        } else {
+          this.addY(this.sumCubic(t2, p0, p1, p2, p3));
+        }
+      }
+    } // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html
+
+  }, {
+    key: "addBezierCurve",
+    value: function addBezierCurve(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {
+      this.addPoint(p0x, p0y);
+      this.addPoint(p3x, p3y);
+      this.bezierCurveAdd(true, p0x, p1x, p2x, p3x);
+      this.bezierCurveAdd(false, p0y, p1y, p2y, p3y);
+    }
+  }, {
+    key: "addQuadraticCurve",
+    value: function addQuadraticCurve(p0x, p0y, p1x, p1y, p2x, p2y) {
+      var cp1x = p0x + 2 / 3 * (p1x - p0x); // CP1 = QP0 + 2/3 *(QP1-QP0)
+
+      var cp1y = p0y + 2 / 3 * (p1y - p0y); // CP1 = QP0 + 2/3 *(QP1-QP0)
+
+      var cp2x = cp1x + 1 / 3 * (p2x - p0x); // CP2 = CP1 + 1/3 *(QP2-QP0)
+
+      var cp2y = cp1y + 1 / 3 * (p2y - p0y); // CP2 = CP1 + 1/3 *(QP2-QP0)
+
+      this.addBezierCurve(p0x, p0y, cp1x, cp2x, cp1y, cp2y, p2x, p2y);
+    }
+  }, {
+    key: "isPointInBox",
+    value: function isPointInBox(x, y) {
+      var x1 = this.x1,
+          y1 = this.y1,
+          x2 = this.x2,
+          y2 = this.y2;
+      return x1 <= x && x <= x2 && y1 <= y && y <= y2;
+    }
+  }, {
+    key: "x",
+    get: function get() {
+      return this.x1;
+    }
+  }, {
+    key: "y",
+    get: function get() {
+      return this.y1;
+    }
+  }, {
+    key: "width",
+    get: function get() {
+      return this.x2 - this.x1;
+    }
+  }, {
+    key: "height",
+    get: function get() {
+      return this.y2 - this.y1;
+    }
+  }]);
+
+  return BoundingBox;
+}();
+
+function _createSuper$I(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$I(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$I() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var PathParser = /*#__PURE__*/function (_SVGPathData) {
+  _inherits__default['default'](PathParser, _SVGPathData);
+
+  var _super = _createSuper$I(PathParser);
+
+  function PathParser(path) {
+    var _this;
+
+    _classCallCheck__default['default'](this, PathParser);
+
+    _this = _super.call(this, path // Fix spaces after signs.
+    .replace(/([+\-.])\s+/gm, '$1') // Remove invalid part.
+    .replace(/[^MmZzLlHhVvCcSsQqTtAae\d\s.,+-].*/g, ''));
+    _this.control = null;
+    _this.start = null;
+    _this.current = null;
+    _this.command = null;
+    _this.commands = _this.commands;
+    _this.i = -1;
+    _this.previousCommand = null;
+    _this.points = [];
+    _this.angles = [];
+    return _this;
+  }
+
+  _createClass__default['default'](PathParser, [{
+    key: "reset",
+    value: function reset() {
+      this.i = -1;
+      this.command = null;
+      this.previousCommand = null;
+      this.start = new Point(0, 0);
+      this.control = new Point(0, 0);
+      this.current = new Point(0, 0);
+      this.points = [];
+      this.angles = [];
+    }
+  }, {
+    key: "isEnd",
+    value: function isEnd() {
+      var i = this.i,
+          commands = this.commands;
+      return i >= commands.length - 1;
+    }
+  }, {
+    key: "next",
+    value: function next() {
+      var command = this.commands[++this.i];
+      this.previousCommand = this.command;
+      this.command = command;
+      return command;
+    }
+  }, {
+    key: "getPoint",
+    value: function getPoint() {
+      var xProp = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'x';
+      var yProp = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'y';
+      var point = new Point(this.command[xProp], this.command[yProp]);
+      return this.makeAbsolute(point);
+    }
+  }, {
+    key: "getAsControlPoint",
+    value: function getAsControlPoint(xProp, yProp) {
+      var point = this.getPoint(xProp, yProp);
+      this.control = point;
+      return point;
+    }
+  }, {
+    key: "getAsCurrentPoint",
+    value: function getAsCurrentPoint(xProp, yProp) {
+      var point = this.getPoint(xProp, yProp);
+      this.current = point;
+      return point;
+    }
+  }, {
+    key: "getReflectedControlPoint",
+    value: function getReflectedControlPoint() {
+      var previousCommand = this.previousCommand.type;
+
+      if (previousCommand !== svgPathdata.SVGPathData.CURVE_TO && previousCommand !== svgPathdata.SVGPathData.SMOOTH_CURVE_TO && previousCommand !== svgPathdata.SVGPathData.QUAD_TO && previousCommand !== svgPathdata.SVGPathData.SMOOTH_QUAD_TO) {
+        return this.current;
+      } // reflect point
+
+
+      var _this$current = this.current,
+          cx = _this$current.x,
+          cy = _this$current.y,
+          _this$control = this.control,
+          ox = _this$control.x,
+          oy = _this$control.y;
+      var point = new Point(2 * cx - ox, 2 * cy - oy);
+      return point;
+    }
+  }, {
+    key: "makeAbsolute",
+    value: function makeAbsolute(point) {
+      if (this.command.relative) {
+        var _this$current2 = this.current,
+            x = _this$current2.x,
+            y = _this$current2.y;
+        point.x += x;
+        point.y += y;
+      }
+
+      return point;
+    }
+  }, {
+    key: "addMarker",
+    value: function addMarker(point, from, priorTo) {
+      var points = this.points,
+          angles = this.angles; // if the last angle isn't filled in because we didn't have this point yet ...
+
+      if (priorTo && angles.length > 0 && !angles[angles.length - 1]) {
+        angles[angles.length - 1] = points[points.length - 1].angleTo(priorTo);
+      }
+
+      this.addMarkerAngle(point, from ? from.angleTo(point) : null);
+    }
+  }, {
+    key: "addMarkerAngle",
+    value: function addMarkerAngle(point, angle) {
+      this.points.push(point);
+      this.angles.push(angle);
+    }
+  }, {
+    key: "getMarkerPoints",
+    value: function getMarkerPoints() {
+      return this.points;
+    }
+  }, {
+    key: "getMarkerAngles",
+    value: function getMarkerAngles() {
+      var angles = this.angles;
+      var len = angles.length;
+
+      for (var i = 0; i < len; i++) {
+        if (!angles[i]) {
+          for (var j = i + 1; j < len; j++) {
+            if (angles[j]) {
+              angles[i] = angles[j];
+              break;
+            }
+          }
+        }
+      }
+
+      return angles;
+    }
+  }]);
+
+  return PathParser;
+}(svgPathdata.SVGPathData);
+
+function _createSuper$H(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$H(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$H() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var RenderedElement = /*#__PURE__*/function (_Element) {
+  _inherits__default['default'](RenderedElement, _Element);
+
+  var _super = _createSuper$H(RenderedElement);
+
+  function RenderedElement() {
+    var _this;
+
+    _classCallCheck__default['default'](this, RenderedElement);
+
+    _this = _super.apply(this, arguments);
+    _this.modifiedEmSizeStack = false;
+    return _this;
+  }
+
+  _createClass__default['default'](RenderedElement, [{
+    key: "calculateOpacity",
+    value: function calculateOpacity() {
+      var opacity = 1.0; // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this
+
+      var element = this;
+
+      while (element) {
+        var opacityStyle = element.getStyle('opacity', false, true); // no ancestors on style call
+
+        if (opacityStyle.hasValue(true)) {
+          opacity *= opacityStyle.getNumber();
+        }
+
+        element = element.parent;
+      }
+
+      return opacity;
+    }
+  }, {
+    key: "setContext",
+    value: function setContext(ctx) {
+      var fromMeasure = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+
+      if (!fromMeasure) {
+        // causes stack overflow when measuring text with gradients
+        // fill
+        var fillStyleProp = this.getStyle('fill');
+        var fillOpacityStyleProp = this.getStyle('fill-opacity');
+        var strokeStyleProp = this.getStyle('stroke');
+        var strokeOpacityProp = this.getStyle('stroke-opacity');
+
+        if (fillStyleProp.isUrlDefinition()) {
+          var fillStyle = fillStyleProp.getFillStyleDefinition(this, fillOpacityStyleProp);
+
+          if (fillStyle) {
+            ctx.fillStyle = fillStyle;
+          }
+        } else if (fillStyleProp.hasValue()) {
+          if (fillStyleProp.getString() === 'currentColor') {
+            fillStyleProp.setValue(this.getStyle('color').getColor());
+          }
+
+          var _fillStyle = fillStyleProp.getColor();
+
+          if (_fillStyle !== 'inherit') {
+            ctx.fillStyle = _fillStyle === 'none' ? 'rgba(0,0,0,0)' : _fillStyle;
+          }
+        }
+
+        if (fillOpacityStyleProp.hasValue()) {
+          var _fillStyle2 = new Property(this.document, 'fill', ctx.fillStyle).addOpacity(fillOpacityStyleProp).getColor();
+
+          ctx.fillStyle = _fillStyle2;
+        } // stroke
+
+
+        if (strokeStyleProp.isUrlDefinition()) {
+          var strokeStyle = strokeStyleProp.getFillStyleDefinition(this, strokeOpacityProp);
+
+          if (strokeStyle) {
+            ctx.strokeStyle = strokeStyle;
+          }
+        } else if (strokeStyleProp.hasValue()) {
+          if (strokeStyleProp.getString() === 'currentColor') {
+            strokeStyleProp.setValue(this.getStyle('color').getColor());
+          }
+
+          var _strokeStyle = strokeStyleProp.getString();
+
+          if (_strokeStyle !== 'inherit') {
+            ctx.strokeStyle = _strokeStyle === 'none' ? 'rgba(0,0,0,0)' : _strokeStyle;
+          }
+        }
+
+        if (strokeOpacityProp.hasValue()) {
+          var _strokeStyle2 = new Property(this.document, 'stroke', ctx.strokeStyle).addOpacity(strokeOpacityProp).getString();
+
+          ctx.strokeStyle = _strokeStyle2;
+        }
+
+        var strokeWidthStyleProp = this.getStyle('stroke-width');
+
+        if (strokeWidthStyleProp.hasValue()) {
+          var newLineWidth = strokeWidthStyleProp.getPixels();
+          ctx.lineWidth = !newLineWidth ? PSEUDO_ZERO // browsers don't respect 0 (or node-canvas? :-)
+          : newLineWidth;
+        }
+
+        var strokeLinecapStyleProp = this.getStyle('stroke-linecap');
+        var strokeLinejoinStyleProp = this.getStyle('stroke-linejoin');
+        var strokeMiterlimitProp = this.getStyle('stroke-miterlimit'); // NEED TEST
+        // const pointOrderStyleProp = this.getStyle('paint-order');
+
+        var strokeDasharrayStyleProp = this.getStyle('stroke-dasharray');
+        var strokeDashoffsetProp = this.getStyle('stroke-dashoffset');
+
+        if (strokeLinecapStyleProp.hasValue()) {
+          ctx.lineCap = strokeLinecapStyleProp.getString();
+        }
+
+        if (strokeLinejoinStyleProp.hasValue()) {
+          ctx.lineJoin = strokeLinejoinStyleProp.getString();
+        }
+
+        if (strokeMiterlimitProp.hasValue()) {
+          ctx.miterLimit = strokeMiterlimitProp.getNumber();
+        } // NEED TEST
+        // if (pointOrderStyleProp.hasValue()) {
+        // 	// ?
+        // 	ctx.paintOrder = pointOrderStyleProp.getValue();
+        // }
+
+
+        if (strokeDasharrayStyleProp.hasValue() && strokeDasharrayStyleProp.getString() !== 'none') {
+          var gaps = toNumbers(strokeDasharrayStyleProp.getString());
+
+          if (typeof ctx.setLineDash !== 'undefined') {
+            ctx.setLineDash(gaps);
+          } else // @ts-expect-error Handle browser prefix.
+            if (typeof ctx.webkitLineDash !== 'undefined') {
+              // @ts-expect-error Handle browser prefix.
+              ctx.webkitLineDash = gaps;
+            } else // @ts-expect-error Handle browser prefix.
+              if (typeof ctx.mozDash !== 'undefined' && !(gaps.length === 1 && gaps[0] === 0)) {
+                // @ts-expect-error Handle browser prefix.
+                ctx.mozDash = gaps;
+              }
+
+          var offset = strokeDashoffsetProp.getPixels();
+
+          if (typeof ctx.lineDashOffset !== 'undefined') {
+            ctx.lineDashOffset = offset;
+          } else // @ts-expect-error Handle browser prefix.
+            if (typeof ctx.webkitLineDashOffset !== 'undefined') {
+              // @ts-expect-error Handle browser prefix.
+              ctx.webkitLineDashOffset = offset;
+            } else // @ts-expect-error Handle browser prefix.
+              if (typeof ctx.mozDashOffset !== 'undefined') {
+                // @ts-expect-error Handle browser prefix.
+                ctx.mozDashOffset = offset;
+              }
+        }
+      } // font
+
+
+      this.modifiedEmSizeStack = false;
+
+      if (typeof ctx.font !== 'undefined') {
+        var fontStyleProp = this.getStyle('font');
+        var fontStyleStyleProp = this.getStyle('font-style');
+        var fontVariantStyleProp = this.getStyle('font-variant');
+        var fontWeightStyleProp = this.getStyle('font-weight');
+        var fontSizeStyleProp = this.getStyle('font-size');
+        var fontFamilyStyleProp = this.getStyle('font-family');
+        var font = new Font(fontStyleStyleProp.getString(), fontVariantStyleProp.getString(), fontWeightStyleProp.getString(), fontSizeStyleProp.hasValue() ? "".concat(fontSizeStyleProp.getPixels(true), "px") : '', fontFamilyStyleProp.getString(), Font.parse(fontStyleProp.getString(), ctx.font));
+        fontStyleStyleProp.setValue(font.fontStyle);
+        fontVariantStyleProp.setValue(font.fontVariant);
+        fontWeightStyleProp.setValue(font.fontWeight);
+        fontSizeStyleProp.setValue(font.fontSize);
+        fontFamilyStyleProp.setValue(font.fontFamily);
+        ctx.font = font.toString();
+
+        if (fontSizeStyleProp.isPixels()) {
+          this.document.emSize = fontSizeStyleProp.getPixels();
+          this.modifiedEmSizeStack = true;
+        }
+      }
+
+      if (!fromMeasure) {
+        // effects
+        this.applyEffects(ctx); // opacity
+
+        ctx.globalAlpha = this.calculateOpacity();
+      }
+    }
+  }, {
+    key: "clearContext",
+    value: function clearContext(ctx) {
+      _get__default['default'](_getPrototypeOf__default['default'](RenderedElement.prototype), "clearContext", this).call(this, ctx);
+
+      if (this.modifiedEmSizeStack) {
+        this.document.popEmSize();
+      }
+    }
+  }]);
+
+  return RenderedElement;
+}(Element);
+
+function _createSuper$G(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$G(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$G() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var PathElement = /*#__PURE__*/function (_RenderedElement) {
+  _inherits__default['default'](PathElement, _RenderedElement);
+
+  var _super = _createSuper$G(PathElement);
+
+  function PathElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default['default'](this, PathElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+    _this.type = 'path';
+    _this.pathParser = null;
+    _this.pathParser = new PathParser(_this.getAttribute('d').getString());
+    return _this;
+  }
+
+  _createClass__default['default'](PathElement, [{
+    key: "path",
+    value: function path(ctx) {
+      var pathParser = this.pathParser;
+      var boundingBox = new BoundingBox();
+      pathParser.reset();
+
+      if (ctx) {
+        ctx.beginPath();
+      }
+
+      while (!pathParser.isEnd()) {
+        switch (pathParser.next().type) {
+          case PathParser.MOVE_TO:
+            this.pathM(ctx, boundingBox);
+            break;
+
+          case PathParser.LINE_TO:
+            this.pathL(ctx, boundingBox);
+            break;
+
+          case PathParser.HORIZ_LINE_TO:
+            this.pathH(ctx, boundingBox);
+            break;
+
+          case PathParser.VERT_LINE_TO:
+            this.pathV(ctx, boundingBox);
+            break;
+
+          case PathParser.CURVE_TO:
+            this.pathC(ctx, boundingBox);
+            break;
+
+          case PathParser.SMOOTH_CURVE_TO:
+            this.pathS(ctx, boundingBox);
+            break;
+
+          case PathParser.QUAD_TO:
+            this.pathQ(ctx, boundingBox);
+            break;
+
+          case PathParser.SMOOTH_QUAD_TO:
+            this.pathT(ctx, boundingBox);
+            break;
+
+          case PathParser.ARC:
+            this.pathA(ctx, boundingBox);
+            break;
+
+          case PathParser.CLOSE_PATH:
+            this.pathZ(ctx, boundingBox);
+            break;
+        }
+      }
+
+      return boundingBox;
+    }
+  }, {
+    key: "getBoundingBox",
+    value: function getBoundingBox(_) {
+      return this.path();
+    }
+  }, {
+    key: "getMarkers",
+    value: function getMarkers() {
+      var pathParser = this.pathParser;
+      var points = pathParser.getMarkerPoints();
+      var angles = pathParser.getMarkerAngles();
+      var markers = points.map(function (point, i) {
+        return [point, angles[i]];
+      });
+      return markers;
+    }
+  }, {
+    key: "renderChildren",
+    value: function renderChildren(ctx) {
+      this.path(ctx);
+      this.document.screen.mouse.checkPath(this, ctx);
+      var fillRuleStyleProp = this.getStyle('fill-rule');
+
+      if (ctx.fillStyle !== '') {
+        if (fillRuleStyleProp.getString('inherit') !== 'inherit') {
+          ctx.fill(fillRuleStyleProp.getString());
+        } else {
+          ctx.fill();
+        }
+      }
+
+      if (ctx.strokeStyle !== '') {
+        if (this.getAttribute('vector-effect').getString() === 'non-scaling-stroke') {
+          ctx.save();
+          ctx.setTransform(1, 0, 0, 1, 0, 0);
+          ctx.stroke();
+          ctx.restore();
+        } else {
+          ctx.stroke();
+        }
+      }
+
+      var markers = this.getMarkers();
+
+      if (markers) {
+        var markersLastIndex = markers.length - 1;
+        var markerStartStyleProp = this.getStyle('marker-start');
+        var markerMidStyleProp = this.getStyle('marker-mid');
+        var markerEndStyleProp = this.getStyle('marker-end');
+
+        if (markerStartStyleProp.isUrlDefinition()) {
+          var marker = markerStartStyleProp.getDefinition();
+
+          var _markers$ = _slicedToArray__default['default'](markers[0], 2),
+              point = _markers$[0],
+              angle = _markers$[1];
+
+          marker.render(ctx, point, angle);
+        }
+
+        if (markerMidStyleProp.isUrlDefinition()) {
+          var _marker = markerMidStyleProp.getDefinition();
+
+          for (var i = 1; i < markersLastIndex; i++) {
+            var _markers$i = _slicedToArray__default['default'](markers[i], 2),
+                _point = _markers$i[0],
+                _angle = _markers$i[1];
+
+            _marker.render(ctx, _point, _angle);
+          }
+        }
+
+        if (markerEndStyleProp.isUrlDefinition()) {
+          var _marker2 = markerEndStyleProp.getDefinition();
+
+          var _markers$markersLastI = _slicedToArray__default['default'](markers[markersLastIndex], 2),
+              _point2 = _markers$markersLastI[0],
+              _angle2 = _markers$markersLastI[1];
+
+          _marker2.render(ctx, _point2, _angle2);
+        }
+      }
+    }
+  }, {
+    key: "pathM",
+    value: function pathM(ctx, boundingBox) {
+      var pathParser = this.pathParser;
+
+      var _PathElement$pathM = PathElement.pathM(pathParser),
+          point = _PathElement$pathM.point;
+
+      var x = point.x,
+          y = point.y;
+      pathParser.addMarker(point);
+      boundingBox.addPoint(x, y);
+
+      if (ctx) {
+        ctx.moveTo(x, y);
+      }
+    }
+  }, {
+    key: "pathL",
+    value: function pathL(ctx, boundingBox) {
+      var pathParser = this.pathParser;
+
+      var _PathElement$pathL = PathElement.pathL(pathParser),
+          current = _PathElement$pathL.current,
+          point = _PathElement$pathL.point;
+
+      var x = point.x,
+          y = point.y;
+      pathParser.addMarker(point, current);
+      boundingBox.addPoint(x, y);
+
+      if (ctx) {
+        ctx.lineTo(x, y);
+      }
+    }
+  }, {
+    key: "pathH",
+    value: function pathH(ctx, boundingBox) {
+      var pathParser = this.pathParser;
+
+      var _PathElement$pathH = PathElement.pathH(pathParser),
+          current = _PathElement$pathH.current,
+          point = _PathElement$pathH.point;
+
+      var x = point.x,
+          y = point.y;
+      pathParser.addMarker(point, current);
+      boundingBox.addPoint(x, y);
+
+      if (ctx) {
+        ctx.lineTo(x, y);
+      }
+    }
+  }, {
+    key: "pathV",
+    value: function pathV(ctx, boundingBox) {
+      var pathParser = this.pathParser;
+
+      var _PathElement$pathV = PathElement.pathV(pathParser),
+          current = _PathElement$pathV.current,
+          point = _PathElement$pathV.point;
+
+      var x = point.x,
+          y = point.y;
+      pathParser.addMarker(point, current);
+      boundingBox.addPoint(x, y);
+
+      if (ctx) {
+        ctx.lineTo(x, y);
+      }
+    }
+  }, {
+    key: "pathC",
+    value: function pathC(ctx, boundingBox) {
+      var pathParser = this.pathParser;
+
+      var _PathElement$pathC = PathElement.pathC(pathParser),
+          current = _PathElement$pathC.current,
+          point = _PathElement$pathC.point,
+          controlPoint = _PathElement$pathC.controlPoint,
+          currentPoint = _PathElement$pathC.currentPoint;
+
+      pathParser.addMarker(currentPoint, controlPoint, point);
+      boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+
+      if (ctx) {
+        ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+      }
+    }
+  }, {
+    key: "pathS",
+    value: function pathS(ctx, boundingBox) {
+      var pathParser = this.pathParser;
+
+      var _PathElement$pathS = PathElement.pathS(pathParser),
+          current = _PathElement$pathS.current,
+          point = _PathElement$pathS.point,
+          controlPoint = _PathElement$pathS.controlPoint,
+          currentPoint = _PathElement$pathS.currentPoint;
+
+      pathParser.addMarker(currentPoint, controlPoint, point);
+      boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+
+      if (ctx) {
+        ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+      }
+    }
+  }, {
+    key: "pathQ",
+    value: function pathQ(ctx, boundingBox) {
+      var pathParser = this.pathParser;
+
+      var _PathElement$pathQ = PathElement.pathQ(pathParser),
+          current = _PathElement$pathQ.current,
+          controlPoint = _PathElement$pathQ.controlPoint,
+          currentPoint = _PathElement$pathQ.currentPoint;
+
+      pathParser.addMarker(currentPoint, controlPoint, controlPoint);
+      boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+
+      if (ctx) {
+        ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+      }
+    }
+  }, {
+    key: "pathT",
+    value: function pathT(ctx, boundingBox) {
+      var pathParser = this.pathParser;
+
+      var _PathElement$pathT = PathElement.pathT(pathParser),
+          current = _PathElement$pathT.current,
+          controlPoint = _PathElement$pathT.controlPoint,
+          currentPoint = _PathElement$pathT.currentPoint;
+
+      pathParser.addMarker(currentPoint, controlPoint, controlPoint);
+      boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+
+      if (ctx) {
+        ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+      }
+    }
+  }, {
+    key: "pathA",
+    value: function pathA(ctx, boundingBox) {
+      var pathParser = this.pathParser;
+
+      var _PathElement$pathA = PathElement.pathA(pathParser),
+          currentPoint = _PathElement$pathA.currentPoint,
+          rX = _PathElement$pathA.rX,
+          rY = _PathElement$pathA.rY,
+          sweepFlag = _PathElement$pathA.sweepFlag,
+          xAxisRotation = _PathElement$pathA.xAxisRotation,
+          centp = _PathElement$pathA.centp,
+          a1 = _PathElement$pathA.a1,
+          ad = _PathElement$pathA.ad; // for markers
+
+
+      var dir = 1 - sweepFlag ? 1.0 : -1.0;
+      var ah = a1 + dir * (ad / 2.0);
+      var halfWay = new Point(centp.x + rX * Math.cos(ah), centp.y + rY * Math.sin(ah));
+      pathParser.addMarkerAngle(halfWay, ah - dir * Math.PI / 2);
+      pathParser.addMarkerAngle(currentPoint, ah - dir * Math.PI);
+      boundingBox.addPoint(currentPoint.x, currentPoint.y); // TODO: this is too naive, make it better
+
+      if (ctx && !isNaN(a1) && !isNaN(ad)) {
+        var r = rX > rY ? rX : rY;
+        var sx = rX > rY ? 1 : rX / rY;
+        var sy = rX > rY ? rY / rX : 1;
+        ctx.translate(centp.x, centp.y);
+        ctx.rotate(xAxisRotation);
+        ctx.scale(sx, sy);
+        ctx.arc(0, 0, r, a1, a1 + ad, Boolean(1 - sweepFlag));
+        ctx.scale(1 / sx, 1 / sy);
+        ctx.rotate(-xAxisRotation);
+        ctx.translate(-centp.x, -centp.y);
+      }
+    }
+  }, {
+    key: "pathZ",
+    value: function pathZ(ctx, boundingBox) {
+      PathElement.pathZ(this.pathParser);
+
+      if (ctx) {
+        // only close path if it is not a straight line
+        if (boundingBox.x1 !== boundingBox.x2 && boundingBox.y1 !== boundingBox.y2) {
+          ctx.closePath();
+        }
+      }
+    }
+  }], [{
+    key: "pathM",
+    value: function pathM(pathParser) {
+      var point = pathParser.getAsCurrentPoint();
+      pathParser.start = pathParser.current;
+      return {
+        point: point
+      };
+    }
+  }, {
+    key: "pathL",
+    value: function pathL(pathParser) {
+      var current = pathParser.current;
+      var point = pathParser.getAsCurrentPoint();
+      return {
+        current: current,
+        point: point
+      };
+    }
+  }, {
+    key: "pathH",
+    value: function pathH(pathParser) {
+      var current = pathParser.current,
+          command = pathParser.command;
+      var point = new Point((command.relative ? current.x : 0) + command.x, current.y);
+      pathParser.current = point;
+      return {
+        current: current,
+        point: point
+      };
+    }
+  }, {
+    key: "pathV",
+    value: function pathV(pathParser) {
+      var current = pathParser.current,
+          command = pathParser.command;
+      var point = new Point(current.x, (command.relative ? current.y : 0) + command.y);
+      pathParser.current = point;
+      return {
+        current: current,
+        point: point
+      };
+    }
+  }, {
+    key: "pathC",
+    value: function pathC(pathParser) {
+      var current = pathParser.current;
+      var point = pathParser.getPoint('x1', 'y1');
+      var controlPoint = pathParser.getAsControlPoint('x2', 'y2');
+      var currentPoint = pathParser.getAsCurrentPoint();
+      return {
+        current: current,
+        point: point,
+        controlPoint: controlPoint,
+        currentPoint: currentPoint
+      };
+    }
+  }, {
+    key: "pathS",
+    value: function pathS(pathParser) {
+      var current = pathParser.current;
+      var point = pathParser.getReflectedControlPoint();
+      var controlPoint = pathParser.getAsControlPoint('x2', 'y2');
+      var currentPoint = pathParser.getAsCurrentPoint();
+      return {
+        current: current,
+        point: point,
+        controlPoint: controlPoint,
+        currentPoint: currentPoint
+      };
+    }
+  }, {
+    key: "pathQ",
+    value: function pathQ(pathParser) {
+      var current = pathParser.current;
+      var controlPoint = pathParser.getAsControlPoint('x1', 'y1');
+      var currentPoint = pathParser.getAsCurrentPoint();
+      return {
+        current: current,
+        controlPoint: controlPoint,
+        currentPoint: currentPoint
+      };
+    }
+  }, {
+    key: "pathT",
+    value: function pathT(pathParser) {
+      var current = pathParser.current;
+      var controlPoint = pathParser.getReflectedControlPoint();
+      pathParser.control = controlPoint;
+      var currentPoint = pathParser.getAsCurrentPoint();
+      return {
+        current: current,
+        controlPoint: controlPoint,
+        currentPoint: currentPoint
+      };
+    }
+  }, {
+    key: "pathA",
+    value: function pathA(pathParser) {
+      var current = pathParser.current,
+          command = pathParser.command;
+      var rX = command.rX,
+          rY = command.rY,
+          xRot = command.xRot,
+          lArcFlag = command.lArcFlag,
+          sweepFlag = command.sweepFlag;
+      var xAxisRotation = xRot * (Math.PI / 180.0);
+      var currentPoint = pathParser.getAsCurrentPoint(); // Conversion from endpoint to center parameterization
+      // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes
+      // x1', y1'
+
+      var currp = new Point(Math.cos(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.sin(xAxisRotation) * (current.y - currentPoint.y) / 2.0, -Math.sin(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * (current.y - currentPoint.y) / 2.0); // adjust radii
+
+      var l = Math.pow(currp.x, 2) / Math.pow(rX, 2) + Math.pow(currp.y, 2) / Math.pow(rY, 2);
+
+      if (l > 1) {
+        rX *= Math.sqrt(l);
+        rY *= Math.sqrt(l);
+      } // cx', cy'
+
+
+      var s = (lArcFlag === sweepFlag ? -1 : 1) * Math.sqrt((Math.pow(rX, 2) * Math.pow(rY, 2) - Math.pow(rX, 2) * Math.pow(currp.y, 2) - Math.pow(rY, 2) * Math.pow(currp.x, 2)) / (Math.pow(rX, 2) * Math.pow(currp.y, 2) + Math.pow(rY, 2) * Math.pow(currp.x, 2)));
+
+      if (isNaN(s)) {
+        s = 0;
+      }
+
+      var cpp = new Point(s * rX * currp.y / rY, s * -rY * currp.x / rX); // cx, cy
+
+      var centp = new Point((current.x + currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * cpp.x - Math.sin(xAxisRotation) * cpp.y, (current.y + currentPoint.y) / 2.0 + Math.sin(xAxisRotation) * cpp.x + Math.cos(xAxisRotation) * cpp.y); // initial angle
+
+      var a1 = vectorsAngle([1, 0], [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY]); // θ1
+      // angle delta
+
+      var u = [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY];
+      var v = [(-currp.x - cpp.x) / rX, (-currp.y - cpp.y) / rY];
+      var ad = vectorsAngle(u, v); // Δθ
+
+      if (vectorsRatio(u, v) <= -1) {
+        ad = Math.PI;
+      }
+
+      if (vectorsRatio(u, v) >= 1) {
+        ad = 0;
+      }
+
+      return {
+        currentPoint: currentPoint,
+        rX: rX,
+        rY: rY,
+        sweepFlag: sweepFlag,
+        xAxisRotation: xAxisRotation,
+        centp: centp,
+        a1: a1,
+        ad: ad
+      };
+    }
+  }, {
+    key: "pathZ",
+    value: function pathZ(pathParser) {
+      pathParser.current = pathParser.start;
+    }
+  }]);
+
+  return PathElement;
+}(RenderedElement);
+
+function _createSuper$F(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$F(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$F() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var GlyphElement = /*#__PURE__*/function (_PathElement) {
+  _inherits__default['default'](GlyphElement, _PathElement);
+
+  var _super = _createSuper$F(GlyphElement);
+
+  function GlyphElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default['default'](this, GlyphElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+    _this.type = 'glyph';
+    _this.horizAdvX = _this.getAttribute('horiz-adv-x').getNumber();
+    _this.unicode = _this.getAttribute('unicode').getString();
+    _this.arabicForm = _this.getAttribute('arabic-form').getString();
+    return _this;
+  }
+
+  return GlyphElement;
+}(PathElement);
+
+function _createSuper$E(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$E(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$E() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var TextElement = /*#__PURE__*/function (_RenderedElement) {
+  _inherits__default['default'](TextElement, _RenderedElement);
+
+  var _super = _createSuper$E(TextElement);
+
+  function TextElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default['default'](this, TextElement);
+
+    _this = _super.call(this, document, node, (this instanceof TextElement ? this.constructor : void 0) === TextElement ? true : captureTextNodes);
+    _this.type = 'text';
+    _this.x = 0;
+    _this.y = 0;
+    _this.measureCache = -1;
+    return _this;
+  }
+
+  _createClass__default['default'](TextElement, [{
+    key: "setContext",
+    value: function setContext(ctx) {
+      var fromMeasure = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+
+      _get__default['default'](_getPrototypeOf__default['default'](TextElement.prototype), "setContext", this).call(this, ctx, fromMeasure);
+
+      var textBaseline = this.getStyle('dominant-baseline').getTextBaseline() || this.getStyle('alignment-baseline').getTextBaseline();
+
+      if (textBaseline) {
+        ctx.textBaseline = textBaseline;
+      }
+    }
+  }, {
+    key: "initializeCoordinates",
+    value: function initializeCoordinates(ctx) {
+      this.x = this.getAttribute('x').getPixels('x');
+      this.y = this.getAttribute('y').getPixels('y');
+      var dxAttr = this.getAttribute('dx');
+      var dyAttr = this.getAttribute('dy');
+
+      if (dxAttr.hasValue()) {
+        this.x += dxAttr.getPixels('x');
+      }
+
+      if (dyAttr.hasValue()) {
+        this.y += dyAttr.getPixels('y');
+      }
+
+      this.x += this.getAnchorDelta(ctx, this, 0);
+    }
+  }, {
+    key: "getBoundingBox",
+    value: function getBoundingBox(ctx) {
+      var _this2 = this;
+
+      if (this.type !== 'text') {
+        return this.getTElementBoundingBox(ctx);
+      }
+
+      this.initializeCoordinates(ctx);
+      var boundingBox = null;
+      this.children.forEach(function (_, i) {
+        var childBoundingBox = _this2.getChildBoundingBox(ctx, _this2, _this2, i);
+
+        if (!boundingBox) {
+          boundingBox = childBoundingBox;
+        } else {
+          boundingBox.addBoundingBox(childBoundingBox);
+        }
+      });
+      return boundingBox;
+    }
+  }, {
+    key: "getFontSize",
+    value: function getFontSize() {
+      var document = this.document,
+          parent = this.parent;
+      var inheritFontSize = Font.parse(document.ctx.font).fontSize;
+      var fontSize = parent.getStyle('font-size').getNumber(inheritFontSize);
+      return fontSize;
+    }
+  }, {
+    key: "getTElementBoundingBox",
+    value: function getTElementBoundingBox(ctx) {
+      var fontSize = this.getFontSize();
+      return new BoundingBox(this.x, this.y - fontSize, this.x + this.measureText(ctx), this.y);
+    }
+  }, {
+    key: "getGlyph",
+    value: function getGlyph(font, text, i) {
+      var char = text[i];
+      var glyph = null;
+
+      if (font.isArabic) {
+        var len = text.length;
+        var prevChar = text[i - 1];
+        var nextChar = text[i + 1];
+        var arabicForm = 'isolated';
+
+        if ((i === 0 || prevChar === ' ') && i < len - 2 && nextChar !== ' ') {
+          arabicForm = 'terminal';
+        }
+
+        if (i > 0 && prevChar !== ' ' && i < len - 2 && nextChar !== ' ') {
+          arabicForm = 'medial';
+        }
+
+        if (i > 0 && prevChar !== ' ' && (i === len - 1 || nextChar === ' ')) {
+          arabicForm = 'initial';
+        }
+
+        if (typeof font.glyphs[char] !== 'undefined') {
+          // NEED TEST
+          var maybeGlyph = font.glyphs[char];
+          glyph = maybeGlyph instanceof GlyphElement ? maybeGlyph : maybeGlyph[arabicForm];
+        }
+      } else {
+        glyph = font.glyphs[char];
+      }
+
+      if (!glyph) {
+        glyph = font.missingGlyph;
+      }
+
+      return glyph;
+    }
+  }, {
+    key: "getText",
+    value: function getText() {
+      return '';
+    }
+  }, {
+    key: "getTextFromNode",
+    value: function getTextFromNode(node) {
+      var textNode = node || this.node;
+      var childNodes = Array.from(textNode.parentNode.childNodes);
+      var index = childNodes.indexOf(textNode);
+      var lastIndex = childNodes.length - 1;
+      var text = compressSpaces( // textNode.value
+      // || textNode.text
+      textNode.textContent || '');
+
+      if (index === 0) {
+        text = trimLeft(text);
+      }
+
+      if (index === lastIndex) {
+        text = trimRight(text);
+      }
+
+      return text;
+    }
+  }, {
+    key: "renderChildren",
+    value: function renderChildren(ctx) {
+      var _this3 = this;
+
+      if (this.type !== 'text') {
+        this.renderTElementChildren(ctx);
+        return;
+      }
+
+      this.initializeCoordinates(ctx);
+      this.children.forEach(function (_, i) {
+        _this3.renderChild(ctx, _this3, _this3, i);
+      });
+      var mouse = this.document.screen.mouse; // Do not calc bounding box if mouse is not working.
+
+      if (mouse.isWorking()) {
+        mouse.checkBoundingBox(this, this.getBoundingBox(ctx));
+      }
+    }
+  }, {
+    key: "renderTElementChildren",
+    value: function renderTElementChildren(ctx) {
+      var document = this.document,
+          parent = this.parent;
+      var renderText = this.getText();
+      var customFont = parent.getStyle('font-family').getDefinition();
+
+      if (customFont) {
+        var unitsPerEm = customFont.fontFace.unitsPerEm;
+        var ctxFont = Font.parse(document.ctx.font);
+        var fontSize = parent.getStyle('font-size').getNumber(ctxFont.fontSize);
+        var fontStyle = parent.getStyle('font-style').getString(ctxFont.fontStyle);
+        var scale = fontSize / unitsPerEm;
+        var text = customFont.isRTL ? renderText.split('').reverse().join('') : renderText;
+        var dx = toNumbers(parent.getAttribute('dx').getString());
+        var len = text.length;
+
+        for (var i = 0; i < len; i++) {
+          var glyph = this.getGlyph(customFont, text, i);
+          ctx.translate(this.x, this.y);
+          ctx.scale(scale, -scale);
+          var lw = ctx.lineWidth;
+          ctx.lineWidth = ctx.lineWidth * unitsPerEm / fontSize;
+
+          if (fontStyle === 'italic') {
+            ctx.transform(1, 0, .4, 1, 0, 0);
+          }
+
+          glyph.render(ctx);
+
+          if (fontStyle === 'italic') {
+            ctx.transform(1, 0, -.4, 1, 0, 0);
+          }
+
+          ctx.lineWidth = lw;
+          ctx.scale(1 / scale, -1 / scale);
+          ctx.translate(-this.x, -this.y);
+          this.x += fontSize * (glyph.horizAdvX || customFont.horizAdvX) / unitsPerEm;
+
+          if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {
+            this.x += dx[i];
+          }
+        }
+
+        return;
+      }
+
+      var x = this.x,
+          y = this.y; // NEED TEST
+      // if (ctx.paintOrder === 'stroke') {
+      // 	if (ctx.strokeStyle) {
+      // 		ctx.strokeText(renderText, x, y);
+      // 	}
+      // 	if (ctx.fillStyle) {
+      // 		ctx.fillText(renderText, x, y);
+      // 	}
+      // } else {
+
+      if (ctx.fillStyle) {
+        ctx.fillText(renderText, x, y);
+      }
+
+      if (ctx.strokeStyle) {
+        ctx.strokeText(renderText, x, y);
+      } // }
+
+    }
+  }, {
+    key: "getAnchorDelta",
+    value: function getAnchorDelta(ctx, parent, startI) {
+      var textAnchor = this.getStyle('text-anchor').getString('start');
+
+      if (textAnchor !== 'start') {
+        var children = parent.children;
+        var len = children.length;
+        var child = null;
+        var width = 0;
+
+        for (var i = startI; i < len; i++) {
+          child = children[i];
+
+          if (i > startI && child.getAttribute('x').hasValue() || child.getAttribute('text-anchor').hasValue()) {
+            break; // new group
+          }
+
+          width += child.measureTextRecursive(ctx);
+        }
+
+        return -1 * (textAnchor === 'end' ? width : width / 2.0);
+      }
+
+      return 0;
+    }
+  }, {
+    key: "adjustChildCoordinates",
+    value: function adjustChildCoordinates(ctx, textParent, parent, i) {
+      var child = parent.children[i];
+
+      if (typeof child.measureText !== 'function') {
+        return child;
+      }
+
+      ctx.save();
+      child.setContext(ctx, true);
+      var xAttr = child.getAttribute('x');
+      var yAttr = child.getAttribute('y');
+      var dxAttr = child.getAttribute('dx');
+      var dyAttr = child.getAttribute('dy');
+      var textAnchor = child.getAttribute('text-anchor').getString('start');
+
+      if (i === 0 && child.type !== 'textNode') {
+        if (!xAttr.hasValue()) {
+          xAttr.setValue(textParent.getAttribute('x').getValue('0'));
+        }
+
+        if (!yAttr.hasValue()) {
+          yAttr.setValue(textParent.getAttribute('y').getValue('0'));
+        }
+
+        if (!dxAttr.hasValue()) {
+          dxAttr.setValue(textParent.getAttribute('dx').getValue('0'));
+        }
+
+        if (!dyAttr.hasValue()) {
+          dyAttr.setValue(textParent.getAttribute('dy').getValue('0'));
+        }
+      }
+
+      if (xAttr.hasValue()) {
+        child.x = xAttr.getPixels('x') + textParent.getAnchorDelta(ctx, parent, i);
+
+        if (textAnchor !== 'start') {
+          var width = child.measureTextRecursive(ctx);
+          child.x += -1 * (textAnchor === 'end' ? width : width / 2.0);
+        }
+
+        if (dxAttr.hasValue()) {
+          child.x += dxAttr.getPixels('x');
+        }
+      } else {
+        if (textAnchor !== 'start') {
+          var _width = child.measureTextRecursive(ctx);
+
+          textParent.x += -1 * (textAnchor === 'end' ? _width : _width / 2.0);
+        }
+
+        if (dxAttr.hasValue()) {
+          textParent.x += dxAttr.getPixels('x');
+        }
+
+        child.x = textParent.x;
+      }
+
+      textParent.x = child.x + child.measureText(ctx);
+
+      if (yAttr.hasValue()) {
+        child.y = yAttr.getPixels('y');
+
+        if (dyAttr.hasValue()) {
+          child.y += dyAttr.getPixels('y');
+        }
+      } else {
+        if (dyAttr.hasValue()) {
+          textParent.y += dyAttr.getPixels('y');
+        }
+
+        child.y = textParent.y;
+      }
+
+      textParent.y = child.y;
+      child.clearContext(ctx);
+      ctx.restore();
+      return child;
+    }
+  }, {
+    key: "getChildBoundingBox",
+    value: function getChildBoundingBox(ctx, textParent, parent, i) {
+      var child = this.adjustChildCoordinates(ctx, textParent, parent, i); // not a text node?
+
+      if (typeof child.getBoundingBox !== 'function') {
+        return null;
+      }
+
+      var boundingBox = child.getBoundingBox(ctx);
+
+      if (!boundingBox) {
+        return null;
+      }
+
+      child.children.forEach(function (_, i) {
+        var childBoundingBox = textParent.getChildBoundingBox(ctx, textParent, child, i);
+        boundingBox.addBoundingBox(childBoundingBox);
+      });
+      return boundingBox;
+    }
+  }, {
+    key: "renderChild",
+    value: function renderChild(ctx, textParent, parent, i) {
+      var child = this.adjustChildCoordinates(ctx, textParent, parent, i);
+      child.render(ctx);
+      child.children.forEach(function (_, i) {
+        textParent.renderChild(ctx, textParent, child, i);
+      });
+    }
+  }, {
+    key: "measureTextRecursive",
+    value: function measureTextRecursive(ctx) {
+      var width = this.children.reduce(function (width, child) {
+        return width + child.measureTextRecursive(ctx);
+      }, this.measureText(ctx));
+      return width;
+    }
+  }, {
+    key: "measureText",
+    value: function measureText(ctx) {
+      var measureCache = this.measureCache;
+
+      if (~measureCache) {
+        return measureCache;
+      }
+
+      var renderText = this.getText();
+      var measure = this.measureTargetText(ctx, renderText);
+      this.measureCache = measure;
+      return measure;
+    }
+  }, {
+    key: "measureTargetText",
+    value: function measureTargetText(ctx, targetText) {
+      if (!targetText.length) {
+        return 0;
+      }
+
+      var parent = this.parent;
+      var customFont = parent.getStyle('font-family').getDefinition();
+
+      if (customFont) {
+        var fontSize = this.getFontSize();
+        var text = customFont.isRTL ? targetText.split('').reverse().join('') : targetText;
+        var dx = toNumbers(parent.getAttribute('dx').getString());
+        var len = text.length;
+        var _measure = 0;
+
+        for (var i = 0; i < len; i++) {
+          var glyph = this.getGlyph(customFont, text, i);
+          _measure += (glyph.horizAdvX || customFont.horizAdvX) * fontSize / customFont.fontFace.unitsPerEm;
+
+          if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {
+            _measure += dx[i];
+          }
+        }
+
+        return _measure;
+      }
+
+      if (!ctx.measureText) {
+        return targetText.length * 10;
+      }
+
+      ctx.save();
+      this.setContext(ctx, true);
+
+      var _ctx$measureText = ctx.measureText(targetText),
+          measure = _ctx$measureText.width;
+
+      this.clearContext(ctx);
+      ctx.restore();
+      return measure;
+    }
+  }]);
+
+  return TextElement;
+}(RenderedElement);
+
+function _createSuper$D(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$D(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$D() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var TSpanElement = /*#__PURE__*/function (_TextElement) {
+  _inherits__default['default'](TSpanElement, _TextElement);
+
+  var _super = _createSuper$D(TSpanElement);
+
+  function TSpanElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default['default'](this, TSpanElement);
+
+    _this = _super.call(this, document, node, (this instanceof TSpanElement ? this.constructor : void 0) === TSpanElement ? true : captureTextNodes);
+    _this.type = 'tspan'; // if this node has children, then they own the text
+
+    _this.text = _this.children.length > 0 ? '' : _this.getTextFromNode();
+    return _this;
+  }
+
+  _createClass__default['default'](TSpanElement, [{
+    key: "getText",
+    value: function getText() {
+      return this.text;
+    }
+  }]);
+
+  return TSpanElement;
+}(TextElement);
+
+function _createSuper$C(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$C(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$C() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var TextNode = /*#__PURE__*/function (_TSpanElement) {
+  _inherits__default['default'](TextNode, _TSpanElement);
+
+  var _super = _createSuper$C(TextNode);
+
+  function TextNode() {
+    var _this;
+
+    _classCallCheck__default['default'](this, TextNode);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'textNode';
+    return _this;
+  }
+
+  return TextNode;
+}(TSpanElement);
+
+function _createSuper$B(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$B(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$B() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var SVGElement = /*#__PURE__*/function (_RenderedElement) {
+  _inherits__default['default'](SVGElement, _RenderedElement);
+
+  var _super = _createSuper$B(SVGElement);
+
+  function SVGElement() {
+    var _this;
+
+    _classCallCheck__default['default'](this, SVGElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'svg';
+    _this.root = false;
+    return _this;
+  }
+
+  _createClass__default['default'](SVGElement, [{
+    key: "setContext",
+    value: function setContext(ctx) {
+      var _this$node$parentNode;
+
+      var document = this.document;
+      var screen = document.screen,
+          window = document.window;
+      var canvas = ctx.canvas;
+      screen.setDefaults(ctx);
+
+      if (canvas.style && typeof ctx.font !== 'undefined' && window && typeof window.getComputedStyle !== 'undefined') {
+        ctx.font = window.getComputedStyle(canvas).getPropertyValue('font');
+        var fontSizeProp = new Property(document, 'fontSize', Font.parse(ctx.font).fontSize);
+
+        if (fontSizeProp.hasValue()) {
+          document.rootEmSize = fontSizeProp.getPixels('y');
+          document.emSize = document.rootEmSize;
+        }
+      } // create new view port
+
+
+      if (!this.getAttribute('x').hasValue()) {
+        this.getAttribute('x', true).setValue(0);
+      }
+
+      if (!this.getAttribute('y').hasValue()) {
+        this.getAttribute('y', true).setValue(0);
+      }
+
+      var _screen$viewPort = screen.viewPort,
+          width = _screen$viewPort.width,
+          height = _screen$viewPort.height;
+
+      if (!this.getStyle('width').hasValue()) {
+        this.getStyle('width', true).setValue('100%');
+      }
+
+      if (!this.getStyle('height').hasValue()) {
+        this.getStyle('height', true).setValue('100%');
+      }
+
+      if (!this.getStyle('color').hasValue()) {
+        this.getStyle('color', true).setValue('black');
+      }
+
+      var refXAttr = this.getAttribute('refX');
+      var refYAttr = this.getAttribute('refY');
+      var viewBoxAttr = this.getAttribute('viewBox');
+      var viewBox = viewBoxAttr.hasValue() ? toNumbers(viewBoxAttr.getString()) : null;
+      var clip = !this.root && this.getStyle('overflow').getValue('hidden') !== 'visible';
+      var minX = 0;
+      var minY = 0;
+      var clipX = 0;
+      var clipY = 0;
+
+      if (viewBox) {
+        minX = viewBox[0];
+        minY = viewBox[1];
+      }
+
+      if (!this.root) {
+        width = this.getStyle('width').getPixels('x');
+        height = this.getStyle('height').getPixels('y');
+
+        if (this.type === 'marker') {
+          clipX = minX;
+          clipY = minY;
+          minX = 0;
+          minY = 0;
+        }
+      }
+
+      screen.viewPort.setCurrent(width, height); // Default value of transform-origin is center only for root SVG elements
+      // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/transform-origin
+
+      if (this.node // is not temporary SVGElement
+      && (!this.parent || ((_this$node$parentNode = this.node.parentNode) === null || _this$node$parentNode === void 0 ? void 0 : _this$node$parentNode.nodeName) === 'foreignObject') && this.getStyle('transform', false, true).hasValue() && !this.getStyle('transform-origin', false, true).hasValue()) {
+        this.getStyle('transform-origin', true, true).setValue('50% 50%');
+      }
+
+      _get__default['default'](_getPrototypeOf__default['default'](SVGElement.prototype), "setContext", this).call(this, ctx);
+
+      ctx.translate(this.getAttribute('x').getPixels('x'), this.getAttribute('y').getPixels('y'));
+
+      if (viewBox) {
+        width = viewBox[2];
+        height = viewBox[3];
+      }
+
+      document.setViewBox({
+        ctx: ctx,
+        aspectRatio: this.getAttribute('preserveAspectRatio').getString(),
+        width: screen.viewPort.width,
+        desiredWidth: width,
+        height: screen.viewPort.height,
+        desiredHeight: height,
+        minX: minX,
+        minY: minY,
+        refX: refXAttr.getValue(),
+        refY: refYAttr.getValue(),
+        clip: clip,
+        clipX: clipX,
+        clipY: clipY
+      });
+
+      if (viewBox) {
+        screen.viewPort.removeCurrent();
+        screen.viewPort.setCurrent(width, height);
+      }
+    }
+  }, {
+    key: "clearContext",
+    value: function clearContext(ctx) {
+      _get__default['default'](_getPrototypeOf__default['default'](SVGElement.prototype), "clearContext", this).call(this, ctx);
+
+      this.document.screen.viewPort.removeCurrent();
+    }
+    /**
+     * Resize SVG to fit in given size.
+     * @param width
+     * @param height
+     * @param preserveAspectRatio
+     */
+
+  }, {
+    key: "resize",
+    value: function resize(width) {
+      var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : width;
+      var preserveAspectRatio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
+      var widthAttr = this.getAttribute('width', true);
+      var heightAttr = this.getAttribute('height', true);
+      var viewBoxAttr = this.getAttribute('viewBox');
+      var styleAttr = this.getAttribute('style');
+      var originWidth = widthAttr.getNumber(0);
+      var originHeight = heightAttr.getNumber(0);
+
+      if (preserveAspectRatio) {
+        if (typeof preserveAspectRatio === 'string') {
+          this.getAttribute('preserveAspectRatio', true).setValue(preserveAspectRatio);
+        } else {
+          var preserveAspectRatioAttr = this.getAttribute('preserveAspectRatio');
+
+          if (preserveAspectRatioAttr.hasValue()) {
+            preserveAspectRatioAttr.setValue(preserveAspectRatioAttr.getString().replace(/^\s*(\S.*\S)\s*$/, '$1'));
+          }
+        }
+      }
+
+      widthAttr.setValue(width);
+      heightAttr.setValue(height);
+
+      if (!viewBoxAttr.hasValue()) {
+        viewBoxAttr.setValue("0 0 ".concat(originWidth || width, " ").concat(originHeight || height));
+      }
+
+      if (styleAttr.hasValue()) {
+        var widthStyle = this.getStyle('width');
+        var heightStyle = this.getStyle('height');
+
+        if (widthStyle.hasValue()) {
+          widthStyle.setValue("".concat(width, "px"));
+        }
+
+        if (heightStyle.hasValue()) {
+          heightStyle.setValue("".concat(height, "px"));
+        }
+      }
+    }
+  }]);
+
+  return SVGElement;
+}(RenderedElement);
+
+function _createSuper$A(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$A(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$A() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var RectElement = /*#__PURE__*/function (_PathElement) {
+  _inherits__default['default'](RectElement, _PathElement);
+
+  var _super = _createSuper$A(RectElement);
+
+  function RectElement() {
+    var _this;
+
+    _classCallCheck__default['default'](this, RectElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'rect';
+    return _this;
+  }
+
+  _createClass__default['default'](RectElement, [{
+    key: "path",
+    value: function path(ctx) {
+      var x = this.getAttribute('x').getPixels('x');
+      var y = this.getAttribute('y').getPixels('y');
+      var width = this.getStyle('width', false, true).getPixels('x');
+      var height = this.getStyle('height', false, true).getPixels('y');
+      var rxAttr = this.getAttribute('rx');
+      var ryAttr = this.getAttribute('ry');
+      var rx = rxAttr.getPixels('x');
+      var ry = ryAttr.getPixels('y');
+
+      if (rxAttr.hasValue() && !ryAttr.hasValue()) {
+        ry = rx;
+      }
+
+      if (ryAttr.hasValue() && !rxAttr.hasValue()) {
+        rx = ry;
+      }
+
+      rx = Math.min(rx, width / 2.0);
+      ry = Math.min(ry, height / 2.0);
+
+      if (ctx) {
+        var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);
+        ctx.beginPath(); // always start the path so we don't fill prior paths
+
+        if (height > 0 && width > 0) {
+          ctx.moveTo(x + rx, y);
+          ctx.lineTo(x + width - rx, y);
+          ctx.bezierCurveTo(x + width - rx + KAPPA * rx, y, x + width, y + ry - KAPPA * ry, x + width, y + ry);
+          ctx.lineTo(x + width, y + height - ry);
+          ctx.bezierCurveTo(x + width, y + height - ry + KAPPA * ry, x + width - rx + KAPPA * rx, y + height, x + width - rx, y + height);
+          ctx.lineTo(x + rx, y + height);
+          ctx.bezierCurveTo(x + rx - KAPPA * rx, y + height, x, y + height - ry + KAPPA * ry, x, y + height - ry);
+          ctx.lineTo(x, y + ry);
+          ctx.bezierCurveTo(x, y + ry - KAPPA * ry, x + rx - KAPPA * rx, y, x + rx, y);
+          ctx.closePath();
+        }
+      }
+
+      return new BoundingBox(x, y, x + width, y + height);
+    }
+  }, {
+    key: "getMarkers",
+    value: function getMarkers() {
+      return null;
+    }
+  }]);
+
+  return RectElement;
+}(PathElement);
+
+function _createSuper$z(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$z(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$z() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var CircleElement = /*#__PURE__*/function (_PathElement) {
+  _inherits__default['default'](CircleElement, _PathElement);
+
+  var _super = _createSuper$z(CircleElement);
+
+  function CircleElement() {
+    var _this;
+
+    _classCallCheck__default['default'](this, CircleElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'circle';
+    return _this;
+  }
+
+  _createClass__default['default'](CircleElement, [{
+    key: "path",
+    value: function path(ctx) {
+      var cx = this.getAttribute('cx').getPixels('x');
+      var cy = this.getAttribute('cy').getPixels('y');
+      var r = this.getAttribute('r').getPixels();
+
+      if (ctx && r > 0) {
+        ctx.beginPath();
+        ctx.arc(cx, cy, r, 0, Math.PI * 2, false);
+        ctx.closePath();
+      }
+
+      return new BoundingBox(cx - r, cy - r, cx + r, cy + r);
+    }
+  }, {
+    key: "getMarkers",
+    value: function getMarkers() {
+      return null;
+    }
+  }]);
+
+  return CircleElement;
+}(PathElement);
+
+function _createSuper$y(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$y(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$y() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var EllipseElement = /*#__PURE__*/function (_PathElement) {
+  _inherits__default['default'](EllipseElement, _PathElement);
+
+  var _super = _createSuper$y(EllipseElement);
+
+  function EllipseElement() {
+    var _this;
+
+    _classCallCheck__default['default'](this, EllipseElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'ellipse';
+    return _this;
+  }
+
+  _createClass__default['default'](EllipseElement, [{
+    key: "path",
+    value: function path(ctx) {
+      var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);
+      var rx = this.getAttribute('rx').getPixels('x');
+      var ry = this.getAttribute('ry').getPixels('y');
+      var cx = this.getAttribute('cx').getPixels('x');
+      var cy = this.getAttribute('cy').getPixels('y');
+
+      if (ctx && rx > 0 && ry > 0) {
+        ctx.beginPath();
+        ctx.moveTo(cx + rx, cy);
+        ctx.bezierCurveTo(cx + rx, cy + KAPPA * ry, cx + KAPPA * rx, cy + ry, cx, cy + ry);
+        ctx.bezierCurveTo(cx - KAPPA * rx, cy + ry, cx - rx, cy + KAPPA * ry, cx - rx, cy);
+        ctx.bezierCurveTo(cx - rx, cy - KAPPA * ry, cx - KAPPA * rx, cy - ry, cx, cy - ry);
+        ctx.bezierCurveTo(cx + KAPPA * rx, cy - ry, cx + rx, cy - KAPPA * ry, cx + rx, cy);
+        ctx.closePath();
+      }
+
+      return new BoundingBox(cx - rx, cy - ry, cx + rx, cy + ry);
+    }
+  }, {
+    key: "getMarkers",
+    value: function getMarkers() {
+      return null;
+    }
+  }]);
+
+  return EllipseElement;
+}(PathElement);
+
+function _createSuper$x(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$x(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$x() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var LineElement = /*#__PURE__*/function (_PathElement) {
+  _inherits__default['default'](LineElement, _PathElement);
+
+  var _super = _createSuper$x(LineElement);
+
+  function LineElement() {
+    var _this;
+
+    _classCallCheck__default['default'](this, LineElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'line';
+    return _this;
+  }
+
+  _createClass__default['default'](LineElement, [{
+    key: "getPoints",
+    value: function getPoints() {
+      return [new Point(this.getAttribute('x1').getPixels('x'), this.getAttribute('y1').getPixels('y')), new Point(this.getAttribute('x2').getPixels('x'), this.getAttribute('y2').getPixels('y'))];
+    }
+  }, {
+    key: "path",
+    value: function path(ctx) {
+      var _this$getPoints = this.getPoints(),
+          _this$getPoints2 = _slicedToArray__default['default'](_this$getPoints, 2),
+          _this$getPoints2$ = _this$getPoints2[0],
+          x0 = _this$getPoints2$.x,
+          y0 = _this$getPoints2$.y,
+          _this$getPoints2$2 = _this$getPoints2[1],
+          x1 = _this$getPoints2$2.x,
+          y1 = _this$getPoints2$2.y;
+
+      if (ctx) {
+        ctx.beginPath();
+        ctx.moveTo(x0, y0);
+        ctx.lineTo(x1, y1);
+      }
+
+      return new BoundingBox(x0, y0, x1, y1);
+    }
+  }, {
+    key: "getMarkers",
+    value: function getMarkers() {
+      var _this$getPoints3 = this.getPoints(),
+          _this$getPoints4 = _slicedToArray__default['default'](_this$getPoints3, 2),
+          p0 = _this$getPoints4[0],
+          p1 = _this$getPoints4[1];
+
+      var a = p0.angleTo(p1);
+      return [[p0, a], [p1, a]];
+    }
+  }]);
+
+  return LineElement;
+}(PathElement);
+
+function _createSuper$w(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$w(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$w() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var PolylineElement = /*#__PURE__*/function (_PathElement) {
+  _inherits__default['default'](PolylineElement, _PathElement);
+
+  var _super = _createSuper$w(PolylineElement);
+
+  function PolylineElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default['default'](this, PolylineElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+    _this.type = 'polyline';
+    _this.points = [];
+    _this.points = Point.parsePath(_this.getAttribute('points').getString());
+    return _this;
+  }
+
+  _createClass__default['default'](PolylineElement, [{
+    key: "path",
+    value: function path(ctx) {
+      var points = this.points;
+
+      var _points = _slicedToArray__default['default'](points, 1),
+          _points$ = _points[0],
+          x0 = _points$.x,
+          y0 = _points$.y;
+
+      var boundingBox = new BoundingBox(x0, y0);
+
+      if (ctx) {
+        ctx.beginPath();
+        ctx.moveTo(x0, y0);
+      }
+
+      points.forEach(function (_ref) {
+        var x = _ref.x,
+            y = _ref.y;
+        boundingBox.addPoint(x, y);
+
+        if (ctx) {
+          ctx.lineTo(x, y);
+        }
+      });
+      return boundingBox;
+    }
+  }, {
+    key: "getMarkers",
+    value: function getMarkers() {
+      var points = this.points;
+      var lastIndex = points.length - 1;
+      var markers = [];
+      points.forEach(function (point, i) {
+        if (i === lastIndex) {
+          return;
+        }
+
+        markers.push([point, point.angleTo(points[i + 1])]);
+      });
+
+      if (markers.length > 0) {
+        markers.push([points[points.length - 1], markers[markers.length - 1][1]]);
+      }
+
+      return markers;
+    }
+  }]);
+
+  return PolylineElement;
+}(PathElement);
+
+function _createSuper$v(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$v(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$v() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var PolygonElement = /*#__PURE__*/function (_PolylineElement) {
+  _inherits__default['default'](PolygonElement, _PolylineElement);
+
+  var _super = _createSuper$v(PolygonElement);
+
+  function PolygonElement() {
+    var _this;
+
+    _classCallCheck__default['default'](this, PolygonElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'polygon';
+    return _this;
+  }
+
+  _createClass__default['default'](PolygonElement, [{
+    key: "path",
+    value: function path(ctx) {
+      var boundingBox = _get__default['default'](_getPrototypeOf__default['default'](PolygonElement.prototype), "path", this).call(this, ctx);
+
+      var _this$points = _slicedToArray__default['default'](this.points, 1),
+          _this$points$ = _this$points[0],
+          x = _this$points$.x,
+          y = _this$points$.y;
+
+      if (ctx) {
+        ctx.lineTo(x, y);
+        ctx.closePath();
+      }
+
+      return boundingBox;
+    }
+  }]);
+
+  return PolygonElement;
+}(PolylineElement);
+
+function _createSuper$u(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$u(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$u() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var PatternElement = /*#__PURE__*/function (_Element) {
+  _inherits__default['default'](PatternElement, _Element);
+
+  var _super = _createSuper$u(PatternElement);
+
+  function PatternElement() {
+    var _this;
+
+    _classCallCheck__default['default'](this, PatternElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'pattern';
+    return _this;
+  }
+
+  _createClass__default['default'](PatternElement, [{
+    key: "createPattern",
+    value: function createPattern(ctx, _, parentOpacityProp) {
+      var width = this.getStyle('width').getPixels('x', true);
+      var height = this.getStyle('height').getPixels('y', true); // render me using a temporary svg element
+
+      var patternSvg = new SVGElement(this.document, null);
+      patternSvg.attributes.viewBox = new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue());
+      patternSvg.attributes.width = new Property(this.document, 'width', "".concat(width, "px"));
+      patternSvg.attributes.height = new Property(this.document, 'height', "".concat(height, "px"));
+      patternSvg.attributes.transform = new Property(this.document, 'transform', this.getAttribute('patternTransform').getValue());
+      patternSvg.children = this.children;
+      var patternCanvas = this.document.createCanvas(width, height);
+      var patternCtx = patternCanvas.getContext('2d');
+      var xAttr = this.getAttribute('x');
+      var yAttr = this.getAttribute('y');
+
+      if (xAttr.hasValue() && yAttr.hasValue()) {
+        patternCtx.translate(xAttr.getPixels('x', true), yAttr.getPixels('y', true));
+      }
+
+      if (parentOpacityProp.hasValue()) {
+        this.styles['fill-opacity'] = parentOpacityProp;
+      } else {
+        Reflect.deleteProperty(this.styles, 'fill-opacity');
+      } // render 3x3 grid so when we transform there's no white space on edges
+
+
+      for (var x = -1; x <= 1; x++) {
+        for (var y = -1; y <= 1; y++) {
+          patternCtx.save();
+          patternSvg.attributes.x = new Property(this.document, 'x', x * patternCanvas.width);
+          patternSvg.attributes.y = new Property(this.document, 'y', y * patternCanvas.height);
+          patternSvg.render(patternCtx);
+          patternCtx.restore();
+        }
+      }
+
+      var pattern = ctx.createPattern(patternCanvas, 'repeat');
+      return pattern;
+    }
+  }]);
+
+  return PatternElement;
+}(Element);
+
+function _createSuper$t(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$t(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$t() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var MarkerElement = /*#__PURE__*/function (_Element) {
+  _inherits__default['default'](MarkerElement, _Element);
+
+  var _super = _createSuper$t(MarkerElement);
+
+  function MarkerElement() {
+    var _this;
+
+    _classCallCheck__default['default'](this, MarkerElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'marker';
+    return _this;
+  }
+
+  _createClass__default['default'](MarkerElement, [{
+    key: "render",
+    value: function render(ctx, point, angle) {
+      if (!point) {
+        return;
+      }
+
+      var x = point.x,
+          y = point.y;
+      var orient = this.getAttribute('orient').getString('auto');
+      var markerUnits = this.getAttribute('markerUnits').getString('strokeWidth');
+      ctx.translate(x, y);
+
+      if (orient === 'auto') {
+        ctx.rotate(angle);
+      }
+
+      if (markerUnits === 'strokeWidth') {
+        ctx.scale(ctx.lineWidth, ctx.lineWidth);
+      }
+
+      ctx.save(); // render me using a temporary svg element
+
+      var markerSvg = new SVGElement(this.document, null);
+      markerSvg.type = this.type;
+      markerSvg.attributes.viewBox = new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue());
+      markerSvg.attributes.refX = new Property(this.document, 'refX', this.getAttribute('refX').getValue());
+      markerSvg.attributes.refY = new Property(this.document, 'refY', this.getAttribute('refY').getValue());
+      markerSvg.attributes.width = new Property(this.document, 'width', this.getAttribute('markerWidth').getValue());
+      markerSvg.attributes.height = new Property(this.document, 'height', this.getAttribute('markerHeight').getValue());
+      markerSvg.attributes.overflow = new Property(this.document, 'overflow', this.getAttribute('overflow').getValue());
+      markerSvg.attributes.fill = new Property(this.document, 'fill', this.getAttribute('fill').getColor('black'));
+      markerSvg.attributes.stroke = new Property(this.document, 'stroke', this.getAttribute('stroke').getValue('none'));
+      markerSvg.children = this.children;
+      markerSvg.render(ctx);
+      ctx.restore();
+
+      if (markerUnits === 'strokeWidth') {
+        ctx.scale(1 / ctx.lineWidth, 1 / ctx.lineWidth);
+      }
+
+      if (orient === 'auto') {
+        ctx.rotate(-angle);
+      }
+
+      ctx.translate(-x, -y);
+    }
+  }]);
+
+  return MarkerElement;
+}(Element);
+
+function _createSuper$s(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$s(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$s() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var DefsElement = /*#__PURE__*/function (_Element) {
+  _inherits__default['default'](DefsElement, _Element);
+
+  var _super = _createSuper$s(DefsElement);
+
+  function DefsElement() {
+    var _this;
+
+    _classCallCheck__default['default'](this, DefsElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'defs';
+    return _this;
+  }
+
+  _createClass__default['default'](DefsElement, [{
+    key: "render",
+    value: function render() {// NOOP
+    }
+  }]);
+
+  return DefsElement;
+}(Element);
+
+function _createSuper$r(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$r(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$r() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var GElement = /*#__PURE__*/function (_RenderedElement) {
+  _inherits__default['default'](GElement, _RenderedElement);
+
+  var _super = _createSuper$r(GElement);
+
+  function GElement() {
+    var _this;
+
+    _classCallCheck__default['default'](this, GElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'g';
+    return _this;
+  }
+
+  _createClass__default['default'](GElement, [{
+    key: "getBoundingBox",
+    value: function getBoundingBox(ctx) {
+      var boundingBox = new BoundingBox();
+      this.children.forEach(function (child) {
+        boundingBox.addBoundingBox(child.getBoundingBox(ctx));
+      });
+      return boundingBox;
+    }
+  }]);
+
+  return GElement;
+}(RenderedElement);
+
+function _createSuper$q(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$q(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$q() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var GradientElement = /*#__PURE__*/function (_Element) {
+  _inherits__default['default'](GradientElement, _Element);
+
+  var _super = _createSuper$q(GradientElement);
+
+  function GradientElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default['default'](this, GradientElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+    _this.attributesToInherit = ['gradientUnits'];
+    _this.stops = [];
+
+    var _assertThisInitialize = _assertThisInitialized__default['default'](_this),
+        stops = _assertThisInitialize.stops,
+        children = _assertThisInitialize.children;
+
+    children.forEach(function (child) {
+      if (child.type === 'stop') {
+        stops.push(child);
+      }
+    });
+    return _this;
+  }
+
+  _createClass__default['default'](GradientElement, [{
+    key: "getGradientUnits",
+    value: function getGradientUnits() {
+      return this.getAttribute('gradientUnits').getString('objectBoundingBox');
+    }
+  }, {
+    key: "createGradient",
+    value: function createGradient(ctx, element, parentOpacityProp) {
+      var _this2 = this;
+
+      // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this
+      var stopsContainer = this;
+
+      if (this.getHrefAttribute().hasValue()) {
+        stopsContainer = this.getHrefAttribute().getDefinition();
+        this.inheritStopContainer(stopsContainer);
+      }
+
+      var _stopsContainer = stopsContainer,
+          stops = _stopsContainer.stops;
+      var gradient = this.getGradient(ctx, element);
+
+      if (!gradient) {
+        return this.addParentOpacity(parentOpacityProp, stops[stops.length - 1].color);
+      }
+
+      stops.forEach(function (stop) {
+        gradient.addColorStop(stop.offset, _this2.addParentOpacity(parentOpacityProp, stop.color));
+      });
+
+      if (this.getAttribute('gradientTransform').hasValue()) {
+        // render as transformed pattern on temporary canvas
+        var document = this.document;
+        var _document$screen = document.screen,
+            MAX_VIRTUAL_PIXELS = _document$screen.MAX_VIRTUAL_PIXELS,
+            viewPort = _document$screen.viewPort;
+
+        var _viewPort$viewPorts = _slicedToArray__default['default'](viewPort.viewPorts, 1),
+            rootView = _viewPort$viewPorts[0];
+
+        var rect = new RectElement(document, null);
+        rect.attributes.x = new Property(document, 'x', -MAX_VIRTUAL_PIXELS / 3.0);
+        rect.attributes.y = new Property(document, 'y', -MAX_VIRTUAL_PIXELS / 3.0);
+        rect.attributes.width = new Property(document, 'width', MAX_VIRTUAL_PIXELS);
+        rect.attributes.height = new Property(document, 'height', MAX_VIRTUAL_PIXELS);
+        var group = new GElement(document, null);
+        group.attributes.transform = new Property(document, 'transform', this.getAttribute('gradientTransform').getValue());
+        group.children = [rect];
+        var patternSvg = new SVGElement(document, null);
+        patternSvg.attributes.x = new Property(document, 'x', 0);
+        patternSvg.attributes.y = new Property(document, 'y', 0);
+        patternSvg.attributes.width = new Property(document, 'width', rootView.width);
+        patternSvg.attributes.height = new Property(document, 'height', rootView.height);
+        patternSvg.children = [group];
+        var patternCanvas = document.createCanvas(rootView.width, rootView.height);
+        var patternCtx = patternCanvas.getContext('2d');
+        patternCtx.fillStyle = gradient;
+        patternSvg.render(patternCtx);
+        return patternCtx.createPattern(patternCanvas, 'no-repeat');
+      }
+
+      return gradient;
+    }
+  }, {
+    key: "inheritStopContainer",
+    value: function inheritStopContainer(stopsContainer) {
+      var _this3 = this;
+
+      this.attributesToInherit.forEach(function (attributeToInherit) {
+        if (!_this3.getAttribute(attributeToInherit).hasValue() && stopsContainer.getAttribute(attributeToInherit).hasValue()) {
+          _this3.getAttribute(attributeToInherit, true).setValue(stopsContainer.getAttribute(attributeToInherit).getValue());
+        }
+      });
+    }
+  }, {
+    key: "addParentOpacity",
+    value: function addParentOpacity(parentOpacityProp, color) {
+      if (parentOpacityProp.hasValue()) {
+        var colorProp = new Property(this.document, 'color', color);
+        return colorProp.addOpacity(parentOpacityProp).getColor();
+      }
+
+      return color;
+    }
+  }]);
+
+  return GradientElement;
+}(Element);
+
+function _createSuper$p(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$p(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$p() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var LinearGradientElement = /*#__PURE__*/function (_GradientElement) {
+  _inherits__default['default'](LinearGradientElement, _GradientElement);
+
+  var _super = _createSuper$p(LinearGradientElement);
+
+  function LinearGradientElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default['default'](this, LinearGradientElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+    _this.type = 'linearGradient';
+
+    _this.attributesToInherit.push('x1', 'y1', 'x2', 'y2');
+
+    return _this;
+  }
+
+  _createClass__default['default'](LinearGradientElement, [{
+    key: "getGradient",
+    value: function getGradient(ctx, element) {
+      var isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';
+      var boundingBox = isBoundingBoxUnits ? element.getBoundingBox(ctx) : null;
+
+      if (isBoundingBoxUnits && !boundingBox) {
+        return null;
+      }
+
+      if (!this.getAttribute('x1').hasValue() && !this.getAttribute('y1').hasValue() && !this.getAttribute('x2').hasValue() && !this.getAttribute('y2').hasValue()) {
+        this.getAttribute('x1', true).setValue(0);
+        this.getAttribute('y1', true).setValue(0);
+        this.getAttribute('x2', true).setValue(1);
+        this.getAttribute('y2', true).setValue(0);
+      }
+
+      var x1 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('x1').getNumber() : this.getAttribute('x1').getPixels('x');
+      var y1 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('y1').getNumber() : this.getAttribute('y1').getPixels('y');
+      var x2 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('x2').getNumber() : this.getAttribute('x2').getPixels('x');
+      var y2 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('y2').getNumber() : this.getAttribute('y2').getPixels('y');
+
+      if (x1 === x2 && y1 === y2) {
+        return null;
+      }
+
+      return ctx.createLinearGradient(x1, y1, x2, y2);
+    }
+  }]);
+
+  return LinearGradientElement;
+}(GradientElement);
+
+function _createSuper$o(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$o(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$o() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var RadialGradientElement = /*#__PURE__*/function (_GradientElement) {
+  _inherits__default['default'](RadialGradientElement, _GradientElement);
+
+  var _super = _createSuper$o(RadialGradientElement);
+
+  function RadialGradientElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default['default'](this, RadialGradientElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+    _this.type = 'radialGradient';
+
+    _this.attributesToInherit.push('cx', 'cy', 'r', 'fx', 'fy', 'fr');
+
+    return _this;
+  }
+
+  _createClass__default['default'](RadialGradientElement, [{
+    key: "getGradient",
+    value: function getGradient(ctx, element) {
+      var isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';
+      var boundingBox = element.getBoundingBox(ctx);
+
+      if (isBoundingBoxUnits && !boundingBox) {
+        return null;
+      }
+
+      if (!this.getAttribute('cx').hasValue()) {
+        this.getAttribute('cx', true).setValue('50%');
+      }
+
+      if (!this.getAttribute('cy').hasValue()) {
+        this.getAttribute('cy', true).setValue('50%');
+      }
+
+      if (!this.getAttribute('r').hasValue()) {
+        this.getAttribute('r', true).setValue('50%');
+      }
+
+      var cx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('cx').getNumber() : this.getAttribute('cx').getPixels('x');
+      var cy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('cy').getNumber() : this.getAttribute('cy').getPixels('y');
+      var fx = cx;
+      var fy = cy;
+
+      if (this.getAttribute('fx').hasValue()) {
+        fx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('fx').getNumber() : this.getAttribute('fx').getPixels('x');
+      }
+
+      if (this.getAttribute('fy').hasValue()) {
+        fy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('fy').getNumber() : this.getAttribute('fy').getPixels('y');
+      }
+
+      var r = isBoundingBoxUnits ? (boundingBox.width + boundingBox.height) / 2.0 * this.getAttribute('r').getNumber() : this.getAttribute('r').getPixels();
+      var fr = this.getAttribute('fr').getPixels();
+      return ctx.createRadialGradient(fx, fy, fr, cx, cy, r);
+    }
+  }]);
+
+  return RadialGradientElement;
+}(GradientElement);
+
+function _createSuper$n(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$n(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$n() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var StopElement = /*#__PURE__*/function (_Element) {
+  _inherits__default['default'](StopElement, _Element);
+
+  var _super = _createSuper$n(StopElement);
+
+  function StopElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default['default'](this, StopElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+    _this.type = 'stop';
+    var offset = Math.max(0, Math.min(1, _this.getAttribute('offset').getNumber()));
+
+    var stopOpacity = _this.getStyle('stop-opacity');
+
+    var stopColor = _this.getStyle('stop-color', true);
+
+    if (stopColor.getString() === '') {
+      stopColor.setValue('#000');
+    }
+
+    if (stopOpacity.hasValue()) {
+      stopColor = stopColor.addOpacity(stopOpacity);
+    }
+
+    _this.offset = offset;
+    _this.color = stopColor.getColor();
+    return _this;
+  }
+
+  return StopElement;
+}(Element);
+
+function _createSuper$m(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$m(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$m() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var AnimateElement = /*#__PURE__*/function (_Element) {
+  _inherits__default['default'](AnimateElement, _Element);
+
+  var _super = _createSuper$m(AnimateElement);
+
+  function AnimateElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default['default'](this, AnimateElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+    _this.type = 'animate';
+    _this.duration = 0;
+    _this.initialValue = null;
+    _this.initialUnits = '';
+    _this.removed = false;
+    _this.frozen = false;
+    document.screen.animations.push(_assertThisInitialized__default['default'](_this));
+    _this.begin = _this.getAttribute('begin').getMilliseconds();
+    _this.maxDuration = _this.begin + _this.getAttribute('dur').getMilliseconds();
+    _this.from = _this.getAttribute('from');
+    _this.to = _this.getAttribute('to');
+    _this.values = new Property(document, 'values', null);
+
+    var valuesAttr = _this.getAttribute('values');
+
+    if (valuesAttr.hasValue()) {
+      _this.values.setValue(valuesAttr.getString().split(';'));
+    }
+
+    return _this;
+  }
+
+  _createClass__default['default'](AnimateElement, [{
+    key: "getProperty",
+    value: function getProperty() {
+      var attributeType = this.getAttribute('attributeType').getString();
+      var attributeName = this.getAttribute('attributeName').getString();
+
+      if (attributeType === 'CSS') {
+        return this.parent.getStyle(attributeName, true);
+      }
+
+      return this.parent.getAttribute(attributeName, true);
+    }
+  }, {
+    key: "calcValue",
+    value: function calcValue() {
+      var initialUnits = this.initialUnits;
+
+      var _this$getProgress = this.getProgress(),
+          progress = _this$getProgress.progress,
+          from = _this$getProgress.from,
+          to = _this$getProgress.to; // tween value linearly
+
+
+      var newValue = from.getNumber() + (to.getNumber() - from.getNumber()) * progress;
+
+      if (initialUnits === '%') {
+        newValue *= 100.0; // numValue() returns 0-1 whereas properties are 0-100
+      }
+
+      return "".concat(newValue).concat(initialUnits);
+    }
+  }, {
+    key: "update",
+    value: function update(delta) {
+      var parent = this.parent;
+      var prop = this.getProperty(); // set initial value
+
+      if (!this.initialValue) {
+        this.initialValue = prop.getString();
+        this.initialUnits = prop.getUnits();
+      } // if we're past the end time
+
+
+      if (this.duration > this.maxDuration) {
+        var fill = this.getAttribute('fill').getString('remove'); // loop for indefinitely repeating animations
+
+        if (this.getAttribute('repeatCount').getString() === 'indefinite' || this.getAttribute('repeatDur').getString() === 'indefinite') {
+          this.duration = 0;
+        } else if (fill === 'freeze' && !this.frozen) {
+          this.frozen = true;
+          parent.animationFrozen = true;
+          parent.animationFrozenValue = prop.getString();
+        } else if (fill === 'remove' && !this.removed) {
+          this.removed = true;
+          prop.setValue(parent.animationFrozen ? parent.animationFrozenValue : this.initialValue);
+          return true;
+        }
+
+        return false;
+      }
+
+      this.duration += delta; // if we're past the begin time
+
+      var updated = false;
+
+      if (this.begin < this.duration) {
+        var newValue = this.calcValue(); // tween
+
+        var typeAttr = this.getAttribute('type');
+
+        if (typeAttr.hasValue()) {
+          // for transform, etc.
+          var type = typeAttr.getString();
+          newValue = "".concat(type, "(").concat(newValue, ")");
+        }
+
+        prop.setValue(newValue);
+        updated = true;
+      }
+
+      return updated;
+    }
+  }, {
+    key: "getProgress",
+    value: function getProgress() {
+      var document = this.document,
+          values = this.values;
+      var result = {
+        progress: (this.duration - this.begin) / (this.maxDuration - this.begin)
+      };
+
+      if (values.hasValue()) {
+        var p = result.progress * (values.getValue().length - 1);
+        var lb = Math.floor(p);
+        var ub = Math.ceil(p);
+        result.from = new Property(document, 'from', parseFloat(values.getValue()[lb]));
+        result.to = new Property(document, 'to', parseFloat(values.getValue()[ub]));
+        result.progress = (p - lb) / (ub - lb);
+      } else {
+        result.from = this.from;
+        result.to = this.to;
+      }
+
+      return result;
+    }
+  }]);
+
+  return AnimateElement;
+}(Element);
+
+function _createSuper$l(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$l(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$l() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var AnimateColorElement = /*#__PURE__*/function (_AnimateElement) {
+  _inherits__default['default'](AnimateColorElement, _AnimateElement);
+
+  var _super = _createSuper$l(AnimateColorElement);
+
+  function AnimateColorElement() {
+    var _this;
+
+    _classCallCheck__default['default'](this, AnimateColorElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'animateColor';
+    return _this;
+  }
+
+  _createClass__default['default'](AnimateColorElement, [{
+    key: "calcValue",
+    value: function calcValue() {
+      var _this$getProgress = this.getProgress(),
+          progress = _this$getProgress.progress,
+          from = _this$getProgress.from,
+          to = _this$getProgress.to;
+
+      var colorFrom = new RGBColor__default['default'](from.getColor());
+      var colorTo = new RGBColor__default['default'](to.getColor());
+
+      if (colorFrom.ok && colorTo.ok) {
+        // tween color linearly
+        var r = colorFrom.r + (colorTo.r - colorFrom.r) * progress;
+        var g = colorFrom.g + (colorTo.g - colorFrom.g) * progress;
+        var b = colorFrom.b + (colorTo.b - colorFrom.b) * progress; // ? alpha
+
+        return "rgb(".concat(Math.floor(r), ", ").concat(Math.floor(g), ", ").concat(Math.floor(b), ")");
+      }
+
+      return this.getAttribute('from').getColor();
+    }
+  }]);
+
+  return AnimateColorElement;
+}(AnimateElement);
+
+function _createSuper$k(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$k(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$k() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var AnimateTransformElement = /*#__PURE__*/function (_AnimateElement) {
+  _inherits__default['default'](AnimateTransformElement, _AnimateElement);
+
+  var _super = _createSuper$k(AnimateTransformElement);
+
+  function AnimateTransformElement() {
+    var _this;
+
+    _classCallCheck__default['default'](this, AnimateTransformElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'animateTransform';
+    return _this;
+  }
+
+  _createClass__default['default'](AnimateTransformElement, [{
+    key: "calcValue",
+    value: function calcValue() {
+      var _this$getProgress = this.getProgress(),
+          progress = _this$getProgress.progress,
+          from = _this$getProgress.from,
+          to = _this$getProgress.to; // tween value linearly
+
+
+      var transformFrom = toNumbers(from.getString());
+      var transformTo = toNumbers(to.getString());
+      var newValue = transformFrom.map(function (from, i) {
+        var to = transformTo[i];
+        return from + (to - from) * progress;
+      }).join(' ');
+      return newValue;
+    }
+  }]);
+
+  return AnimateTransformElement;
+}(AnimateElement);
+
+function _createForOfIteratorHelper$1(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$1(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
+
+function _unsupportedIterableToArray$1(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$1(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen); }
+
+function _arrayLikeToArray$1(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
+
+function _createSuper$j(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$j(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$j() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var FontElement = /*#__PURE__*/function (_Element) {
+  _inherits__default['default'](FontElement, _Element);
+
+  var _super = _createSuper$j(FontElement);
+
+  function FontElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default['default'](this, FontElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+    _this.type = 'font';
+    _this.glyphs = {};
+    _this.horizAdvX = _this.getAttribute('horiz-adv-x').getNumber();
+    var definitions = document.definitions;
+
+    var _assertThisInitialize = _assertThisInitialized__default['default'](_this),
+        children = _assertThisInitialize.children;
+
+    var _iterator = _createForOfIteratorHelper$1(children),
+        _step;
+
+    try {
+      for (_iterator.s(); !(_step = _iterator.n()).done;) {
+        var child = _step.value;
+
+        switch (child.type) {
+          case 'font-face':
+            {
+              _this.fontFace = child;
+              var fontFamilyStyle = child.getStyle('font-family');
+
+              if (fontFamilyStyle.hasValue()) {
+                definitions[fontFamilyStyle.getString()] = _assertThisInitialized__default['default'](_this);
+              }
+
+              break;
+            }
+
+          case 'missing-glyph':
+            _this.missingGlyph = child;
+            break;
+
+          case 'glyph':
+            {
+              var glyph = child;
+
+              if (glyph.arabicForm) {
+                _this.isRTL = true;
+                _this.isArabic = true;
+
+                if (typeof _this.glyphs[glyph.unicode] === 'undefined') {
+                  _this.glyphs[glyph.unicode] = {};
+                }
+
+                _this.glyphs[glyph.unicode][glyph.arabicForm] = glyph;
+              } else {
+                _this.glyphs[glyph.unicode] = glyph;
+              }
+
+              break;
+            }
+
+          default:
+        }
+      }
+    } catch (err) {
+      _iterator.e(err);
+    } finally {
+      _iterator.f();
+    }
+
+    return _this;
+  }
+
+  _createClass__default['default'](FontElement, [{
+    key: "render",
+    value: function render() {// NO RENDER
+    }
+  }]);
+
+  return FontElement;
+}(Element);
+
+function _createSuper$i(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$i(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$i() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var FontFaceElement = /*#__PURE__*/function (_Element) {
+  _inherits__default['default'](FontFaceElement, _Element);
+
+  var _super = _createSuper$i(FontFaceElement);
+
+  function FontFaceElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default['default'](this, FontFaceElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+    _this.type = 'font-face';
+    _this.ascent = _this.getAttribute('ascent').getNumber();
+    _this.descent = _this.getAttribute('descent').getNumber();
+    _this.unitsPerEm = _this.getAttribute('units-per-em').getNumber();
+    return _this;
+  }
+
+  return FontFaceElement;
+}(Element);
+
+function _createSuper$h(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$h(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$h() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var MissingGlyphElement = /*#__PURE__*/function (_PathElement) {
+  _inherits__default['default'](MissingGlyphElement, _PathElement);
+
+  var _super = _createSuper$h(MissingGlyphElement);
+
+  function MissingGlyphElement() {
+    var _this;
+
+    _classCallCheck__default['default'](this, MissingGlyphElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'missing-glyph';
+    _this.horizAdvX = 0;
+    return _this;
+  }
+
+  return MissingGlyphElement;
+}(PathElement);
+
+function _createSuper$g(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$g(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$g() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var TRefElement = /*#__PURE__*/function (_TextElement) {
+  _inherits__default['default'](TRefElement, _TextElement);
+
+  var _super = _createSuper$g(TRefElement);
+
+  function TRefElement() {
+    var _this;
+
+    _classCallCheck__default['default'](this, TRefElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'tref';
+    return _this;
+  }
+
+  _createClass__default['default'](TRefElement, [{
+    key: "getText",
+    value: function getText() {
+      var element = this.getHrefAttribute().getDefinition();
+
+      if (element) {
+        var firstChild = element.children[0];
+
+        if (firstChild) {
+          return firstChild.getText();
+        }
+      }
+
+      return '';
+    }
+  }]);
+
+  return TRefElement;
+}(TextElement);
+
+function _createSuper$f(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$f(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$f() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var AElement = /*#__PURE__*/function (_TextElement) {
+  _inherits__default['default'](AElement, _TextElement);
+
+  var _super = _createSuper$f(AElement);
+
+  function AElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default['default'](this, AElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+    _this.type = 'a';
+    var childNodes = node.childNodes;
+    var firstChild = childNodes[0];
+    var hasText = childNodes.length > 0 && Array.from(childNodes).every(function (node) {
+      return node.nodeType === 3;
+    });
+    _this.hasText = hasText;
+    _this.text = hasText ? _this.getTextFromNode(firstChild) : '';
+    return _this;
+  }
+
+  _createClass__default['default'](AElement, [{
+    key: "getText",
+    value: function getText() {
+      return this.text;
+    }
+  }, {
+    key: "renderChildren",
+    value: function renderChildren(ctx) {
+      if (this.hasText) {
+        // render as text element
+        _get__default['default'](_getPrototypeOf__default['default'](AElement.prototype), "renderChildren", this).call(this, ctx);
+
+        var document = this.document,
+            x = this.x,
+            y = this.y;
+        var mouse = document.screen.mouse;
+        var fontSize = new Property(document, 'fontSize', Font.parse(document.ctx.font).fontSize); // Do not calc bounding box if mouse is not working.
+
+        if (mouse.isWorking()) {
+          mouse.checkBoundingBox(this, new BoundingBox(x, y - fontSize.getPixels('y'), x + this.measureText(ctx), y));
+        }
+      } else if (this.children.length > 0) {
+        // render as temporary group
+        var g = new GElement(this.document, null);
+        g.children = this.children;
+        g.parent = this;
+        g.render(ctx);
+      }
+    }
+  }, {
+    key: "onClick",
+    value: function onClick() {
+      var window = this.document.window;
+
+      if (window) {
+        window.open(this.getHrefAttribute().getString());
+      }
+    }
+  }, {
+    key: "onMouseMove",
+    value: function onMouseMove() {
+      var ctx = this.document.ctx;
+      ctx.canvas.style.cursor = 'pointer';
+    }
+  }]);
+
+  return AElement;
+}(TextElement);
+
+function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
+
+function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
+
+function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
+
+function ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+
+function _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+
+function _createSuper$e(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$e(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$e() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var TextPathElement = /*#__PURE__*/function (_TextElement) {
+  _inherits__default['default'](TextPathElement, _TextElement);
+
+  var _super = _createSuper$e(TextPathElement);
+
+  function TextPathElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default['default'](this, TextPathElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+    _this.type = 'textPath';
+    _this.textWidth = 0;
+    _this.textHeight = 0;
+    _this.pathLength = -1;
+    _this.glyphInfo = null;
+    _this.letterSpacingCache = [];
+    _this.measuresCache = new Map([['', 0]]);
+
+    var pathElement = _this.getHrefAttribute().getDefinition();
+
+    _this.text = _this.getTextFromNode();
+    _this.dataArray = _this.parsePathData(pathElement);
+    return _this;
+  }
+
+  _createClass__default['default'](TextPathElement, [{
+    key: "getText",
+    value: function getText() {
+      return this.text;
+    }
+  }, {
+    key: "path",
+    value: function path(ctx) {
+      var dataArray = this.dataArray;
+
+      if (ctx) {
+        ctx.beginPath();
+      }
+
+      dataArray.forEach(function (_ref) {
+        var type = _ref.type,
+            points = _ref.points;
+
+        switch (type) {
+          case PathParser.LINE_TO:
+            if (ctx) {
+              ctx.lineTo(points[0], points[1]);
+            }
+
+            break;
+
+          case PathParser.MOVE_TO:
+            if (ctx) {
+              ctx.moveTo(points[0], points[1]);
+            }
+
+            break;
+
+          case PathParser.CURVE_TO:
+            if (ctx) {
+              ctx.bezierCurveTo(points[0], points[1], points[2], points[3], points[4], points[5]);
+            }
+
+            break;
+
+          case PathParser.QUAD_TO:
+            if (ctx) {
+              ctx.quadraticCurveTo(points[0], points[1], points[2], points[3]);
+            }
+
+            break;
+
+          case PathParser.ARC:
+            {
+              var _points = _slicedToArray__default['default'](points, 8),
+                  cx = _points[0],
+                  cy = _points[1],
+                  rx = _points[2],
+                  ry = _points[3],
+                  theta = _points[4],
+                  dTheta = _points[5],
+                  psi = _points[6],
+                  fs = _points[7];
+
+              var r = rx > ry ? rx : ry;
+              var scaleX = rx > ry ? 1 : rx / ry;
+              var scaleY = rx > ry ? ry / rx : 1;
+
+              if (ctx) {
+                ctx.translate(cx, cy);
+                ctx.rotate(psi);
+                ctx.scale(scaleX, scaleY);
+                ctx.arc(0, 0, r, theta, theta + dTheta, Boolean(1 - fs));
+                ctx.scale(1 / scaleX, 1 / scaleY);
+                ctx.rotate(-psi);
+                ctx.translate(-cx, -cy);
+              }
+
+              break;
+            }
+
+          case PathParser.CLOSE_PATH:
+            if (ctx) {
+              ctx.closePath();
+            }
+
+            break;
+        }
+      });
+    }
+  }, {
+    key: "renderChildren",
+    value: function renderChildren(ctx) {
+      this.setTextData(ctx);
+      ctx.save();
+      var textDecoration = this.parent.getStyle('text-decoration').getString();
+      var fontSize = this.getFontSize();
+      var glyphInfo = this.glyphInfo;
+      var fill = ctx.fillStyle;
+
+      if (textDecoration === 'underline') {
+        ctx.beginPath();
+      }
+
+      glyphInfo.forEach(function (glyph, i) {
+        var p0 = glyph.p0,
+            p1 = glyph.p1,
+            rotation = glyph.rotation,
+            partialText = glyph.text;
+        ctx.save();
+        ctx.translate(p0.x, p0.y);
+        ctx.rotate(rotation);
+
+        if (ctx.fillStyle) {
+          ctx.fillText(partialText, 0, 0);
+        }
+
+        if (ctx.strokeStyle) {
+          ctx.strokeText(partialText, 0, 0);
+        }
+
+        ctx.restore();
+
+        if (textDecoration === 'underline') {
+          if (i === 0) {
+            ctx.moveTo(p0.x, p0.y + fontSize / 8);
+          }
+
+          ctx.lineTo(p1.x, p1.y + fontSize / 5);
+        } // // To assist with debugging visually, uncomment following
+        //
+        // ctx.beginPath();
+        // if (i % 2)
+        // 	ctx.strokeStyle = 'red';
+        // else
+        // 	ctx.strokeStyle = 'green';
+        // ctx.moveTo(p0.x, p0.y);
+        // ctx.lineTo(p1.x, p1.y);
+        // ctx.stroke();
+        // ctx.closePath();
+
+      });
+
+      if (textDecoration === 'underline') {
+        ctx.lineWidth = fontSize / 20;
+        ctx.strokeStyle = fill;
+        ctx.stroke();
+        ctx.closePath();
+      }
+
+      ctx.restore();
+    }
+  }, {
+    key: "getLetterSpacingAt",
+    value: function getLetterSpacingAt() {
+      var idx = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
+      return this.letterSpacingCache[idx] || 0;
+    }
+  }, {
+    key: "findSegmentToFitChar",
+    value: function findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, inputOffset, dy, c, charI) {
+      var offset = inputOffset;
+      var glyphWidth = this.measureText(ctx, c);
+
+      if (c === ' ' && anchor === 'justify' && textFullWidth < fullPathWidth) {
+        glyphWidth += (fullPathWidth - textFullWidth) / spacesNumber;
+      }
+
+      if (charI > -1) {
+        offset += this.getLetterSpacingAt(charI);
+      }
+
+      var splineStep = this.textHeight / 20;
+      var p0 = this.getEquidistantPointOnPath(offset, splineStep, 0);
+      var p1 = this.getEquidistantPointOnPath(offset + glyphWidth, splineStep, 0);
+      var segment = {
+        p0: p0,
+        p1: p1
+      };
+      var rotation = p0 && p1 ? Math.atan2(p1.y - p0.y, p1.x - p0.x) : 0;
+
+      if (dy) {
+        var dyX = Math.cos(Math.PI / 2 + rotation) * dy;
+        var dyY = Math.cos(-rotation) * dy;
+        segment.p0 = _objectSpread$2(_objectSpread$2({}, p0), {}, {
+          x: p0.x + dyX,
+          y: p0.y + dyY
+        });
+        segment.p1 = _objectSpread$2(_objectSpread$2({}, p1), {}, {
+          x: p1.x + dyX,
+          y: p1.y + dyY
+        });
+      }
+
+      offset += glyphWidth;
+      return {
+        offset: offset,
+        segment: segment,
+        rotation: rotation
+      };
+    }
+  }, {
+    key: "measureText",
+    value: function measureText(ctx, text) {
+      var measuresCache = this.measuresCache;
+      var targetText = text || this.getText();
+
+      if (measuresCache.has(targetText)) {
+        return measuresCache.get(targetText);
+      }
+
+      var measure = this.measureTargetText(ctx, targetText);
+      measuresCache.set(targetText, measure);
+      return measure;
+    } // This method supposes what all custom fonts already loaded.
+    // If some font will be loaded after this method call, <textPath> will not be rendered correctly.
+    // You need to call this method manually to update glyphs cache.
+
+  }, {
+    key: "setTextData",
+    value: function setTextData(ctx) {
+      var _this2 = this;
+
+      if (this.glyphInfo) {
+        return;
+      }
+
+      var renderText = this.getText();
+      var chars = renderText.split('');
+      var spacesNumber = renderText.split(' ').length - 1;
+      var dx = this.parent.getAttribute('dx').split().map(function (_) {
+        return _.getPixels('x');
+      });
+      var dy = this.parent.getAttribute('dy').getPixels('y');
+      var anchor = this.parent.getStyle('text-anchor').getString('start');
+      var thisSpacing = this.getStyle('letter-spacing');
+      var parentSpacing = this.parent.getStyle('letter-spacing');
+      var letterSpacing = 0;
+
+      if (!thisSpacing.hasValue() || thisSpacing.getValue() === 'inherit') {
+        letterSpacing = parentSpacing.getPixels();
+      } else if (thisSpacing.hasValue()) {
+        if (thisSpacing.getValue() !== 'initial' && thisSpacing.getValue() !== 'unset') {
+          letterSpacing = thisSpacing.getPixels();
+        }
+      } // fill letter-spacing cache
+
+
+      var letterSpacingCache = [];
+      var textLen = renderText.length;
+      this.letterSpacingCache = letterSpacingCache;
+
+      for (var i = 0; i < textLen; i++) {
+        letterSpacingCache.push(typeof dx[i] !== 'undefined' ? dx[i] : letterSpacing);
+      }
+
+      var dxSum = letterSpacingCache.reduce(function (acc, cur, i) {
+        return i === 0 ? 0 : acc + cur || 0;
+      }, 0);
+      var textWidth = this.measureText(ctx);
+      var textFullWidth = Math.max(textWidth + dxSum, 0);
+      this.textWidth = textWidth;
+      this.textHeight = this.getFontSize();
+      this.glyphInfo = [];
+      var fullPathWidth = this.getPathLength();
+      var startOffset = this.getStyle('startOffset').getNumber(0) * fullPathWidth;
+      var offset = 0;
+
+      if (anchor === 'middle' || anchor === 'center') {
+        offset = -textFullWidth / 2;
+      }
+
+      if (anchor === 'end' || anchor === 'right') {
+        offset = -textFullWidth;
+      }
+
+      offset += startOffset;
+      chars.forEach(function (char, i) {
+        // Find such segment what distance between p0 and p1 is approx. width of glyph
+        var _this2$findSegmentToF = _this2.findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, offset, dy, char, i),
+            nextOffset = _this2$findSegmentToF.offset,
+            segment = _this2$findSegmentToF.segment,
+            rotation = _this2$findSegmentToF.rotation;
+
+        offset = nextOffset;
+
+        if (!segment.p0 || !segment.p1) {
+          return;
+        } // const width = this.getLineLength(
+        // 	segment.p0.x,
+        // 	segment.p0.y,
+        // 	segment.p1.x,
+        // 	segment.p1.y
+        // );
+        // Note: Since glyphs are rendered one at a time, any kerning pair data built into the font will not be used.
+        // Can foresee having a rough pair table built in that the developer can override as needed.
+        // Or use "dx" attribute of the <text> node as a naive replacement
+        // const kern = 0;
+        // placeholder for future implementation
+        // const midpoint = this.getPointOnLine(
+        // 	kern + width / 2.0,
+        // 	segment.p0.x, segment.p0.y, segment.p1.x, segment.p1.y
+        // );
+
+
+        _this2.glyphInfo.push({
+          // transposeX: midpoint.x,
+          // transposeY: midpoint.y,
+          text: chars[i],
+          p0: segment.p0,
+          p1: segment.p1,
+          rotation: rotation
+        });
+      });
+    }
+  }, {
+    key: "parsePathData",
+    value: function parsePathData(path) {
+      this.pathLength = -1; // reset path length
+
+      if (!path) {
+        return [];
+      }
+
+      var pathCommands = [];
+      var pathParser = path.pathParser;
+      pathParser.reset(); // convert l, H, h, V, and v to L
+
+      while (!pathParser.isEnd()) {
+        var current = pathParser.current;
+        var startX = current ? current.x : 0;
+        var startY = current ? current.y : 0;
+        var command = pathParser.next();
+        var nextCommandType = command.type;
+        var points = [];
+
+        switch (command.type) {
+          case PathParser.MOVE_TO:
+            this.pathM(pathParser, points);
+            break;
+
+          case PathParser.LINE_TO:
+            nextCommandType = this.pathL(pathParser, points);
+            break;
+
+          case PathParser.HORIZ_LINE_TO:
+            nextCommandType = this.pathH(pathParser, points);
+            break;
+
+          case PathParser.VERT_LINE_TO:
+            nextCommandType = this.pathV(pathParser, points);
+            break;
+
+          case PathParser.CURVE_TO:
+            this.pathC(pathParser, points);
+            break;
+
+          case PathParser.SMOOTH_CURVE_TO:
+            nextCommandType = this.pathS(pathParser, points);
+            break;
+
+          case PathParser.QUAD_TO:
+            this.pathQ(pathParser, points);
+            break;
+
+          case PathParser.SMOOTH_QUAD_TO:
+            nextCommandType = this.pathT(pathParser, points);
+            break;
+
+          case PathParser.ARC:
+            points = this.pathA(pathParser);
+            break;
+
+          case PathParser.CLOSE_PATH:
+            PathElement.pathZ(pathParser);
+            break;
+        }
+
+        if (command.type !== PathParser.CLOSE_PATH) {
+          pathCommands.push({
+            type: nextCommandType,
+            points: points,
+            start: {
+              x: startX,
+              y: startY
+            },
+            pathLength: this.calcLength(startX, startY, nextCommandType, points)
+          });
+        } else {
+          pathCommands.push({
+            type: PathParser.CLOSE_PATH,
+            points: [],
+            pathLength: 0
+          });
+        }
+      }
+
+      return pathCommands;
+    }
+  }, {
+    key: "pathM",
+    value: function pathM(pathParser, points) {
+      var _PathElement$pathM$po = PathElement.pathM(pathParser).point,
+          x = _PathElement$pathM$po.x,
+          y = _PathElement$pathM$po.y;
+      points.push(x, y);
+    }
+  }, {
+    key: "pathL",
+    value: function pathL(pathParser, points) {
+      var _PathElement$pathL$po = PathElement.pathL(pathParser).point,
+          x = _PathElement$pathL$po.x,
+          y = _PathElement$pathL$po.y;
+      points.push(x, y);
+      return PathParser.LINE_TO;
+    }
+  }, {
+    key: "pathH",
+    value: function pathH(pathParser, points) {
+      var _PathElement$pathH$po = PathElement.pathH(pathParser).point,
+          x = _PathElement$pathH$po.x,
+          y = _PathElement$pathH$po.y;
+      points.push(x, y);
+      return PathParser.LINE_TO;
+    }
+  }, {
+    key: "pathV",
+    value: function pathV(pathParser, points) {
+      var _PathElement$pathV$po = PathElement.pathV(pathParser).point,
+          x = _PathElement$pathV$po.x,
+          y = _PathElement$pathV$po.y;
+      points.push(x, y);
+      return PathParser.LINE_TO;
+    }
+  }, {
+    key: "pathC",
+    value: function pathC(pathParser, points) {
+      var _PathElement$pathC = PathElement.pathC(pathParser),
+          point = _PathElement$pathC.point,
+          controlPoint = _PathElement$pathC.controlPoint,
+          currentPoint = _PathElement$pathC.currentPoint;
+
+      points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+    }
+  }, {
+    key: "pathS",
+    value: function pathS(pathParser, points) {
+      var _PathElement$pathS = PathElement.pathS(pathParser),
+          point = _PathElement$pathS.point,
+          controlPoint = _PathElement$pathS.controlPoint,
+          currentPoint = _PathElement$pathS.currentPoint;
+
+      points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+      return PathParser.CURVE_TO;
+    }
+  }, {
+    key: "pathQ",
+    value: function pathQ(pathParser, points) {
+      var _PathElement$pathQ = PathElement.pathQ(pathParser),
+          controlPoint = _PathElement$pathQ.controlPoint,
+          currentPoint = _PathElement$pathQ.currentPoint;
+
+      points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+    }
+  }, {
+    key: "pathT",
+    value: function pathT(pathParser, points) {
+      var _PathElement$pathT = PathElement.pathT(pathParser),
+          controlPoint = _PathElement$pathT.controlPoint,
+          currentPoint = _PathElement$pathT.currentPoint;
+
+      points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
+      return PathParser.QUAD_TO;
+    }
+  }, {
+    key: "pathA",
+    value: function pathA(pathParser) {
+      var _PathElement$pathA = PathElement.pathA(pathParser),
+          rX = _PathElement$pathA.rX,
+          rY = _PathElement$pathA.rY,
+          sweepFlag = _PathElement$pathA.sweepFlag,
+          xAxisRotation = _PathElement$pathA.xAxisRotation,
+          centp = _PathElement$pathA.centp,
+          a1 = _PathElement$pathA.a1,
+          ad = _PathElement$pathA.ad;
+
+      if (sweepFlag === 0 && ad > 0) {
+        ad -= 2 * Math.PI;
+      }
+
+      if (sweepFlag === 1 && ad < 0) {
+        ad += 2 * Math.PI;
+      }
+
+      return [centp.x, centp.y, rX, rY, a1, ad, xAxisRotation, sweepFlag];
+    }
+  }, {
+    key: "calcLength",
+    value: function calcLength(x, y, commandType, points) {
+      var len = 0;
+      var p1 = null;
+      var p2 = null;
+      var t = 0;
+
+      switch (commandType) {
+        case PathParser.LINE_TO:
+          return this.getLineLength(x, y, points[0], points[1]);
+
+        case PathParser.CURVE_TO:
+          // Approximates by breaking curve into 100 line segments
+          len = 0.0;
+          p1 = this.getPointOnCubicBezier(0, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);
+
+          for (t = 0.01; t <= 1; t += 0.01) {
+            p2 = this.getPointOnCubicBezier(t, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);
+            len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);
+            p1 = p2;
+          }
+
+          return len;
+
+        case PathParser.QUAD_TO:
+          // Approximates by breaking curve into 100 line segments
+          len = 0.0;
+          p1 = this.getPointOnQuadraticBezier(0, x, y, points[0], points[1], points[2], points[3]);
+
+          for (t = 0.01; t <= 1; t += 0.01) {
+            p2 = this.getPointOnQuadraticBezier(t, x, y, points[0], points[1], points[2], points[3]);
+            len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);
+            p1 = p2;
+          }
+
+          return len;
+
+        case PathParser.ARC:
+          {
+            // Approximates by breaking curve into line segments
+            len = 0.0;
+            var start = points[4]; // 4 = theta
+
+            var dTheta = points[5]; // 5 = dTheta
+
+            var end = points[4] + dTheta;
+            var inc = Math.PI / 180.0; // 1 degree resolution
+
+            if (Math.abs(start - end) < inc) {
+              inc = Math.abs(start - end);
+            } // Note: for purpose of calculating arc length, not going to worry about rotating X-axis by angle psi
+
+
+            p1 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], start, 0);
+
+            if (dTheta < 0) {
+              // clockwise
+              for (t = start - inc; t > end; t -= inc) {
+                p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);
+                len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);
+                p1 = p2;
+              }
+            } else {
+              // counter-clockwise
+              for (t = start + inc; t < end; t += inc) {
+                p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);
+                len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);
+                p1 = p2;
+              }
+            }
+
+            p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], end, 0);
+            len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);
+            return len;
+          }
+      }
+
+      return 0;
+    }
+  }, {
+    key: "getPointOnLine",
+    value: function getPointOnLine(dist, p1x, p1y, p2x, p2y) {
+      var fromX = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : p1x;
+      var fromY = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : p1y;
+      var m = (p2y - p1y) / (p2x - p1x + PSEUDO_ZERO);
+      var run = Math.sqrt(dist * dist / (1 + m * m));
+
+      if (p2x < p1x) {
+        run *= -1;
+      }
+
+      var rise = m * run;
+      var pt = null;
+
+      if (p2x === p1x) {
+        // vertical line
+        pt = {
+          x: fromX,
+          y: fromY + rise
+        };
+      } else if ((fromY - p1y) / (fromX - p1x + PSEUDO_ZERO) === m) {
+        pt = {
+          x: fromX + run,
+          y: fromY + rise
+        };
+      } else {
+        var ix = 0;
+        var iy = 0;
+        var len = this.getLineLength(p1x, p1y, p2x, p2y);
+
+        if (len < PSEUDO_ZERO) {
+          return null;
+        }
+
+        var u = (fromX - p1x) * (p2x - p1x) + (fromY - p1y) * (p2y - p1y);
+        u /= len * len;
+        ix = p1x + u * (p2x - p1x);
+        iy = p1y + u * (p2y - p1y);
+        var pRise = this.getLineLength(fromX, fromY, ix, iy);
+        var pRun = Math.sqrt(dist * dist - pRise * pRise);
+        run = Math.sqrt(pRun * pRun / (1 + m * m));
+
+        if (p2x < p1x) {
+          run *= -1;
+        }
+
+        rise = m * run;
+        pt = {
+          x: ix + run,
+          y: iy + rise
+        };
+      }
+
+      return pt;
+    }
+  }, {
+    key: "getPointOnPath",
+    value: function getPointOnPath(distance) {
+      var fullLen = this.getPathLength();
+      var cumulativePathLength = 0;
+      var p = null;
+
+      if (distance < -0.00005 || distance - 0.00005 > fullLen) {
+        return null;
+      }
+
+      var dataArray = this.dataArray;
+
+      var _iterator = _createForOfIteratorHelper(dataArray),
+          _step;
+
+      try {
+        for (_iterator.s(); !(_step = _iterator.n()).done;) {
+          var command = _step.value;
+
+          if (command && (command.pathLength < 0.00005 || cumulativePathLength + command.pathLength + 0.00005 < distance)) {
+            cumulativePathLength += command.pathLength;
+            continue;
+          }
+
+          var delta = distance - cumulativePathLength;
+          var currentT = 0;
+
+          switch (command.type) {
+            case PathParser.LINE_TO:
+              p = this.getPointOnLine(delta, command.start.x, command.start.y, command.points[0], command.points[1], command.start.x, command.start.y);
+              break;
+
+            case PathParser.ARC:
+              {
+                var start = command.points[4]; // 4 = theta
+
+                var dTheta = command.points[5]; // 5 = dTheta
+
+                var end = command.points[4] + dTheta;
+                currentT = start + delta / command.pathLength * dTheta;
+
+                if (dTheta < 0 && currentT < end || dTheta >= 0 && currentT > end) {
+                  break;
+                }
+
+                p = this.getPointOnEllipticalArc(command.points[0], command.points[1], command.points[2], command.points[3], currentT, command.points[6]);
+                break;
+              }
+
+            case PathParser.CURVE_TO:
+              currentT = delta / command.pathLength;
+
+              if (currentT > 1) {
+                currentT = 1;
+              }
+
+              p = this.getPointOnCubicBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3], command.points[4], command.points[5]);
+              break;
+
+            case PathParser.QUAD_TO:
+              currentT = delta / command.pathLength;
+
+              if (currentT > 1) {
+                currentT = 1;
+              }
+
+              p = this.getPointOnQuadraticBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3]);
+              break;
+
+            default:
+          }
+
+          if (p) {
+            return p;
+          }
+
+          break;
+        }
+      } catch (err) {
+        _iterator.e(err);
+      } finally {
+        _iterator.f();
+      }
+
+      return null;
+    }
+  }, {
+    key: "getLineLength",
+    value: function getLineLength(x1, y1, x2, y2) {
+      return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
+    }
+  }, {
+    key: "getPathLength",
+    value: function getPathLength() {
+      if (this.pathLength === -1) {
+        this.pathLength = this.dataArray.reduce(function (length, command) {
+          return command.pathLength > 0 ? length + command.pathLength : length;
+        }, 0);
+      }
+
+      return this.pathLength;
+    }
+  }, {
+    key: "getPointOnCubicBezier",
+    value: function getPointOnCubicBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y) {
+      var x = p4x * CB1(pct) + p3x * CB2(pct) + p2x * CB3(pct) + p1x * CB4(pct);
+      var y = p4y * CB1(pct) + p3y * CB2(pct) + p2y * CB3(pct) + p1y * CB4(pct);
+      return {
+        x: x,
+        y: y
+      };
+    }
+  }, {
+    key: "getPointOnQuadraticBezier",
+    value: function getPointOnQuadraticBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y) {
+      var x = p3x * QB1(pct) + p2x * QB2(pct) + p1x * QB3(pct);
+      var y = p3y * QB1(pct) + p2y * QB2(pct) + p1y * QB3(pct);
+      return {
+        x: x,
+        y: y
+      };
+    }
+  }, {
+    key: "getPointOnEllipticalArc",
+    value: function getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi) {
+      var cosPsi = Math.cos(psi);
+      var sinPsi = Math.sin(psi);
+      var pt = {
+        x: rx * Math.cos(theta),
+        y: ry * Math.sin(theta)
+      };
+      return {
+        x: cx + (pt.x * cosPsi - pt.y * sinPsi),
+        y: cy + (pt.x * sinPsi + pt.y * cosPsi)
+      };
+    } // TODO need some optimisations. possibly build cache only for curved segments?
+
+  }, {
+    key: "buildEquidistantCache",
+    value: function buildEquidistantCache(inputStep, inputPrecision) {
+      var fullLen = this.getPathLength();
+      var precision = inputPrecision || 0.25; // accuracy vs performance
+
+      var step = inputStep || fullLen / 100;
+
+      if (!this.equidistantCache || this.equidistantCache.step !== step || this.equidistantCache.precision !== precision) {
+        // Prepare cache
+        this.equidistantCache = {
+          step: step,
+          precision: precision,
+          points: []
+        }; // Calculate points
+
+        var s = 0;
+
+        for (var l = 0; l <= fullLen; l += precision) {
+          var p0 = this.getPointOnPath(l);
+          var p1 = this.getPointOnPath(l + precision);
+
+          if (!p0 || !p1) {
+            continue;
+          }
+
+          s += this.getLineLength(p0.x, p0.y, p1.x, p1.y);
+
+          if (s >= step) {
+            this.equidistantCache.points.push({
+              x: p0.x,
+              y: p0.y,
+              distance: l
+            });
+            s -= step;
+          }
+        }
+      }
+    }
+  }, {
+    key: "getEquidistantPointOnPath",
+    value: function getEquidistantPointOnPath(targetDistance, step, precision) {
+      this.buildEquidistantCache(step, precision);
+
+      if (targetDistance < 0 || targetDistance - this.getPathLength() > 0.00005) {
+        return null;
+      }
+
+      var idx = Math.round(targetDistance / this.getPathLength() * (this.equidistantCache.points.length - 1));
+      return this.equidistantCache.points[idx] || null;
+    }
+  }]);
+
+  return TextPathElement;
+}(TextElement);
+
+function _createSuper$d(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$d(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$d() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var dataUriRegex = /^\s*data:(([^/,;]+\/[^/,;]+)(?:;([^,;=]+=[^,;=]+))?)?(?:;(base64))?,(.*)$/i;
+
+var ImageElement = /*#__PURE__*/function (_RenderedElement) {
+  _inherits__default['default'](ImageElement, _RenderedElement);
+
+  var _super = _createSuper$d(ImageElement);
+
+  function ImageElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default['default'](this, ImageElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+    _this.type = 'image';
+    _this.loaded = false;
+
+    var href = _this.getHrefAttribute().getString();
+
+    if (!href) {
+      return _possibleConstructorReturn__default['default'](_this);
+    }
+
+    var isSvg = href.endsWith('.svg') || /^\s*data:image\/svg\+xml/i.test(href);
+    document.images.push(_assertThisInitialized__default['default'](_this));
+
+    if (!isSvg) {
+      void _this.loadImage(href);
+    } else {
+      void _this.loadSvg(href);
+    }
+
+    _this.isSvg = isSvg;
+    return _this;
+  }
+
+  _createClass__default['default'](ImageElement, [{
+    key: "loadImage",
+    value: function () {
+      var _loadImage = _asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee(href) {
+        var image;
+        return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
+          while (1) {
+            switch (_context.prev = _context.next) {
+              case 0:
+                _context.prev = 0;
+                _context.next = 3;
+                return this.document.createImage(href);
+
+              case 3:
+                image = _context.sent;
+                this.image = image;
+                _context.next = 10;
+                break;
+
+              case 7:
+                _context.prev = 7;
+                _context.t0 = _context["catch"](0);
+                console.error("Error while loading image \"".concat(href, "\":"), _context.t0);
+
+              case 10:
+                this.loaded = true;
+
+              case 11:
+              case "end":
+                return _context.stop();
+            }
+          }
+        }, _callee, this, [[0, 7]]);
+      }));
+
+      function loadImage(_x) {
+        return _loadImage.apply(this, arguments);
+      }
+
+      return loadImage;
+    }()
+  }, {
+    key: "loadSvg",
+    value: function () {
+      var _loadSvg = _asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee2(href) {
+        var match, data, response, svg;
+        return _regeneratorRuntime__default['default'].wrap(function _callee2$(_context2) {
+          while (1) {
+            switch (_context2.prev = _context2.next) {
+              case 0:
+                match = dataUriRegex.exec(href);
+
+                if (!match) {
+                  _context2.next = 6;
+                  break;
+                }
+
+                data = match[5];
+
+                if (match[4] === 'base64') {
+                  this.image = atob(data);
+                } else {
+                  this.image = decodeURIComponent(data);
+                }
+
+                _context2.next = 19;
+                break;
+
+              case 6:
+                _context2.prev = 6;
+                _context2.next = 9;
+                return this.document.fetch(href);
+
+              case 9:
+                response = _context2.sent;
+                _context2.next = 12;
+                return response.text();
+
+              case 12:
+                svg = _context2.sent;
+                this.image = svg;
+                _context2.next = 19;
+                break;
+
+              case 16:
+                _context2.prev = 16;
+                _context2.t0 = _context2["catch"](6);
+                console.error("Error while loading image \"".concat(href, "\":"), _context2.t0);
+
+              case 19:
+                this.loaded = true;
+
+              case 20:
+              case "end":
+                return _context2.stop();
+            }
+          }
+        }, _callee2, this, [[6, 16]]);
+      }));
+
+      function loadSvg(_x2) {
+        return _loadSvg.apply(this, arguments);
+      }
+
+      return loadSvg;
+    }()
+  }, {
+    key: "renderChildren",
+    value: function renderChildren(ctx) {
+      var document = this.document,
+          image = this.image,
+          loaded = this.loaded;
+      var x = this.getAttribute('x').getPixels('x');
+      var y = this.getAttribute('y').getPixels('y');
+      var width = this.getStyle('width').getPixels('x');
+      var height = this.getStyle('height').getPixels('y');
+
+      if (!loaded || !image || !width || !height) {
+        return;
+      }
+
+      ctx.save();
+      ctx.translate(x, y);
+
+      if (this.isSvg) {
+        var subDocument = document.canvg.forkString(ctx, this.image, {
+          ignoreMouse: true,
+          ignoreAnimation: true,
+          ignoreDimensions: true,
+          ignoreClear: true,
+          offsetX: 0,
+          offsetY: 0,
+          scaleWidth: width,
+          scaleHeight: height
+        });
+        subDocument.document.documentElement.parent = this;
+        void subDocument.render();
+      } else {
+        var _image = this.image;
+        document.setViewBox({
+          ctx: ctx,
+          aspectRatio: this.getAttribute('preserveAspectRatio').getString(),
+          width: width,
+          desiredWidth: _image.width,
+          height: height,
+          desiredHeight: _image.height
+        });
+
+        if (this.loaded) {
+          if (typeof _image.complete === 'undefined' || _image.complete) {
+            ctx.drawImage(_image, 0, 0);
+          }
+        }
+      }
+
+      ctx.restore();
+    }
+  }, {
+    key: "getBoundingBox",
+    value: function getBoundingBox() {
+      var x = this.getAttribute('x').getPixels('x');
+      var y = this.getAttribute('y').getPixels('y');
+      var width = this.getStyle('width').getPixels('x');
+      var height = this.getStyle('height').getPixels('y');
+      return new BoundingBox(x, y, x + width, y + height);
+    }
+  }]);
+
+  return ImageElement;
+}(RenderedElement);
+
+function _createSuper$c(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$c(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$c() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var SymbolElement = /*#__PURE__*/function (_RenderedElement) {
+  _inherits__default['default'](SymbolElement, _RenderedElement);
+
+  var _super = _createSuper$c(SymbolElement);
+
+  function SymbolElement() {
+    var _this;
+
+    _classCallCheck__default['default'](this, SymbolElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'symbol';
+    return _this;
+  }
+
+  _createClass__default['default'](SymbolElement, [{
+    key: "render",
+    value: function render(_) {// NO RENDER
+    }
+  }]);
+
+  return SymbolElement;
+}(RenderedElement);
+
+var SVGFontLoader = /*#__PURE__*/function () {
+  function SVGFontLoader(document) {
+    _classCallCheck__default['default'](this, SVGFontLoader);
+
+    this.document = document;
+    this.loaded = false;
+    document.fonts.push(this);
+  }
+
+  _createClass__default['default'](SVGFontLoader, [{
+    key: "load",
+    value: function () {
+      var _load = _asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee(fontFamily, url) {
+        var document, svgDocument, fonts;
+        return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
+          while (1) {
+            switch (_context.prev = _context.next) {
+              case 0:
+                _context.prev = 0;
+                document = this.document;
+                _context.next = 4;
+                return document.canvg.parser.load(url);
+
+              case 4:
+                svgDocument = _context.sent;
+                fonts = svgDocument.getElementsByTagName('font');
+                Array.from(fonts).forEach(function (fontNode) {
+                  var font = document.createElement(fontNode);
+                  document.definitions[fontFamily] = font;
+                });
+                _context.next = 12;
+                break;
+
+              case 9:
+                _context.prev = 9;
+                _context.t0 = _context["catch"](0);
+                console.error("Error while loading font \"".concat(url, "\":"), _context.t0);
+
+              case 12:
+                this.loaded = true;
+
+              case 13:
+              case "end":
+                return _context.stop();
+            }
+          }
+        }, _callee, this, [[0, 9]]);
+      }));
+
+      function load(_x, _x2) {
+        return _load.apply(this, arguments);
+      }
+
+      return load;
+    }()
+  }]);
+
+  return SVGFontLoader;
+}();
+
+function _createSuper$b(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$b(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$b() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var StyleElement = /*#__PURE__*/function (_Element) {
+  _inherits__default['default'](StyleElement, _Element);
+
+  var _super = _createSuper$b(StyleElement);
+
+  function StyleElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default['default'](this, StyleElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+    _this.type = 'style';
+    var css = compressSpaces(Array.from(node.childNodes) // NEED TEST
+    .map(function (_) {
+      return _.textContent;
+    }).join('').replace(/(\/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+\/)|(^[\s]*\/\/.*)/gm, '') // remove comments
+    .replace(/@import.*;/g, '') // remove imports
+    );
+    var cssDefs = css.split('}');
+    cssDefs.forEach(function (_) {
+      var def = _.trim();
+
+      if (!def) {
+        return;
+      }
+
+      var cssParts = def.split('{');
+      var cssClasses = cssParts[0].split(',');
+      var cssProps = cssParts[1].split(';');
+      cssClasses.forEach(function (_) {
+        var cssClass = _.trim();
+
+        if (!cssClass) {
+          return;
+        }
+
+        var props = document.styles[cssClass] || {};
+        cssProps.forEach(function (cssProp) {
+          var prop = cssProp.indexOf(':');
+          var name = cssProp.substr(0, prop).trim();
+          var value = cssProp.substr(prop + 1, cssProp.length - prop).trim();
+
+          if (name && value) {
+            props[name] = new Property(document, name, value);
+          }
+        });
+        document.styles[cssClass] = props;
+        document.stylesSpecificity[cssClass] = getSelectorSpecificity(cssClass);
+
+        if (cssClass === '@font-face') {
+          //  && !nodeEnv
+          var fontFamily = props['font-family'].getString().replace(/"|'/g, '');
+          var srcs = props.src.getString().split(',');
+          srcs.forEach(function (src) {
+            if (src.indexOf('format("svg")') > 0) {
+              var url = parseExternalUrl(src);
+
+              if (url) {
+                void new SVGFontLoader(document).load(fontFamily, url);
+              }
+            }
+          });
+        }
+      });
+    });
+    return _this;
+  }
+
+  return StyleElement;
+}(Element);
+StyleElement.parseExternalUrl = parseExternalUrl;
+
+function _createSuper$a(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$a(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$a() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var UseElement = /*#__PURE__*/function (_RenderedElement) {
+  _inherits__default['default'](UseElement, _RenderedElement);
+
+  var _super = _createSuper$a(UseElement);
+
+  function UseElement() {
+    var _this;
+
+    _classCallCheck__default['default'](this, UseElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'use';
+    return _this;
+  }
+
+  _createClass__default['default'](UseElement, [{
+    key: "setContext",
+    value: function setContext(ctx) {
+      _get__default['default'](_getPrototypeOf__default['default'](UseElement.prototype), "setContext", this).call(this, ctx);
+
+      var xAttr = this.getAttribute('x');
+      var yAttr = this.getAttribute('y');
+
+      if (xAttr.hasValue()) {
+        ctx.translate(xAttr.getPixels('x'), 0);
+      }
+
+      if (yAttr.hasValue()) {
+        ctx.translate(0, yAttr.getPixels('y'));
+      }
+    }
+  }, {
+    key: "path",
+    value: function path(ctx) {
+      var element = this.element;
+
+      if (element) {
+        element.path(ctx);
+      }
+    }
+  }, {
+    key: "renderChildren",
+    value: function renderChildren(ctx) {
+      var document = this.document,
+          element = this.element;
+
+      if (element) {
+        var tempSvg = element;
+
+        if (element.type === 'symbol') {
+          // render me using a temporary svg element in symbol cases (http://www.w3.org/TR/SVG/struct.html#UseElement)
+          tempSvg = new SVGElement(document, null);
+          tempSvg.attributes.viewBox = new Property(document, 'viewBox', element.getAttribute('viewBox').getString());
+          tempSvg.attributes.preserveAspectRatio = new Property(document, 'preserveAspectRatio', element.getAttribute('preserveAspectRatio').getString());
+          tempSvg.attributes.overflow = new Property(document, 'overflow', element.getAttribute('overflow').getString());
+          tempSvg.children = element.children; // element is still the parent of the children
+
+          element.styles.opacity = new Property(document, 'opacity', this.calculateOpacity());
+        }
+
+        if (tempSvg.type === 'svg') {
+          var widthStyle = this.getStyle('width', false, true);
+          var heightStyle = this.getStyle('height', false, true); // if symbol or svg, inherit width/height from me
+
+          if (widthStyle.hasValue()) {
+            tempSvg.attributes.width = new Property(document, 'width', widthStyle.getString());
+          }
+
+          if (heightStyle.hasValue()) {
+            tempSvg.attributes.height = new Property(document, 'height', heightStyle.getString());
+          }
+        }
+
+        var oldParent = tempSvg.parent;
+        tempSvg.parent = this;
+        tempSvg.render(ctx);
+        tempSvg.parent = oldParent;
+      }
+    }
+  }, {
+    key: "getBoundingBox",
+    value: function getBoundingBox(ctx) {
+      var element = this.element;
+
+      if (element) {
+        return element.getBoundingBox(ctx);
+      }
+
+      return null;
+    }
+  }, {
+    key: "elementTransform",
+    value: function elementTransform() {
+      var document = this.document,
+          element = this.element;
+      return Transform.fromElement(document, element);
+    }
+  }, {
+    key: "element",
+    get: function get() {
+      if (!this.cachedElement) {
+        this.cachedElement = this.getHrefAttribute().getDefinition();
+      }
+
+      return this.cachedElement;
+    }
+  }]);
+
+  return UseElement;
+}(RenderedElement);
+
+function _createSuper$9(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$9(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$9() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+function imGet(img, x, y, width, _height, rgba) {
+  return img[y * width * 4 + x * 4 + rgba];
+}
+
+function imSet(img, x, y, width, _height, rgba, val) {
+  img[y * width * 4 + x * 4 + rgba] = val;
+}
+
+function m(matrix, i, v) {
+  var mi = matrix[i];
+  return mi * v;
+}
+
+function c(a, m1, m2, m3) {
+  return m1 + Math.cos(a) * m2 + Math.sin(a) * m3;
+}
+
+var FeColorMatrixElement = /*#__PURE__*/function (_Element) {
+  _inherits__default['default'](FeColorMatrixElement, _Element);
+
+  var _super = _createSuper$9(FeColorMatrixElement);
+
+  function FeColorMatrixElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default['default'](this, FeColorMatrixElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+    _this.type = 'feColorMatrix';
+    var matrix = toNumbers(_this.getAttribute('values').getString());
+
+    switch (_this.getAttribute('type').getString('matrix')) {
+      // http://www.w3.org/TR/SVG/filters.html#feColorMatrixElement
+      case 'saturate':
+        {
+          var s = matrix[0];
+          /* eslint-disable array-element-newline */
+
+          matrix = [0.213 + 0.787 * s, 0.715 - 0.715 * s, 0.072 - 0.072 * s, 0, 0, 0.213 - 0.213 * s, 0.715 + 0.285 * s, 0.072 - 0.072 * s, 0, 0, 0.213 - 0.213 * s, 0.715 - 0.715 * s, 0.072 + 0.928 * s, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];
+          /* eslint-enable array-element-newline */
+
+          break;
+        }
+
+      case 'hueRotate':
+        {
+          var a = matrix[0] * Math.PI / 180.0;
+          /* eslint-disable array-element-newline */
+
+          matrix = [c(a, 0.213, 0.787, -0.213), c(a, 0.715, -0.715, -0.715), c(a, 0.072, -0.072, 0.928), 0, 0, c(a, 0.213, -0.213, 0.143), c(a, 0.715, 0.285, 0.140), c(a, 0.072, -0.072, -0.283), 0, 0, c(a, 0.213, -0.213, -0.787), c(a, 0.715, -0.715, 0.715), c(a, 0.072, 0.928, 0.072), 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];
+          /* eslint-enable array-element-newline */
+
+          break;
+        }
+
+      case 'luminanceToAlpha':
+        /* eslint-disable array-element-newline */
+        matrix = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2125, 0.7154, 0.0721, 0, 0, 0, 0, 0, 0, 1];
+        /* eslint-enable array-element-newline */
+
+        break;
+    }
+
+    _this.matrix = matrix;
+    _this.includeOpacity = _this.getAttribute('includeOpacity').hasValue();
+    return _this;
+  }
+
+  _createClass__default['default'](FeColorMatrixElement, [{
+    key: "apply",
+    value: function apply(ctx, _x, _y, width, height) {
+      // assuming x==0 && y==0 for now
+      var includeOpacity = this.includeOpacity,
+          matrix = this.matrix;
+      var srcData = ctx.getImageData(0, 0, width, height);
+
+      for (var y = 0; y < height; y++) {
+        for (var x = 0; x < width; x++) {
+          var r = imGet(srcData.data, x, y, width, height, 0);
+          var g = imGet(srcData.data, x, y, width, height, 1);
+          var b = imGet(srcData.data, x, y, width, height, 2);
+          var a = imGet(srcData.data, x, y, width, height, 3);
+          var nr = m(matrix, 0, r) + m(matrix, 1, g) + m(matrix, 2, b) + m(matrix, 3, a) + m(matrix, 4, 1);
+          var ng = m(matrix, 5, r) + m(matrix, 6, g) + m(matrix, 7, b) + m(matrix, 8, a) + m(matrix, 9, 1);
+          var nb = m(matrix, 10, r) + m(matrix, 11, g) + m(matrix, 12, b) + m(matrix, 13, a) + m(matrix, 14, 1);
+          var na = m(matrix, 15, r) + m(matrix, 16, g) + m(matrix, 17, b) + m(matrix, 18, a) + m(matrix, 19, 1);
+
+          if (includeOpacity) {
+            nr = 0;
+            ng = 0;
+            nb = 0;
+            na *= a / 255;
+          }
+
+          imSet(srcData.data, x, y, width, height, 0, nr);
+          imSet(srcData.data, x, y, width, height, 1, ng);
+          imSet(srcData.data, x, y, width, height, 2, nb);
+          imSet(srcData.data, x, y, width, height, 3, na);
+        }
+      }
+
+      ctx.clearRect(0, 0, width, height);
+      ctx.putImageData(srcData, 0, 0);
+    }
+  }]);
+
+  return FeColorMatrixElement;
+}(Element);
+
+function _createSuper$8(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$8(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$8() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var MaskElement = /*#__PURE__*/function (_Element) {
+  _inherits__default['default'](MaskElement, _Element);
+
+  var _super = _createSuper$8(MaskElement);
+
+  function MaskElement() {
+    var _this;
+
+    _classCallCheck__default['default'](this, MaskElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'mask';
+    return _this;
+  }
+
+  _createClass__default['default'](MaskElement, [{
+    key: "apply",
+    value: function apply(ctx, element) {
+      var document = this.document; // render as temp svg
+
+      var x = this.getAttribute('x').getPixels('x');
+      var y = this.getAttribute('y').getPixels('y');
+      var width = this.getStyle('width').getPixels('x');
+      var height = this.getStyle('height').getPixels('y');
+
+      if (!width && !height) {
+        var boundingBox = new BoundingBox();
+        this.children.forEach(function (child) {
+          boundingBox.addBoundingBox(child.getBoundingBox(ctx));
+        });
+        x = Math.floor(boundingBox.x1);
+        y = Math.floor(boundingBox.y1);
+        width = Math.floor(boundingBox.width);
+        height = Math.floor(boundingBox.height);
+      }
+
+      var ignoredStyles = this.removeStyles(element, MaskElement.ignoreStyles);
+      var maskCanvas = document.createCanvas(x + width, y + height);
+      var maskCtx = maskCanvas.getContext('2d');
+      document.screen.setDefaults(maskCtx);
+      this.renderChildren(maskCtx); // convert mask to alpha with a fake node
+      // TODO: refactor out apply from feColorMatrix
+
+      new FeColorMatrixElement(document, {
+        nodeType: 1,
+        childNodes: [],
+        attributes: [{
+          nodeName: 'type',
+          value: 'luminanceToAlpha'
+        }, {
+          nodeName: 'includeOpacity',
+          value: 'true'
+        }]
+      }).apply(maskCtx, 0, 0, x + width, y + height);
+      var tmpCanvas = document.createCanvas(x + width, y + height);
+      var tmpCtx = tmpCanvas.getContext('2d');
+      document.screen.setDefaults(tmpCtx);
+      element.render(tmpCtx);
+      tmpCtx.globalCompositeOperation = 'destination-in';
+      tmpCtx.fillStyle = maskCtx.createPattern(maskCanvas, 'no-repeat');
+      tmpCtx.fillRect(0, 0, x + width, y + height);
+      ctx.fillStyle = tmpCtx.createPattern(tmpCanvas, 'no-repeat');
+      ctx.fillRect(0, 0, x + width, y + height); // reassign mask
+
+      this.restoreStyles(element, ignoredStyles);
+    }
+  }, {
+    key: "render",
+    value: function render(_) {// NO RENDER
+    }
+  }]);
+
+  return MaskElement;
+}(Element);
+MaskElement.ignoreStyles = ['mask', 'transform', 'clip-path'];
+
+function _createSuper$7(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$7(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$7() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var noop = function noop() {// NOOP
+};
+
+var ClipPathElement = /*#__PURE__*/function (_Element) {
+  _inherits__default['default'](ClipPathElement, _Element);
+
+  var _super = _createSuper$7(ClipPathElement);
+
+  function ClipPathElement() {
+    var _this;
+
+    _classCallCheck__default['default'](this, ClipPathElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'clipPath';
+    return _this;
+  }
+
+  _createClass__default['default'](ClipPathElement, [{
+    key: "apply",
+    value: function apply(ctx) {
+      var document = this.document;
+      var contextProto = Reflect.getPrototypeOf(ctx);
+      var beginPath = ctx.beginPath,
+          closePath = ctx.closePath;
+
+      if (contextProto) {
+        contextProto.beginPath = noop;
+        contextProto.closePath = noop;
+      }
+
+      Reflect.apply(beginPath, ctx, []);
+      this.children.forEach(function (child) {
+        if (typeof child.path === 'undefined') {
+          return;
+        }
+
+        var transform = typeof child.elementTransform !== 'undefined' ? child.elementTransform() : null; // handle <use />
+
+        if (!transform) {
+          transform = Transform.fromElement(document, child);
+        }
+
+        if (transform) {
+          transform.apply(ctx);
+        }
+
+        child.path(ctx);
+
+        if (contextProto) {
+          contextProto.closePath = closePath;
+        }
+
+        if (transform) {
+          transform.unapply(ctx);
+        }
+      });
+      Reflect.apply(closePath, ctx, []);
+      ctx.clip();
+
+      if (contextProto) {
+        contextProto.beginPath = beginPath;
+        contextProto.closePath = closePath;
+      }
+    }
+  }, {
+    key: "render",
+    value: function render(_) {// NO RENDER
+    }
+  }]);
+
+  return ClipPathElement;
+}(Element);
+
+function _createSuper$6(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$6(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$6() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var FilterElement = /*#__PURE__*/function (_Element) {
+  _inherits__default['default'](FilterElement, _Element);
+
+  var _super = _createSuper$6(FilterElement);
+
+  function FilterElement() {
+    var _this;
+
+    _classCallCheck__default['default'](this, FilterElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'filter';
+    return _this;
+  }
+
+  _createClass__default['default'](FilterElement, [{
+    key: "apply",
+    value: function apply(ctx, element) {
+      // render as temp svg
+      var document = this.document,
+          children = this.children;
+      var boundingBox = element.getBoundingBox(ctx);
+
+      if (!boundingBox) {
+        return;
+      }
+
+      var px = 0;
+      var py = 0;
+      children.forEach(function (child) {
+        var efd = child.extraFilterDistance || 0;
+        px = Math.max(px, efd);
+        py = Math.max(py, efd);
+      });
+      var width = Math.floor(boundingBox.width);
+      var height = Math.floor(boundingBox.height);
+      var tmpCanvasWidth = width + 2 * px;
+      var tmpCanvasHeight = height + 2 * py;
+
+      if (tmpCanvasWidth < 1 || tmpCanvasHeight < 1) {
+        return;
+      }
+
+      var x = Math.floor(boundingBox.x);
+      var y = Math.floor(boundingBox.y);
+      var ignoredStyles = this.removeStyles(element, FilterElement.ignoreStyles);
+      var tmpCanvas = document.createCanvas(tmpCanvasWidth, tmpCanvasHeight);
+      var tmpCtx = tmpCanvas.getContext('2d');
+      document.screen.setDefaults(tmpCtx);
+      tmpCtx.translate(-x + px, -y + py);
+      element.render(tmpCtx); // apply filters
+
+      children.forEach(function (child) {
+        if (typeof child.apply === 'function') {
+          child.apply(tmpCtx, 0, 0, tmpCanvasWidth, tmpCanvasHeight);
+        }
+      }); // render on me
+
+      ctx.drawImage(tmpCanvas, 0, 0, tmpCanvasWidth, tmpCanvasHeight, x - px, y - py, tmpCanvasWidth, tmpCanvasHeight);
+      this.restoreStyles(element, ignoredStyles);
+    }
+  }, {
+    key: "render",
+    value: function render(_) {// NO RENDER
+    }
+  }]);
+
+  return FilterElement;
+}(Element);
+FilterElement.ignoreStyles = ['filter', 'transform', 'clip-path'];
+
+function _createSuper$5(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$5(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$5() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var FeDropShadowElement = /*#__PURE__*/function (_Element) {
+  _inherits__default['default'](FeDropShadowElement, _Element);
+
+  var _super = _createSuper$5(FeDropShadowElement);
+
+  function FeDropShadowElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default['default'](this, FeDropShadowElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+    _this.type = 'feDropShadow';
+
+    _this.addStylesFromStyleDefinition();
+
+    return _this;
+  }
+
+  _createClass__default['default'](FeDropShadowElement, [{
+    key: "apply",
+    value: function apply(_, _x, _y, _width, _height) {// TODO: implement
+    }
+  }]);
+
+  return FeDropShadowElement;
+}(Element);
+
+function _createSuper$4(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$4(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$4() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var FeMorphologyElement = /*#__PURE__*/function (_Element) {
+  _inherits__default['default'](FeMorphologyElement, _Element);
+
+  var _super = _createSuper$4(FeMorphologyElement);
+
+  function FeMorphologyElement() {
+    var _this;
+
+    _classCallCheck__default['default'](this, FeMorphologyElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'feMorphology';
+    return _this;
+  }
+
+  _createClass__default['default'](FeMorphologyElement, [{
+    key: "apply",
+    value: function apply(_, _x, _y, _width, _height) {// TODO: implement
+    }
+  }]);
+
+  return FeMorphologyElement;
+}(Element);
+
+function _createSuper$3(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$3(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$3() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var FeCompositeElement = /*#__PURE__*/function (_Element) {
+  _inherits__default['default'](FeCompositeElement, _Element);
+
+  var _super = _createSuper$3(FeCompositeElement);
+
+  function FeCompositeElement() {
+    var _this;
+
+    _classCallCheck__default['default'](this, FeCompositeElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'feComposite';
+    return _this;
+  }
+
+  _createClass__default['default'](FeCompositeElement, [{
+    key: "apply",
+    value: function apply(_, _x, _y, _width, _height) {// TODO: implement
+    }
+  }]);
+
+  return FeCompositeElement;
+}(Element);
+
+function _createSuper$2(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$2(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$2() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var FeGaussianBlurElement = /*#__PURE__*/function (_Element) {
+  _inherits__default['default'](FeGaussianBlurElement, _Element);
+
+  var _super = _createSuper$2(FeGaussianBlurElement);
+
+  function FeGaussianBlurElement(document, node, captureTextNodes) {
+    var _this;
+
+    _classCallCheck__default['default'](this, FeGaussianBlurElement);
+
+    _this = _super.call(this, document, node, captureTextNodes);
+    _this.type = 'feGaussianBlur';
+    _this.blurRadius = Math.floor(_this.getAttribute('stdDeviation').getNumber());
+    _this.extraFilterDistance = _this.blurRadius;
+    return _this;
+  }
+
+  _createClass__default['default'](FeGaussianBlurElement, [{
+    key: "apply",
+    value: function apply(ctx, x, y, width, height) {
+      var document = this.document,
+          blurRadius = this.blurRadius;
+      var body = document.window ? document.window.document.body : null;
+      var canvas = ctx.canvas; // StackBlur requires canvas be on document
+
+      canvas.id = document.getUniqueId();
+
+      if (body) {
+        canvas.style.display = 'none';
+        body.appendChild(canvas);
+      }
+
+      stackblurCanvas.canvasRGBA(canvas, x, y, width, height, blurRadius);
+
+      if (body) {
+        body.removeChild(canvas);
+      }
+    }
+  }]);
+
+  return FeGaussianBlurElement;
+}(Element);
+
+function _createSuper$1(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$1(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct$1() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var TitleElement = /*#__PURE__*/function (_Element) {
+  _inherits__default['default'](TitleElement, _Element);
+
+  var _super = _createSuper$1(TitleElement);
+
+  function TitleElement() {
+    var _this;
+
+    _classCallCheck__default['default'](this, TitleElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'title';
+    return _this;
+  }
+
+  return TitleElement;
+}(Element);
+
+function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
+
+function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+var DescElement = /*#__PURE__*/function (_Element) {
+  _inherits__default['default'](DescElement, _Element);
+
+  var _super = _createSuper(DescElement);
+
+  function DescElement() {
+    var _this;
+
+    _classCallCheck__default['default'](this, DescElement);
+
+    _this = _super.apply(this, arguments);
+    _this.type = 'desc';
+    return _this;
+  }
+
+  return DescElement;
+}(Element);
+
+var elements = {
+  'svg': SVGElement,
+  'rect': RectElement,
+  'circle': CircleElement,
+  'ellipse': EllipseElement,
+  'line': LineElement,
+  'polyline': PolylineElement,
+  'polygon': PolygonElement,
+  'path': PathElement,
+  'pattern': PatternElement,
+  'marker': MarkerElement,
+  'defs': DefsElement,
+  'linearGradient': LinearGradientElement,
+  'radialGradient': RadialGradientElement,
+  'stop': StopElement,
+  'animate': AnimateElement,
+  'animateColor': AnimateColorElement,
+  'animateTransform': AnimateTransformElement,
+  'font': FontElement,
+  'font-face': FontFaceElement,
+  'missing-glyph': MissingGlyphElement,
+  'glyph': GlyphElement,
+  'text': TextElement,
+  'tspan': TSpanElement,
+  'tref': TRefElement,
+  'a': AElement,
+  'textPath': TextPathElement,
+  'image': ImageElement,
+  'g': GElement,
+  'symbol': SymbolElement,
+  'style': StyleElement,
+  'use': UseElement,
+  'mask': MaskElement,
+  'clipPath': ClipPathElement,
+  'filter': FilterElement,
+  'feDropShadow': FeDropShadowElement,
+  'feMorphology': FeMorphologyElement,
+  'feComposite': FeCompositeElement,
+  'feColorMatrix': FeColorMatrixElement,
+  'feGaussianBlur': FeGaussianBlurElement,
+  'title': TitleElement,
+  'desc': DescElement
+};
+
+function ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+
+function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+
+function createCanvas(width, height) {
+  var canvas = document.createElement('canvas');
+  canvas.width = width;
+  canvas.height = height;
+  return canvas;
+}
+
+function createImage(_x) {
+  return _createImage.apply(this, arguments);
+}
+
+function _createImage() {
+  _createImage = _asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee(src) {
+    var anonymousCrossOrigin,
+        image,
+        _args = arguments;
+    return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
+      while (1) {
+        switch (_context.prev = _context.next) {
+          case 0:
+            anonymousCrossOrigin = _args.length > 1 && _args[1] !== undefined ? _args[1] : false;
+            image = document.createElement('img');
+
+            if (anonymousCrossOrigin) {
+              image.crossOrigin = 'Anonymous';
+            }
+
+            return _context.abrupt("return", new Promise(function (resolve, reject) {
+              image.onload = function () {
+                resolve(image);
+              };
+
+              image.onerror = function (_event, _source, _lineno, _colno, error) {
+                reject(error);
+              };
+
+              image.src = src;
+            }));
+
+          case 4:
+          case "end":
+            return _context.stop();
+        }
+      }
+    }, _callee);
+  }));
+  return _createImage.apply(this, arguments);
+}
+
+var Document = /*#__PURE__*/function () {
+  function Document(canvg) {
+    var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
+        _ref$rootEmSize = _ref.rootEmSize,
+        rootEmSize = _ref$rootEmSize === void 0 ? 12 : _ref$rootEmSize,
+        _ref$emSize = _ref.emSize,
+        emSize = _ref$emSize === void 0 ? 12 : _ref$emSize,
+        _ref$createCanvas = _ref.createCanvas,
+        createCanvas = _ref$createCanvas === void 0 ? Document.createCanvas : _ref$createCanvas,
+        _ref$createImage = _ref.createImage,
+        createImage = _ref$createImage === void 0 ? Document.createImage : _ref$createImage,
+        anonymousCrossOrigin = _ref.anonymousCrossOrigin;
+
+    _classCallCheck__default['default'](this, Document);
+
+    this.canvg = canvg;
+    this.definitions = {};
+    this.styles = {};
+    this.stylesSpecificity = {};
+    this.images = [];
+    this.fonts = [];
+    this.emSizeStack = [];
+    this.uniqueId = 0;
+    this.screen = canvg.screen;
+    this.rootEmSize = rootEmSize;
+    this.emSize = emSize;
+    this.createCanvas = createCanvas;
+    this.createImage = this.bindCreateImage(createImage, anonymousCrossOrigin);
+    this.screen.wait(this.isImagesLoaded.bind(this));
+    this.screen.wait(this.isFontsLoaded.bind(this));
+  }
+
+  _createClass__default['default'](Document, [{
+    key: "bindCreateImage",
+    value: function bindCreateImage(createImage, anonymousCrossOrigin) {
+      if (typeof anonymousCrossOrigin === 'boolean') {
+        return function (source, forceAnonymousCrossOrigin) {
+          return createImage(source, typeof forceAnonymousCrossOrigin === 'boolean' ? forceAnonymousCrossOrigin : anonymousCrossOrigin);
+        };
+      }
+
+      return createImage;
+    }
+  }, {
+    key: "popEmSize",
+    value: function popEmSize() {
+      var emSizeStack = this.emSizeStack;
+      emSizeStack.pop();
+    }
+  }, {
+    key: "getUniqueId",
+    value: function getUniqueId() {
+      return "canvg".concat(++this.uniqueId);
+    }
+  }, {
+    key: "isImagesLoaded",
+    value: function isImagesLoaded() {
+      return this.images.every(function (_) {
+        return _.loaded;
+      });
+    }
+  }, {
+    key: "isFontsLoaded",
+    value: function isFontsLoaded() {
+      return this.fonts.every(function (_) {
+        return _.loaded;
+      });
+    }
+  }, {
+    key: "createDocumentElement",
+    value: function createDocumentElement(document) {
+      var documentElement = this.createElement(document.documentElement);
+      documentElement.root = true;
+      documentElement.addStylesFromStyleDefinition();
+      this.documentElement = documentElement;
+      return documentElement;
+    }
+  }, {
+    key: "createElement",
+    value: function createElement(node) {
+      var elementType = node.nodeName.replace(/^[^:]+:/, '');
+      var ElementType = Document.elementTypes[elementType];
+
+      if (typeof ElementType !== 'undefined') {
+        return new ElementType(this, node);
+      }
+
+      return new UnknownElement(this, node);
+    }
+  }, {
+    key: "createTextNode",
+    value: function createTextNode(node) {
+      return new TextNode(this, node);
+    }
+  }, {
+    key: "setViewBox",
+    value: function setViewBox(config) {
+      this.screen.setViewBox(_objectSpread$1({
+        document: this
+      }, config));
+    }
+  }, {
+    key: "window",
+    get: function get() {
+      return this.screen.window;
+    }
+  }, {
+    key: "fetch",
+    get: function get() {
+      return this.screen.fetch;
+    }
+  }, {
+    key: "ctx",
+    get: function get() {
+      return this.screen.ctx;
+    }
+  }, {
+    key: "emSize",
+    get: function get() {
+      var emSizeStack = this.emSizeStack;
+      return emSizeStack[emSizeStack.length - 1];
+    },
+    set: function set(value) {
+      var emSizeStack = this.emSizeStack;
+      emSizeStack.push(value);
+    }
+  }]);
+
+  return Document;
+}();
+Document.createCanvas = createCanvas;
+Document.createImage = createImage;
+Document.elementTypes = elements;
+
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+/**
+ * SVG renderer on canvas.
+ */
+
+var Canvg = /*#__PURE__*/function () {
+  /**
+   * Main constructor.
+   * @param ctx - Rendering context.
+   * @param svg - SVG Document.
+   * @param options - Rendering options.
+   */
+  function Canvg(ctx, svg) {
+    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+
+    _classCallCheck__default['default'](this, Canvg);
+
+    this.parser = new Parser(options);
+    this.screen = new Screen(ctx, options);
+    this.options = options;
+    var document = new Document(this, options);
+    var documentElement = document.createDocumentElement(svg);
+    this.document = document;
+    this.documentElement = documentElement;
+  }
+  /**
+   * Create Canvg instance from SVG source string or URL.
+   * @param ctx - Rendering context.
+   * @param svg - SVG source string or URL.
+   * @param options - Rendering options.
+   * @returns Canvg instance.
+   */
+
+
+  _createClass__default['default'](Canvg, [{
+    key: "fork",
+
+    /**
+     * Create new Canvg instance with inherited options.
+     * @param ctx - Rendering context.
+     * @param svg - SVG source string or URL.
+     * @param options - Rendering options.
+     * @returns Canvg instance.
+     */
+    value: function fork(ctx, svg) {
+      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+      return Canvg.from(ctx, svg, _objectSpread(_objectSpread({}, this.options), options));
+    }
+    /**
+     * Create new Canvg instance with inherited options.
+     * @param ctx - Rendering context.
+     * @param svg - SVG source string.
+     * @param options - Rendering options.
+     * @returns Canvg instance.
+     */
+
+  }, {
+    key: "forkString",
+    value: function forkString(ctx, svg) {
+      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+      return Canvg.fromString(ctx, svg, _objectSpread(_objectSpread({}, this.options), options));
+    }
+    /**
+     * Document is ready promise.
+     * @returns Ready promise.
+     */
+
+  }, {
+    key: "ready",
+    value: function ready() {
+      return this.screen.ready();
+    }
+    /**
+     * Document is ready value.
+     * @returns Is ready or not.
+     */
+
+  }, {
+    key: "isReady",
+    value: function isReady() {
+      return this.screen.isReady();
+    }
+    /**
+     * Render only first frame, ignoring animations and mouse.
+     * @param options - Rendering options.
+     */
+
+  }, {
+    key: "render",
+    value: function () {
+      var _render = _asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee() {
+        var options,
+            _args = arguments;
+        return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
+          while (1) {
+            switch (_context.prev = _context.next) {
+              case 0:
+                options = _args.length > 0 && _args[0] !== undefined ? _args[0] : {};
+                this.start(_objectSpread({
+                  enableRedraw: true,
+                  ignoreAnimation: true,
+                  ignoreMouse: true
+                }, options));
+                _context.next = 4;
+                return this.ready();
+
+              case 4:
+                this.stop();
+
+              case 5:
+              case "end":
+                return _context.stop();
+            }
+          }
+        }, _callee, this);
+      }));
+
+      function render() {
+        return _render.apply(this, arguments);
+      }
+
+      return render;
+    }()
+    /**
+     * Start rendering.
+     * @param options - Render options.
+     */
+
+  }, {
+    key: "start",
+    value: function start() {
+      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+      var documentElement = this.documentElement,
+          screen = this.screen,
+          baseOptions = this.options;
+      screen.start(documentElement, _objectSpread(_objectSpread({
+        enableRedraw: true
+      }, baseOptions), options));
+    }
+    /**
+     * Stop rendering.
+     */
+
+  }, {
+    key: "stop",
+    value: function stop() {
+      this.screen.stop();
+    }
+    /**
+     * Resize SVG to fit in given size.
+     * @param width
+     * @param height
+     * @param preserveAspectRatio
+     */
+
+  }, {
+    key: "resize",
+    value: function resize(width) {
+      var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : width;
+      var preserveAspectRatio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
+      this.documentElement.resize(width, height, preserveAspectRatio);
+    }
+  }], [{
+    key: "from",
+    value: function () {
+      var _from = _asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee2(ctx, svg) {
+        var options,
+            parser,
+            svgDocument,
+            _args2 = arguments;
+        return _regeneratorRuntime__default['default'].wrap(function _callee2$(_context2) {
+          while (1) {
+            switch (_context2.prev = _context2.next) {
+              case 0:
+                options = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : {};
+                parser = new Parser(options);
+                _context2.next = 4;
+                return parser.parse(svg);
+
+              case 4:
+                svgDocument = _context2.sent;
+                return _context2.abrupt("return", new Canvg(ctx, svgDocument, options));
+
+              case 6:
+              case "end":
+                return _context2.stop();
+            }
+          }
+        }, _callee2);
+      }));
+
+      function from(_x, _x2) {
+        return _from.apply(this, arguments);
+      }
+
+      return from;
+    }()
+    /**
+     * Create Canvg instance from SVG source string.
+     * @param ctx - Rendering context.
+     * @param svg - SVG source string.
+     * @param options - Rendering options.
+     * @returns Canvg instance.
+     */
+
+  }, {
+    key: "fromString",
+    value: function fromString(ctx, svg) {
+      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+      var parser = new Parser(options);
+      var svgDocument = parser.parseFromString(svg);
+      return new Canvg(ctx, svgDocument, options);
+    }
+  }]);
+
+  return Canvg;
+}();
+
+exports.AElement = AElement;
+exports.AnimateColorElement = AnimateColorElement;
+exports.AnimateElement = AnimateElement;
+exports.AnimateTransformElement = AnimateTransformElement;
+exports.BoundingBox = BoundingBox;
+exports.CB1 = CB1;
+exports.CB2 = CB2;
+exports.CB3 = CB3;
+exports.CB4 = CB4;
+exports.Canvg = Canvg;
+exports.CircleElement = CircleElement;
+exports.ClipPathElement = ClipPathElement;
+exports.DefsElement = DefsElement;
+exports.DescElement = DescElement;
+exports.Document = Document;
+exports.Element = Element;
+exports.EllipseElement = EllipseElement;
+exports.FeColorMatrixElement = FeColorMatrixElement;
+exports.FeCompositeElement = FeCompositeElement;
+exports.FeDropShadowElement = FeDropShadowElement;
+exports.FeGaussianBlurElement = FeGaussianBlurElement;
+exports.FeMorphologyElement = FeMorphologyElement;
+exports.FilterElement = FilterElement;
+exports.Font = Font;
+exports.FontElement = FontElement;
+exports.FontFaceElement = FontFaceElement;
+exports.GElement = GElement;
+exports.GlyphElement = GlyphElement;
+exports.GradientElement = GradientElement;
+exports.ImageElement = ImageElement;
+exports.LineElement = LineElement;
+exports.LinearGradientElement = LinearGradientElement;
+exports.MarkerElement = MarkerElement;
+exports.MaskElement = MaskElement;
+exports.Matrix = Matrix;
+exports.MissingGlyphElement = MissingGlyphElement;
+exports.Mouse = Mouse;
+exports.PSEUDO_ZERO = PSEUDO_ZERO;
+exports.Parser = Parser;
+exports.PathElement = PathElement;
+exports.PathParser = PathParser;
+exports.PatternElement = PatternElement;
+exports.Point = Point;
+exports.PolygonElement = PolygonElement;
+exports.PolylineElement = PolylineElement;
+exports.Property = Property;
+exports.QB1 = QB1;
+exports.QB2 = QB2;
+exports.QB3 = QB3;
+exports.RadialGradientElement = RadialGradientElement;
+exports.RectElement = RectElement;
+exports.RenderedElement = RenderedElement;
+exports.Rotate = Rotate;
+exports.SVGElement = SVGElement;
+exports.SVGFontLoader = SVGFontLoader;
+exports.Scale = Scale;
+exports.Screen = Screen;
+exports.Skew = Skew;
+exports.SkewX = SkewX;
+exports.SkewY = SkewY;
+exports.StopElement = StopElement;
+exports.StyleElement = StyleElement;
+exports.SymbolElement = SymbolElement;
+exports.TRefElement = TRefElement;
+exports.TSpanElement = TSpanElement;
+exports.TextElement = TextElement;
+exports.TextPathElement = TextPathElement;
+exports.TitleElement = TitleElement;
+exports.Transform = Transform;
+exports.Translate = Translate;
+exports.UnknownElement = UnknownElement;
+exports.UseElement = UseElement;
+exports.ViewPort = ViewPort;
+exports.compressSpaces = compressSpaces;
+exports.default = Canvg;
+exports.getSelectorSpecificity = getSelectorSpecificity;
+exports.normalizeAttributeName = normalizeAttributeName;
+exports.normalizeColor = normalizeColor;
+exports.parseExternalUrl = parseExternalUrl;
+exports.presets = index;
+exports.toNumbers = toNumbers;
+exports.trimLeft = trimLeft;
+exports.trimRight = trimRight;
+exports.vectorMagnitude = vectorMagnitude;
+exports.vectorsAngle = vectorsAngle;
+exports.vectorsRatio = vectorsRatio;
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyJ9
diff --git a/node_modules/canvg/lib/presets/index.d.ts b/node_modules/canvg/lib/presets/index.d.ts
new file mode 100644
index 0000000..3c0c4e2
--- /dev/null
+++ b/node_modules/canvg/lib/presets/index.d.ts
@@ -0,0 +1,3 @@
+export * from './offscreen';
+export * from './node';
+//# sourceMappingURL=index.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/presets/index.d.ts.map b/node_modules/canvg/lib/presets/index.d.ts.map
new file mode 100644
index 0000000..1be8a53
--- /dev/null
+++ b/node_modules/canvg/lib/presets/index.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/presets/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/presets/node.d.ts b/node_modules/canvg/lib/presets/node.d.ts
new file mode 100644
index 0000000..8f478af
--- /dev/null
+++ b/node_modules/canvg/lib/presets/node.d.ts
@@ -0,0 +1,45 @@
+import { DOMParser } from './types';
+/**
+ * `node-canvas` exports.
+ */
+interface ICanvas {
+    createCanvas(width: number, height: number): any;
+    loadImage(src: string): Promise<any>;
+}
+/**
+ * WHATWG-compatible `fetch` function.
+ */
+declare type Fetch = (input: any, config?: any) => Promise<any>;
+interface IConfig {
+    /**
+     * XML/HTML parser from string into DOM Document.
+     */
+    DOMParser: DOMParser;
+    /**
+     * `node-canvas` exports.
+     */
+    canvas: ICanvas;
+    /**
+     * WHATWG-compatible `fetch` function.
+     */
+    fetch: Fetch;
+}
+/**
+ * Options preset for `node-canvas`.
+ * @param config - Preset requirements.
+ * @param config.DOMParser - XML/HTML parser from string into DOM Document.
+ * @param config.canvas - `node-canvas` exports.
+ * @param config.fetch - WHATWG-compatible `fetch` function.
+ * @returns Preset object.
+ */
+export declare function node({ DOMParser, canvas, fetch }: IConfig): {
+    window: null;
+    ignoreAnimation: boolean;
+    ignoreMouse: boolean;
+    DOMParser: DOMParser;
+    fetch: Fetch;
+    createCanvas: (width: number, height: number) => any;
+    createImage: (src: string) => Promise<any>;
+};
+export {};
+//# sourceMappingURL=node.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/presets/node.d.ts.map b/node_modules/canvg/lib/presets/node.d.ts.map
new file mode 100644
index 0000000..4ef24e2
--- /dev/null
+++ b/node_modules/canvg/lib/presets/node.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/presets/node.ts"],"names":[],"mappings":"AACA,OAAO,EACN,SAAS,EACT,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,UAAU,OAAO;IAChB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC;IACjD,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;CACrC;AAED;;GAEG;AACH,aAAK,KAAK,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;AAExD,UAAU,OAAO;IAChB;;OAEG;IACH,SAAS,EAAE,SAAS,CAAC;IACrB;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;CACb;AAED;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAAC,EACpB,SAAS,EACT,MAAM,EACN,KAAK,EACL,EAAE,OAAO;;;;;;;;EAUT"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/presets/offscreen.d.ts b/node_modules/canvg/lib/presets/offscreen.d.ts
new file mode 100644
index 0000000..e0533d3
--- /dev/null
+++ b/node_modules/canvg/lib/presets/offscreen.d.ts
@@ -0,0 +1,23 @@
+import { DOMParser } from './types';
+interface IConfig {
+    /**
+     * XML/HTML parser from string into DOM Document.
+     */
+    DOMParser?: DOMParser;
+}
+/**
+ * Options preset for `OffscreenCanvas`.
+ * @param config - Preset requirements.
+ * @param config.DOMParser - XML/HTML parser from string into DOM Document.
+ * @returns Preset object.
+ */
+export declare function offscreen({ DOMParser: DOMParserFallback }?: IConfig): {
+    window: null;
+    ignoreAnimation: boolean;
+    ignoreMouse: boolean;
+    DOMParser: DOMParser;
+    createCanvas(width: number, height: number): OffscreenCanvas;
+    createImage(url: string): Promise<ImageBitmap>;
+};
+export {};
+//# sourceMappingURL=offscreen.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/presets/offscreen.d.ts.map b/node_modules/canvg/lib/presets/offscreen.d.ts.map
new file mode 100644
index 0000000..ef890f5
--- /dev/null
+++ b/node_modules/canvg/lib/presets/offscreen.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"offscreen.d.ts","sourceRoot":"","sources":["../../src/presets/offscreen.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,SAAS,EACT,MAAM,SAAS,CAAC;AAEjB,UAAU,OAAO;IAChB;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,EACzB,SAAS,EAAE,iBAAiB,EAC5B,GAAE,OAAY;;;;;wBAMO,MAAM,UAAU,MAAM;qBAGnB,MAAM;EAgB9B"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/presets/types.d.ts b/node_modules/canvg/lib/presets/types.d.ts
new file mode 100644
index 0000000..a757a4b
--- /dev/null
+++ b/node_modules/canvg/lib/presets/types.d.ts
@@ -0,0 +1,8 @@
+/**
+ * XML/HTML parser from string into DOM Document.
+ */
+export interface DOMParser {
+    prototype: any;
+    new (): any;
+}
+//# sourceMappingURL=types.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/presets/types.d.ts.map b/node_modules/canvg/lib/presets/types.d.ts.map
new file mode 100644
index 0000000..58f4975
--- /dev/null
+++ b/node_modules/canvg/lib/presets/types.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/presets/types.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,SAAS;IACzB,SAAS,EAAE,GAAG,CAAC;IACf,QAAQ,GAAG,CAAC;CACZ"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/types.d.ts b/node_modules/canvg/lib/types.d.ts
new file mode 100644
index 0000000..3df4df6
--- /dev/null
+++ b/node_modules/canvg/lib/types.d.ts
@@ -0,0 +1,2 @@
+export declare type RenderingContext2D = CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D;
+//# sourceMappingURL=types.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/types.d.ts.map b/node_modules/canvg/lib/types.d.ts.map
new file mode 100644
index 0000000..44bb65c
--- /dev/null
+++ b/node_modules/canvg/lib/types.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AACA,oBAAY,kBAAkB,GAAG,wBAAwB,GAAG,iCAAiC,CAAC"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/umd.js b/node_modules/canvg/lib/umd.js
new file mode 100644
index 0000000..7c5ab49
--- /dev/null
+++ b/node_modules/canvg/lib/umd.js
@@ -0,0 +1,17 @@
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).canvg={})}(this,(function(t){"use strict";var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function r(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function n(t){var e={exports:{}};return t(e,e.exports),e.exports}var i,o,a=function(t){return t&&t.Math==Math&&t},u=a("object"==typeof globalThis&&globalThis)||a("object"==typeof window&&window)||a("object"==typeof self&&self)||a("object"==typeof e&&e)||function(){return this}()||Function("return this")(),s=function(t,e){try{Object.defineProperty(u,t,{value:e,configurable:!0,writable:!0})}catch(r){u[t]=e}return e},c="__core-js_shared__",l=u[c]||s(c,{}),f=n((function(t){(t.exports=function(t,e){return l[t]||(l[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.18.2",mode:"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})})),h=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t},p=function(t){return Object(h(t))},v={}.hasOwnProperty,y=Object.hasOwn||function(t,e){return v.call(p(t),e)},d=0,g=Math.random(),m=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++d+g).toString(36)},x=function(t){return"function"==typeof t},b=function(t){return x(t)?t:void 0},w=function(t,e){return arguments.length<2?b(u[t]):u[t]&&u[t][e]},S=w("navigator","userAgent")||"",O=u.process,k=u.Deno,T=O&&O.versions||k&&k.version,A=T&&T.v8;A?o=(i=A.split("."))[0]<4?1:i[0]+i[1]:S&&(!(i=S.match(/Edge\/(\d+)/))||i[1]>=74)&&(i=S.match(/Chrome\/(\d+)/))&&(o=i[1]);var R=o&&+o,P=function(t){try{return!!t()}catch(t){return!0}},E=!!Object.getOwnPropertySymbols&&!P((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&R&&R<41})),C=E&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,M=f("wks"),N=u.Symbol,_=C?N:N&&N.withoutSetter||m,I=function(t){return y(M,t)&&(E||"string"==typeof M[t])||(E&&y(N,t)?M[t]=N[t]:M[t]=_("Symbol."+t)),M[t]},V={};V[I("toStringTag")]="z";var L="[object z]"===String(V),B=!P((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),D=function(t){return"object"==typeof t?null!==t:x(t)},j=u.document,F=D(j)&&D(j.createElement),z=function(t){return F?j.createElement(t):{}},U=!B&&!P((function(){return 7!=Object.defineProperty(z("div"),"a",{get:function(){return 7}}).a})),H=function(t){if(D(t))return t;throw TypeError(String(t)+" is not an object")},X=C?function(t){return"symbol"==typeof t}:function(t){var e=w("Symbol");return x(e)&&Object(t)instanceof e},Y=function(t){try{return String(t)}catch(t){return"Object"}},G=function(t){if(x(t))return t;throw TypeError(Y(t)+" is not a function")},W=function(t,e){var r=t[e];return null==r?void 0:G(r)},q=I("toPrimitive"),$=function(t,e){if(!D(t)||X(t))return t;var r,n=W(t,q);if(n){if(void 0===e&&(e="default"),r=n.call(t,e),!D(r)||X(r))return r;throw TypeError("Can't convert object to primitive value")}return void 0===e&&(e="number"),function(t,e){var r,n;if("string"===e&&x(r=t.toString)&&!D(n=r.call(t)))return n;if(x(r=t.valueOf)&&!D(n=r.call(t)))return n;if("string"!==e&&x(r=t.toString)&&!D(n=r.call(t)))return n;throw TypeError("Can't convert object to primitive value")}(t,e)},Q=function(t){var e=$(t,"string");return X(e)?e:String(e)},Z=Object.defineProperty,K={f:B?Z:function(t,e,r){if(H(t),e=Q(e),H(r),U)try{return Z(t,e,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported");return"value"in r&&(t[e]=r.value),t}},J=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}},tt=B?function(t,e,r){return K.f(t,e,J(1,r))}:function(t,e,r){return t[e]=r,t},et=Function.toString;x(l.inspectSource)||(l.inspectSource=function(t){return et.call(t)});var rt,nt,it,ot=l.inspectSource,at=u.WeakMap,ut=x(at)&&/native code/.test(ot(at)),st=f("keys"),ct=function(t){return st[t]||(st[t]=m(t))},lt={},ft="Object already initialized",ht=u.WeakMap;if(ut||l.state){var pt=l.state||(l.state=new ht),vt=pt.get,yt=pt.has,dt=pt.set;rt=function(t,e){if(yt.call(pt,t))throw new TypeError(ft);return e.facade=t,dt.call(pt,t,e),e},nt=function(t){return vt.call(pt,t)||{}},it=function(t){return yt.call(pt,t)}}else{var gt=ct("state");lt[gt]=!0,rt=function(t,e){if(y(t,gt))throw new TypeError(ft);return e.facade=t,tt(t,gt,e),e},nt=function(t){return y(t,gt)?t[gt]:{}},it=function(t){return y(t,gt)}}var mt={set:rt,get:nt,has:it,enforce:function(t){return it(t)?nt(t):rt(t,{})},getterFor:function(t){return function(e){var r;if(!D(e)||(r=nt(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return r}}},xt=Function.prototype,bt=B&&Object.getOwnPropertyDescriptor,wt=y(xt,"name"),St={EXISTS:wt,PROPER:wt&&"something"===function(){}.name,CONFIGURABLE:wt&&(!B||B&&bt(xt,"name").configurable)},Ot=n((function(t){var e=St.CONFIGURABLE,r=mt.get,n=mt.enforce,i=String(String).split("String");(t.exports=function(t,r,o,a){var c,l=!!a&&!!a.unsafe,f=!!a&&!!a.enumerable,h=!!a&&!!a.noTargetGet,p=a&&void 0!==a.name?a.name:r;x(o)&&("Symbol("===String(p).slice(0,7)&&(p="["+String(p).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),(!y(o,"name")||e&&o.name!==p)&&tt(o,"name",p),(c=n(o)).source||(c.source=i.join("string"==typeof p?p:""))),t!==u?(l?!h&&t[r]&&(f=!0):delete t[r],f?t[r]=o:tt(t,r,o)):f?t[r]=o:s(r,o)})(Function.prototype,"toString",(function(){return x(this)&&r(this).source||ot(this)}))})),kt={}.toString,Tt=function(t){return kt.call(t).slice(8,-1)},At=I("toStringTag"),Rt="Arguments"==Tt(function(){return arguments}()),Pt=L?Tt:function(t){var e,r,n;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(r=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),At))?r:Rt?Tt(e):"Object"==(n=Tt(e))&&x(e.callee)?"Arguments":n},Et=L?{}.toString:function(){return"[object "+Pt(this)+"]"};L||Ot(Object.prototype,"toString",Et,{unsafe:!0});var Ct={}.propertyIsEnumerable,Mt=Object.getOwnPropertyDescriptor,Nt={f:Mt&&!Ct.call({1:2},1)?function(t){var e=Mt(this,t);return!!e&&e.enumerable}:Ct},_t="".split,It=P((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==Tt(t)?_t.call(t,""):Object(t)}:Object,Vt=function(t){return It(h(t))},Lt=Object.getOwnPropertyDescriptor,Bt={f:B?Lt:function(t,e){if(t=Vt(t),e=Q(e),U)try{return Lt(t,e)}catch(t){}if(y(t,e))return J(!Nt.f.call(t,e),t[e])}},Dt=Math.ceil,jt=Math.floor,Ft=function(t){var e=+t;return e!=e||0===e?0:(e>0?jt:Dt)(e)},zt=Math.max,Ut=Math.min,Ht=function(t,e){var r=Ft(t);return r<0?zt(r+e,0):Ut(r,e)},Xt=Math.min,Yt=function(t){return t>0?Xt(Ft(t),9007199254740991):0},Gt=function(t){return Yt(t.length)},Wt=function(t){return function(e,r,n){var i,o=Vt(e),a=Gt(o),u=Ht(n,a);if(t&&r!=r){for(;a>u;)if((i=o[u++])!=i)return!0}else for(;a>u;u++)if((t||u in o)&&o[u]===r)return t||u||0;return!t&&-1}},qt={includes:Wt(!0),indexOf:Wt(!1)},$t=qt.indexOf,Qt=function(t,e){var r,n=Vt(t),i=0,o=[];for(r in n)!y(lt,r)&&y(n,r)&&o.push(r);for(;e.length>i;)y(n,r=e[i++])&&(~$t(o,r)||o.push(r));return o},Zt=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],Kt=Zt.concat("length","prototype"),Jt={f:Object.getOwnPropertyNames||function(t){return Qt(t,Kt)}},te={f:Object.getOwnPropertySymbols},ee=w("Reflect","ownKeys")||function(t){var e=Jt.f(H(t)),r=te.f;return r?e.concat(r(t)):e},re=function(t,e){for(var r=ee(e),n=K.f,i=Bt.f,o=0;o<r.length;o++){var a=r[o];y(t,a)||n(t,a,i(e,a))}},ne=/#|\.prototype\./,ie=function(t,e){var r=ae[oe(t)];return r==se||r!=ue&&(x(e)?P(e):!!e)},oe=ie.normalize=function(t){return String(t).replace(ne,".").toLowerCase()},ae=ie.data={},ue=ie.NATIVE="N",se=ie.POLYFILL="P",ce=ie,le=Bt.f,fe=function(t,e){var r,n,i,o,a,c=t.target,l=t.global,f=t.stat;if(r=l?u:f?u[c]||s(c,{}):(u[c]||{}).prototype)for(n in e){if(o=e[n],i=t.noTargetGet?(a=le(r,n))&&a.value:r[n],!ce(l?n:c+(f?".":"#")+n,t.forced)&&void 0!==i){if(typeof o==typeof i)continue;re(o,i)}(t.sham||i&&i.sham)&&tt(o,"sham",!0),Ot(r,n,o,t)}},he=u.Promise,pe=function(t,e,r){for(var n in e)Ot(t,n,e[n],r);return t},ve=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,r={};try{(t=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(r,[]),e=r instanceof Array}catch(t){}return function(r,n){return H(r),function(t){if("object"==typeof t||x(t))return t;throw TypeError("Can't set "+String(t)+" as a prototype")}(n),e?t.call(r,n):r.__proto__=n,r}}():void 0),ye=K.f,de=I("toStringTag"),ge=function(t,e,r){t&&!y(t=r?t:t.prototype,de)&&ye(t,de,{configurable:!0,value:e})},me=I("species"),xe=function(t){var e=w(t),r=K.f;B&&e&&!e[me]&&r(e,me,{configurable:!0,get:function(){return this}})},be=function(t,e,r){if(t instanceof e)return t;throw TypeError("Incorrect "+(r?r+" ":"")+"invocation")},we={},Se=I("iterator"),Oe=Array.prototype,ke=function(t){return void 0!==t&&(we.Array===t||Oe[Se]===t)},Te=function(t,e,r){if(G(t),void 0===e)return t;switch(r){case 0:return function(){return t.call(e)};case 1:return function(r){return t.call(e,r)};case 2:return function(r,n){return t.call(e,r,n)};case 3:return function(r,n,i){return t.call(e,r,n,i)}}return function(){return t.apply(e,arguments)}},Ae=I("iterator"),Re=function(t){if(null!=t)return W(t,Ae)||W(t,"@@iterator")||we[Pt(t)]},Pe=function(t,e){var r=arguments.length<2?Re(t):e;if(G(r))return H(r.call(t));throw TypeError(String(t)+" is not iterable")},Ee=function(t,e,r){var n,i;H(t);try{if(!(n=W(t,"return"))){if("throw"===e)throw r;return r}n=n.call(t)}catch(t){i=!0,n=t}if("throw"===e)throw r;if(i)throw n;return H(n),r},Ce=function(t,e){this.stopped=t,this.result=e},Me=function(t,e,r){var n,i,o,a,u,s,c,l=r&&r.that,f=!(!r||!r.AS_ENTRIES),h=!(!r||!r.IS_ITERATOR),p=!(!r||!r.INTERRUPTED),v=Te(e,l,1+f+p),y=function(t){return n&&Ee(n,"normal",t),new Ce(!0,t)},d=function(t){return f?(H(t),p?v(t[0],t[1],y):v(t[0],t[1])):p?v(t,y):v(t)};if(h)n=t;else{if(!(i=Re(t)))throw TypeError(String(t)+" is not iterable");if(ke(i)){for(o=0,a=Gt(t);a>o;o++)if((u=d(t[o]))&&u instanceof Ce)return u;return new Ce(!1)}n=Pe(t,i)}for(s=n.next;!(c=s.call(n)).done;){try{u=d(c.value)}catch(t){Ee(n,"throw",t)}if("object"==typeof u&&u&&u instanceof Ce)return u}return new Ce(!1)},Ne=I("iterator"),_e=!1;try{var Ie=0,Ve={next:function(){return{done:!!Ie++}},return:function(){_e=!0}};Ve[Ne]=function(){return this},Array.from(Ve,(function(){throw 2}))}catch(t){}var Le,Be,De,je,Fe=function(t,e){if(!e&&!_e)return!1;var r=!1;try{var n={};n[Ne]=function(){return{next:function(){return{done:r=!0}}}},t(n)}catch(t){}return r},ze=[],Ue=w("Reflect","construct"),He=/^\s*(?:class|function)\b/,Xe=He.exec,Ye=!He.exec((function(){})),Ge=function(t){if(!x(t))return!1;try{return Ue(Object,ze,t),!0}catch(t){return!1}},We=!Ue||P((function(){var t;return Ge(Ge.call)||!Ge(Object)||!Ge((function(){t=!0}))||t}))?function(t){if(!x(t))return!1;switch(Pt(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}return Ye||!!Xe.call(He,ot(t))}:Ge,qe=I("species"),$e=function(t,e){var r,n=H(t).constructor;return void 0===n||null==(r=H(n)[qe])?e:function(t){if(We(t))return t;throw TypeError(Y(t)+" is not a constructor")}(r)},Qe=w("document","documentElement"),Ze=/(?:ipad|iphone|ipod).*applewebkit/i.test(S),Ke="process"==Tt(u.process),Je=u.setImmediate,tr=u.clearImmediate,er=u.process,rr=u.MessageChannel,nr=u.Dispatch,ir=0,or={},ar="onreadystatechange";try{Le=u.location}catch(t){}var ur=function(t){if(or.hasOwnProperty(t)){var e=or[t];delete or[t],e()}},sr=function(t){return function(){ur(t)}},cr=function(t){ur(t.data)},lr=function(t){u.postMessage(String(t),Le.protocol+"//"+Le.host)};Je&&tr||(Je=function(t){for(var e=[],r=arguments.length,n=1;r>n;)e.push(arguments[n++]);return or[++ir]=function(){(x(t)?t:Function(t)).apply(void 0,e)},Be(ir),ir},tr=function(t){delete or[t]},Ke?Be=function(t){er.nextTick(sr(t))}:nr&&nr.now?Be=function(t){nr.now(sr(t))}:rr&&!Ze?(je=(De=new rr).port2,De.port1.onmessage=cr,Be=Te(je.postMessage,je,1)):u.addEventListener&&x(u.postMessage)&&!u.importScripts&&Le&&"file:"!==Le.protocol&&!P(lr)?(Be=lr,u.addEventListener("message",cr,!1)):Be=ar in z("script")?function(t){Qe.appendChild(z("script")).onreadystatechange=function(){Qe.removeChild(this),ur(t)}}:function(t){setTimeout(sr(t),0)});var fr,hr,pr,vr,yr,dr,gr,mr,xr={set:Je,clear:tr},br=/ipad|iphone|ipod/i.test(S)&&void 0!==u.Pebble,wr=/web0s(?!.*chrome)/i.test(S),Sr=Bt.f,Or=xr.set,kr=u.MutationObserver||u.WebKitMutationObserver,Tr=u.document,Ar=u.process,Rr=u.Promise,Pr=Sr(u,"queueMicrotask"),Er=Pr&&Pr.value;Er||(fr=function(){var t,e;for(Ke&&(t=Ar.domain)&&t.exit();hr;){e=hr.fn,hr=hr.next;try{e()}catch(t){throw hr?vr():pr=void 0,t}}pr=void 0,t&&t.enter()},Ze||Ke||wr||!kr||!Tr?!br&&Rr&&Rr.resolve?((gr=Rr.resolve(void 0)).constructor=Rr,mr=gr.then,vr=function(){mr.call(gr,fr)}):vr=Ke?function(){Ar.nextTick(fr)}:function(){Or.call(u,fr)}:(yr=!0,dr=Tr.createTextNode(""),new kr(fr).observe(dr,{characterData:!0}),vr=function(){dr.data=yr=!yr}));var Cr,Mr,Nr,_r,Ir=Er||function(t){var e={fn:t,next:void 0};pr&&(pr.next=e),hr||(hr=e,vr()),pr=e},Vr=function(t){var e,r;this.promise=new t((function(t,n){if(void 0!==e||void 0!==r)throw TypeError("Bad Promise constructor");e=t,r=n})),this.resolve=G(e),this.reject=G(r)},Lr={f:function(t){return new Vr(t)}},Br=function(t){try{return{error:!1,value:t()}}catch(t){return{error:!0,value:t}}},Dr="object"==typeof window,jr=xr.set,Fr=I("species"),zr="Promise",Ur=mt.get,Hr=mt.set,Xr=mt.getterFor(zr),Yr=he&&he.prototype,Gr=he,Wr=Yr,qr=u.TypeError,$r=u.document,Qr=u.process,Zr=Lr.f,Kr=Zr,Jr=!!($r&&$r.createEvent&&u.dispatchEvent),tn=x(u.PromiseRejectionEvent),en="unhandledrejection",rn=!1,nn=ce(zr,(function(){var t=ot(Gr),e=t!==String(Gr);if(!e&&66===R)return!0;if(R>=51&&/native code/.test(t))return!1;var r=new Gr((function(t){t(1)})),n=function(t){t((function(){}),(function(){}))};return(r.constructor={})[Fr]=n,!(rn=r.then((function(){}))instanceof n)||!e&&Dr&&!tn})),on=nn||!Fe((function(t){Gr.all(t).catch((function(){}))})),an=function(t){var e;return!(!D(t)||!x(e=t.then))&&e},un=function(t,e){if(!t.notified){t.notified=!0;var r=t.reactions;Ir((function(){for(var n=t.value,i=1==t.state,o=0;r.length>o;){var a,u,s,c=r[o++],l=i?c.ok:c.fail,f=c.resolve,h=c.reject,p=c.domain;try{l?(i||(2===t.rejection&&fn(t),t.rejection=1),!0===l?a=n:(p&&p.enter(),a=l(n),p&&(p.exit(),s=!0)),a===c.promise?h(qr("Promise-chain cycle")):(u=an(a))?u.call(a,f,h):f(a)):h(n)}catch(t){p&&!s&&p.exit(),h(t)}}t.reactions=[],t.notified=!1,e&&!t.rejection&&cn(t)}))}},sn=function(t,e,r){var n,i;Jr?((n=$r.createEvent("Event")).promise=e,n.reason=r,n.initEvent(t,!1,!0),u.dispatchEvent(n)):n={promise:e,reason:r},!tn&&(i=u["on"+t])?i(n):t===en&&function(t,e){var r=u.console;r&&r.error&&(1===arguments.length?r.error(t):r.error(t,e))}("Unhandled promise rejection",r)},cn=function(t){jr.call(u,(function(){var e,r=t.facade,n=t.value;if(ln(t)&&(e=Br((function(){Ke?Qr.emit("unhandledRejection",n,r):sn(en,r,n)})),t.rejection=Ke||ln(t)?2:1,e.error))throw e.value}))},ln=function(t){return 1!==t.rejection&&!t.parent},fn=function(t){jr.call(u,(function(){var e=t.facade;Ke?Qr.emit("rejectionHandled",e):sn("rejectionhandled",e,t.value)}))},hn=function(t,e,r){return function(n){t(e,n,r)}},pn=function(t,e,r){t.done||(t.done=!0,r&&(t=r),t.value=e,t.state=2,un(t,!0))},vn=function(t,e,r){if(!t.done){t.done=!0,r&&(t=r);try{if(t.facade===e)throw qr("Promise can't be resolved itself");var n=an(e);n?Ir((function(){var r={done:!1};try{n.call(e,hn(vn,r,t),hn(pn,r,t))}catch(e){pn(r,e,t)}})):(t.value=e,t.state=1,un(t,!1))}catch(e){pn({done:!1},e,t)}}};if(nn&&(Wr=(Gr=function(t){be(this,Gr,zr),G(t),Cr.call(this);var e=Ur(this);try{t(hn(vn,e),hn(pn,e))}catch(t){pn(e,t)}}).prototype,(Cr=function(t){Hr(this,{type:zr,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:void 0})}).prototype=pe(Wr,{then:function(t,e){var r=Xr(this),n=Zr($e(this,Gr));return n.ok=!x(t)||t,n.fail=x(e)&&e,n.domain=Ke?Qr.domain:void 0,r.parent=!0,r.reactions.push(n),0!=r.state&&un(r,!1),n.promise},catch:function(t){return this.then(void 0,t)}}),Mr=function(){var t=new Cr,e=Ur(t);this.promise=t,this.resolve=hn(vn,e),this.reject=hn(pn,e)},Lr.f=Zr=function(t){return t===Gr||t===Nr?new Mr(t):Kr(t)},x(he)&&Yr!==Object.prototype)){_r=Yr.then,rn||(Ot(Yr,"then",(function(t,e){var r=this;return new Gr((function(t,e){_r.call(r,t,e)})).then(t,e)}),{unsafe:!0}),Ot(Yr,"catch",Wr.catch,{unsafe:!0}));try{delete Yr.constructor}catch(t){}ve&&ve(Yr,Wr)}fe({global:!0,wrap:!0,forced:nn},{Promise:Gr}),ge(Gr,zr,!1),xe(zr),Nr=w(zr),fe({target:zr,stat:!0,forced:nn},{reject:function(t){var e=Zr(this);return e.reject.call(void 0,t),e.promise}}),fe({target:zr,stat:!0,forced:nn},{resolve:function(t){return function(t,e){if(H(t),D(e)&&e.constructor===t)return e;var r=Lr.f(t);return(0,r.resolve)(e),r.promise}(this,t)}}),fe({target:zr,stat:!0,forced:on},{all:function(t){var e=this,r=Zr(e),n=r.resolve,i=r.reject,o=Br((function(){var r=G(e.resolve),o=[],a=0,u=1;Me(t,(function(t){var s=a++,c=!1;o.push(void 0),u++,r.call(e,t).then((function(t){c||(c=!0,o[s]=t,--u||n(o))}),i)})),--u||n(o)}));return o.error&&i(o.value),r.promise},race:function(t){var e=this,r=Zr(e),n=r.reject,i=Br((function(){var i=G(e.resolve);Me(t,(function(t){i.call(e,t).then(r.resolve,n)}))}));return i.error&&n(i.value),r.promise}});var yn=Bt.f;fe({target:"Reflect",stat:!0},{deleteProperty:function(t,e){var r=yn(H(t),e);return!(r&&!r.configurable)&&delete t[e]}});var dn=n((function(t){var e=function(t){var e,r=Object.prototype,n=r.hasOwnProperty,i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",a=i.asyncIterator||"@@asyncIterator",u=i.toStringTag||"@@toStringTag";function s(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{s({},"")}catch(t){s=function(t,e,r){return t[e]=r}}function c(t,e,r,n){var i=e&&e.prototype instanceof d?e:d,o=Object.create(i.prototype),a=new P(n||[]);return o._invoke=function(t,e,r){var n=f;return function(i,o){if(n===p)throw new Error("Generator is already running");if(n===v){if("throw"===i)throw o;return C()}for(r.method=i,r.arg=o;;){var a=r.delegate;if(a){var u=T(a,r);if(u){if(u===y)continue;return u}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(n===f)throw n=v,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n=p;var s=l(t,e,r);if("normal"===s.type){if(n=r.done?v:h,s.arg===y)continue;return{value:s.arg,done:r.done}}"throw"===s.type&&(n=v,r.method="throw",r.arg=s.arg)}}}(t,r,a),o}function l(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=c;var f="suspendedStart",h="suspendedYield",p="executing",v="completed",y={};function d(){}function g(){}function m(){}var x={};s(x,o,(function(){return this}));var b=Object.getPrototypeOf,w=b&&b(b(E([])));w&&w!==r&&n.call(w,o)&&(x=w);var S=m.prototype=d.prototype=Object.create(x);function O(t){["next","throw","return"].forEach((function(e){s(t,e,(function(t){return this._invoke(e,t)}))}))}function k(t,e){function r(i,o,a,u){var s=l(t[i],t,o);if("throw"!==s.type){var c=s.arg,f=c.value;return f&&"object"==typeof f&&n.call(f,"__await")?e.resolve(f.__await).then((function(t){r("next",t,a,u)}),(function(t){r("throw",t,a,u)})):e.resolve(f).then((function(t){c.value=t,a(c)}),(function(t){return r("throw",t,a,u)}))}u(s.arg)}var i;this._invoke=function(t,n){function o(){return new e((function(e,i){r(t,n,e,i)}))}return i=i?i.then(o,o):o()}}function T(t,r){var n=t.iterator[r.method];if(n===e){if(r.delegate=null,"throw"===r.method){if(t.iterator.return&&(r.method="return",r.arg=e,T(t,r),"throw"===r.method))return y;r.method="throw",r.arg=new TypeError("The iterator does not provide a 'throw' method")}return y}var i=l(n,t.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,y;var o=i.arg;return o?o.done?(r[t.resultName]=o.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,y):o:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,y)}function A(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function R(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function P(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(A,this),this.reset(!0)}function E(t){if(t){var r=t[o];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var i=-1,a=function r(){for(;++i<t.length;)if(n.call(t,i))return r.value=t[i],r.done=!1,r;return r.value=e,r.done=!0,r};return a.next=a}}return{next:C}}function C(){return{value:e,done:!0}}return g.prototype=m,s(S,"constructor",m),s(m,"constructor",g),g.displayName=s(m,u,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===g||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,m):(t.__proto__=m,s(t,u,"GeneratorFunction")),t.prototype=Object.create(S),t},t.awrap=function(t){return{__await:t}},O(k.prototype),s(k.prototype,a,(function(){return this})),t.AsyncIterator=k,t.async=function(e,r,n,i,o){void 0===o&&(o=Promise);var a=new k(c(e,r,n,i),o);return t.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},O(S),s(S,u,"Generator"),s(S,o,(function(){return this})),s(S,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=[];for(var r in t)e.push(r);return e.reverse(),function r(){for(;e.length;){var n=e.pop();if(n in t)return r.value=n,r.done=!1,r}return r.done=!0,r}},t.values=E,P.prototype={constructor:P,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(R),!t)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var r=this;function i(n,i){return u.type="throw",u.arg=t,r.next=n,i&&(r.method="next",r.arg=e),!!i}for(var o=this.tryEntries.length-1;o>=0;--o){var a=this.tryEntries[o],u=a.completion;if("root"===a.tryLoc)return i("end");if(a.tryLoc<=this.prev){var s=n.call(a,"catchLoc"),c=n.call(a,"finallyLoc");if(s&&c){if(this.prev<a.catchLoc)return i(a.catchLoc,!0);if(this.prev<a.finallyLoc)return i(a.finallyLoc)}else if(s){if(this.prev<a.catchLoc)return i(a.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return i(a.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var i=this.tryEntries[r];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var o=i;break}}o&&("break"===t||"continue"===t)&&o.tryLoc<=e&&e<=o.finallyLoc&&(o=null);var a=o?o.completion:{};return a.type=t,a.arg=e,o?(this.method="next",this.next=o.finallyLoc,y):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),y},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),R(r),y}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var i=n.arg;R(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:E(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),y}},t}(t.exports);try{regeneratorRuntime=e}catch(t){"object"==typeof globalThis?globalThis.regeneratorRuntime=e:Function("r","regeneratorRuntime = r")(e)}})),gn=r(n((function(t){function e(t,e,r,n,i,o,a){try{var u=t[o](a),s=u.value}catch(t){return void r(t)}u.done?e(s):Promise.resolve(s).then(n,i)}t.exports=function(t){return function(){var r=this,n=arguments;return new Promise((function(i,o){var a=t.apply(r,n);function u(t){e(a,i,o,u,s,"next",t)}function s(t){e(a,i,o,u,s,"throw",t)}u(void 0)}))}},t.exports.default=t.exports,t.exports.__esModule=!0})));var mn=Object.freeze({__proto__:null,offscreen:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.DOMParser,r={window:null,ignoreAnimation:!0,ignoreMouse:!0,DOMParser:e,createCanvas:function(t,e){return new OffscreenCanvas(t,e)},createImage:function(t){return gn(dn.mark((function e(){var r,n,i;return dn.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch(t);case 2:return r=e.sent,e.next=5,r.blob();case 5:return n=e.sent,e.next=8,createImageBitmap(n);case 8:return i=e.sent,e.abrupt("return",i);case 10:case"end":return e.stop()}}),e)})))()}};return"undefined"==typeof DOMParser&&void 0!==e||Reflect.deleteProperty(r,"DOMParser"),r},node:function(t){var e=t.DOMParser,r=t.canvas;return{window:null,ignoreAnimation:!0,ignoreMouse:!0,DOMParser:e,fetch:t.fetch,createCanvas:r.createCanvas,createImage:r.loadImage}}}),xn=Array.isArray||function(t){return"Array"==Tt(t)},bn=I("species"),wn=function(t,e){return new(function(t){var e;return xn(t)&&(e=t.constructor,(We(e)&&(e===Array||xn(e.prototype))||D(e)&&null===(e=e[bn]))&&(e=void 0)),void 0===e?Array:e}(t))(0===e?0:e)},Sn=[].push,On=function(t){var e=1==t,r=2==t,n=3==t,i=4==t,o=6==t,a=7==t,u=5==t||o;return function(s,c,l,f){for(var h,v,y=p(s),d=It(y),g=Te(c,l,3),m=Gt(d),x=0,b=f||wn,w=e?b(s,m):r||a?b(s,0):void 0;m>x;x++)if((u||x in d)&&(v=g(h=d[x],x,y),t))if(e)w[x]=v;else if(v)switch(t){case 3:return!0;case 5:return h;case 6:return x;case 2:Sn.call(w,h)}else switch(t){case 4:return!1;case 7:Sn.call(w,h)}return o?-1:n||i?i:w}},kn={forEach:On(0),map:On(1),filter:On(2),some:On(3),every:On(4),find:On(5),findIndex:On(6),filterReject:On(7)},Tn=I("species"),An=function(t){return R>=51||!P((function(){var e=[];return(e.constructor={})[Tn]=function(){return{foo:1}},1!==e[t](Boolean).foo}))},Rn=kn.map,Pn=An("map");fe({target:"Array",proto:!0,forced:!Pn},{map:function(t){return Rn(this,t,arguments.length>1?arguments[1]:void 0)}});var En=function(t){if("Symbol"===Pt(t))throw TypeError("Cannot convert a Symbol value to a string");return String(t)},Cn="\t\n\v\f\r                 \u2028\u2029\ufeff",Mn="["+Cn+"]",Nn=RegExp("^"+Mn+Mn+"*"),_n=RegExp(Mn+Mn+"*$"),In=function(t){return function(e){var r=En(h(e));return 1&t&&(r=r.replace(Nn,"")),2&t&&(r=r.replace(_n,"")),r}},Vn={start:In(1),end:In(2),trim:In(3)},Ln=Vn.trim,Bn=u.parseFloat,Dn=u.Symbol,jn=Dn&&Dn.iterator,Fn=1/Bn(Cn+"-0")!=-1/0||jn&&!P((function(){Bn(Object(jn))}))?function(t){var e=Ln(En(t)),r=Bn(e);return 0===r&&"-"==e.charAt(0)?-0:r}:Bn;fe({global:!0,forced:parseFloat!=Fn},{parseFloat:Fn});var zn,Un=function(){var t=H(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e},Hn=u.RegExp,Xn={UNSUPPORTED_Y:P((function(){var t=Hn("a","y");return t.lastIndex=2,null!=t.exec("abcd")})),BROKEN_CARET:P((function(){var t=Hn("^r","gy");return t.lastIndex=2,null!=t.exec("str")}))},Yn=Object.keys||function(t){return Qt(t,Zt)},Gn=B?Object.defineProperties:function(t,e){H(t);for(var r,n=Yn(e),i=n.length,o=0;i>o;)K.f(t,r=n[o++],e[r]);return t},Wn=ct("IE_PROTO"),qn=function(){},$n=function(t){return"<script>"+t+"</"+"script>"},Qn=function(t){t.write($n("")),t.close();var e=t.parentWindow.Object;return t=null,e},Zn=function(){try{zn=new ActiveXObject("htmlfile")}catch(t){}var t,e;Zn="undefined"!=typeof document?document.domain&&zn?Qn(zn):((e=z("iframe")).style.display="none",Qe.appendChild(e),e.src=String("javascript:"),(t=e.contentWindow.document).open(),t.write($n("document.F=Object")),t.close(),t.F):Qn(zn);for(var r=Zt.length;r--;)delete Zn.prototype[Zt[r]];return Zn()};lt[Wn]=!0;var Kn,Jn,ti=Object.create||function(t,e){var r;return null!==t?(qn.prototype=H(t),r=new qn,qn.prototype=null,r[Wn]=t):r=Zn(),void 0===e?r:Gn(r,e)},ei=u.RegExp,ri=P((function(){var t=ei(".","s");return!(t.dotAll&&t.exec("\n")&&"s"===t.flags)})),ni=u.RegExp,ii=P((function(){var t=ni("(?<a>b)","g");return"b"!==t.exec("b").groups.a||"bc"!=="b".replace(t,"$<a>c")})),oi=mt.get,ai=RegExp.prototype.exec,ui=f("native-string-replace",String.prototype.replace),si=ai,ci=(Kn=/a/,Jn=/b*/g,ai.call(Kn,"a"),ai.call(Jn,"a"),0!==Kn.lastIndex||0!==Jn.lastIndex),li=Xn.UNSUPPORTED_Y||Xn.BROKEN_CARET,fi=void 0!==/()??/.exec("")[1];(ci||fi||li||ri||ii)&&(si=function(t){var e,r,n,i,o,a,u,s=this,c=oi(s),l=En(t),f=c.raw;if(f)return f.lastIndex=s.lastIndex,e=si.call(f,l),s.lastIndex=f.lastIndex,e;var h=c.groups,p=li&&s.sticky,v=Un.call(s),y=s.source,d=0,g=l;if(p&&(-1===(v=v.replace("y","")).indexOf("g")&&(v+="g"),g=l.slice(s.lastIndex),s.lastIndex>0&&(!s.multiline||s.multiline&&"\n"!==l.charAt(s.lastIndex-1))&&(y="(?: "+y+")",g=" "+g,d++),r=new RegExp("^(?:"+y+")",v)),fi&&(r=new RegExp("^"+y+"$(?!\\s)",v)),ci&&(n=s.lastIndex),i=ai.call(p?r:s,g),p?i?(i.input=i.input.slice(d),i[0]=i[0].slice(d),i.index=s.lastIndex,s.lastIndex+=i[0].length):s.lastIndex=0:ci&&i&&(s.lastIndex=s.global?i.index+i[0].length:n),fi&&i&&i.length>1&&ui.call(i[0],r,(function(){for(o=1;o<arguments.length-2;o++)void 0===arguments[o]&&(i[o]=void 0)})),i&&h)for(i.groups=a=ti(null),o=0;o<h.length;o++)a[(u=h[o])[0]]=i[u[1]];return i});var hi=si;fe({target:"RegExp",proto:!0,forced:/./.exec!==hi},{exec:hi});var pi=I("species"),vi=RegExp.prototype,yi=function(t,e,r,n){var i=I(t),o=!P((function(){var e={};return e[i]=function(){return 7},7!=""[t](e)})),a=o&&!P((function(){var e=!1,r=/a/;return"split"===t&&((r={}).constructor={},r.constructor[pi]=function(){return r},r.flags="",r[i]=/./[i]),r.exec=function(){return e=!0,null},r[i](""),!e}));if(!o||!a||r){var u=/./[i],s=e(i,""[t],(function(t,e,r,n,i){var a=e.exec;return a===hi||a===vi.exec?o&&!i?{done:!0,value:u.call(e,r,n)}:{done:!0,value:t.call(r,e,n)}:{done:!1}}));Ot(String.prototype,t,s[0]),Ot(vi,i,s[1])}n&&tt(vi[i],"sham",!0)},di=function(t){return function(e,r){var n,i,o=En(h(e)),a=Ft(r),u=o.length;return a<0||a>=u?t?"":void 0:(n=o.charCodeAt(a))<55296||n>56319||a+1===u||(i=o.charCodeAt(a+1))<56320||i>57343?t?o.charAt(a):n:t?o.slice(a,a+2):i-56320+(n-55296<<10)+65536}},gi={codeAt:di(!1),charAt:di(!0)},mi=gi.charAt,xi=function(t,e,r){return e+(r?mi(t,e).length:1)},bi=function(t,e){var r=t.exec;if(x(r)){var n=r.call(t,e);return null!==n&&H(n),n}if("RegExp"===Tt(t))return hi.call(t,e);throw TypeError("RegExp#exec called on incompatible receiver")};yi("match",(function(t,e,r){return[function(e){var r=h(this),n=null==e?void 0:W(e,t);return n?n.call(e,r):new RegExp(e)[t](En(r))},function(t){var n=H(this),i=En(t),o=r(e,n,i);if(o.done)return o.value;if(!n.global)return bi(n,i);var a=n.unicode;n.lastIndex=0;for(var u,s=[],c=0;null!==(u=bi(n,i));){var l=En(u[0]);s[c]=l,""===l&&(n.lastIndex=xi(i,Yt(n.lastIndex),a)),c++}return 0===c?null:s}]}));var wi=Math.floor,Si="".replace,Oi=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,ki=/\$([$&'`]|\d{1,2})/g,Ti=function(t,e,r,n,i,o){var a=r+t.length,u=n.length,s=ki;return void 0!==i&&(i=p(i),s=Oi),Si.call(o,s,(function(o,s){var c;switch(s.charAt(0)){case"$":return"$";case"&":return t;case"`":return e.slice(0,r);case"'":return e.slice(a);case"<":c=i[s.slice(1,-1)];break;default:var l=+s;if(0===l)return o;if(l>u){var f=wi(l/10);return 0===f?o:f<=u?void 0===n[f-1]?s.charAt(1):n[f-1]+s.charAt(1):o}c=n[l-1]}return void 0===c?"":c}))},Ai=I("replace"),Ri=Math.max,Pi=Math.min,Ei="$0"==="a".replace(/./,"$0"),Ci=!!/./[Ai]&&""===/./[Ai]("a","$0");yi("replace",(function(t,e,r){var n=Ci?"$":"$0";return[function(t,r){var n=h(this),i=null==t?void 0:W(t,Ai);return i?i.call(t,n,r):e.call(En(n),t,r)},function(t,i){var o=H(this),a=En(t);if("string"==typeof i&&-1===i.indexOf(n)&&-1===i.indexOf("$<")){var u=r(e,o,a,i);if(u.done)return u.value}var s=x(i);s||(i=En(i));var c=o.global;if(c){var l=o.unicode;o.lastIndex=0}for(var f=[];;){var h=bi(o,a);if(null===h)break;if(f.push(h),!c)break;""===En(h[0])&&(o.lastIndex=xi(a,Yt(o.lastIndex),l))}for(var p,v="",y=0,d=0;d<f.length;d++){h=f[d];for(var g=En(h[0]),m=Ri(Pi(Ft(h.index),a.length),0),b=[],w=1;w<h.length;w++)b.push(void 0===(p=h[w])?p:String(p));var S=h.groups;if(s){var O=[g].concat(b,m,a);void 0!==S&&O.push(S);var k=En(i.apply(void 0,O))}else k=Ti(g,a,m,b,S,i);m>=y&&(v+=a.slice(y,m)+k,y=m+g.length)}return v+a.slice(y)}]}),!!P((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$<a>")}))||!Ei||Ci);var Mi,Ni=I("match"),_i=function(t){var e;return D(t)&&(void 0!==(e=t[Ni])?!!e:"RegExp"==Tt(t))},Ii=function(t){if(_i(t))throw TypeError("The method doesn't accept regular expressions");return t},Vi=I("match"),Li=function(t){var e=/./;try{"/./"[t](e)}catch(r){try{return e[Vi]=!1,"/./"[t](e)}catch(t){}}return!1},Bi=Bt.f,Di="".startsWith,ji=Math.min,Fi=Li("startsWith"),zi=!(Fi||(Mi=Bi(String.prototype,"startsWith"),!Mi||Mi.writable));function Ui(t){return t.replace(/(?!\u3000)\s+/gm," ")}function Hi(t){return t.replace(/^[\n \t]+/,"")}function Xi(t){return t.replace(/[\n \t]+$/,"")}function Yi(t){return((t||"").match(/-?(\d+(?:\.\d*(?:[eE][+-]?\d+)?)?|\.\d+)(?=\D|$)/gm)||[]).map(parseFloat)}fe({target:"String",proto:!0,forced:!zi&&!Fi},{startsWith:function(t){var e=En(h(this));Ii(t);var r=Yt(ji(arguments.length>1?arguments[1]:void 0,e.length)),n=En(t);return Di?Di.call(e,n,r):e.slice(r,r+n.length)===n}});var Gi=/^[A-Z-]+$/;function Wi(t){return Gi.test(t)?t.toLowerCase():t}function qi(t){var e=/url\(('([^']+)'|"([^"]+)"|([^'")]+))\)/.exec(t)||[];return e[2]||e[3]||e[4]}function $i(t){if(!t.startsWith("rgb"))return t;var e=3;return t.replace(/\d+(\.\d+)?/g,(function(t,r){return e--&&r?String(Math.round(parseFloat(t))):t}))}var Qi=function(t,e){var r=[][t];return!!r&&P((function(){r.call(null,e||function(){throw 1},1)}))},Zi=[].join,Ki=It!=Object,Ji=Qi("join",",");fe({target:"Array",proto:!0,forced:Ki||!Ji},{join:function(t){return Zi.call(Vt(this),void 0===t?",":t)}});var to=n((function(t){t.exports=function(t){if(Array.isArray(t))return t},t.exports.default=t.exports,t.exports.__esModule=!0})),eo=n((function(t){t.exports=function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,i,o=[],a=!0,u=!1;try{for(r=r.call(t);!(a=(n=r.next()).done)&&(o.push(n.value),!e||o.length!==e);a=!0);}catch(t){u=!0,i=t}finally{try{a||null==r.return||r.return()}finally{if(u)throw i}}return o}},t.exports.default=t.exports,t.exports.__esModule=!0})),ro=n((function(t){t.exports=function(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n},t.exports.default=t.exports,t.exports.__esModule=!0})),no=n((function(t){t.exports=function(t,e){if(t){if("string"==typeof t)return ro(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?ro(t,e):void 0}},t.exports.default=t.exports,t.exports.__esModule=!0})),io=n((function(t){t.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},t.exports.default=t.exports,t.exports.__esModule=!0})),oo=r(n((function(t){t.exports=function(t,e){return to(t)||eo(t,e)||no(t,e)||io()},t.exports.default=t.exports,t.exports.__esModule=!0}))),ao=/(\[[^\]]+\])/g,uo=/(#[^\s+>~.[:]+)/g,so=/(\.[^\s+>~.[:]+)/g,co=/(::[^\s+>~.[:]+|:first-line|:first-letter|:before|:after)/gi,lo=/(:[\w-]+\([^)]*\))/gi,fo=/(:[^\s+>~.[:]+)/g,ho=/([^\s+>~.[:]+)/g;function po(t,e){var r=e.exec(t);return r?[t.replace(e," "),r.length]:[t,0]}function vo(t){var e=[0,0,0],r=t.replace(/:not\(([^)]*)\)/g,"     $1 ").replace(/{[\s\S]*/gm," "),n=0,i=po(r,ao),o=oo(i,2);r=o[0],n=o[1],e[1]+=n;var a=po(r,uo),u=oo(a,2);r=u[0],n=u[1],e[0]+=n;var s=po(r,so),c=oo(s,2);r=c[0],n=c[1],e[1]+=n;var l=po(r,co),f=oo(l,2);r=f[0],n=f[1],e[2]+=n;var h=po(r,lo),p=oo(h,2);r=p[0],n=p[1],e[1]+=n;var v=po(r,fo),y=oo(v,2);r=y[0],n=y[1],e[1]+=n;var d=po(r=r.replace(/[*\s+>~]/g," ").replace(/[#.]/g," "),ho),g=oo(d,2);return r=g[0],n=g[1],e[2]+=n,e.join("")}var yo=1e-8;function go(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2))}function mo(t,e){return(t[0]*e[0]+t[1]*e[1])/(go(t)*go(e))}function xo(t,e){return(t[0]*e[1]<t[1]*e[0]?-1:1)*Math.acos(mo(t,e))}function bo(t){return t*t*t}function wo(t){return 3*t*t*(1-t)}function So(t){return 3*t*(1-t)*(1-t)}function Oo(t){return(1-t)*(1-t)*(1-t)}function ko(t){return t*t}function To(t){return 2*t*(1-t)}function Ao(t){return(1-t)*(1-t)}var Ro=r(n((function(t){t.exports=function(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t},t.exports.default=t.exports,t.exports.__esModule=!0}))),Po=r(n((function(t){t.exports=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},t.exports.default=t.exports,t.exports.__esModule=!0}))),Eo=r(n((function(t){function e(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}t.exports=function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t},t.exports.default=t.exports,t.exports.__esModule=!0}))),Co=function(t,e,r){var n=Q(e);n in t?K.f(t,n,J(0,r)):t[n]=r},Mo=I("isConcatSpreadable"),No=9007199254740991,_o="Maximum allowed index exceeded",Io=R>=51||!P((function(){var t=[];return t[Mo]=!1,t.concat()[0]!==t})),Vo=An("concat"),Lo=function(t){if(!D(t))return!1;var e=t[Mo];return void 0!==e?!!e:xn(t)};fe({target:"Array",proto:!0,forced:!Io||!Vo},{concat:function(t){var e,r,n,i,o,a=p(this),u=wn(a,0),s=0;for(e=-1,n=arguments.length;e<n;e++)if(Lo(o=-1===e?a:arguments[e])){if(s+(i=Gt(o))>No)throw TypeError(_o);for(r=0;r<i;r++,s++)r in o&&Co(u,s,o[r])}else{if(s>=No)throw TypeError(_o);Co(u,s++,o)}return u.length=s,u}});var Bo=kn.every,Do=Qi("every");fe({target:"Array",proto:!0,forced:!Do},{every:function(t){return Bo(this,t,arguments.length>1?arguments[1]:void 0)}});var jo=function(t){return function(e,r,n,i){G(r);var o=p(e),a=It(o),u=Gt(o),s=t?u-1:0,c=t?-1:1;if(n<2)for(;;){if(s in a){i=a[s],s+=c;break}if(s+=c,t?s<0:u<=s)throw TypeError("Reduce of empty array with no initial value")}for(;t?s>=0:u>s;s+=c)s in a&&(i=r(i,a[s],s,o));return i}},Fo={left:jo(!1),right:jo(!0)}.left,zo=Qi("reduce");fe({target:"Array",proto:!0,forced:!zo||!Ke&&R>79&&R<83},{reduce:function(t){return Fo(this,t,arguments.length,arguments.length>1?arguments[1]:void 0)}});var Uo=Bt.f,Ho="".endsWith,Xo=Math.min,Yo=Li("endsWith"),Go=!Yo&&!!function(){var t=Uo(String.prototype,"endsWith");return t&&!t.writable}();fe({target:"String",proto:!0,forced:!Go&&!Yo},{endsWith:function(t){var e=En(h(this));Ii(t);var r=arguments.length>1?arguments[1]:void 0,n=e.length,i=void 0===r?n:Xo(Yt(r),n),o=En(t);return Ho?Ho.call(e,o,i):e.slice(i-o.length,i)===o}});var Wo=Xn.UNSUPPORTED_Y,qo=[].push,$o=Math.min,Qo=4294967295;yi("split",(function(t,e,r){var n;return n="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(t,r){var n=En(h(this)),i=void 0===r?Qo:r>>>0;if(0===i)return[];if(void 0===t)return[n];if(!_i(t))return e.call(n,t,i);for(var o,a,u,s=[],c=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),l=0,f=new RegExp(t.source,c+"g");(o=hi.call(f,n))&&!((a=f.lastIndex)>l&&(s.push(n.slice(l,o.index)),o.length>1&&o.index<n.length&&qo.apply(s,o.slice(1)),u=o[0].length,l=a,s.length>=i));)f.lastIndex===o.index&&f.lastIndex++;return l===n.length?!u&&f.test("")||s.push(""):s.push(n.slice(l)),s.length>i?s.slice(0,i):s}:"0".split(void 0,0).length?function(t,r){return void 0===t&&0===r?[]:e.call(this,t,r)}:e,[function(e,r){var i=h(this),o=null==e?void 0:W(e,t);return o?o.call(e,i,r):n.call(En(i),e,r)},function(t,i){var o=H(this),a=En(t),u=r(n,o,a,i,n!==e);if(u.done)return u.value;var s=$e(o,RegExp),c=o.unicode,l=(o.ignoreCase?"i":"")+(o.multiline?"m":"")+(o.unicode?"u":"")+(Wo?"g":"y"),f=new s(Wo?"^(?:"+o.source+")":o,l),h=void 0===i?Qo:i>>>0;if(0===h)return[];if(0===a.length)return null===bi(f,a)?[a]:[];for(var p=0,v=0,y=[];v<a.length;){f.lastIndex=Wo?0:v;var d,g=bi(f,Wo?a.slice(v):a);if(null===g||(d=$o(Yt(f.lastIndex+(Wo?v:0)),a.length))===p)v=xi(a,v,c);else{if(y.push(a.slice(p,v)),y.length===h)return y;for(var m=1;m<=g.length-1;m++)if(y.push(g[m]),y.length===h)return y;v=p=d}}return y.push(a.slice(p)),y}]}),!!P((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var r="ab".split(t);return 2!==r.length||"a"!==r[0]||"b"!==r[1]})),Wo);var Zo="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{};function Ko(){throw new Error("setTimeout has not been defined")}function Jo(){throw new Error("clearTimeout has not been defined")}var ta=Ko,ea=Jo;function ra(t){if(ta===setTimeout)return setTimeout(t,0);if((ta===Ko||!ta)&&setTimeout)return ta=setTimeout,setTimeout(t,0);try{return ta(t,0)}catch(e){try{return ta.call(null,t,0)}catch(e){return ta.call(this,t,0)}}}"function"==typeof Zo.setTimeout&&(ta=setTimeout),"function"==typeof Zo.clearTimeout&&(ea=clearTimeout);var na,ia=[],oa=!1,aa=-1;function ua(){oa&&na&&(oa=!1,na.length?ia=na.concat(ia):aa=-1,ia.length&&sa())}function sa(){if(!oa){var t=ra(ua);oa=!0;for(var e=ia.length;e;){for(na=ia,ia=[];++aa<e;)na&&na[aa].run();aa=-1,e=ia.length}na=null,oa=!1,function(t){if(ea===clearTimeout)return clearTimeout(t);if((ea===Jo||!ea)&&clearTimeout)return ea=clearTimeout,clearTimeout(t);try{ea(t)}catch(e){try{return ea.call(null,t)}catch(e){return ea.call(this,t)}}}(t)}}function ca(t,e){this.fun=t,this.array=e}ca.prototype.run=function(){this.fun.apply(null,this.array)};function la(){}var fa=la,ha=la,pa=la,va=la,ya=la,da=la,ga=la;var ma=Zo.performance||{},xa=ma.now||ma.mozNow||ma.msNow||ma.oNow||ma.webkitNow||function(){return(new Date).getTime()};var ba=new Date;for(var wa={nextTick:function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)e[r-1]=arguments[r];ia.push(new ca(t,e)),1!==ia.length||oa||ra(sa)},title:"browser",browser:!0,env:{},argv:[],version:"",versions:{},on:fa,addListener:ha,once:pa,off:va,removeListener:ya,removeAllListeners:da,emit:ga,binding:function(t){throw new Error("process.binding is not supported")},cwd:function(){return"/"},chdir:function(t){throw new Error("process.chdir is not supported")},umask:function(){return 0},hrtime:function(t){var e=.001*xa.call(ma),r=Math.floor(e),n=Math.floor(e%1*1e9);return t&&(r-=t[0],(n-=t[1])<0&&(r--,n+=1e9)),[r,n]},platform:"browser",release:{},config:{},uptime:function(){return(new Date-ba)/1e3}},Sa=n((function(t){(function(){var e,r,n,i,o,a;"undefined"!=typeof performance&&null!==performance&&performance.now?t.exports=function(){return performance.now()}:null!=wa&&wa.hrtime?(t.exports=function(){return(e()-o)/1e6},r=wa.hrtime,i=(e=function(){var t;return 1e9*(t=r())[0]+t[1]})(),a=1e9*wa.uptime(),o=i-a):Date.now?(t.exports=function(){return Date.now()-n},n=Date.now()):(t.exports=function(){return(new Date).getTime()-n},n=(new Date).getTime())}).call(e)})),Oa="undefined"==typeof window?e:window,ka=["moz","webkit"],Ta="AnimationFrame",Aa=Oa["request"+Ta],Ra=Oa["cancel"+Ta]||Oa["cancelRequest"+Ta],Pa=0;!Aa&&Pa<ka.length;Pa++)Aa=Oa[ka[Pa]+"Request"+Ta],Ra=Oa[ka[Pa]+"Cancel"+Ta]||Oa[ka[Pa]+"CancelRequest"+Ta];if(!Aa||!Ra){var Ea=0,Ca=0,Ma=[];Aa=function(t){if(0===Ma.length){var e=Sa(),r=Math.max(0,16.666666666666668-(e-Ea));Ea=r+e,setTimeout((function(){var t=Ma.slice(0);Ma.length=0;for(var e=0;e<t.length;e++)if(!t[e].cancelled)try{t[e].callback(Ea)}catch(t){setTimeout((function(){throw t}),0)}}),Math.round(r))}return Ma.push({handle:++Ca,callback:t,cancelled:!1}),Ca},Ra=function(t){for(var e=0;e<Ma.length;e++)Ma[e].handle===t&&(Ma[e].cancelled=!0)}}var Na=function(t){return Aa.call(Oa,t)};Na.cancel=function(){Ra.apply(Oa,arguments)},Na.polyfill=function(t){t||(t=Oa),t.requestAnimationFrame=Aa,t.cancelAnimationFrame=Ra};var _a=St.EXISTS,Ia=K.f,Va=Function.prototype,La=Va.toString,Ba=/^\s*function ([^ (]*)/;B&&!_a&&Ia(Va,"name",{configurable:!0,get:function(){try{return La.call(this).match(Ba)[1]}catch(t){return""}}});var Da,ja=St.PROPER,Fa=Vn.trim;fe({target:"String",proto:!0,forced:(Da="trim",P((function(){return!!Cn[Da]()||"​…᠎"!=="​…᠎"[Da]()||ja&&Cn[Da].name!==Da})))},{trim:function(){return Fa(this)}});var za=function(t){this.ok=!1,this.alpha=1,"#"==t.charAt(0)&&(t=t.substr(1,6)),t=(t=t.replace(/ /g,"")).toLowerCase();var e={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"00ffff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000000",blanchedalmond:"ffebcd",blue:"0000ff",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"00ffff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dodgerblue:"1e90ff",feldspar:"d19275",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"ff00ff",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgrey:"d3d3d3",lightgreen:"90ee90",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslateblue:"8470ff",lightslategray:"778899",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"00ff00",limegreen:"32cd32",linen:"faf0e6",magenta:"ff00ff",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370d8",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"d87093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"ff0000",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",violetred:"d02090",wheat:"f5deb3",white:"ffffff",whitesmoke:"f5f5f5",yellow:"ffff00",yellowgreen:"9acd32"};t=e[t]||t;for(var r=[{re:/^rgba\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3}),\s*((?:\d?\.)?\d)\)$/,example:["rgba(123, 234, 45, 0.8)","rgba(255,234,245,1.0)"],process:function(t){return[parseInt(t[1]),parseInt(t[2]),parseInt(t[3]),parseFloat(t[4])]}},{re:/^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,example:["rgb(123, 234, 45)","rgb(255,234,245)"],process:function(t){return[parseInt(t[1]),parseInt(t[2]),parseInt(t[3])]}},{re:/^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,example:["#00ff00","336699"],process:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}},{re:/^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,example:["#fb0","f0f"],process:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]}}],n=0;n<r.length;n++){var i=r[n].re,o=r[n].process,a=i.exec(t);if(a){var u=o(a);this.r=u[0],this.g=u[1],this.b=u[2],u.length>3&&(this.alpha=u[3]),this.ok=!0}}this.r=this.r<0||isNaN(this.r)?0:this.r>255?255:this.r,this.g=this.g<0||isNaN(this.g)?0:this.g>255?255:this.g,this.b=this.b<0||isNaN(this.b)?0:this.b>255?255:this.b,this.alpha=this.alpha<0?0:this.alpha>1||isNaN(this.alpha)?1:this.alpha,this.toRGB=function(){return"rgb("+this.r+", "+this.g+", "+this.b+")"},this.toRGBA=function(){return"rgba("+this.r+", "+this.g+", "+this.b+", "+this.alpha+")"},this.toHex=function(){var t=this.r.toString(16),e=this.g.toString(16),r=this.b.toString(16);return 1==t.length&&(t="0"+t),1==e.length&&(e="0"+e),1==r.length&&(r="0"+r),"#"+t+e+r},this.getHelpXML=function(){for(var t=new Array,n=0;n<r.length;n++)for(var i=r[n].example,o=0;o<i.length;o++)t[t.length]=i[o];for(var a in e)t[t.length]=a;var u=document.createElement("ul");u.setAttribute("id","rgbcolor-examples");for(n=0;n<t.length;n++)try{var s=document.createElement("li"),c=new RGBColor(t[n]),l=document.createElement("div");l.style.cssText="margin: 3px; border: 1px solid black; background:"+c.toHex()+"; color:"+c.toHex(),l.appendChild(document.createTextNode("test"));var f=document.createTextNode(" "+t[n]+" -> "+c.toRGB()+" -> "+c.toHex());s.appendChild(l),s.appendChild(f),u.appendChild(s)}catch(t){}return u}},Ua=function(){function t(e,r,n){Po(this,t),this.document=e,this.name=r,this.value=n,this.isNormalizedColor=!1}return Eo(t,[{key:"split",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:" ",r=this.document,n=this.name;return Ui(this.getString()).trim().split(e).map((function(e){return new t(r,n,e)}))}},{key:"hasValue",value:function(t){var e=this.value;return null!==e&&""!==e&&(t||0!==e)&&void 0!==e}},{key:"isString",value:function(t){var e=this.value,r="string"==typeof e;return r&&t?t.test(e):r}},{key:"isUrlDefinition",value:function(){return this.isString(/^url\(/)}},{key:"isPixels",value:function(){if(!this.hasValue())return!1;var t=this.getString();switch(!0){case t.endsWith("px"):case/^[0-9]+$/.test(t):return!0;default:return!1}}},{key:"setValue",value:function(t){return this.value=t,this}},{key:"getValue",value:function(t){return void 0===t||this.hasValue()?this.value:t}},{key:"getNumber",value:function(t){if(!this.hasValue())return void 0===t?0:parseFloat(t);var e=this.value,r=parseFloat(e);return this.isString(/%$/)&&(r/=100),r}},{key:"getString",value:function(t){return void 0===t||this.hasValue()?void 0===this.value?"":String(this.value):String(t)}},{key:"getColor",value:function(t){var e=this.getString(t);return this.isNormalizedColor||(this.isNormalizedColor=!0,e=$i(e),this.value=e),e}},{key:"getDpi",value:function(){return 96}},{key:"getRem",value:function(){return this.document.rootEmSize}},{key:"getEm",value:function(){return this.document.emSize}},{key:"getUnits",value:function(){return this.getString().replace(/[0-9.-]/g,"")}},{key:"getPixels",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!this.hasValue())return 0;var r="boolean"==typeof t?[void 0,t]:[t],n=oo(r,2),i=n[0],o=n[1],a=this.document.screen.viewPort;switch(!0){case this.isString(/vmin$/):return this.getNumber()/100*Math.min(a.computeSize("x"),a.computeSize("y"));case this.isString(/vmax$/):return this.getNumber()/100*Math.max(a.computeSize("x"),a.computeSize("y"));case this.isString(/vw$/):return this.getNumber()/100*a.computeSize("x");case this.isString(/vh$/):return this.getNumber()/100*a.computeSize("y");case this.isString(/rem$/):return this.getNumber()*this.getRem();case this.isString(/em$/):return this.getNumber()*this.getEm();case this.isString(/ex$/):return this.getNumber()*this.getEm()/2;case this.isString(/px$/):return this.getNumber();case this.isString(/pt$/):return this.getNumber()*this.getDpi()*(1/72);case this.isString(/pc$/):return 15*this.getNumber();case this.isString(/cm$/):return this.getNumber()*this.getDpi()/2.54;case this.isString(/mm$/):return this.getNumber()*this.getDpi()/25.4;case this.isString(/in$/):return this.getNumber()*this.getDpi();case this.isString(/%$/)&&o:return this.getNumber()*this.getEm();case this.isString(/%$/):return this.getNumber()*a.computeSize(i);default:var u=this.getNumber();return e&&u<1?u*a.computeSize(i):u}}},{key:"getMilliseconds",value:function(){return this.hasValue()?this.isString(/ms$/)?this.getNumber():1e3*this.getNumber():0}},{key:"getRadians",value:function(){if(!this.hasValue())return 0;switch(!0){case this.isString(/deg$/):return this.getNumber()*(Math.PI/180);case this.isString(/grad$/):return this.getNumber()*(Math.PI/200);case this.isString(/rad$/):return this.getNumber();default:return this.getNumber()*(Math.PI/180)}}},{key:"getDefinition",value:function(){var t=this.getString(),e=/#([^)'"]+)/.exec(t);return e&&(e=e[1]),e||(e=t),this.document.definitions[e]}},{key:"getFillStyleDefinition",value:function(t,e){var r=this.getDefinition();if(!r)return null;if("function"==typeof r.createGradient)return r.createGradient(this.document.ctx,t,e);if("function"==typeof r.createPattern){if(r.getHrefAttribute().hasValue()){var n=r.getAttribute("patternTransform");r=r.getHrefAttribute().getDefinition(),n.hasValue()&&r.getAttribute("patternTransform",!0).setValue(n.value)}return r.createPattern(this.document.ctx,t,e)}return null}},{key:"getTextBaseline",value:function(){return this.hasValue()?t.textBaselineMapping[this.getString()]:null}},{key:"addOpacity",value:function(e){for(var r=this.getColor(),n=r.length,i=0,o=0;o<n&&(","===r[o]&&i++,3!==i);o++);if(e.hasValue()&&this.isString()&&3!==i){var a=new za(r);a.ok&&(a.alpha=e.getNumber(),r=a.toRGBA())}return new t(this.document,this.name,r)}}],[{key:"empty",value:function(e){return new t(e,"EMPTY","")}}]),t}();Ua.textBaselineMapping={baseline:"alphabetic","before-edge":"top","text-before-edge":"top",middle:"middle",central:"middle","after-edge":"bottom","text-after-edge":"bottom",ideographic:"ideographic",alphabetic:"alphabetic",hanging:"hanging",mathematical:"alphabetic"};var Ha=function(){function t(){Po(this,t),this.viewPorts=[]}return Eo(t,[{key:"clear",value:function(){this.viewPorts=[]}},{key:"setCurrent",value:function(t,e){this.viewPorts.push({width:t,height:e})}},{key:"removeCurrent",value:function(){this.viewPorts.pop()}},{key:"getCurrent",value:function(){var t=this.viewPorts;return t[t.length-1]}},{key:"computeSize",value:function(t){return"number"==typeof t?t:"x"===t?this.width:"y"===t?this.height:Math.sqrt(Math.pow(this.width,2)+Math.pow(this.height,2))/Math.sqrt(2)}},{key:"width",get:function(){return this.getCurrent().width}},{key:"height",get:function(){return this.getCurrent().height}}]),t}(),Xa=kn.forEach,Ya=Qi("forEach")?[].forEach:function(t){return Xa(this,t,arguments.length>1?arguments[1]:void 0)};fe({target:"Array",proto:!0,forced:[].forEach!=Ya},{forEach:Ya});var Ga={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},Wa=z("span").classList,qa=Wa&&Wa.constructor&&Wa.constructor.prototype,$a=qa===Object.prototype?void 0:qa,Qa=function(t){if(t&&t.forEach!==Ya)try{tt(t,"forEach",Ya)}catch(e){t.forEach=Ya}};for(var Za in Ga)Ga[Za]&&Qa(u[Za]&&u[Za].prototype);Qa($a);var Ka=function(){function t(e,r){Po(this,t),this.x=e,this.y=r}return Eo(t,[{key:"angleTo",value:function(t){return Math.atan2(t.y-this.y,t.x-this.x)}},{key:"applyTransform",value:function(t){var e=this.x,r=this.y,n=e*t[0]+r*t[2]+t[4],i=e*t[1]+r*t[3]+t[5];this.x=n,this.y=i}}],[{key:"parse",value:function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=Yi(e),i=oo(n,2),o=i[0],a=void 0===o?r:o,u=i[1],s=void 0===u?r:u;return new t(a,s)}},{key:"parseScale",value:function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=Yi(e),i=oo(n,2),o=i[0],a=void 0===o?r:o,u=i[1],s=void 0===u?a:u;return new t(a,s)}},{key:"parsePath",value:function(e){for(var r=Yi(e),n=r.length,i=[],o=0;o<n;o+=2)i.push(new t(r[o],r[o+1]));return i}}]),t}(),Ja=function(){function t(e){Po(this,t),this.screen=e,this.working=!1,this.events=[],this.eventElements=[],this.onClick=this.onClick.bind(this),this.onMouseMove=this.onMouseMove.bind(this)}return Eo(t,[{key:"isWorking",value:function(){return this.working}},{key:"start",value:function(){if(!this.working){var t=this.screen,e=this.onClick,r=this.onMouseMove,n=t.ctx.canvas;n.onclick=e,n.onmousemove=r,this.working=!0}}},{key:"stop",value:function(){if(this.working){var t=this.screen.ctx.canvas;this.working=!1,t.onclick=null,t.onmousemove=null}}},{key:"hasEvents",value:function(){return this.working&&this.events.length>0}},{key:"runEvents",value:function(){if(this.working){var t=this.screen,e=this.events,r=this.eventElements,n=t.ctx.canvas.style;n&&(n.cursor=""),e.forEach((function(t,e){for(var n=t.run,i=r[e];i;)n(i),i=i.parent})),this.events=[],this.eventElements=[]}}},{key:"checkPath",value:function(t,e){if(this.working&&e){var r=this.events,n=this.eventElements;r.forEach((function(r,i){var o=r.x,a=r.y;!n[i]&&e.isPointInPath&&e.isPointInPath(o,a)&&(n[i]=t)}))}}},{key:"checkBoundingBox",value:function(t,e){if(this.working&&e){var r=this.events,n=this.eventElements;r.forEach((function(r,i){var o=r.x,a=r.y;!n[i]&&e.isPointInBox(o,a)&&(n[i]=t)}))}}},{key:"mapXY",value:function(t,e){for(var r=this.screen,n=r.window,i=r.ctx,o=new Ka(t,e),a=i.canvas;a;)o.x-=a.offsetLeft,o.y-=a.offsetTop,a=a.offsetParent;return n.scrollX&&(o.x+=n.scrollX),n.scrollY&&(o.y+=n.scrollY),o}},{key:"onClick",value:function(t){var e=this.mapXY(t.clientX,t.clientY),r=e.x,n=e.y;this.events.push({type:"onclick",x:r,y:n,run:function(t){t.onClick&&t.onClick()}})}},{key:"onMouseMove",value:function(t){var e=this.mapXY(t.clientX,t.clientY),r=e.x,n=e.y;this.events.push({type:"onmousemove",x:r,y:n,run:function(t){t.onMouseMove&&t.onMouseMove()}})}}]),t}(),tu="undefined"!=typeof window?window:null,eu="undefined"!=typeof fetch?fetch.bind(void 0):null,ru=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=r.fetch,i=void 0===n?eu:n,o=r.window,a=void 0===o?tu:o;Po(this,t),this.ctx=e,this.FRAMERATE=30,this.MAX_VIRTUAL_PIXELS=3e4,this.CLIENT_WIDTH=800,this.CLIENT_HEIGHT=600,this.viewPort=new Ha,this.mouse=new Ja(this),this.animations=[],this.waits=[],this.frameDuration=0,this.isReadyLock=!1,this.isFirstRender=!0,this.intervalId=null,this.window=a,this.fetch=i}return Eo(t,[{key:"wait",value:function(t){this.waits.push(t)}},{key:"ready",value:function(){return this.readyPromise?this.readyPromise:Promise.resolve()}},{key:"isReady",value:function(){if(this.isReadyLock)return!0;var t=this.waits.every((function(t){return t()}));return t&&(this.waits=[],this.resolveReady&&this.resolveReady()),this.isReadyLock=t,t}},{key:"setDefaults",value:function(t){t.strokeStyle="rgba(0,0,0,0)",t.lineCap="butt",t.lineJoin="miter",t.miterLimit=4}},{key:"setViewBox",value:function(t){var e=t.document,r=t.ctx,n=t.aspectRatio,i=t.width,o=t.desiredWidth,a=t.height,u=t.desiredHeight,s=t.minX,c=void 0===s?0:s,l=t.minY,f=void 0===l?0:l,h=t.refX,p=t.refY,v=t.clip,y=void 0!==v&&v,d=t.clipX,g=void 0===d?0:d,m=t.clipY,x=void 0===m?0:m,b=Ui(n).replace(/^defer\s/,"").split(" "),w=oo(b,2),S=w[0]||"xMidYMid",O=w[1]||"meet",k=i/o,T=a/u,A=Math.min(k,T),R=Math.max(k,T),P=o,E=u;"meet"===O&&(P*=A,E*=A),"slice"===O&&(P*=R,E*=R);var C=new Ua(e,"refX",h),M=new Ua(e,"refY",p),N=C.hasValue()&&M.hasValue();if(N&&r.translate(-A*C.getPixels("x"),-A*M.getPixels("y")),y){var _=A*g,I=A*x;r.beginPath(),r.moveTo(_,I),r.lineTo(i,I),r.lineTo(i,a),r.lineTo(_,a),r.closePath(),r.clip()}if(!N){var V="meet"===O&&A===T,L="slice"===O&&R===T,B="meet"===O&&A===k,D="slice"===O&&R===k;S.startsWith("xMid")&&(V||L)&&r.translate(i/2-P/2,0),S.endsWith("YMid")&&(B||D)&&r.translate(0,a/2-E/2),S.startsWith("xMax")&&(V||L)&&r.translate(i-P,0),S.endsWith("YMax")&&(B||D)&&r.translate(0,a-E)}switch(!0){case"none"===S:r.scale(k,T);break;case"meet"===O:r.scale(A,A);break;case"slice"===O:r.scale(R,R)}r.translate(-c,-f)}},{key:"start",value:function(t){var e=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=r.enableRedraw,i=void 0!==n&&n,o=r.ignoreMouse,a=void 0!==o&&o,u=r.ignoreAnimation,s=void 0!==u&&u,c=r.ignoreDimensions,l=void 0!==c&&c,f=r.ignoreClear,h=void 0!==f&&f,p=r.forceRedraw,v=r.scaleWidth,y=r.scaleHeight,d=r.offsetX,g=r.offsetY,m=this.FRAMERATE,x=this.mouse,b=1e3/m;if(this.frameDuration=b,this.readyPromise=new Promise((function(t){e.resolveReady=t})),this.isReady()&&this.render(t,l,h,v,y,d,g),i){var w=Date.now(),S=w,O=0,k=function r(){w=Date.now(),(O=w-S)>=b&&(S=w-O%b,e.shouldUpdate(s,p)&&(e.render(t,l,h,v,y,d,g),x.runEvents())),e.intervalId=Na(r)};a||x.start(),this.intervalId=Na(k)}}},{key:"stop",value:function(){this.intervalId&&(Na.cancel(this.intervalId),this.intervalId=null),this.mouse.stop()}},{key:"shouldUpdate",value:function(t,e){if(!t){var r=this.frameDuration,n=this.animations.reduce((function(t,e){return e.update(r)||t}),!1);if(n)return!0}return!("function"!=typeof e||!e())||(!(this.isReadyLock||!this.isReady())||!!this.mouse.hasEvents())}},{key:"render",value:function(t,e,r,n,i,o,a){var u=this.CLIENT_WIDTH,s=this.CLIENT_HEIGHT,c=this.viewPort,l=this.ctx,f=this.isFirstRender,h=l.canvas;c.clear(),h.width&&h.height?c.setCurrent(h.width,h.height):c.setCurrent(u,s);var p=t.getStyle("width"),v=t.getStyle("height");!e&&(f||"number"!=typeof n&&"number"!=typeof i)&&(p.hasValue()&&(h.width=p.getPixels("x"),h.style&&(h.style.width="".concat(h.width,"px"))),v.hasValue()&&(h.height=v.getPixels("y"),h.style&&(h.style.height="".concat(h.height,"px"))));var y=h.clientWidth||h.width,d=h.clientHeight||h.height;if(e&&p.hasValue()&&v.hasValue()&&(y=p.getPixels("x"),d=v.getPixels("y")),c.setCurrent(y,d),"number"==typeof o&&t.getAttribute("x",!0).setValue(o),"number"==typeof a&&t.getAttribute("y",!0).setValue(a),"number"==typeof n||"number"==typeof i){var g=Yi(t.getAttribute("viewBox").getString()),m=0,x=0;if("number"==typeof n){var b=t.getStyle("width");b.hasValue()?m=b.getPixels("x")/n:isNaN(g[2])||(m=g[2]/n)}if("number"==typeof i){var w=t.getStyle("height");w.hasValue()?x=w.getPixels("y")/i:isNaN(g[3])||(x=g[3]/i)}m||(m=x),x||(x=m),t.getAttribute("width",!0).setValue(n),t.getAttribute("height",!0).setValue(i);var S=t.getStyle("transform",!0,!0);S.setValue("".concat(S.getString()," scale(").concat(1/m,", ").concat(1/x,")"))}r||l.clearRect(0,0,y,d),t.render(l),f&&(this.isFirstRender=!1)}}]),t}();ru.defaultWindow=tu,ru.defaultFetch=eu;var nu=ru.defaultFetch,iu="undefined"!=typeof DOMParser?DOMParser:null,ou=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.fetch,n=void 0===r?nu:r,i=e.DOMParser,o=void 0===i?iu:i;Po(this,t),this.fetch=n,this.DOMParser=o}var e,r;return Eo(t,[{key:"parse",value:(r=gn(dn.mark((function t(e){return dn.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!e.startsWith("<")){t.next=2;break}return t.abrupt("return",this.parseFromString(e));case 2:return t.abrupt("return",this.load(e));case 3:case"end":return t.stop()}}),t,this)}))),function(t){return r.apply(this,arguments)})},{key:"parseFromString",value:function(t){var e=new this.DOMParser;try{return this.checkDocument(e.parseFromString(t,"image/svg+xml"))}catch(r){return this.checkDocument(e.parseFromString(t,"text/xml"))}}},{key:"checkDocument",value:function(t){var e=t.getElementsByTagName("parsererror")[0];if(e)throw new Error(e.textContent);return t}},{key:"load",value:(e=gn(dn.mark((function t(e){var r,n;return dn.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.fetch(e);case 2:return r=t.sent,t.next=5,r.text();case 5:return n=t.sent,t.abrupt("return",this.parseFromString(n));case 7:case"end":return t.stop()}}),t,this)}))),function(t){return e.apply(this,arguments)})}]),t}(),au=n((function(t){function e(r,n){return t.exports=e=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},t.exports.default=t.exports,t.exports.__esModule=!0,e(r,n)}t.exports=e,t.exports.default=t.exports,t.exports.__esModule=!0})),uu=r(n((function(t){t.exports=function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&au(t,e)},t.exports.default=t.exports,t.exports.__esModule=!0}))),su=n((function(t){function e(r){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?(t.exports=e=function(t){return typeof t},t.exports.default=t.exports,t.exports.__esModule=!0):(t.exports=e=function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t.exports.default=t.exports,t.exports.__esModule=!0),e(r)}t.exports=e,t.exports.default=t.exports,t.exports.__esModule=!0})),cu=n((function(t){t.exports=function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t},t.exports.default=t.exports,t.exports.__esModule=!0})),lu=r(cu),fu=r(n((function(t){var e=su.default;t.exports=function(t,r){if(r&&("object"===e(r)||"function"==typeof r))return r;if(void 0!==r)throw new TypeError("Derived constructors may only return object or undefined");return cu(t)},t.exports.default=t.exports,t.exports.__esModule=!0}))),hu=n((function(t){function e(r){return t.exports=e=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},t.exports.default=t.exports,t.exports.__esModule=!0,e(r)}t.exports=e,t.exports.default=t.exports,t.exports.__esModule=!0})),pu=r(hu),vu=function(t,e,r,n){try{return n?e(H(r)[0],r[1]):e(r)}catch(e){Ee(t,"throw",e)}},yu=!Fe((function(t){Array.from(t)}));fe({target:"Array",stat:!0,forced:yu},{from:function(t){var e=p(t),r=We(this),n=arguments.length,i=n>1?arguments[1]:void 0,o=void 0!==i;o&&(i=Te(i,n>2?arguments[2]:void 0,2));var a,u,s,c,l,f,h=Re(e),v=0;if(!h||this==Array&&ke(h))for(a=Gt(e),u=r?new this(a):Array(a);a>v;v++)f=o?i(e[v],v):e[v],Co(u,v,f);else for(l=(c=Pe(e,h)).next,u=r?new this:[];!(s=l.call(c)).done;v++)f=o?vu(c,i,[s.value,v],!0):s.value,Co(u,v,f);return u.length=v,u}});var du=I("unscopables"),gu=Array.prototype;null==gu[du]&&K.f(gu,du,{configurable:!0,value:ti(null)});var mu=function(t){gu[du][t]=!0},xu=qt.includes;fe({target:"Array",proto:!0},{includes:function(t){return xu(this,t,arguments.length>1?arguments[1]:void 0)}}),mu("includes");var bu=qt.indexOf,wu=[].indexOf,Su=!!wu&&1/[1].indexOf(1,-0)<0,Ou=Qi("indexOf");fe({target:"Array",proto:!0,forced:Su||!Ou},{indexOf:function(t){return Su?wu.apply(this,arguments)||0:bu(this,t,arguments.length>1?arguments[1]:void 0)}});var ku=kn.some,Tu=Qi("some");fe({target:"Array",proto:!0,forced:!Tu},{some:function(t){return ku(this,t,arguments.length>1?arguments[1]:void 0)}}),fe({target:"String",proto:!0,forced:!Li("includes")},{includes:function(t){return!!~En(h(this)).indexOf(En(Ii(t)),arguments.length>1?arguments[1]:void 0)}});var Au,Ru,Pu,Eu=!P((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype})),Cu=ct("IE_PROTO"),Mu=Object.prototype,Nu=Eu?Object.getPrototypeOf:function(t){var e=p(t);if(y(e,Cu))return e[Cu];var r=e.constructor;return x(r)&&e instanceof r?r.prototype:e instanceof Object?Mu:null},_u=I("iterator"),Iu=!1;[].keys&&("next"in(Pu=[].keys())?(Ru=Nu(Nu(Pu)))!==Object.prototype&&(Au=Ru):Iu=!0),(null==Au||P((function(){var t={};return Au[_u].call(t)!==t})))&&(Au={}),x(Au[_u])||Ot(Au,_u,(function(){return this}));var Vu={IteratorPrototype:Au,BUGGY_SAFARI_ITERATORS:Iu},Lu=Vu.IteratorPrototype,Bu=function(){return this},Du=St.PROPER,ju=St.CONFIGURABLE,Fu=Vu.IteratorPrototype,zu=Vu.BUGGY_SAFARI_ITERATORS,Uu=I("iterator"),Hu="keys",Xu="values",Yu="entries",Gu=function(){return this},Wu=function(t,e,r,n,i,o,a){!function(t,e,r){var n=e+" Iterator";t.prototype=ti(Lu,{next:J(1,r)}),ge(t,n,!1),we[n]=Bu}(r,e,n);var u,s,c,l=function(t){if(t===i&&y)return y;if(!zu&&t in p)return p[t];switch(t){case Hu:case Xu:case Yu:return function(){return new r(this,t)}}return function(){return new r(this)}},f=e+" Iterator",h=!1,p=t.prototype,v=p[Uu]||p["@@iterator"]||i&&p[i],y=!zu&&v||l(i),d="Array"==e&&p.entries||v;if(d&&(u=Nu(d.call(new t)))!==Object.prototype&&u.next&&(Nu(u)!==Fu&&(ve?ve(u,Fu):x(u[Uu])||Ot(u,Uu,Gu)),ge(u,f,!0)),Du&&i==Xu&&v&&v.name!==Xu&&(ju?tt(p,"name",Xu):(h=!0,y=function(){return v.call(this)})),i)if(s={values:l(Xu),keys:o?y:l(Hu),entries:l(Yu)},a)for(c in s)(zu||h||!(c in p))&&Ot(p,c,s[c]);else fe({target:e,proto:!0,forced:zu||h},s);return p[Uu]!==y&&Ot(p,Uu,y,{name:i}),we[e]=y,s},qu=gi.charAt,$u="String Iterator",Qu=mt.set,Zu=mt.getterFor($u);Wu(String,"String",(function(t){Qu(this,{type:$u,string:En(t),index:0})}),(function(){var t,e=Zu(this),r=e.string,n=e.index;return n>=r.length?{value:void 0,done:!0}:(t=qu(r,n),e.index+=t.length,{value:t,done:!1})}));var Ku=n((function(t){t.exports=function(t){if(Array.isArray(t))return ro(t)},t.exports.default=t.exports,t.exports.__esModule=!0})),Ju=n((function(t){t.exports=function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)},t.exports.default=t.exports,t.exports.__esModule=!0})),ts=n((function(t){t.exports=function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},t.exports.default=t.exports,t.exports.__esModule=!0})),es=r(n((function(t){t.exports=function(t){return Ku(t)||Ju(t)||no(t)||ts()},t.exports.default=t.exports,t.exports.__esModule=!0}))),rs=function(){function t(e,r){Po(this,t),this.type="translate",this.point=null,this.point=Ka.parse(r)}return Eo(t,[{key:"apply",value:function(t){var e=this.point,r=e.x,n=e.y;t.translate(r||0,n||0)}},{key:"unapply",value:function(t){var e=this.point,r=e.x,n=e.y;t.translate(-1*r||0,-1*n||0)}},{key:"applyToPoint",value:function(t){var e=this.point,r=e.x,n=e.y;t.applyTransform([1,0,0,1,r||0,n||0])}}]),t}(),ns=function(){function t(e,r,n){Po(this,t),this.type="rotate",this.angle=null,this.originX=null,this.originY=null,this.cx=0,this.cy=0;var i=Yi(r);this.angle=new Ua(e,"angle",i[0]),this.originX=n[0],this.originY=n[1],this.cx=i[1]||0,this.cy=i[2]||0}return Eo(t,[{key:"apply",value:function(t){var e=this.cx,r=this.cy,n=this.originX,i=this.originY,o=this.angle,a=e+n.getPixels("x"),u=r+i.getPixels("y");t.translate(a,u),t.rotate(o.getRadians()),t.translate(-a,-u)}},{key:"unapply",value:function(t){var e=this.cx,r=this.cy,n=this.originX,i=this.originY,o=this.angle,a=e+n.getPixels("x"),u=r+i.getPixels("y");t.translate(a,u),t.rotate(-1*o.getRadians()),t.translate(-a,-u)}},{key:"applyToPoint",value:function(t){var e=this.cx,r=this.cy,n=this.angle.getRadians();t.applyTransform([1,0,0,1,e||0,r||0]),t.applyTransform([Math.cos(n),Math.sin(n),-Math.sin(n),Math.cos(n),0,0]),t.applyTransform([1,0,0,1,-e||0,-r||0])}}]),t}(),is=function(){function t(e,r,n){Po(this,t),this.type="scale",this.scale=null,this.originX=null,this.originY=null;var i=Ka.parseScale(r);0!==i.x&&0!==i.y||(i.x=yo,i.y=yo),this.scale=i,this.originX=n[0],this.originY=n[1]}return Eo(t,[{key:"apply",value:function(t){var e=this.scale,r=e.x,n=e.y,i=this.originX,o=this.originY,a=i.getPixels("x"),u=o.getPixels("y");t.translate(a,u),t.scale(r,n||r),t.translate(-a,-u)}},{key:"unapply",value:function(t){var e=this.scale,r=e.x,n=e.y,i=this.originX,o=this.originY,a=i.getPixels("x"),u=o.getPixels("y");t.translate(a,u),t.scale(1/r,1/n||r),t.translate(-a,-u)}},{key:"applyToPoint",value:function(t){var e=this.scale,r=e.x,n=e.y;t.applyTransform([r||0,0,0,n||0,0,0])}}]),t}(),os=function(){function t(e,r,n){Po(this,t),this.type="matrix",this.matrix=[],this.originX=null,this.originY=null,this.matrix=Yi(r),this.originX=n[0],this.originY=n[1]}return Eo(t,[{key:"apply",value:function(t){var e=this.originX,r=this.originY,n=this.matrix,i=e.getPixels("x"),o=r.getPixels("y");t.translate(i,o),t.transform(n[0],n[1],n[2],n[3],n[4],n[5]),t.translate(-i,-o)}},{key:"unapply",value:function(t){var e=this.originX,r=this.originY,n=this.matrix,i=n[0],o=n[2],a=n[4],u=n[1],s=n[3],c=n[5],l=1/(i*(1*s-0*c)-o*(1*u-0*c)+a*(0*u-0*s)),f=e.getPixels("x"),h=r.getPixels("y");t.translate(f,h),t.transform(l*(1*s-0*c),l*(0*c-1*u),l*(0*a-1*o),l*(1*i-0*a),l*(o*c-a*s),l*(a*u-i*c)),t.translate(-f,-h)}},{key:"applyToPoint",value:function(t){t.applyTransform(this.matrix)}}]),t}();function as(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var us=function(t){uu(r,t);var e=as(r);function r(t,n,i){var o;return Po(this,r),(o=e.call(this,t,n,i)).type="skew",o.angle=null,o.angle=new Ua(t,"angle",n),o}return r}(os);function ss(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var cs=function(t){uu(r,t);var e=ss(r);function r(t,n,i){var o;return Po(this,r),(o=e.call(this,t,n,i)).type="skewX",o.matrix=[1,0,Math.tan(o.angle.getRadians()),1,0,0],o}return r}(us);function ls(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var fs=function(t){uu(r,t);var e=ls(r);function r(t,n,i){var o;return Po(this,r),(o=e.call(this,t,n,i)).type="skewY",o.matrix=[1,Math.tan(o.angle.getRadians()),0,1,0,0],o}return r}(us);var hs=function(){function t(e,r,n){var i=this;Po(this,t),this.document=e,this.transforms=[],function(t){return Ui(t).trim().replace(/\)([a-zA-Z])/g,") $1").replace(/\)(\s?,\s?)/g,") ").split(/\s(?=[a-z])/)}(r).forEach((function(e){if("none"!==e){var r=function(t){var e=t.split("("),r=oo(e,2),n=r[0],i=r[1];return[n.trim(),i.trim().replace(")","")]}(e),o=oo(r,2),a=o[0],u=o[1],s=t.transformTypes[a];void 0!==s&&i.transforms.push(new s(i.document,u,n))}}))}return Eo(t,[{key:"apply",value:function(t){for(var e=this.transforms,r=e.length,n=0;n<r;n++)e[n].apply(t)}},{key:"unapply",value:function(t){for(var e=this.transforms,r=e.length-1;r>=0;r--)e[r].unapply(t)}},{key:"applyToPoint",value:function(t){for(var e=this.transforms,r=e.length,n=0;n<r;n++)e[n].applyToPoint(t)}}],[{key:"fromElement",value:function(e,r){var n=r.getStyle("transform",!1,!0),i=r.getStyle("transform-origin",!1,!0).split(),o=oo(i,2),a=o[0],u=o[1],s=[a,void 0===u?a:u];return n.hasValue()?new t(e,n.getString(),s):null}}]),t}();hs.transformTypes={translate:rs,rotate:ns,scale:is,matrix:os,skewX:cs,skewY:fs};var ps=function(){function t(e,r){var n=this,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(Po(this,t),this.document=e,this.node=r,this.captureTextNodes=i,this.attributes={},this.styles={},this.stylesSpecificity={},this.animationFrozen=!1,this.animationFrozenValue="",this.parent=null,this.children=[],r&&1===r.nodeType){if(Array.from(r.attributes).forEach((function(t){var r=Wi(t.nodeName);n.attributes[r]=new Ua(e,r,t.value)})),this.addStylesFromStyleDefinition(),this.getAttribute("style").hasValue()){var o=this.getAttribute("style").getString().split(";").map((function(t){return t.trim()}));o.forEach((function(t){if(t){var r=t.split(":").map((function(t){return t.trim()})),i=oo(r,2),o=i[0],a=i[1];n.styles[o]=new Ua(e,o,a)}}))}var a=e.definitions,u=this.getAttribute("id");u.hasValue()&&(a[u.getString()]||(a[u.getString()]=this)),Array.from(r.childNodes).forEach((function(t){if(1===t.nodeType)n.addChild(t);else if(i&&(3===t.nodeType||4===t.nodeType)){var r=e.createTextNode(t);r.getText().length>0&&n.addChild(r)}}))}}return Eo(t,[{key:"getAttribute",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=this.attributes[t];if(!r&&e){var n=new Ua(this.document,t,"");return this.attributes[t]=n,n}return r||Ua.empty(this.document)}},{key:"getHrefAttribute",value:function(){for(var t in this.attributes)if("href"===t||t.endsWith(":href"))return this.attributes[t];return Ua.empty(this.document)}},{key:"getStyle",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=this.styles[t];if(n)return n;var i=this.getAttribute(t);if(null!=i&&i.hasValue())return this.styles[t]=i,i;if(!r){var o=this.parent;if(o){var a=o.getStyle(t);if(null!=a&&a.hasValue())return a}}if(e){var u=new Ua(this.document,t,"");return this.styles[t]=u,u}return n||Ua.empty(this.document)}},{key:"render",value:function(t){if("none"!==this.getStyle("display").getString()&&"hidden"!==this.getStyle("visibility").getString()){if(t.save(),this.getStyle("mask").hasValue()){var e=this.getStyle("mask").getDefinition();e&&(this.applyEffects(t),e.apply(t,this))}else if("none"!==this.getStyle("filter").getValue("none")){var r=this.getStyle("filter").getDefinition();r&&(this.applyEffects(t),r.apply(t,this))}else this.setContext(t),this.renderChildren(t),this.clearContext(t);t.restore()}}},{key:"setContext",value:function(t){}},{key:"applyEffects",value:function(t){var e=hs.fromElement(this.document,this);e&&e.apply(t);var r=this.getStyle("clip-path",!1,!0);if(r.hasValue()){var n=r.getDefinition();n&&n.apply(t)}}},{key:"clearContext",value:function(t){}},{key:"renderChildren",value:function(t){this.children.forEach((function(e){e.render(t)}))}},{key:"addChild",value:function(e){var r=e instanceof t?e:this.document.createElement(e);r.parent=this,t.ignoreChildTypes.includes(r.type)||this.children.push(r)}},{key:"matchesSelector",value:function(t){var e,r=this.node;if("function"==typeof r.matches)return r.matches(t);var n=null===(e=r.getAttribute)||void 0===e?void 0:e.call(r,"class");return!(!n||""===n)&&n.split(" ").some((function(e){return".".concat(e)===t}))}},{key:"addStylesFromStyleDefinition",value:function(){var t=this.document,e=t.styles,r=t.stylesSpecificity;for(var n in e)if(!n.startsWith("@")&&this.matchesSelector(n)){var i=e[n],o=r[n];if(i)for(var a in i){var u=this.stylesSpecificity[a];void 0===u&&(u="000"),o>=u&&(this.styles[a]=i[a],this.stylesSpecificity[a]=o)}}}},{key:"removeStyles",value:function(t,e){return e.reduce((function(e,r){var n=t.getStyle(r);if(!n.hasValue())return e;var i=n.getString();return n.setValue(""),[].concat(es(e),[[r,i]])}),[])}},{key:"restoreStyles",value:function(t,e){e.forEach((function(e){var r=oo(e,2),n=r[0],i=r[1];t.getStyle(n,!0).setValue(i)}))}},{key:"isFirstChild",value:function(){var t;return 0===(null===(t=this.parent)||void 0===t?void 0:t.children.indexOf(this))}}]),t}();function vs(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}ps.ignoreChildTypes=["title"];var ys=function(t){uu(r,t);var e=vs(r);function r(t,n,i){return Po(this,r),e.call(this,t,n,i)}return r}(ps),ds=[].reverse,gs=[1,2];fe({target:"Array",proto:!0,forced:String(gs)===String(gs.reverse())},{reverse:function(){return xn(this)&&(this.length=this.length),ds.call(this)}});var ms=function(t,e,r){var n,i;return ve&&x(n=e.constructor)&&n!==r&&D(i=n.prototype)&&i!==r.prototype&&ve(t,i),t},xs=1..valueOf,bs=function(t){return xs.call(t)},ws=Jt.f,Ss=Bt.f,Os=K.f,ks=Vn.trim,Ts="Number",As=u.Number,Rs=As.prototype,Ps=function(t){var e=$(t,"number");return"bigint"==typeof e?e:Es(e)},Es=function(t){var e,r,n,i,o,a,u,s,c=$(t,"number");if(X(c))throw TypeError("Cannot convert a Symbol value to a number");if("string"==typeof c&&c.length>2)if(43===(e=(c=ks(c)).charCodeAt(0))||45===e){if(88===(r=c.charCodeAt(2))||120===r)return NaN}else if(48===e){switch(c.charCodeAt(1)){case 66:case 98:n=2,i=49;break;case 79:case 111:n=8,i=55;break;default:return+c}for(a=(o=c.slice(2)).length,u=0;u<a;u++)if((s=o.charCodeAt(u))<48||s>i)return NaN;return parseInt(o,n)}return+c};if(ce(Ts,!As(" 0o1")||!As("0b1")||As("+0x1"))){for(var Cs,Ms=function(t){var e=arguments.length<1?0:As(Ps(t)),r=this;return r instanceof Ms&&P((function(){bs(r)}))?ms(Object(e),r,Ms):e},Ns=B?ws(As):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),_s=0;Ns.length>_s;_s++)y(As,Cs=Ns[_s])&&!y(Ms,Cs)&&Os(Ms,Cs,Ss(As,Cs));Ms.prototype=Rs,Rs.constructor=Ms,Ot(u,Ts,Ms)}var Is=n((function(t){t.exports=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=hu(t)););return t},t.exports.default=t.exports,t.exports.__esModule=!0})),Vs=r(n((function(t){function e(r,n,i){return"undefined"!=typeof Reflect&&Reflect.get?(t.exports=e=Reflect.get,t.exports.default=t.exports,t.exports.__esModule=!0):(t.exports=e=function(t,e,r){var n=Is(t,e);if(n){var i=Object.getOwnPropertyDescriptor(n,e);return i.get?i.get.call(r):i.value}},t.exports.default=t.exports,t.exports.__esModule=!0),e(r,n,i||r)}t.exports=e,t.exports.default=t.exports,t.exports.__esModule=!0})));function Ls(t){var e=t.trim();return/^('|")/.test(e)?e:'"'.concat(e,'"')}function Bs(t){if(!t)return"";var e=t.trim().toLowerCase();switch(e){case"normal":case"italic":case"oblique":case"inherit":case"initial":case"unset":return e;default:return/^oblique\s+(-|)\d+deg$/.test(e)?e:""}}function Ds(t){if(!t)return"";var e=t.trim().toLowerCase();switch(e){case"normal":case"bold":case"lighter":case"bolder":case"inherit":case"initial":case"unset":return e;default:return/^[\d.]+$/.test(e)?e:""}}var js=function(){function t(e,r,n,i,o,a){Po(this,t);var u=a?"string"==typeof a?t.parse(a):a:{};this.fontFamily=o||u.fontFamily,this.fontSize=i||u.fontSize,this.fontStyle=e||u.fontStyle,this.fontWeight=n||u.fontWeight,this.fontVariant=r||u.fontVariant}return Eo(t,[{key:"toString",value:function(){return[Bs(this.fontStyle),this.fontVariant,Ds(this.fontWeight),this.fontSize,(t=this.fontFamily,"undefined"==typeof process?t:t.trim().split(",").map(Ls).join(","))].join(" ").trim();var t}}],[{key:"parse",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",r=arguments.length>1?arguments[1]:void 0,n="",i="",o="",a="",u="",s=Ui(e).trim().split(" "),c={fontSize:!1,fontStyle:!1,fontWeight:!1,fontVariant:!1};return s.forEach((function(e){switch(!0){case!c.fontStyle&&t.styles.includes(e):"inherit"!==e&&(n=e),c.fontStyle=!0;break;case!c.fontVariant&&t.variants.includes(e):"inherit"!==e&&(i=e),c.fontStyle=!0,c.fontVariant=!0;break;case!c.fontWeight&&t.weights.includes(e):"inherit"!==e&&(o=e),c.fontStyle=!0,c.fontVariant=!0,c.fontWeight=!0;break;case!c.fontSize:if("inherit"!==e){var r=e.split("/"),s=oo(r,1);a=s[0]}c.fontStyle=!0,c.fontVariant=!0,c.fontWeight=!0,c.fontSize=!0;break;default:"inherit"!==e&&(u+=e)}})),new t(n,i,o,a,u,r)}}]),t}();js.styles="normal|italic|oblique|inherit",js.variants="normal|small-caps|inherit",js.weights="normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit";var Fs=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Number.NaN,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Number.NaN,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Number.NaN,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:Number.NaN;Po(this,t),this.x1=e,this.y1=r,this.x2=n,this.y2=i,this.addPoint(e,r),this.addPoint(n,i)}return Eo(t,[{key:"addPoint",value:function(t,e){void 0!==t&&((isNaN(this.x1)||isNaN(this.x2))&&(this.x1=t,this.x2=t),t<this.x1&&(this.x1=t),t>this.x2&&(this.x2=t)),void 0!==e&&((isNaN(this.y1)||isNaN(this.y2))&&(this.y1=e,this.y2=e),e<this.y1&&(this.y1=e),e>this.y2&&(this.y2=e))}},{key:"addX",value:function(t){this.addPoint(t,null)}},{key:"addY",value:function(t){this.addPoint(null,t)}},{key:"addBoundingBox",value:function(t){if(t){var e=t.x1,r=t.y1,n=t.x2,i=t.y2;this.addPoint(e,r),this.addPoint(n,i)}}},{key:"sumCubic",value:function(t,e,r,n,i){return Math.pow(1-t,3)*e+3*Math.pow(1-t,2)*t*r+3*(1-t)*Math.pow(t,2)*n+Math.pow(t,3)*i}},{key:"bezierCurveAdd",value:function(t,e,r,n,i){var o=6*e-12*r+6*n,a=-3*e+9*r-9*n+3*i,u=3*r-3*e;if(0!==a){var s=Math.pow(o,2)-4*u*a;if(!(s<0)){var c=(-o+Math.sqrt(s))/(2*a);0<c&&c<1&&(t?this.addX(this.sumCubic(c,e,r,n,i)):this.addY(this.sumCubic(c,e,r,n,i)));var l=(-o-Math.sqrt(s))/(2*a);0<l&&l<1&&(t?this.addX(this.sumCubic(l,e,r,n,i)):this.addY(this.sumCubic(l,e,r,n,i)))}}else{if(0===o)return;var f=-u/o;0<f&&f<1&&(t?this.addX(this.sumCubic(f,e,r,n,i)):this.addY(this.sumCubic(f,e,r,n,i)))}}},{key:"addBezierCurve",value:function(t,e,r,n,i,o,a,u){this.addPoint(t,e),this.addPoint(a,u),this.bezierCurveAdd(!0,t,r,i,a),this.bezierCurveAdd(!1,e,n,o,u)}},{key:"addQuadraticCurve",value:function(t,e,r,n,i,o){var a=t+2/3*(r-t),u=e+2/3*(n-e),s=a+1/3*(i-t),c=u+1/3*(o-e);this.addBezierCurve(t,e,a,s,u,c,i,o)}},{key:"isPointInBox",value:function(t,e){var r=this.x1,n=this.y1,i=this.x2,o=this.y2;return r<=t&&t<=i&&n<=e&&e<=o}},{key:"x",get:function(){return this.x1}},{key:"y",get:function(){return this.y1}},{key:"width",get:function(){return this.x2-this.x1}},{key:"height",get:function(){return this.y2-this.y1}}]),t}();fe({target:"Array",proto:!0},{fill:function(t){for(var e=p(this),r=Gt(e),n=arguments.length,i=Ht(n>1?arguments[1]:void 0,r),o=n>2?arguments[2]:void 0,a=void 0===o?r:Ht(o,r);a>i;)e[i++]=t;return e}}),mu("fill");
+/*! *****************************************************************************
+	Copyright (c) Microsoft Corporation.
+
+	Permission to use, copy, modify, and/or distribute this software for any
+	purpose with or without fee is hereby granted.
+
+	THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+	REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+	AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+	INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+	LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+	OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+	PERFORMANCE OF THIS SOFTWARE.
+	***************************************************************************** */
+var zs=function(t,e){return(zs=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(t,e)};function Us(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function r(){this.constructor=t}zs(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}function Hs(t,e){var r=t[0],n=t[1];return[r*Math.cos(e)-n*Math.sin(e),r*Math.sin(e)+n*Math.cos(e)]}function Xs(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];for(var r=0;r<t.length;r++)if("number"!=typeof t[r])throw new Error("assertNumbers arguments["+r+"] is not a number. "+typeof t[r]+" == typeof "+t[r]);return!0}var Ys=Math.PI;function Gs(t,e,r){t.lArcFlag=0===t.lArcFlag?0:1,t.sweepFlag=0===t.sweepFlag?0:1;var n=t.rX,i=t.rY,o=t.x,a=t.y;n=Math.abs(t.rX),i=Math.abs(t.rY);var u=Hs([(e-o)/2,(r-a)/2],-t.xRot/180*Ys),s=u[0],c=u[1],l=Math.pow(s,2)/Math.pow(n,2)+Math.pow(c,2)/Math.pow(i,2);1<l&&(n*=Math.sqrt(l),i*=Math.sqrt(l)),t.rX=n,t.rY=i;var f=Math.pow(n,2)*Math.pow(c,2)+Math.pow(i,2)*Math.pow(s,2),h=(t.lArcFlag!==t.sweepFlag?1:-1)*Math.sqrt(Math.max(0,(Math.pow(n,2)*Math.pow(i,2)-f)/f)),p=n*c/i*h,v=-i*s/n*h,y=Hs([p,v],t.xRot/180*Ys);t.cX=y[0]+(e+o)/2,t.cY=y[1]+(r+a)/2,t.phi1=Math.atan2((c-v)/i,(s-p)/n),t.phi2=Math.atan2((-c-v)/i,(-s-p)/n),0===t.sweepFlag&&t.phi2>t.phi1&&(t.phi2-=2*Ys),1===t.sweepFlag&&t.phi2<t.phi1&&(t.phi2+=2*Ys),t.phi1*=180/Ys,t.phi2*=180/Ys}function Ws(t,e,r){Xs(t,e,r);var n=t*t+e*e-r*r;if(0>n)return[];if(0===n)return[[t*r/(t*t+e*e),e*r/(t*t+e*e)]];var i=Math.sqrt(n);return[[(t*r+e*i)/(t*t+e*e),(e*r-t*i)/(t*t+e*e)],[(t*r-e*i)/(t*t+e*e),(e*r+t*i)/(t*t+e*e)]]}var qs,$s=Math.PI/180;function Qs(t,e,r){return(1-r)*t+r*e}function Zs(t,e,r,n){return t+Math.cos(n/180*Ys)*e+Math.sin(n/180*Ys)*r}function Ks(t,e,r,n){var i=1e-6,o=e-t,a=r-e,u=3*o+3*(n-r)-6*a,s=6*(a-o),c=3*o;return Math.abs(u)<i?[-c/s]:function(t,e,r){void 0===r&&(r=1e-6);var n=t*t/4-e;if(n<-r)return[];if(n<=r)return[-t/2];var i=Math.sqrt(n);return[-t/2-i,-t/2+i]}(s/u,c/u,i)}function Js(t,e,r,n,i){var o=1-i;return t*(o*o*o)+e*(3*o*o*i)+r*(3*o*i*i)+n*(i*i*i)}!function(t){function e(){return i((function(t,e,r){return t.relative&&(void 0!==t.x1&&(t.x1+=e),void 0!==t.y1&&(t.y1+=r),void 0!==t.x2&&(t.x2+=e),void 0!==t.y2&&(t.y2+=r),void 0!==t.x&&(t.x+=e),void 0!==t.y&&(t.y+=r),t.relative=!1),t}))}function r(){var t=NaN,e=NaN,r=NaN,n=NaN;return i((function(i,o,a){return i.type&oc.SMOOTH_CURVE_TO&&(i.type=oc.CURVE_TO,t=isNaN(t)?o:t,e=isNaN(e)?a:e,i.x1=i.relative?o-t:2*o-t,i.y1=i.relative?a-e:2*a-e),i.type&oc.CURVE_TO?(t=i.relative?o+i.x2:i.x2,e=i.relative?a+i.y2:i.y2):(t=NaN,e=NaN),i.type&oc.SMOOTH_QUAD_TO&&(i.type=oc.QUAD_TO,r=isNaN(r)?o:r,n=isNaN(n)?a:n,i.x1=i.relative?o-r:2*o-r,i.y1=i.relative?a-n:2*a-n),i.type&oc.QUAD_TO?(r=i.relative?o+i.x1:i.x1,n=i.relative?a+i.y1:i.y1):(r=NaN,n=NaN),i}))}function n(){var t=NaN,e=NaN;return i((function(r,n,i){if(r.type&oc.SMOOTH_QUAD_TO&&(r.type=oc.QUAD_TO,t=isNaN(t)?n:t,e=isNaN(e)?i:e,r.x1=r.relative?n-t:2*n-t,r.y1=r.relative?i-e:2*i-e),r.type&oc.QUAD_TO){t=r.relative?n+r.x1:r.x1,e=r.relative?i+r.y1:r.y1;var o=r.x1,a=r.y1;r.type=oc.CURVE_TO,r.x1=((r.relative?0:n)+2*o)/3,r.y1=((r.relative?0:i)+2*a)/3,r.x2=(r.x+2*o)/3,r.y2=(r.y+2*a)/3}else t=NaN,e=NaN;return r}))}function i(t){var e=0,r=0,n=NaN,i=NaN;return function(o){if(isNaN(n)&&!(o.type&oc.MOVE_TO))throw new Error("path must start with moveto");var a=t(o,e,r,n,i);return o.type&oc.CLOSE_PATH&&(e=n,r=i),void 0!==o.x&&(e=o.relative?e+o.x:o.x),void 0!==o.y&&(r=o.relative?r+o.y:o.y),o.type&oc.MOVE_TO&&(n=e,i=r),a}}function o(t,e,r,n,o,a){return Xs(t,e,r,n,o,a),i((function(i,u,s,c){var l=i.x1,f=i.x2,h=i.relative&&!isNaN(c),p=void 0!==i.x?i.x:h?0:u,v=void 0!==i.y?i.y:h?0:s;function y(t){return t*t}i.type&oc.HORIZ_LINE_TO&&0!==e&&(i.type=oc.LINE_TO,i.y=i.relative?0:s),i.type&oc.VERT_LINE_TO&&0!==r&&(i.type=oc.LINE_TO,i.x=i.relative?0:u),void 0!==i.x&&(i.x=i.x*t+v*r+(h?0:o)),void 0!==i.y&&(i.y=p*e+i.y*n+(h?0:a)),void 0!==i.x1&&(i.x1=i.x1*t+i.y1*r+(h?0:o)),void 0!==i.y1&&(i.y1=l*e+i.y1*n+(h?0:a)),void 0!==i.x2&&(i.x2=i.x2*t+i.y2*r+(h?0:o)),void 0!==i.y2&&(i.y2=f*e+i.y2*n+(h?0:a));var d=t*n-e*r;if(void 0!==i.xRot&&(1!==t||0!==e||0!==r||1!==n))if(0===d)delete i.rX,delete i.rY,delete i.xRot,delete i.lArcFlag,delete i.sweepFlag,i.type=oc.LINE_TO;else{var g=i.xRot*Math.PI/180,m=Math.sin(g),x=Math.cos(g),b=1/y(i.rX),w=1/y(i.rY),S=y(x)*b+y(m)*w,O=2*m*x*(b-w),k=y(m)*b+y(x)*w,T=S*n*n-O*e*n+k*e*e,A=O*(t*n+e*r)-2*(S*r*n+k*t*e),R=S*r*r-O*t*r+k*t*t,P=(Math.atan2(A,T-R)+Math.PI)%Math.PI/2,E=Math.sin(P),C=Math.cos(P);i.rX=Math.abs(d)/Math.sqrt(T*y(C)+A*E*C+R*y(E)),i.rY=Math.abs(d)/Math.sqrt(T*y(E)-A*E*C+R*y(C)),i.xRot=180*P/Math.PI}return void 0!==i.sweepFlag&&0>d&&(i.sweepFlag=+!i.sweepFlag),i}))}t.ROUND=function(t){function e(e){return Math.round(e*t)/t}return void 0===t&&(t=1e13),Xs(t),function(t){return void 0!==t.x1&&(t.x1=e(t.x1)),void 0!==t.y1&&(t.y1=e(t.y1)),void 0!==t.x2&&(t.x2=e(t.x2)),void 0!==t.y2&&(t.y2=e(t.y2)),void 0!==t.x&&(t.x=e(t.x)),void 0!==t.y&&(t.y=e(t.y)),void 0!==t.rX&&(t.rX=e(t.rX)),void 0!==t.rY&&(t.rY=e(t.rY)),t}},t.TO_ABS=e,t.TO_REL=function(){return i((function(t,e,r){return t.relative||(void 0!==t.x1&&(t.x1-=e),void 0!==t.y1&&(t.y1-=r),void 0!==t.x2&&(t.x2-=e),void 0!==t.y2&&(t.y2-=r),void 0!==t.x&&(t.x-=e),void 0!==t.y&&(t.y-=r),t.relative=!0),t}))},t.NORMALIZE_HVZ=function(t,e,r){return void 0===t&&(t=!0),void 0===e&&(e=!0),void 0===r&&(r=!0),i((function(n,i,o,a,u){if(isNaN(a)&&!(n.type&oc.MOVE_TO))throw new Error("path must start with moveto");return e&&n.type&oc.HORIZ_LINE_TO&&(n.type=oc.LINE_TO,n.y=n.relative?0:o),r&&n.type&oc.VERT_LINE_TO&&(n.type=oc.LINE_TO,n.x=n.relative?0:i),t&&n.type&oc.CLOSE_PATH&&(n.type=oc.LINE_TO,n.x=n.relative?a-i:a,n.y=n.relative?u-o:u),n.type&oc.ARC&&(0===n.rX||0===n.rY)&&(n.type=oc.LINE_TO,delete n.rX,delete n.rY,delete n.xRot,delete n.lArcFlag,delete n.sweepFlag),n}))},t.NORMALIZE_ST=r,t.QT_TO_C=n,t.INFO=i,t.SANITIZE=function(t){void 0===t&&(t=0),Xs(t);var e=NaN,r=NaN,n=NaN,o=NaN;return i((function(i,a,u,s,c){var l=Math.abs,f=!1,h=0,p=0;if(i.type&oc.SMOOTH_CURVE_TO&&(h=isNaN(e)?0:a-e,p=isNaN(r)?0:u-r),i.type&(oc.CURVE_TO|oc.SMOOTH_CURVE_TO)?(e=i.relative?a+i.x2:i.x2,r=i.relative?u+i.y2:i.y2):(e=NaN,r=NaN),i.type&oc.SMOOTH_QUAD_TO?(n=isNaN(n)?a:2*a-n,o=isNaN(o)?u:2*u-o):i.type&oc.QUAD_TO?(n=i.relative?a+i.x1:i.x1,o=i.relative?u+i.y1:i.y2):(n=NaN,o=NaN),i.type&oc.LINE_COMMANDS||i.type&oc.ARC&&(0===i.rX||0===i.rY||!i.lArcFlag)||i.type&oc.CURVE_TO||i.type&oc.SMOOTH_CURVE_TO||i.type&oc.QUAD_TO||i.type&oc.SMOOTH_QUAD_TO){var v=void 0===i.x?0:i.relative?i.x:i.x-a,y=void 0===i.y?0:i.relative?i.y:i.y-u;h=isNaN(n)?void 0===i.x1?h:i.relative?i.x:i.x1-a:n-a,p=isNaN(o)?void 0===i.y1?p:i.relative?i.y:i.y1-u:o-u;var d=void 0===i.x2?0:i.relative?i.x:i.x2-a,g=void 0===i.y2?0:i.relative?i.y:i.y2-u;l(v)<=t&&l(y)<=t&&l(h)<=t&&l(p)<=t&&l(d)<=t&&l(g)<=t&&(f=!0)}return i.type&oc.CLOSE_PATH&&l(a-s)<=t&&l(u-c)<=t&&(f=!0),f?[]:i}))},t.MATRIX=o,t.ROTATE=function(t,e,r){void 0===e&&(e=0),void 0===r&&(r=0),Xs(t,e,r);var n=Math.sin(t),i=Math.cos(t);return o(i,n,-n,i,e-e*i+r*n,r-e*n-r*i)},t.TRANSLATE=function(t,e){return void 0===e&&(e=0),Xs(t,e),o(1,0,0,1,t,e)},t.SCALE=function(t,e){return void 0===e&&(e=t),Xs(t,e),o(t,0,0,e,0,0)},t.SKEW_X=function(t){return Xs(t),o(1,0,Math.atan(t),1,0,0)},t.SKEW_Y=function(t){return Xs(t),o(1,Math.atan(t),0,1,0,0)},t.X_AXIS_SYMMETRY=function(t){return void 0===t&&(t=0),Xs(t),o(-1,0,0,1,t,0)},t.Y_AXIS_SYMMETRY=function(t){return void 0===t&&(t=0),Xs(t),o(1,0,0,-1,0,t)},t.A_TO_C=function(){return i((function(t,e,r){return oc.ARC===t.type?function(t,e,r){var n,i,o,a;t.cX||Gs(t,e,r);for(var u=Math.min(t.phi1,t.phi2),s=Math.max(t.phi1,t.phi2)-u,c=Math.ceil(s/90),l=new Array(c),f=e,h=r,p=0;p<c;p++){var v=Qs(t.phi1,t.phi2,p/c),y=Qs(t.phi1,t.phi2,(p+1)/c),d=y-v,g=4/3*Math.tan(d*$s/4),m=[Math.cos(v*$s)-g*Math.sin(v*$s),Math.sin(v*$s)+g*Math.cos(v*$s)],x=m[0],b=m[1],w=[Math.cos(y*$s),Math.sin(y*$s)],S=w[0],O=w[1],k=[S+g*Math.sin(y*$s),O-g*Math.cos(y*$s)],T=k[0],A=k[1];l[p]={relative:t.relative,type:oc.CURVE_TO};var R=function(e,r){var n=Hs([e*t.rX,r*t.rY],t.xRot),i=n[0],o=n[1];return[t.cX+i,t.cY+o]};n=R(x,b),l[p].x1=n[0],l[p].y1=n[1],i=R(T,A),l[p].x2=i[0],l[p].y2=i[1],o=R(S,O),l[p].x=o[0],l[p].y=o[1],t.relative&&(l[p].x1-=f,l[p].y1-=h,l[p].x2-=f,l[p].y2-=h,l[p].x-=f,l[p].y-=h),f=(a=[l[p].x,l[p].y])[0],h=a[1]}return l}(t,t.relative?0:e,t.relative?0:r):t}))},t.ANNOTATE_ARCS=function(){return i((function(t,e,r){return t.relative&&(e=0,r=0),oc.ARC===t.type&&Gs(t,e,r),t}))},t.CLONE=function(){return function(t){var e={};for(var r in t)e[r]=t[r];return e}},t.CALCULATE_BOUNDS=function(){var t=e(),o=n(),a=r(),u=i((function(e,r,n){var i=a(o(t(function(t){var e={};for(var r in t)e[r]=t[r];return e}(e))));function s(t){t>u.maxX&&(u.maxX=t),t<u.minX&&(u.minX=t)}function c(t){t>u.maxY&&(u.maxY=t),t<u.minY&&(u.minY=t)}if(i.type&oc.DRAWING_COMMANDS&&(s(r),c(n)),i.type&oc.HORIZ_LINE_TO&&s(i.x),i.type&oc.VERT_LINE_TO&&c(i.y),i.type&oc.LINE_TO&&(s(i.x),c(i.y)),i.type&oc.CURVE_TO){s(i.x),c(i.y);for(var l=0,f=Ks(r,i.x1,i.x2,i.x);l<f.length;l++)0<(R=f[l])&&1>R&&s(Js(r,i.x1,i.x2,i.x,R));for(var h=0,p=Ks(n,i.y1,i.y2,i.y);h<p.length;h++)0<(R=p[h])&&1>R&&c(Js(n,i.y1,i.y2,i.y,R))}if(i.type&oc.ARC){s(i.x),c(i.y),Gs(i,r,n);for(var v=i.xRot/180*Math.PI,y=Math.cos(v)*i.rX,d=Math.sin(v)*i.rX,g=-Math.sin(v)*i.rY,m=Math.cos(v)*i.rY,x=i.phi1<i.phi2?[i.phi1,i.phi2]:-180>i.phi2?[i.phi2+360,i.phi1+360]:[i.phi2,i.phi1],b=x[0],w=x[1],S=function(t){var e=t[0],r=t[1],n=180*Math.atan2(r,e)/Math.PI;return n<b?n+360:n},O=0,k=Ws(g,-y,0).map(S);O<k.length;O++)(R=k[O])>b&&R<w&&s(Zs(i.cX,y,g,R));for(var T=0,A=Ws(m,-d,0).map(S);T<A.length;T++){var R;(R=A[T])>b&&R<w&&c(Zs(i.cY,d,m,R))}}return e}));return u.minX=1/0,u.maxX=-1/0,u.minY=1/0,u.maxY=-1/0,u}}(qs||(qs={}));var tc,ec=function(){function t(){}return t.prototype.round=function(t){return this.transform(qs.ROUND(t))},t.prototype.toAbs=function(){return this.transform(qs.TO_ABS())},t.prototype.toRel=function(){return this.transform(qs.TO_REL())},t.prototype.normalizeHVZ=function(t,e,r){return this.transform(qs.NORMALIZE_HVZ(t,e,r))},t.prototype.normalizeST=function(){return this.transform(qs.NORMALIZE_ST())},t.prototype.qtToC=function(){return this.transform(qs.QT_TO_C())},t.prototype.aToC=function(){return this.transform(qs.A_TO_C())},t.prototype.sanitize=function(t){return this.transform(qs.SANITIZE(t))},t.prototype.translate=function(t,e){return this.transform(qs.TRANSLATE(t,e))},t.prototype.scale=function(t,e){return this.transform(qs.SCALE(t,e))},t.prototype.rotate=function(t,e,r){return this.transform(qs.ROTATE(t,e,r))},t.prototype.matrix=function(t,e,r,n,i,o){return this.transform(qs.MATRIX(t,e,r,n,i,o))},t.prototype.skewX=function(t){return this.transform(qs.SKEW_X(t))},t.prototype.skewY=function(t){return this.transform(qs.SKEW_Y(t))},t.prototype.xSymmetry=function(t){return this.transform(qs.X_AXIS_SYMMETRY(t))},t.prototype.ySymmetry=function(t){return this.transform(qs.Y_AXIS_SYMMETRY(t))},t.prototype.annotateArcs=function(){return this.transform(qs.ANNOTATE_ARCS())},t}(),rc=function(t){return" "===t||"\t"===t||"\r"===t||"\n"===t},nc=function(t){return"0".charCodeAt(0)<=t.charCodeAt(0)&&t.charCodeAt(0)<="9".charCodeAt(0)},ic=function(t){function e(){var e=t.call(this)||this;return e.curNumber="",e.curCommandType=-1,e.curCommandRelative=!1,e.canParseCommandOrComma=!0,e.curNumberHasExp=!1,e.curNumberHasExpDigits=!1,e.curNumberHasDecimal=!1,e.curArgs=[],e}return Us(e,t),e.prototype.finish=function(t){if(void 0===t&&(t=[]),this.parse(" ",t),0!==this.curArgs.length||!this.canParseCommandOrComma)throw new SyntaxError("Unterminated command at the path end.");return t},e.prototype.parse=function(t,e){var r=this;void 0===e&&(e=[]);for(var n=function(t){e.push(t),r.curArgs.length=0,r.canParseCommandOrComma=!0},i=0;i<t.length;i++){var o=t[i],a=!(this.curCommandType!==oc.ARC||3!==this.curArgs.length&&4!==this.curArgs.length||1!==this.curNumber.length||"0"!==this.curNumber&&"1"!==this.curNumber),u=nc(o)&&("0"===this.curNumber&&"0"===o||a);if(!nc(o)||u)if("e"!==o&&"E"!==o)if("-"!==o&&"+"!==o||!this.curNumberHasExp||this.curNumberHasExpDigits)if("."!==o||this.curNumberHasExp||this.curNumberHasDecimal||a){if(this.curNumber&&-1!==this.curCommandType){var s=Number(this.curNumber);if(isNaN(s))throw new SyntaxError("Invalid number ending at "+i);if(this.curCommandType===oc.ARC)if(0===this.curArgs.length||1===this.curArgs.length){if(0>s)throw new SyntaxError('Expected positive number, got "'+s+'" at index "'+i+'"')}else if((3===this.curArgs.length||4===this.curArgs.length)&&"0"!==this.curNumber&&"1"!==this.curNumber)throw new SyntaxError('Expected a flag, got "'+this.curNumber+'" at index "'+i+'"');this.curArgs.push(s),this.curArgs.length===ac[this.curCommandType]&&(oc.HORIZ_LINE_TO===this.curCommandType?n({type:oc.HORIZ_LINE_TO,relative:this.curCommandRelative,x:s}):oc.VERT_LINE_TO===this.curCommandType?n({type:oc.VERT_LINE_TO,relative:this.curCommandRelative,y:s}):this.curCommandType===oc.MOVE_TO||this.curCommandType===oc.LINE_TO||this.curCommandType===oc.SMOOTH_QUAD_TO?(n({type:this.curCommandType,relative:this.curCommandRelative,x:this.curArgs[0],y:this.curArgs[1]}),oc.MOVE_TO===this.curCommandType&&(this.curCommandType=oc.LINE_TO)):this.curCommandType===oc.CURVE_TO?n({type:oc.CURVE_TO,relative:this.curCommandRelative,x1:this.curArgs[0],y1:this.curArgs[1],x2:this.curArgs[2],y2:this.curArgs[3],x:this.curArgs[4],y:this.curArgs[5]}):this.curCommandType===oc.SMOOTH_CURVE_TO?n({type:oc.SMOOTH_CURVE_TO,relative:this.curCommandRelative,x2:this.curArgs[0],y2:this.curArgs[1],x:this.curArgs[2],y:this.curArgs[3]}):this.curCommandType===oc.QUAD_TO?n({type:oc.QUAD_TO,relative:this.curCommandRelative,x1:this.curArgs[0],y1:this.curArgs[1],x:this.curArgs[2],y:this.curArgs[3]}):this.curCommandType===oc.ARC&&n({type:oc.ARC,relative:this.curCommandRelative,rX:this.curArgs[0],rY:this.curArgs[1],xRot:this.curArgs[2],lArcFlag:this.curArgs[3],sweepFlag:this.curArgs[4],x:this.curArgs[5],y:this.curArgs[6]})),this.curNumber="",this.curNumberHasExpDigits=!1,this.curNumberHasExp=!1,this.curNumberHasDecimal=!1,this.canParseCommandOrComma=!0}if(!rc(o))if(","===o&&this.canParseCommandOrComma)this.canParseCommandOrComma=!1;else if("+"!==o&&"-"!==o&&"."!==o)if(u)this.curNumber=o,this.curNumberHasDecimal=!1;else{if(0!==this.curArgs.length)throw new SyntaxError("Unterminated command at index "+i+".");if(!this.canParseCommandOrComma)throw new SyntaxError('Unexpected character "'+o+'" at index '+i+". Command cannot follow comma");if(this.canParseCommandOrComma=!1,"z"!==o&&"Z"!==o)if("h"===o||"H"===o)this.curCommandType=oc.HORIZ_LINE_TO,this.curCommandRelative="h"===o;else if("v"===o||"V"===o)this.curCommandType=oc.VERT_LINE_TO,this.curCommandRelative="v"===o;else if("m"===o||"M"===o)this.curCommandType=oc.MOVE_TO,this.curCommandRelative="m"===o;else if("l"===o||"L"===o)this.curCommandType=oc.LINE_TO,this.curCommandRelative="l"===o;else if("c"===o||"C"===o)this.curCommandType=oc.CURVE_TO,this.curCommandRelative="c"===o;else if("s"===o||"S"===o)this.curCommandType=oc.SMOOTH_CURVE_TO,this.curCommandRelative="s"===o;else if("q"===o||"Q"===o)this.curCommandType=oc.QUAD_TO,this.curCommandRelative="q"===o;else if("t"===o||"T"===o)this.curCommandType=oc.SMOOTH_QUAD_TO,this.curCommandRelative="t"===o;else{if("a"!==o&&"A"!==o)throw new SyntaxError('Unexpected character "'+o+'" at index '+i+".");this.curCommandType=oc.ARC,this.curCommandRelative="a"===o}else e.push({type:oc.CLOSE_PATH}),this.canParseCommandOrComma=!0,this.curCommandType=-1}else this.curNumber=o,this.curNumberHasDecimal="."===o}else this.curNumber+=o,this.curNumberHasDecimal=!0;else this.curNumber+=o;else this.curNumber+=o,this.curNumberHasExp=!0;else this.curNumber+=o,this.curNumberHasExpDigits=this.curNumberHasExp}return e},e.prototype.transform=function(t){return Object.create(this,{parse:{value:function(e,r){void 0===r&&(r=[]);for(var n=0,i=Object.getPrototypeOf(this).parse.call(this,e);n<i.length;n++){var o=i[n],a=t(o);Array.isArray(a)?r.push.apply(r,a):r.push(a)}return r}}})},e}(ec),oc=function(t){function e(r){var n=t.call(this)||this;return n.commands="string"==typeof r?e.parse(r):r,n}return Us(e,t),e.prototype.encode=function(){return e.encode(this.commands)},e.prototype.getBounds=function(){var t=qs.CALCULATE_BOUNDS();return this.transform(t),t},e.prototype.transform=function(t){for(var e=[],r=0,n=this.commands;r<n.length;r++){var i=t(n[r]);Array.isArray(i)?e.push.apply(e,i):e.push(i)}return this.commands=e,this},e.encode=function(t){return function(t){var e="";Array.isArray(t)||(t=[t]);for(var r=0;r<t.length;r++){var n=t[r];if(n.type===oc.CLOSE_PATH)e+="z";else if(n.type===oc.HORIZ_LINE_TO)e+=(n.relative?"h":"H")+n.x;else if(n.type===oc.VERT_LINE_TO)e+=(n.relative?"v":"V")+n.y;else if(n.type===oc.MOVE_TO)e+=(n.relative?"m":"M")+n.x+" "+n.y;else if(n.type===oc.LINE_TO)e+=(n.relative?"l":"L")+n.x+" "+n.y;else if(n.type===oc.CURVE_TO)e+=(n.relative?"c":"C")+n.x1+" "+n.y1+" "+n.x2+" "+n.y2+" "+n.x+" "+n.y;else if(n.type===oc.SMOOTH_CURVE_TO)e+=(n.relative?"s":"S")+n.x2+" "+n.y2+" "+n.x+" "+n.y;else if(n.type===oc.QUAD_TO)e+=(n.relative?"q":"Q")+n.x1+" "+n.y1+" "+n.x+" "+n.y;else if(n.type===oc.SMOOTH_QUAD_TO)e+=(n.relative?"t":"T")+n.x+" "+n.y;else{if(n.type!==oc.ARC)throw new Error('Unexpected command type "'+n.type+'" at index '+r+".");e+=(n.relative?"a":"A")+n.rX+" "+n.rY+" "+n.xRot+" "+ +n.lArcFlag+" "+ +n.sweepFlag+" "+n.x+" "+n.y}}return e}(t)},e.parse=function(t){var e=new ic,r=[];return e.parse(t,r),e.finish(r),r},e.CLOSE_PATH=1,e.MOVE_TO=2,e.HORIZ_LINE_TO=4,e.VERT_LINE_TO=8,e.LINE_TO=16,e.CURVE_TO=32,e.SMOOTH_CURVE_TO=64,e.QUAD_TO=128,e.SMOOTH_QUAD_TO=256,e.ARC=512,e.LINE_COMMANDS=e.LINE_TO|e.HORIZ_LINE_TO|e.VERT_LINE_TO,e.DRAWING_COMMANDS=e.HORIZ_LINE_TO|e.VERT_LINE_TO|e.LINE_TO|e.CURVE_TO|e.SMOOTH_CURVE_TO|e.QUAD_TO|e.SMOOTH_QUAD_TO|e.ARC,e}(ec),ac=((tc={})[oc.MOVE_TO]=2,tc[oc.LINE_TO]=2,tc[oc.HORIZ_LINE_TO]=1,tc[oc.VERT_LINE_TO]=1,tc[oc.CLOSE_PATH]=0,tc[oc.QUAD_TO]=4,tc[oc.SMOOTH_QUAD_TO]=2,tc[oc.CURVE_TO]=6,tc[oc.SMOOTH_CURVE_TO]=4,tc[oc.ARC]=7,tc);function uc(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var sc=function(t){uu(r,t);var e=uc(r);function r(t){var n;return Po(this,r),(n=e.call(this,t.replace(/([+\-.])\s+/gm,"$1").replace(/[^MmZzLlHhVvCcSsQqTtAae\d\s.,+-].*/g,""))).control=null,n.start=null,n.current=null,n.command=null,n.commands=n.commands,n.i=-1,n.previousCommand=null,n.points=[],n.angles=[],n}return Eo(r,[{key:"reset",value:function(){this.i=-1,this.command=null,this.previousCommand=null,this.start=new Ka(0,0),this.control=new Ka(0,0),this.current=new Ka(0,0),this.points=[],this.angles=[]}},{key:"isEnd",value:function(){return this.i>=this.commands.length-1}},{key:"next",value:function(){var t=this.commands[++this.i];return this.previousCommand=this.command,this.command=t,t}},{key:"getPoint",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"x",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"y",r=new Ka(this.command[t],this.command[e]);return this.makeAbsolute(r)}},{key:"getAsControlPoint",value:function(t,e){var r=this.getPoint(t,e);return this.control=r,r}},{key:"getAsCurrentPoint",value:function(t,e){var r=this.getPoint(t,e);return this.current=r,r}},{key:"getReflectedControlPoint",value:function(){var t=this.previousCommand.type;if(t!==oc.CURVE_TO&&t!==oc.SMOOTH_CURVE_TO&&t!==oc.QUAD_TO&&t!==oc.SMOOTH_QUAD_TO)return this.current;var e=this.current,r=e.x,n=e.y,i=this.control,o=i.x,a=i.y;return new Ka(2*r-o,2*n-a)}},{key:"makeAbsolute",value:function(t){if(this.command.relative){var e=this.current,r=e.x,n=e.y;t.x+=r,t.y+=n}return t}},{key:"addMarker",value:function(t,e,r){var n=this.points,i=this.angles;r&&i.length>0&&!i[i.length-1]&&(i[i.length-1]=n[n.length-1].angleTo(r)),this.addMarkerAngle(t,e?e.angleTo(t):null)}},{key:"addMarkerAngle",value:function(t,e){this.points.push(t),this.angles.push(e)}},{key:"getMarkerPoints",value:function(){return this.points}},{key:"getMarkerAngles",value:function(){for(var t=this.angles,e=t.length,r=0;r<e;r++)if(!t[r])for(var n=r+1;n<e;n++)if(t[n]){t[r]=t[n];break}return t}}]),r}(oc),cc=St.PROPER,lc="toString",fc=RegExp.prototype,hc=fc.toString,pc=P((function(){return"/a/b"!=hc.call({source:"a",flags:"b"})})),vc=cc&&hc.name!=lc;function yc(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}(pc||vc)&&Ot(RegExp.prototype,lc,(function(){var t=H(this),e=En(t.source),r=t.flags;return"/"+e+"/"+En(void 0===r&&t instanceof RegExp&&!("flags"in fc)?Un.call(t):r)}),{unsafe:!0});var dc=function(t){uu(r,t);var e=yc(r);function r(){var t;return Po(this,r),(t=e.apply(this,arguments)).modifiedEmSizeStack=!1,t}return Eo(r,[{key:"calculateOpacity",value:function(){for(var t=1,e=this;e;){var r=e.getStyle("opacity",!1,!0);r.hasValue(!0)&&(t*=r.getNumber()),e=e.parent}return t}},{key:"setContext",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!e){var r=this.getStyle("fill"),n=this.getStyle("fill-opacity"),i=this.getStyle("stroke"),o=this.getStyle("stroke-opacity");if(r.isUrlDefinition()){var a=r.getFillStyleDefinition(this,n);a&&(t.fillStyle=a)}else if(r.hasValue()){"currentColor"===r.getString()&&r.setValue(this.getStyle("color").getColor());var u=r.getColor();"inherit"!==u&&(t.fillStyle="none"===u?"rgba(0,0,0,0)":u)}if(n.hasValue()){var s=new Ua(this.document,"fill",t.fillStyle).addOpacity(n).getColor();t.fillStyle=s}if(i.isUrlDefinition()){var c=i.getFillStyleDefinition(this,o);c&&(t.strokeStyle=c)}else if(i.hasValue()){"currentColor"===i.getString()&&i.setValue(this.getStyle("color").getColor());var l=i.getString();"inherit"!==l&&(t.strokeStyle="none"===l?"rgba(0,0,0,0)":l)}if(o.hasValue()){var f=new Ua(this.document,"stroke",t.strokeStyle).addOpacity(o).getString();t.strokeStyle=f}var h=this.getStyle("stroke-width");if(h.hasValue()){var p=h.getPixels();t.lineWidth=p||yo}var v=this.getStyle("stroke-linecap"),y=this.getStyle("stroke-linejoin"),d=this.getStyle("stroke-miterlimit"),g=this.getStyle("stroke-dasharray"),m=this.getStyle("stroke-dashoffset");if(v.hasValue()&&(t.lineCap=v.getString()),y.hasValue()&&(t.lineJoin=y.getString()),d.hasValue()&&(t.miterLimit=d.getNumber()),g.hasValue()&&"none"!==g.getString()){var x=Yi(g.getString());void 0!==t.setLineDash?t.setLineDash(x):void 0!==t.webkitLineDash?t.webkitLineDash=x:void 0===t.mozDash||1===x.length&&0===x[0]||(t.mozDash=x);var b=m.getPixels();void 0!==t.lineDashOffset?t.lineDashOffset=b:void 0!==t.webkitLineDashOffset?t.webkitLineDashOffset=b:void 0!==t.mozDashOffset&&(t.mozDashOffset=b)}}if(this.modifiedEmSizeStack=!1,void 0!==t.font){var w=this.getStyle("font"),S=this.getStyle("font-style"),O=this.getStyle("font-variant"),k=this.getStyle("font-weight"),T=this.getStyle("font-size"),A=this.getStyle("font-family"),R=new js(S.getString(),O.getString(),k.getString(),T.hasValue()?"".concat(T.getPixels(!0),"px"):"",A.getString(),js.parse(w.getString(),t.font));S.setValue(R.fontStyle),O.setValue(R.fontVariant),k.setValue(R.fontWeight),T.setValue(R.fontSize),A.setValue(R.fontFamily),t.font=R.toString(),T.isPixels()&&(this.document.emSize=T.getPixels(),this.modifiedEmSizeStack=!0)}e||(this.applyEffects(t),t.globalAlpha=this.calculateOpacity())}},{key:"clearContext",value:function(t){Vs(pu(r.prototype),"clearContext",this).call(this,t),this.modifiedEmSizeStack&&this.document.popEmSize()}}]),r}(ps);function gc(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var mc=function(t){uu(r,t);var e=gc(r);function r(t,n,i){var o;return Po(this,r),(o=e.call(this,t,n,i)).type="path",o.pathParser=null,o.pathParser=new sc(o.getAttribute("d").getString()),o}return Eo(r,[{key:"path",value:function(t){var e=this.pathParser,r=new Fs;for(e.reset(),t&&t.beginPath();!e.isEnd();)switch(e.next().type){case sc.MOVE_TO:this.pathM(t,r);break;case sc.LINE_TO:this.pathL(t,r);break;case sc.HORIZ_LINE_TO:this.pathH(t,r);break;case sc.VERT_LINE_TO:this.pathV(t,r);break;case sc.CURVE_TO:this.pathC(t,r);break;case sc.SMOOTH_CURVE_TO:this.pathS(t,r);break;case sc.QUAD_TO:this.pathQ(t,r);break;case sc.SMOOTH_QUAD_TO:this.pathT(t,r);break;case sc.ARC:this.pathA(t,r);break;case sc.CLOSE_PATH:this.pathZ(t,r)}return r}},{key:"getBoundingBox",value:function(t){return this.path()}},{key:"getMarkers",value:function(){var t=this.pathParser,e=t.getMarkerPoints(),r=t.getMarkerAngles();return e.map((function(t,e){return[t,r[e]]}))}},{key:"renderChildren",value:function(t){this.path(t),this.document.screen.mouse.checkPath(this,t);var e=this.getStyle("fill-rule");""!==t.fillStyle&&("inherit"!==e.getString("inherit")?t.fill(e.getString()):t.fill()),""!==t.strokeStyle&&("non-scaling-stroke"===this.getAttribute("vector-effect").getString()?(t.save(),t.setTransform(1,0,0,1,0,0),t.stroke(),t.restore()):t.stroke());var r=this.getMarkers();if(r){var n=r.length-1,i=this.getStyle("marker-start"),o=this.getStyle("marker-mid"),a=this.getStyle("marker-end");if(i.isUrlDefinition()){var u=i.getDefinition(),s=oo(r[0],2),c=s[0],l=s[1];u.render(t,c,l)}if(o.isUrlDefinition())for(var f=o.getDefinition(),h=1;h<n;h++){var p=oo(r[h],2),v=p[0],y=p[1];f.render(t,v,y)}if(a.isUrlDefinition()){var d=a.getDefinition(),g=oo(r[n],2),m=g[0],x=g[1];d.render(t,m,x)}}}},{key:"pathM",value:function(t,e){var n=this.pathParser,i=r.pathM(n).point,o=i.x,a=i.y;n.addMarker(i),e.addPoint(o,a),t&&t.moveTo(o,a)}},{key:"pathL",value:function(t,e){var n=this.pathParser,i=r.pathL(n),o=i.current,a=i.point,u=a.x,s=a.y;n.addMarker(a,o),e.addPoint(u,s),t&&t.lineTo(u,s)}},{key:"pathH",value:function(t,e){var n=this.pathParser,i=r.pathH(n),o=i.current,a=i.point,u=a.x,s=a.y;n.addMarker(a,o),e.addPoint(u,s),t&&t.lineTo(u,s)}},{key:"pathV",value:function(t,e){var n=this.pathParser,i=r.pathV(n),o=i.current,a=i.point,u=a.x,s=a.y;n.addMarker(a,o),e.addPoint(u,s),t&&t.lineTo(u,s)}},{key:"pathC",value:function(t,e){var n=this.pathParser,i=r.pathC(n),o=i.current,a=i.point,u=i.controlPoint,s=i.currentPoint;n.addMarker(s,u,a),e.addBezierCurve(o.x,o.y,a.x,a.y,u.x,u.y,s.x,s.y),t&&t.bezierCurveTo(a.x,a.y,u.x,u.y,s.x,s.y)}},{key:"pathS",value:function(t,e){var n=this.pathParser,i=r.pathS(n),o=i.current,a=i.point,u=i.controlPoint,s=i.currentPoint;n.addMarker(s,u,a),e.addBezierCurve(o.x,o.y,a.x,a.y,u.x,u.y,s.x,s.y),t&&t.bezierCurveTo(a.x,a.y,u.x,u.y,s.x,s.y)}},{key:"pathQ",value:function(t,e){var n=this.pathParser,i=r.pathQ(n),o=i.current,a=i.controlPoint,u=i.currentPoint;n.addMarker(u,a,a),e.addQuadraticCurve(o.x,o.y,a.x,a.y,u.x,u.y),t&&t.quadraticCurveTo(a.x,a.y,u.x,u.y)}},{key:"pathT",value:function(t,e){var n=this.pathParser,i=r.pathT(n),o=i.current,a=i.controlPoint,u=i.currentPoint;n.addMarker(u,a,a),e.addQuadraticCurve(o.x,o.y,a.x,a.y,u.x,u.y),t&&t.quadraticCurveTo(a.x,a.y,u.x,u.y)}},{key:"pathA",value:function(t,e){var n=this.pathParser,i=r.pathA(n),o=i.currentPoint,a=i.rX,u=i.rY,s=i.sweepFlag,c=i.xAxisRotation,l=i.centp,f=i.a1,h=i.ad,p=1-s?1:-1,v=f+p*(h/2),y=new Ka(l.x+a*Math.cos(v),l.y+u*Math.sin(v));if(n.addMarkerAngle(y,v-p*Math.PI/2),n.addMarkerAngle(o,v-p*Math.PI),e.addPoint(o.x,o.y),t&&!isNaN(f)&&!isNaN(h)){var d=a>u?a:u,g=a>u?1:a/u,m=a>u?u/a:1;t.translate(l.x,l.y),t.rotate(c),t.scale(g,m),t.arc(0,0,d,f,f+h,Boolean(1-s)),t.scale(1/g,1/m),t.rotate(-c),t.translate(-l.x,-l.y)}}},{key:"pathZ",value:function(t,e){r.pathZ(this.pathParser),t&&e.x1!==e.x2&&e.y1!==e.y2&&t.closePath()}}],[{key:"pathM",value:function(t){var e=t.getAsCurrentPoint();return t.start=t.current,{point:e}}},{key:"pathL",value:function(t){return{current:t.current,point:t.getAsCurrentPoint()}}},{key:"pathH",value:function(t){var e=t.current,r=t.command,n=new Ka((r.relative?e.x:0)+r.x,e.y);return t.current=n,{current:e,point:n}}},{key:"pathV",value:function(t){var e=t.current,r=t.command,n=new Ka(e.x,(r.relative?e.y:0)+r.y);return t.current=n,{current:e,point:n}}},{key:"pathC",value:function(t){return{current:t.current,point:t.getPoint("x1","y1"),controlPoint:t.getAsControlPoint("x2","y2"),currentPoint:t.getAsCurrentPoint()}}},{key:"pathS",value:function(t){return{current:t.current,point:t.getReflectedControlPoint(),controlPoint:t.getAsControlPoint("x2","y2"),currentPoint:t.getAsCurrentPoint()}}},{key:"pathQ",value:function(t){return{current:t.current,controlPoint:t.getAsControlPoint("x1","y1"),currentPoint:t.getAsCurrentPoint()}}},{key:"pathT",value:function(t){var e=t.current,r=t.getReflectedControlPoint();return t.control=r,{current:e,controlPoint:r,currentPoint:t.getAsCurrentPoint()}}},{key:"pathA",value:function(t){var e=t.current,r=t.command,n=r.rX,i=r.rY,o=r.xRot,a=r.lArcFlag,u=r.sweepFlag,s=o*(Math.PI/180),c=t.getAsCurrentPoint(),l=new Ka(Math.cos(s)*(e.x-c.x)/2+Math.sin(s)*(e.y-c.y)/2,-Math.sin(s)*(e.x-c.x)/2+Math.cos(s)*(e.y-c.y)/2),f=Math.pow(l.x,2)/Math.pow(n,2)+Math.pow(l.y,2)/Math.pow(i,2);f>1&&(n*=Math.sqrt(f),i*=Math.sqrt(f));var h=(a===u?-1:1)*Math.sqrt((Math.pow(n,2)*Math.pow(i,2)-Math.pow(n,2)*Math.pow(l.y,2)-Math.pow(i,2)*Math.pow(l.x,2))/(Math.pow(n,2)*Math.pow(l.y,2)+Math.pow(i,2)*Math.pow(l.x,2)));isNaN(h)&&(h=0);var p=new Ka(h*n*l.y/i,h*-i*l.x/n),v=new Ka((e.x+c.x)/2+Math.cos(s)*p.x-Math.sin(s)*p.y,(e.y+c.y)/2+Math.sin(s)*p.x+Math.cos(s)*p.y),y=xo([1,0],[(l.x-p.x)/n,(l.y-p.y)/i]),d=[(l.x-p.x)/n,(l.y-p.y)/i],g=[(-l.x-p.x)/n,(-l.y-p.y)/i],m=xo(d,g);return mo(d,g)<=-1&&(m=Math.PI),mo(d,g)>=1&&(m=0),{currentPoint:c,rX:n,rY:i,sweepFlag:u,xAxisRotation:s,centp:v,a1:y,ad:m}}},{key:"pathZ",value:function(t){t.current=t.start}}]),r}(dc);function xc(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var bc=function(t){uu(r,t);var e=xc(r);function r(t,n,i){var o;return Po(this,r),(o=e.call(this,t,n,i)).type="glyph",o.horizAdvX=o.getAttribute("horiz-adv-x").getNumber(),o.unicode=o.getAttribute("unicode").getString(),o.arabicForm=o.getAttribute("arabic-form").getString(),o}return r}(mc);function wc(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var Sc=function(t){uu(r,t);var e=wc(r);function r(t,n,i){var o;return Po(this,r),(o=e.call(this,t,n,(this instanceof r?this.constructor:void 0)===r||i)).type="text",o.x=0,o.y=0,o.measureCache=-1,o}return Eo(r,[{key:"setContext",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];Vs(pu(r.prototype),"setContext",this).call(this,t,e);var n=this.getStyle("dominant-baseline").getTextBaseline()||this.getStyle("alignment-baseline").getTextBaseline();n&&(t.textBaseline=n)}},{key:"initializeCoordinates",value:function(){this.x=0,this.y=0,this.leafTexts=[],this.textChunkStart=0,this.minX=Number.POSITIVE_INFINITY,this.maxX=Number.NEGATIVE_INFINITY}},{key:"getBoundingBox",value:function(t){var e=this;if("text"!==this.type)return this.getTElementBoundingBox(t);this.initializeCoordinates(),this.adjustChildCoordinatesRecursive(t);var r=null;return this.children.forEach((function(n,i){var o=e.getChildBoundingBox(t,e,e,i);r?r.addBoundingBox(o):r=o})),r}},{key:"getFontSize",value:function(){var t=this.document,e=this.parent,r=js.parse(t.ctx.font).fontSize;return e.getStyle("font-size").getNumber(r)}},{key:"getTElementBoundingBox",value:function(t){var e=this.getFontSize();return new Fs(this.x,this.y-e,this.x+this.measureText(t),this.y)}},{key:"getGlyph",value:function(t,e,r){var n=e[r],i=null;if(t.isArabic){var o=e.length,a=e[r-1],u=e[r+1],s="isolated";if((0===r||" "===a)&&r<o-1&&" "!==u&&(s="terminal"),r>0&&" "!==a&&r<o-1&&" "!==u&&(s="medial"),r>0&&" "!==a&&(r===o-1||" "===u)&&(s="initial"),void 0!==t.glyphs[n]){var c=t.glyphs[n];i=c instanceof bc?c:c[s]}}else i=t.glyphs[n];return i||(i=t.missingGlyph),i}},{key:"getText",value:function(){return""}},{key:"getTextFromNode",value:function(t){var e=t||this.node,r=Array.from(e.parentNode.childNodes),n=r.indexOf(e),i=r.length-1,o=Ui(e.textContent||"");return 0===n&&(o=Hi(o)),n===i&&(o=Xi(o)),o}},{key:"renderChildren",value:function(t){var e=this;if("text"===this.type){this.initializeCoordinates(),this.adjustChildCoordinatesRecursive(t),this.children.forEach((function(r,n){e.renderChild(t,e,e,n)}));var r=this.document.screen.mouse;r.isWorking()&&r.checkBoundingBox(this,this.getBoundingBox(t))}else this.renderTElementChildren(t)}},{key:"renderTElementChildren",value:function(t){var e=this.document,r=this.parent,n=this.getText(),i=r.getStyle("font-family").getDefinition();if(i)for(var o=i.fontFace.unitsPerEm,a=js.parse(e.ctx.font),u=r.getStyle("font-size").getNumber(a.fontSize),s=r.getStyle("font-style").getString(a.fontStyle),c=u/o,l=i.isRTL?n.split("").reverse().join(""):n,f=Yi(r.getAttribute("dx").getString()),h=l.length,p=0;p<h;p++){var v=this.getGlyph(i,l,p);t.translate(this.x,this.y),t.scale(c,-c);var y=t.lineWidth;t.lineWidth=t.lineWidth*o/u,"italic"===s&&t.transform(1,0,.4,1,0,0),v.render(t),"italic"===s&&t.transform(1,0,-.4,1,0,0),t.lineWidth=y,t.scale(1/c,-1/c),t.translate(-this.x,-this.y),this.x+=u*(v.horizAdvX||i.horizAdvX)/o,void 0===f[p]||isNaN(f[p])||(this.x+=f[p])}else{var d=this.x,g=this.y;t.fillStyle&&t.fillText(n,d,g),t.strokeStyle&&t.strokeText(n,d,g)}}},{key:"applyAnchoring",value:function(){if(!(this.textChunkStart>=this.leafTexts.length)){var t=this.leafTexts[this.textChunkStart],e=t.getStyle("text-anchor").getString("start"),r=0;r="start"===e?t.x-this.minX:"end"===e?t.x-this.maxX:t.x-(this.minX+this.maxX)/2;for(var n=this.textChunkStart;n<this.leafTexts.length;n++)this.leafTexts[n].x+=r;this.minX=Number.POSITIVE_INFINITY,this.maxX=Number.NEGATIVE_INFINITY,this.textChunkStart=this.leafTexts.length}}},{key:"adjustChildCoordinatesRecursive",value:function(t){var e=this;this.children.forEach((function(r,n){e.adjustChildCoordinatesRecursiveCore(t,e,e,n)})),this.applyAnchoring()}},{key:"adjustChildCoordinatesRecursiveCore",value:function(t,e,r,n){var i=r.children[n];i.children.length>0?i.children.forEach((function(r,n){e.adjustChildCoordinatesRecursiveCore(t,e,i,n)})):this.adjustChildCoordinates(t,e,r,n)}},{key:"adjustChildCoordinates",value:function(t,e,r,n){var i=r.children[n];if("function"!=typeof i.measureText)return i;t.save(),i.setContext(t,!0);var o=i.getAttribute("x"),a=i.getAttribute("y"),u=i.getAttribute("dx"),s=i.getAttribute("dy"),c=i.getStyle("font-family").getDefinition(),l=Boolean(c)&&c.isRTL;0===n&&(o.hasValue()||o.setValue(i.getInheritedAttribute("x")),a.hasValue()||a.setValue(i.getInheritedAttribute("y")),u.hasValue()||u.setValue(i.getInheritedAttribute("dx")),s.hasValue()||s.setValue(i.getInheritedAttribute("dy")));var f=i.measureText(t);return l&&(e.x-=f),o.hasValue()?(e.applyAnchoring(),i.x=o.getPixels("x"),u.hasValue()&&(i.x+=u.getPixels("x"))):(u.hasValue()&&(e.x+=u.getPixels("x")),i.x=e.x),e.x=i.x,l||(e.x+=f),a.hasValue()?(i.y=a.getPixels("y"),s.hasValue()&&(i.y+=s.getPixels("y"))):(s.hasValue()&&(e.y+=s.getPixels("y")),i.y=e.y),e.y=i.y,e.leafTexts.push(i),e.minX=Math.min(e.minX,i.x,i.x+f),e.maxX=Math.max(e.maxX,i.x,i.x+f),i.clearContext(t),t.restore(),i}},{key:"getChildBoundingBox",value:function(t,e,r,n){var i=r.children[n];if("function"!=typeof i.getBoundingBox)return null;var o=i.getBoundingBox(t);return o?(i.children.forEach((function(r,n){var a=e.getChildBoundingBox(t,e,i,n);o.addBoundingBox(a)})),o):null}},{key:"renderChild",value:function(t,e,r,n){var i=r.children[n];i.render(t),i.children.forEach((function(r,n){e.renderChild(t,e,i,n)}))}},{key:"measureText",value:function(t){var e=this.measureCache;if(~e)return e;var r=this.getText(),n=this.measureTargetText(t,r);return this.measureCache=n,n}},{key:"measureTargetText",value:function(t,e){if(!e.length)return 0;var r=this.parent,n=r.getStyle("font-family").getDefinition();if(n){for(var i=this.getFontSize(),o=n.isRTL?e.split("").reverse().join(""):e,a=Yi(r.getAttribute("dx").getString()),u=o.length,s=0,c=0;c<u;c++){s+=(this.getGlyph(n,o,c).horizAdvX||n.horizAdvX)*i/n.fontFace.unitsPerEm,void 0===a[c]||isNaN(a[c])||(s+=a[c])}return s}if(!t.measureText)return 10*e.length;t.save(),this.setContext(t,!0);var l=t.measureText(e).width;return this.clearContext(t),t.restore(),l}},{key:"getInheritedAttribute",value:function(t){for(var e=this;e instanceof r&&e.isFirstChild();){var n=e.parent.getAttribute(t);if(n.hasValue(!0))return n.getValue("0");e=e.parent}return null}}]),r}(dc);function Oc(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var kc=function(t){uu(r,t);var e=Oc(r);function r(t,n,i){var o;return Po(this,r),(o=e.call(this,t,n,(this instanceof r?this.constructor:void 0)===r||i)).type="tspan",o.text=o.children.length>0?"":o.getTextFromNode(),o}return Eo(r,[{key:"getText",value:function(){return this.text}}]),r}(Sc);function Tc(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var Ac=function(t){uu(r,t);var e=Tc(r);function r(){var t;return Po(this,r),(t=e.apply(this,arguments)).type="textNode",t}return r}(kc);function Rc(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var Pc=function(t){uu(r,t);var e=Rc(r);function r(){var t;return Po(this,r),(t=e.apply(this,arguments)).type="svg",t.root=!1,t}return Eo(r,[{key:"setContext",value:function(t){var e,n=this.document,i=n.screen,o=n.window,a=t.canvas;if(i.setDefaults(t),a.style&&void 0!==t.font&&o&&void 0!==o.getComputedStyle){t.font=o.getComputedStyle(a).getPropertyValue("font");var u=new Ua(n,"fontSize",js.parse(t.font).fontSize);u.hasValue()&&(n.rootEmSize=u.getPixels("y"),n.emSize=n.rootEmSize)}this.getAttribute("x").hasValue()||this.getAttribute("x",!0).setValue(0),this.getAttribute("y").hasValue()||this.getAttribute("y",!0).setValue(0);var s=i.viewPort,c=s.width,l=s.height;this.getStyle("width").hasValue()||this.getStyle("width",!0).setValue("100%"),this.getStyle("height").hasValue()||this.getStyle("height",!0).setValue("100%"),this.getStyle("color").hasValue()||this.getStyle("color",!0).setValue("black");var f=this.getAttribute("refX"),h=this.getAttribute("refY"),p=this.getAttribute("viewBox"),v=p.hasValue()?Yi(p.getString()):null,y=!this.root&&"visible"!==this.getStyle("overflow").getValue("hidden"),d=0,g=0,m=0,x=0;v&&(d=v[0],g=v[1]),this.root||(c=this.getStyle("width").getPixels("x"),l=this.getStyle("height").getPixels("y"),"marker"===this.type&&(m=d,x=g,d=0,g=0)),i.viewPort.setCurrent(c,l),!this.node||this.parent&&"foreignObject"!==(null===(e=this.node.parentNode)||void 0===e?void 0:e.nodeName)||!this.getStyle("transform",!1,!0).hasValue()||this.getStyle("transform-origin",!1,!0).hasValue()||this.getStyle("transform-origin",!0,!0).setValue("50% 50%"),Vs(pu(r.prototype),"setContext",this).call(this,t),t.translate(this.getAttribute("x").getPixels("x"),this.getAttribute("y").getPixels("y")),v&&(c=v[2],l=v[3]),n.setViewBox({ctx:t,aspectRatio:this.getAttribute("preserveAspectRatio").getString(),width:i.viewPort.width,desiredWidth:c,height:i.viewPort.height,desiredHeight:l,minX:d,minY:g,refX:f.getValue(),refY:h.getValue(),clip:y,clipX:m,clipY:x}),v&&(i.viewPort.removeCurrent(),i.viewPort.setCurrent(c,l))}},{key:"clearContext",value:function(t){Vs(pu(r.prototype),"clearContext",this).call(this,t),this.document.screen.viewPort.removeCurrent()}},{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=this.getAttribute("width",!0),i=this.getAttribute("height",!0),o=this.getAttribute("viewBox"),a=this.getAttribute("style"),u=n.getNumber(0),s=i.getNumber(0);if(r)if("string"==typeof r)this.getAttribute("preserveAspectRatio",!0).setValue(r);else{var c=this.getAttribute("preserveAspectRatio");c.hasValue()&&c.setValue(c.getString().replace(/^\s*(\S.*\S)\s*$/,"$1"))}if(n.setValue(t),i.setValue(e),o.hasValue()||o.setValue("0 0 ".concat(u||t," ").concat(s||e)),a.hasValue()){var l=this.getStyle("width"),f=this.getStyle("height");l.hasValue()&&l.setValue("".concat(t,"px")),f.hasValue()&&f.setValue("".concat(e,"px"))}}}]),r}(dc);function Ec(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var Cc=function(t){uu(r,t);var e=Ec(r);function r(){var t;return Po(this,r),(t=e.apply(this,arguments)).type="rect",t}return Eo(r,[{key:"path",value:function(t){var e=this.getAttribute("x").getPixels("x"),r=this.getAttribute("y").getPixels("y"),n=this.getStyle("width",!1,!0).getPixels("x"),i=this.getStyle("height",!1,!0).getPixels("y"),o=this.getAttribute("rx"),a=this.getAttribute("ry"),u=o.getPixels("x"),s=a.getPixels("y");if(o.hasValue()&&!a.hasValue()&&(s=u),a.hasValue()&&!o.hasValue()&&(u=s),u=Math.min(u,n/2),s=Math.min(s,i/2),t){var c=(Math.sqrt(2)-1)/3*4;t.beginPath(),i>0&&n>0&&(t.moveTo(e+u,r),t.lineTo(e+n-u,r),t.bezierCurveTo(e+n-u+c*u,r,e+n,r+s-c*s,e+n,r+s),t.lineTo(e+n,r+i-s),t.bezierCurveTo(e+n,r+i-s+c*s,e+n-u+c*u,r+i,e+n-u,r+i),t.lineTo(e+u,r+i),t.bezierCurveTo(e+u-c*u,r+i,e,r+i-s+c*s,e,r+i-s),t.lineTo(e,r+s),t.bezierCurveTo(e,r+s-c*s,e+u-c*u,r,e+u,r),t.closePath())}return new Fs(e,r,e+n,r+i)}},{key:"getMarkers",value:function(){return null}}]),r}(mc);function Mc(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var Nc=function(t){uu(r,t);var e=Mc(r);function r(){var t;return Po(this,r),(t=e.apply(this,arguments)).type="circle",t}return Eo(r,[{key:"path",value:function(t){var e=this.getAttribute("cx").getPixels("x"),r=this.getAttribute("cy").getPixels("y"),n=this.getAttribute("r").getPixels();return t&&n>0&&(t.beginPath(),t.arc(e,r,n,0,2*Math.PI,!1),t.closePath()),new Fs(e-n,r-n,e+n,r+n)}},{key:"getMarkers",value:function(){return null}}]),r}(mc);function _c(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var Ic=function(t){uu(r,t);var e=_c(r);function r(){var t;return Po(this,r),(t=e.apply(this,arguments)).type="ellipse",t}return Eo(r,[{key:"path",value:function(t){var e=(Math.sqrt(2)-1)/3*4,r=this.getAttribute("rx").getPixels("x"),n=this.getAttribute("ry").getPixels("y"),i=this.getAttribute("cx").getPixels("x"),o=this.getAttribute("cy").getPixels("y");return t&&r>0&&n>0&&(t.beginPath(),t.moveTo(i+r,o),t.bezierCurveTo(i+r,o+e*n,i+e*r,o+n,i,o+n),t.bezierCurveTo(i-e*r,o+n,i-r,o+e*n,i-r,o),t.bezierCurveTo(i-r,o-e*n,i-e*r,o-n,i,o-n),t.bezierCurveTo(i+e*r,o-n,i+r,o-e*n,i+r,o),t.closePath()),new Fs(i-r,o-n,i+r,o+n)}},{key:"getMarkers",value:function(){return null}}]),r}(mc);function Vc(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var Lc=function(t){uu(r,t);var e=Vc(r);function r(){var t;return Po(this,r),(t=e.apply(this,arguments)).type="line",t}return Eo(r,[{key:"getPoints",value:function(){return[new Ka(this.getAttribute("x1").getPixels("x"),this.getAttribute("y1").getPixels("y")),new Ka(this.getAttribute("x2").getPixels("x"),this.getAttribute("y2").getPixels("y"))]}},{key:"path",value:function(t){var e=this.getPoints(),r=oo(e,2),n=r[0],i=n.x,o=n.y,a=r[1],u=a.x,s=a.y;return t&&(t.beginPath(),t.moveTo(i,o),t.lineTo(u,s)),new Fs(i,o,u,s)}},{key:"getMarkers",value:function(){var t=this.getPoints(),e=oo(t,2),r=e[0],n=e[1],i=r.angleTo(n);return[[r,i],[n,i]]}}]),r}(mc);function Bc(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var Dc=function(t){uu(r,t);var e=Bc(r);function r(t,n,i){var o;return Po(this,r),(o=e.call(this,t,n,i)).type="polyline",o.points=[],o.points=Ka.parsePath(o.getAttribute("points").getString()),o}return Eo(r,[{key:"path",value:function(t){var e=this.points,r=oo(e,1)[0],n=r.x,i=r.y,o=new Fs(n,i);return t&&(t.beginPath(),t.moveTo(n,i)),e.forEach((function(e){var r=e.x,n=e.y;o.addPoint(r,n),t&&t.lineTo(r,n)})),o}},{key:"getMarkers",value:function(){var t=this.points,e=t.length-1,r=[];return t.forEach((function(n,i){i!==e&&r.push([n,n.angleTo(t[i+1])])})),r.length>0&&r.push([t[t.length-1],r[r.length-1][1]]),r}}]),r}(mc);function jc(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var Fc=function(t){uu(r,t);var e=jc(r);function r(){var t;return Po(this,r),(t=e.apply(this,arguments)).type="polygon",t}return Eo(r,[{key:"path",value:function(t){var e=Vs(pu(r.prototype),"path",this).call(this,t),n=oo(this.points,1)[0],i=n.x,o=n.y;return t&&(t.lineTo(i,o),t.closePath()),e}}]),r}(Dc);function zc(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var Uc=function(t){uu(r,t);var e=zc(r);function r(){var t;return Po(this,r),(t=e.apply(this,arguments)).type="pattern",t}return Eo(r,[{key:"createPattern",value:function(t,e,r){var n=this.getStyle("width").getPixels("x",!0),i=this.getStyle("height").getPixels("y",!0),o=new Pc(this.document,null);o.attributes.viewBox=new Ua(this.document,"viewBox",this.getAttribute("viewBox").getValue()),o.attributes.width=new Ua(this.document,"width","".concat(n,"px")),o.attributes.height=new Ua(this.document,"height","".concat(i,"px")),o.attributes.transform=new Ua(this.document,"transform",this.getAttribute("patternTransform").getValue()),o.children=this.children;var a=this.document.createCanvas(n,i),u=a.getContext("2d"),s=this.getAttribute("x"),c=this.getAttribute("y");s.hasValue()&&c.hasValue()&&u.translate(s.getPixels("x",!0),c.getPixels("y",!0)),r.hasValue()?this.styles["fill-opacity"]=r:Reflect.deleteProperty(this.styles,"fill-opacity");for(var l=-1;l<=1;l++)for(var f=-1;f<=1;f++)u.save(),o.attributes.x=new Ua(this.document,"x",l*a.width),o.attributes.y=new Ua(this.document,"y",f*a.height),o.render(u),u.restore();return t.createPattern(a,"repeat")}}]),r}(ps);function Hc(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var Xc=function(t){uu(r,t);var e=Hc(r);function r(){var t;return Po(this,r),(t=e.apply(this,arguments)).type="marker",t}return Eo(r,[{key:"render",value:function(t,e,r){if(e){var n=e.x,i=e.y,o=this.getAttribute("orient").getString("auto"),a=this.getAttribute("markerUnits").getString("strokeWidth");t.translate(n,i),"auto"===o&&t.rotate(r),"strokeWidth"===a&&t.scale(t.lineWidth,t.lineWidth),t.save();var u=new Pc(this.document,null);u.type=this.type,u.attributes.viewBox=new Ua(this.document,"viewBox",this.getAttribute("viewBox").getValue()),u.attributes.refX=new Ua(this.document,"refX",this.getAttribute("refX").getValue()),u.attributes.refY=new Ua(this.document,"refY",this.getAttribute("refY").getValue()),u.attributes.width=new Ua(this.document,"width",this.getAttribute("markerWidth").getValue()),u.attributes.height=new Ua(this.document,"height",this.getAttribute("markerHeight").getValue()),u.attributes.overflow=new Ua(this.document,"overflow",this.getAttribute("overflow").getValue()),u.attributes.fill=new Ua(this.document,"fill",this.getAttribute("fill").getColor("black")),u.attributes.stroke=new Ua(this.document,"stroke",this.getAttribute("stroke").getValue("none")),u.children=this.children,u.render(t),t.restore(),"strokeWidth"===a&&t.scale(1/t.lineWidth,1/t.lineWidth),"auto"===o&&t.rotate(-r),t.translate(-n,-i)}}}]),r}(ps);function Yc(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var Gc=function(t){uu(r,t);var e=Yc(r);function r(){var t;return Po(this,r),(t=e.apply(this,arguments)).type="defs",t}return Eo(r,[{key:"render",value:function(){}}]),r}(ps);function Wc(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var qc=function(t){uu(r,t);var e=Wc(r);function r(){var t;return Po(this,r),(t=e.apply(this,arguments)).type="g",t}return Eo(r,[{key:"getBoundingBox",value:function(t){var e=new Fs;return this.children.forEach((function(r){e.addBoundingBox(r.getBoundingBox(t))})),e}}]),r}(dc);function $c(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var Qc=function(t){uu(r,t);var e=$c(r);function r(t,n,i){var o;Po(this,r),(o=e.call(this,t,n,i)).attributesToInherit=["gradientUnits"],o.stops=[];var a=lu(o),u=a.stops;return a.children.forEach((function(t){"stop"===t.type&&u.push(t)})),o}return Eo(r,[{key:"getGradientUnits",value:function(){return this.getAttribute("gradientUnits").getString("objectBoundingBox")}},{key:"createGradient",value:function(t,e,r){var n=this,i=this;this.getHrefAttribute().hasValue()&&(i=this.getHrefAttribute().getDefinition(),this.inheritStopContainer(i));var o=i.stops,a=this.getGradient(t,e);if(!a)return this.addParentOpacity(r,o[o.length-1].color);if(o.forEach((function(t){a.addColorStop(t.offset,n.addParentOpacity(r,t.color))})),this.getAttribute("gradientTransform").hasValue()){var u=this.document,s=u.screen,c=s.MAX_VIRTUAL_PIXELS,l=s.viewPort,f=oo(l.viewPorts,1)[0],h=new Cc(u,null);h.attributes.x=new Ua(u,"x",-c/3),h.attributes.y=new Ua(u,"y",-c/3),h.attributes.width=new Ua(u,"width",c),h.attributes.height=new Ua(u,"height",c);var p=new qc(u,null);p.attributes.transform=new Ua(u,"transform",this.getAttribute("gradientTransform").getValue()),p.children=[h];var v=new Pc(u,null);v.attributes.x=new Ua(u,"x",0),v.attributes.y=new Ua(u,"y",0),v.attributes.width=new Ua(u,"width",f.width),v.attributes.height=new Ua(u,"height",f.height),v.children=[p];var y=u.createCanvas(f.width,f.height),d=y.getContext("2d");return d.fillStyle=a,v.render(d),d.createPattern(y,"no-repeat")}return a}},{key:"inheritStopContainer",value:function(t){var e=this;this.attributesToInherit.forEach((function(r){!e.getAttribute(r).hasValue()&&t.getAttribute(r).hasValue()&&e.getAttribute(r,!0).setValue(t.getAttribute(r).getValue())}))}},{key:"addParentOpacity",value:function(t,e){return t.hasValue()?new Ua(this.document,"color",e).addOpacity(t).getColor():e}}]),r}(ps);function Zc(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var Kc=function(t){uu(r,t);var e=Zc(r);function r(t,n,i){var o;return Po(this,r),(o=e.call(this,t,n,i)).type="linearGradient",o.attributesToInherit.push("x1","y1","x2","y2"),o}return Eo(r,[{key:"getGradient",value:function(t,e){var r="objectBoundingBox"===this.getGradientUnits(),n=r?e.getBoundingBox(t):null;if(r&&!n)return null;this.getAttribute("x1").hasValue()||this.getAttribute("y1").hasValue()||this.getAttribute("x2").hasValue()||this.getAttribute("y2").hasValue()||(this.getAttribute("x1",!0).setValue(0),this.getAttribute("y1",!0).setValue(0),this.getAttribute("x2",!0).setValue(1),this.getAttribute("y2",!0).setValue(0));var i=r?n.x+n.width*this.getAttribute("x1").getNumber():this.getAttribute("x1").getPixels("x"),o=r?n.y+n.height*this.getAttribute("y1").getNumber():this.getAttribute("y1").getPixels("y"),a=r?n.x+n.width*this.getAttribute("x2").getNumber():this.getAttribute("x2").getPixels("x"),u=r?n.y+n.height*this.getAttribute("y2").getNumber():this.getAttribute("y2").getPixels("y");return i===a&&o===u?null:t.createLinearGradient(i,o,a,u)}}]),r}(Qc);function Jc(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var tl=function(t){uu(r,t);var e=Jc(r);function r(t,n,i){var o;return Po(this,r),(o=e.call(this,t,n,i)).type="radialGradient",o.attributesToInherit.push("cx","cy","r","fx","fy","fr"),o}return Eo(r,[{key:"getGradient",value:function(t,e){var r="objectBoundingBox"===this.getGradientUnits(),n=e.getBoundingBox(t);if(r&&!n)return null;this.getAttribute("cx").hasValue()||this.getAttribute("cx",!0).setValue("50%"),this.getAttribute("cy").hasValue()||this.getAttribute("cy",!0).setValue("50%"),this.getAttribute("r").hasValue()||this.getAttribute("r",!0).setValue("50%");var i=r?n.x+n.width*this.getAttribute("cx").getNumber():this.getAttribute("cx").getPixels("x"),o=r?n.y+n.height*this.getAttribute("cy").getNumber():this.getAttribute("cy").getPixels("y"),a=i,u=o;this.getAttribute("fx").hasValue()&&(a=r?n.x+n.width*this.getAttribute("fx").getNumber():this.getAttribute("fx").getPixels("x")),this.getAttribute("fy").hasValue()&&(u=r?n.y+n.height*this.getAttribute("fy").getNumber():this.getAttribute("fy").getPixels("y"));var s=r?(n.width+n.height)/2*this.getAttribute("r").getNumber():this.getAttribute("r").getPixels(),c=this.getAttribute("fr").getPixels();return t.createRadialGradient(a,u,c,i,o,s)}}]),r}(Qc);function el(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var rl=function(t){uu(r,t);var e=el(r);function r(t,n,i){var o;Po(this,r),(o=e.call(this,t,n,i)).type="stop";var a=Math.max(0,Math.min(1,o.getAttribute("offset").getNumber())),u=o.getStyle("stop-opacity"),s=o.getStyle("stop-color",!0);return""===s.getString()&&s.setValue("#000"),u.hasValue()&&(s=s.addOpacity(u)),o.offset=a,o.color=s.getColor(),o}return r}(ps),nl="Array Iterator",il=mt.set,ol=mt.getterFor(nl),al=Wu(Array,"Array",(function(t,e){il(this,{type:nl,target:Vt(t),index:0,kind:e})}),(function(){var t=ol(this),e=t.target,r=t.kind,n=t.index++;return!e||n>=e.length?(t.target=void 0,{value:void 0,done:!0}):"keys"==r?{value:n,done:!1}:"values"==r?{value:e[n],done:!1}:{value:[n,e[n]],done:!1}}),"values");we.Arguments=we.Array,mu("keys"),mu("values"),mu("entries");var ul=I("iterator"),sl=I("toStringTag"),cl=al.values,ll=function(t,e){if(t){if(t[ul]!==cl)try{tt(t,ul,cl)}catch(e){t[ul]=cl}if(t[sl]||tt(t,sl,e),Ga[e])for(var r in al)if(t[r]!==al[r])try{tt(t,r,al[r])}catch(e){t[r]=al[r]}}};for(var fl in Ga)ll(u[fl]&&u[fl].prototype,fl);function hl(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}ll($a,"DOMTokenList");var pl=function(t){uu(r,t);var e=hl(r);function r(t,n,i){var o;Po(this,r),(o=e.call(this,t,n,i)).type="animate",o.duration=0,o.initialValue=null,o.initialUnits="",o.removed=!1,o.frozen=!1,t.screen.animations.push(lu(o)),o.begin=o.getAttribute("begin").getMilliseconds(),o.maxDuration=o.begin+o.getAttribute("dur").getMilliseconds(),o.from=o.getAttribute("from"),o.to=o.getAttribute("to"),o.values=new Ua(t,"values",null);var a=o.getAttribute("values");return a.hasValue()&&o.values.setValue(a.getString().split(";")),o}return Eo(r,[{key:"getProperty",value:function(){var t=this.getAttribute("attributeType").getString(),e=this.getAttribute("attributeName").getString();return"CSS"===t?this.parent.getStyle(e,!0):this.parent.getAttribute(e,!0)}},{key:"calcValue",value:function(){var t=this.initialUnits,e=this.getProgress(),r=e.progress,n=e.from,i=e.to,o=n.getNumber()+(i.getNumber()-n.getNumber())*r;return"%"===t&&(o*=100),"".concat(o).concat(t)}},{key:"update",value:function(t){var e=this.parent,r=this.getProperty();if(this.initialValue||(this.initialValue=r.getString(),this.initialUnits=r.getUnits()),this.duration>this.maxDuration){var n=this.getAttribute("fill").getString("remove");if("indefinite"===this.getAttribute("repeatCount").getString()||"indefinite"===this.getAttribute("repeatDur").getString())this.duration=0;else if("freeze"!==n||this.frozen){if("remove"===n&&!this.removed)return this.removed=!0,r.setValue(e.animationFrozen?e.animationFrozenValue:this.initialValue),!0}else this.frozen=!0,e.animationFrozen=!0,e.animationFrozenValue=r.getString();return!1}this.duration+=t;var i=!1;if(this.begin<this.duration){var o=this.calcValue(),a=this.getAttribute("type");if(a.hasValue()){var u=a.getString();o="".concat(u,"(").concat(o,")")}r.setValue(o),i=!0}return i}},{key:"getProgress",value:function(){var t=this.document,e=this.values,r={progress:(this.duration-this.begin)/(this.maxDuration-this.begin)};if(e.hasValue()){var n=r.progress*(e.getValue().length-1),i=Math.floor(n),o=Math.ceil(n);r.from=new Ua(t,"from",parseFloat(e.getValue()[i])),r.to=new Ua(t,"to",parseFloat(e.getValue()[o])),r.progress=(n-i)/(o-i)}else r.from=this.from,r.to=this.to;return r}}]),r}(ps);function vl(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var yl=function(t){uu(r,t);var e=vl(r);function r(){var t;return Po(this,r),(t=e.apply(this,arguments)).type="animateColor",t}return Eo(r,[{key:"calcValue",value:function(){var t=this.getProgress(),e=t.progress,r=t.from,n=t.to,i=new za(r.getColor()),o=new za(n.getColor());if(i.ok&&o.ok){var a=i.r+(o.r-i.r)*e,u=i.g+(o.g-i.g)*e,s=i.b+(o.b-i.b)*e;return"rgb(".concat(Math.floor(a),", ").concat(Math.floor(u),", ").concat(Math.floor(s),")")}return this.getAttribute("from").getColor()}}]),r}(pl);function dl(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var gl=function(t){uu(r,t);var e=dl(r);function r(){var t;return Po(this,r),(t=e.apply(this,arguments)).type="animateTransform",t}return Eo(r,[{key:"calcValue",value:function(){var t=this.getProgress(),e=t.progress,r=t.from,n=t.to,i=Yi(r.getString()),o=Yi(n.getString());return i.map((function(t,r){return t+(o[r]-t)*e})).join(" ")}}]),r}(pl);function ml(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(!t)return;if("string"==typeof t)return xl(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return xl(t,e)}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,o=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw o}}}}function xl(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function bl(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var wl=function(t){uu(r,t);var e=bl(r);function r(t,n,i){var o;Po(this,r),(o=e.call(this,t,n,i)).type="font",o.glyphs={},o.horizAdvX=o.getAttribute("horiz-adv-x").getNumber();var a,u=t.definitions,s=ml(lu(o).children);try{for(s.s();!(a=s.n()).done;){var c=a.value;switch(c.type){case"font-face":o.fontFace=c;var l=c.getStyle("font-family");l.hasValue()&&(u[l.getString()]=lu(o));break;case"missing-glyph":o.missingGlyph=c;break;case"glyph":var f=c;f.arabicForm?(o.isRTL=!0,o.isArabic=!0,void 0===o.glyphs[f.unicode]&&(o.glyphs[f.unicode]={}),o.glyphs[f.unicode][f.arabicForm]=f):o.glyphs[f.unicode]=f}}}catch(t){s.e(t)}finally{s.f()}return o}return Eo(r,[{key:"render",value:function(){}}]),r}(ps);function Sl(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var Ol=function(t){uu(r,t);var e=Sl(r);function r(t,n,i){var o;return Po(this,r),(o=e.call(this,t,n,i)).type="font-face",o.ascent=o.getAttribute("ascent").getNumber(),o.descent=o.getAttribute("descent").getNumber(),o.unitsPerEm=o.getAttribute("units-per-em").getNumber(),o}return r}(ps);function kl(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var Tl=function(t){uu(r,t);var e=kl(r);function r(){var t;return Po(this,r),(t=e.apply(this,arguments)).type="missing-glyph",t.horizAdvX=0,t}return r}(mc);function Al(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var Rl=function(t){uu(r,t);var e=Al(r);function r(){var t;return Po(this,r),(t=e.apply(this,arguments)).type="tref",t}return Eo(r,[{key:"getText",value:function(){var t=this.getHrefAttribute().getDefinition();if(t){var e=t.children[0];if(e)return e.getText()}return""}}]),r}(Sc);function Pl(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var El=function(t){uu(r,t);var e=Pl(r);function r(t,n,i){var o;Po(this,r),(o=e.call(this,t,n,i)).type="a";var a=n.childNodes,u=a[0],s=a.length>0&&Array.from(a).every((function(t){return 3===t.nodeType}));return o.hasText=s,o.text=s?o.getTextFromNode(u):"",o}return Eo(r,[{key:"getText",value:function(){return this.text}},{key:"renderChildren",value:function(t){if(this.hasText){Vs(pu(r.prototype),"renderChildren",this).call(this,t);var e=this.document,n=this.x,i=this.y,o=e.screen.mouse,a=new Ua(e,"fontSize",js.parse(e.ctx.font).fontSize);o.isWorking()&&o.checkBoundingBox(this,new Fs(n,i-a.getPixels("y"),n+this.measureText(t),i))}else if(this.children.length>0){var u=new qc(this.document,null);u.children=this.children,u.parent=this,u.render(t)}}},{key:"onClick",value:function(){var t=this.document.window;t&&t.open(this.getHrefAttribute().getString())}},{key:"onMouseMove",value:function(){this.document.ctx.canvas.style.cursor="pointer"}}]),r}(Sc),Cl=Jt.f,Ml={}.toString,Nl="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],_l={f:function(t){return Nl&&"[object Window]"==Ml.call(t)?function(t){try{return Cl(t)}catch(t){return Nl.slice()}}(t):Cl(Vt(t))}},Il=!P((function(){return Object.isExtensible(Object.preventExtensions({}))})),Vl=n((function(t){var e=K.f,r=!1,n=m("meta"),i=0,o=Object.isExtensible||function(){return!0},a=function(t){e(t,n,{value:{objectID:"O"+i++,weakData:{}}})},u=t.exports={enable:function(){u.enable=function(){},r=!0;var t=Jt.f,e=[].splice,i={};i[n]=1,t(i).length&&(Jt.f=function(r){for(var i=t(r),o=0,a=i.length;o<a;o++)if(i[o]===n){e.call(i,o,1);break}return i},fe({target:"Object",stat:!0,forced:!0},{getOwnPropertyNames:_l.f}))},fastKey:function(t,e){if(!D(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!y(t,n)){if(!o(t))return"F";if(!e)return"E";a(t)}return t[n].objectID},getWeakData:function(t,e){if(!y(t,n)){if(!o(t))return!0;if(!e)return!1;a(t)}return t[n].weakData},onFreeze:function(t){return Il&&r&&o(t)&&!y(t,n)&&a(t),t}};lt[n]=!0})),Ll=K.f,Bl=Vl.fastKey,Dl=mt.set,jl=mt.getterFor;function Fl(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(!t)return;if("string"==typeof t)return zl(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return zl(t,e)}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,o=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw o}}}}function zl(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function Ul(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function Hl(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?Ul(Object(r),!0).forEach((function(e){Ro(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Ul(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function Xl(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}!function(t,e,r){var n=-1!==t.indexOf("Map"),i=-1!==t.indexOf("Weak"),o=n?"set":"add",a=u[t],s=a&&a.prototype,c=a,l={},f=function(t){var e=s[t];Ot(s,t,"add"==t?function(t){return e.call(this,0===t?0:t),this}:"delete"==t?function(t){return!(i&&!D(t))&&e.call(this,0===t?0:t)}:"get"==t?function(t){return i&&!D(t)?void 0:e.call(this,0===t?0:t)}:"has"==t?function(t){return!(i&&!D(t))&&e.call(this,0===t?0:t)}:function(t,r){return e.call(this,0===t?0:t,r),this})};if(ce(t,!x(a)||!(i||s.forEach&&!P((function(){(new a).entries().next()})))))c=r.getConstructor(e,t,n,o),Vl.enable();else if(ce(t,!0)){var h=new c,p=h[o](i?{}:-0,1)!=h,v=P((function(){h.has(1)})),y=Fe((function(t){new a(t)})),d=!i&&P((function(){for(var t=new a,e=5;e--;)t[o](e,e);return!t.has(-0)}));y||((c=e((function(e,r){be(e,c,t);var i=ms(new a,e,c);return null!=r&&Me(r,i[o],{that:i,AS_ENTRIES:n}),i}))).prototype=s,s.constructor=c),(v||d)&&(f("delete"),f("has"),n&&f("get")),(d||p)&&f(o),i&&s.clear&&delete s.clear}l[t]=c,fe({global:!0,forced:c!=a},l),ge(c,t),i||r.setStrong(c,t,n)}("Map",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),{getConstructor:function(t,e,r,n){var i=t((function(t,o){be(t,i,e),Dl(t,{type:e,index:ti(null),first:void 0,last:void 0,size:0}),B||(t.size=0),null!=o&&Me(o,t[n],{that:t,AS_ENTRIES:r})})),o=jl(e),a=function(t,e,r){var n,i,a=o(t),s=u(t,e);return s?s.value=r:(a.last=s={index:i=Bl(e,!0),key:e,value:r,previous:n=a.last,next:void 0,removed:!1},a.first||(a.first=s),n&&(n.next=s),B?a.size++:t.size++,"F"!==i&&(a.index[i]=s)),t},u=function(t,e){var r,n=o(t),i=Bl(e);if("F"!==i)return n.index[i];for(r=n.first;r;r=r.next)if(r.key==e)return r};return pe(i.prototype,{clear:function(){for(var t=o(this),e=t.index,r=t.first;r;)r.removed=!0,r.previous&&(r.previous=r.previous.next=void 0),delete e[r.index],r=r.next;t.first=t.last=void 0,B?t.size=0:this.size=0},delete:function(t){var e=this,r=o(e),n=u(e,t);if(n){var i=n.next,a=n.previous;delete r.index[n.index],n.removed=!0,a&&(a.next=i),i&&(i.previous=a),r.first==n&&(r.first=i),r.last==n&&(r.last=a),B?r.size--:e.size--}return!!n},forEach:function(t){for(var e,r=o(this),n=Te(t,arguments.length>1?arguments[1]:void 0,3);e=e?e.next:r.first;)for(n(e.value,e.key,this);e&&e.removed;)e=e.previous},has:function(t){return!!u(this,t)}}),pe(i.prototype,r?{get:function(t){var e=u(this,t);return e&&e.value},set:function(t,e){return a(this,0===t?0:t,e)}}:{add:function(t){return a(this,t=0===t?0:t,t)}}),B&&Ll(i.prototype,"size",{get:function(){return o(this).size}}),i},setStrong:function(t,e,r){var n=e+" Iterator",i=jl(e),o=jl(n);Wu(t,e,(function(t,e){Dl(this,{type:n,target:t,state:i(t),kind:e,last:void 0})}),(function(){for(var t=o(this),e=t.kind,r=t.last;r&&r.removed;)r=r.previous;return t.target&&(t.last=r=r?r.next:t.state.first)?"keys"==e?{value:r.key,done:!1}:"values"==e?{value:r.value,done:!1}:{value:[r.key,r.value],done:!1}:(t.target=void 0,{value:void 0,done:!0})}),r?"entries":"values",!r,!0),xe(e)}});var Yl=function(t){uu(r,t);var e=Xl(r);function r(t,n,i){var o;Po(this,r),(o=e.call(this,t,n,i)).type="textPath",o.textWidth=0,o.textHeight=0,o.pathLength=-1,o.glyphInfo=null,o.letterSpacingCache=[],o.measuresCache=new Map([["",0]]);var a=o.getHrefAttribute().getDefinition();return o.text=o.getTextFromNode(),o.dataArray=o.parsePathData(a),o}return Eo(r,[{key:"getText",value:function(){return this.text}},{key:"path",value:function(t){var e=this.dataArray;t&&t.beginPath(),e.forEach((function(e){var r=e.type,n=e.points;switch(r){case sc.LINE_TO:t&&t.lineTo(n[0],n[1]);break;case sc.MOVE_TO:t&&t.moveTo(n[0],n[1]);break;case sc.CURVE_TO:t&&t.bezierCurveTo(n[0],n[1],n[2],n[3],n[4],n[5]);break;case sc.QUAD_TO:t&&t.quadraticCurveTo(n[0],n[1],n[2],n[3]);break;case sc.ARC:var i=oo(n,8),o=i[0],a=i[1],u=i[2],s=i[3],c=i[4],l=i[5],f=i[6],h=i[7],p=u>s?u:s,v=u>s?1:u/s,y=u>s?s/u:1;t&&(t.translate(o,a),t.rotate(f),t.scale(v,y),t.arc(0,0,p,c,c+l,Boolean(1-h)),t.scale(1/v,1/y),t.rotate(-f),t.translate(-o,-a));break;case sc.CLOSE_PATH:t&&t.closePath()}}))}},{key:"renderChildren",value:function(t){this.setTextData(t),t.save();var e=this.parent.getStyle("text-decoration").getString(),r=this.getFontSize(),n=this.glyphInfo,i=t.fillStyle;"underline"===e&&t.beginPath(),n.forEach((function(n,i){var o=n.p0,a=n.p1,u=n.rotation,s=n.text;t.save(),t.translate(o.x,o.y),t.rotate(u),t.fillStyle&&t.fillText(s,0,0),t.strokeStyle&&t.strokeText(s,0,0),t.restore(),"underline"===e&&(0===i&&t.moveTo(o.x,o.y+r/8),t.lineTo(a.x,a.y+r/5))})),"underline"===e&&(t.lineWidth=r/20,t.strokeStyle=i,t.stroke(),t.closePath()),t.restore()}},{key:"getLetterSpacingAt",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return this.letterSpacingCache[t]||0}},{key:"findSegmentToFitChar",value:function(t,e,r,n,i,o,a,u,s){var c=o,l=this.measureText(t,u);" "===u&&"justify"===e&&r<n&&(l+=(n-r)/i),s>-1&&(c+=this.getLetterSpacingAt(s));var f=this.textHeight/20,h=this.getEquidistantPointOnPath(c,f,0),p=this.getEquidistantPointOnPath(c+l,f,0),v={p0:h,p1:p},y=h&&p?Math.atan2(p.y-h.y,p.x-h.x):0;if(a){var d=Math.cos(Math.PI/2+y)*a,g=Math.cos(-y)*a;v.p0=Hl(Hl({},h),{},{x:h.x+d,y:h.y+g}),v.p1=Hl(Hl({},p),{},{x:p.x+d,y:p.y+g})}return{offset:c+=l,segment:v,rotation:y}}},{key:"measureText",value:function(t,e){var r=this.measuresCache,n=e||this.getText();if(r.has(n))return r.get(n);var i=this.measureTargetText(t,n);return r.set(n,i),i}},{key:"setTextData",value:function(t){var e=this;if(!this.glyphInfo){var r=this.getText(),n=r.split(""),i=r.split(" ").length-1,o=this.parent.getAttribute("dx").split().map((function(t){return t.getPixels("x")})),a=this.parent.getAttribute("dy").getPixels("y"),u=this.parent.getStyle("text-anchor").getString("start"),s=this.getStyle("letter-spacing"),c=this.parent.getStyle("letter-spacing"),l=0;s.hasValue()&&"inherit"!==s.getValue()?s.hasValue()&&"initial"!==s.getValue()&&"unset"!==s.getValue()&&(l=s.getPixels()):l=c.getPixels();var f=[],h=r.length;this.letterSpacingCache=f;for(var p=0;p<h;p++)f.push(void 0!==o[p]?o[p]:l);var v=f.reduce((function(t,e,r){return 0===r?0:t+e||0}),0),y=this.measureText(t),d=Math.max(y+v,0);this.textWidth=y,this.textHeight=this.getFontSize(),this.glyphInfo=[];var g=this.getPathLength(),m=this.getStyle("startOffset").getNumber(0)*g,x=0;"middle"!==u&&"center"!==u||(x=-d/2),"end"!==u&&"right"!==u||(x=-d),x+=m,n.forEach((function(r,o){var s=e.findSegmentToFitChar(t,u,d,g,i,x,a,r,o),c=s.offset,l=s.segment,f=s.rotation;x=c,l.p0&&l.p1&&e.glyphInfo.push({text:n[o],p0:l.p0,p1:l.p1,rotation:f})}))}}},{key:"parsePathData",value:function(t){if(this.pathLength=-1,!t)return[];var e=[],r=t.pathParser;for(r.reset();!r.isEnd();){var n=r.current,i=n?n.x:0,o=n?n.y:0,a=r.next(),u=a.type,s=[];switch(a.type){case sc.MOVE_TO:this.pathM(r,s);break;case sc.LINE_TO:u=this.pathL(r,s);break;case sc.HORIZ_LINE_TO:u=this.pathH(r,s);break;case sc.VERT_LINE_TO:u=this.pathV(r,s);break;case sc.CURVE_TO:this.pathC(r,s);break;case sc.SMOOTH_CURVE_TO:u=this.pathS(r,s);break;case sc.QUAD_TO:this.pathQ(r,s);break;case sc.SMOOTH_QUAD_TO:u=this.pathT(r,s);break;case sc.ARC:s=this.pathA(r);break;case sc.CLOSE_PATH:mc.pathZ(r)}a.type!==sc.CLOSE_PATH?e.push({type:u,points:s,start:{x:i,y:o},pathLength:this.calcLength(i,o,u,s)}):e.push({type:sc.CLOSE_PATH,points:[],pathLength:0})}return e}},{key:"pathM",value:function(t,e){var r=mc.pathM(t).point,n=r.x,i=r.y;e.push(n,i)}},{key:"pathL",value:function(t,e){var r=mc.pathL(t).point,n=r.x,i=r.y;return e.push(n,i),sc.LINE_TO}},{key:"pathH",value:function(t,e){var r=mc.pathH(t).point,n=r.x,i=r.y;return e.push(n,i),sc.LINE_TO}},{key:"pathV",value:function(t,e){var r=mc.pathV(t).point,n=r.x,i=r.y;return e.push(n,i),sc.LINE_TO}},{key:"pathC",value:function(t,e){var r=mc.pathC(t),n=r.point,i=r.controlPoint,o=r.currentPoint;e.push(n.x,n.y,i.x,i.y,o.x,o.y)}},{key:"pathS",value:function(t,e){var r=mc.pathS(t),n=r.point,i=r.controlPoint,o=r.currentPoint;return e.push(n.x,n.y,i.x,i.y,o.x,o.y),sc.CURVE_TO}},{key:"pathQ",value:function(t,e){var r=mc.pathQ(t),n=r.controlPoint,i=r.currentPoint;e.push(n.x,n.y,i.x,i.y)}},{key:"pathT",value:function(t,e){var r=mc.pathT(t),n=r.controlPoint,i=r.currentPoint;return e.push(n.x,n.y,i.x,i.y),sc.QUAD_TO}},{key:"pathA",value:function(t){var e=mc.pathA(t),r=e.rX,n=e.rY,i=e.sweepFlag,o=e.xAxisRotation,a=e.centp,u=e.a1,s=e.ad;return 0===i&&s>0&&(s-=2*Math.PI),1===i&&s<0&&(s+=2*Math.PI),[a.x,a.y,r,n,u,s,o,i]}},{key:"calcLength",value:function(t,e,r,n){var i=0,o=null,a=null,u=0;switch(r){case sc.LINE_TO:return this.getLineLength(t,e,n[0],n[1]);case sc.CURVE_TO:for(i=0,o=this.getPointOnCubicBezier(0,t,e,n[0],n[1],n[2],n[3],n[4],n[5]),u=.01;u<=1;u+=.01)a=this.getPointOnCubicBezier(u,t,e,n[0],n[1],n[2],n[3],n[4],n[5]),i+=this.getLineLength(o.x,o.y,a.x,a.y),o=a;return i;case sc.QUAD_TO:for(i=0,o=this.getPointOnQuadraticBezier(0,t,e,n[0],n[1],n[2],n[3]),u=.01;u<=1;u+=.01)a=this.getPointOnQuadraticBezier(u,t,e,n[0],n[1],n[2],n[3]),i+=this.getLineLength(o.x,o.y,a.x,a.y),o=a;return i;case sc.ARC:i=0;var s=n[4],c=n[5],l=n[4]+c,f=Math.PI/180;if(Math.abs(s-l)<f&&(f=Math.abs(s-l)),o=this.getPointOnEllipticalArc(n[0],n[1],n[2],n[3],s,0),c<0)for(u=s-f;u>l;u-=f)a=this.getPointOnEllipticalArc(n[0],n[1],n[2],n[3],u,0),i+=this.getLineLength(o.x,o.y,a.x,a.y),o=a;else for(u=s+f;u<l;u+=f)a=this.getPointOnEllipticalArc(n[0],n[1],n[2],n[3],u,0),i+=this.getLineLength(o.x,o.y,a.x,a.y),o=a;return a=this.getPointOnEllipticalArc(n[0],n[1],n[2],n[3],l,0),i+=this.getLineLength(o.x,o.y,a.x,a.y)}return 0}},{key:"getPointOnLine",value:function(t,e,r,n,i){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:e,a=arguments.length>6&&void 0!==arguments[6]?arguments[6]:r,u=(i-r)/(n-e+yo),s=Math.sqrt(t*t/(1+u*u));n<e&&(s*=-1);var c=u*s,l=null;if(n===e)l={x:o,y:a+c};else if((a-r)/(o-e+yo)===u)l={x:o+s,y:a+c};else{var f=0,h=0,p=this.getLineLength(e,r,n,i);if(p<yo)return null;var v=(o-e)*(n-e)+(a-r)*(i-r);f=e+(v/=p*p)*(n-e),h=r+v*(i-r);var y=this.getLineLength(o,a,f,h),d=Math.sqrt(t*t-y*y);s=Math.sqrt(d*d/(1+u*u)),n<e&&(s*=-1),l={x:f+s,y:h+(c=u*s)}}return l}},{key:"getPointOnPath",value:function(t){var e=this.getPathLength(),r=0,n=null;if(t<-5e-5||t-5e-5>e)return null;var i,o=Fl(this.dataArray);try{for(o.s();!(i=o.n()).done;){var a=i.value;if(!a||!(a.pathLength<5e-5||r+a.pathLength+5e-5<t)){var u=t-r,s=0;switch(a.type){case sc.LINE_TO:n=this.getPointOnLine(u,a.start.x,a.start.y,a.points[0],a.points[1],a.start.x,a.start.y);break;case sc.ARC:var c=a.points[4],l=a.points[5],f=a.points[4]+l;if(s=c+u/a.pathLength*l,l<0&&s<f||l>=0&&s>f)break;n=this.getPointOnEllipticalArc(a.points[0],a.points[1],a.points[2],a.points[3],s,a.points[6]);break;case sc.CURVE_TO:(s=u/a.pathLength)>1&&(s=1),n=this.getPointOnCubicBezier(s,a.start.x,a.start.y,a.points[0],a.points[1],a.points[2],a.points[3],a.points[4],a.points[5]);break;case sc.QUAD_TO:(s=u/a.pathLength)>1&&(s=1),n=this.getPointOnQuadraticBezier(s,a.start.x,a.start.y,a.points[0],a.points[1],a.points[2],a.points[3])}if(n)return n;break}r+=a.pathLength}}catch(t){o.e(t)}finally{o.f()}return null}},{key:"getLineLength",value:function(t,e,r,n){return Math.sqrt((r-t)*(r-t)+(n-e)*(n-e))}},{key:"getPathLength",value:function(){return-1===this.pathLength&&(this.pathLength=this.dataArray.reduce((function(t,e){return e.pathLength>0?t+e.pathLength:t}),0)),this.pathLength}},{key:"getPointOnCubicBezier",value:function(t,e,r,n,i,o,a,u,s){return{x:u*bo(t)+o*wo(t)+n*So(t)+e*Oo(t),y:s*bo(t)+a*wo(t)+i*So(t)+r*Oo(t)}}},{key:"getPointOnQuadraticBezier",value:function(t,e,r,n,i,o,a){return{x:o*ko(t)+n*To(t)+e*Ao(t),y:a*ko(t)+i*To(t)+r*Ao(t)}}},{key:"getPointOnEllipticalArc",value:function(t,e,r,n,i,o){var a=Math.cos(o),u=Math.sin(o),s=r*Math.cos(i),c=n*Math.sin(i);return{x:t+(s*a-c*u),y:e+(s*u+c*a)}}},{key:"buildEquidistantCache",value:function(t,e){var r=this.getPathLength(),n=e||.25,i=t||r/100;if(!this.equidistantCache||this.equidistantCache.step!==i||this.equidistantCache.precision!==n){this.equidistantCache={step:i,precision:n,points:[]};for(var o=0,a=0;a<=r;a+=n){var u=this.getPointOnPath(a),s=this.getPointOnPath(a+n);u&&s&&((o+=this.getLineLength(u.x,u.y,s.x,s.y))>=i&&(this.equidistantCache.points.push({x:u.x,y:u.y,distance:a}),o-=i))}}}},{key:"getEquidistantPointOnPath",value:function(t,e,r){if(this.buildEquidistantCache(e,r),t<0||t-this.getPathLength()>5e-5)return null;var n=Math.round(t/this.getPathLength()*(this.equidistantCache.points.length-1));return this.equidistantCache.points[n]||null}}]),r}(Sc);function Gl(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var Wl=/^\s*data:(([^/,;]+\/[^/,;]+)(?:;([^,;=]+=[^,;=]+))?)?(?:;(base64))?,(.*)$/i,ql=function(t){uu(i,t);var e,r,n=Gl(i);function i(t,e,r){var o;Po(this,i),(o=n.call(this,t,e,r)).type="image",o.loaded=!1;var a=o.getHrefAttribute().getString();if(!a)return fu(o);var u=a.endsWith(".svg")||/^\s*data:image\/svg\+xml/i.test(a);return t.images.push(lu(o)),u?o.loadSvg(a):o.loadImage(a),o.isSvg=u,o}return Eo(i,[{key:"loadImage",value:(r=gn(dn.mark((function t(e){var r;return dn.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.document.createImage(e);case 3:r=t.sent,this.image=r,t.next=10;break;case 7:t.prev=7,t.t0=t.catch(0),console.error('Error while loading image "'.concat(e,'":'),t.t0);case 10:this.loaded=!0;case 11:case"end":return t.stop()}}),t,this,[[0,7]])}))),function(t){return r.apply(this,arguments)})},{key:"loadSvg",value:(e=gn(dn.mark((function t(e){var r,n,i,o;return dn.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!(r=Wl.exec(e))){t.next=6;break}n=r[5],"base64"===r[4]?this.image=atob(n):this.image=decodeURIComponent(n),t.next=19;break;case 6:return t.prev=6,t.next=9,this.document.fetch(e);case 9:return i=t.sent,t.next=12,i.text();case 12:o=t.sent,this.image=o,t.next=19;break;case 16:t.prev=16,t.t0=t.catch(6),console.error('Error while loading image "'.concat(e,'":'),t.t0);case 19:this.loaded=!0;case 20:case"end":return t.stop()}}),t,this,[[6,16]])}))),function(t){return e.apply(this,arguments)})},{key:"renderChildren",value:function(t){var e=this.document,r=this.image,n=this.loaded,i=this.getAttribute("x").getPixels("x"),o=this.getAttribute("y").getPixels("y"),a=this.getStyle("width").getPixels("x"),u=this.getStyle("height").getPixels("y");if(n&&r&&a&&u){if(t.save(),t.translate(i,o),this.isSvg){var s=e.canvg.forkString(t,this.image,{ignoreMouse:!0,ignoreAnimation:!0,ignoreDimensions:!0,ignoreClear:!0,offsetX:0,offsetY:0,scaleWidth:a,scaleHeight:u});s.document.documentElement.parent=this,s.render()}else{var c=this.image;e.setViewBox({ctx:t,aspectRatio:this.getAttribute("preserveAspectRatio").getString(),width:a,desiredWidth:c.width,height:u,desiredHeight:c.height}),this.loaded&&(void 0===c.complete||c.complete)&&t.drawImage(c,0,0)}t.restore()}}},{key:"getBoundingBox",value:function(){var t=this.getAttribute("x").getPixels("x"),e=this.getAttribute("y").getPixels("y"),r=this.getStyle("width").getPixels("x"),n=this.getStyle("height").getPixels("y");return new Fs(t,e,t+r,e+n)}}]),i}(dc);function $l(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var Ql=function(t){uu(r,t);var e=$l(r);function r(){var t;return Po(this,r),(t=e.apply(this,arguments)).type="symbol",t}return Eo(r,[{key:"render",value:function(t){}}]),r}(dc),Zl=function(){function t(e){Po(this,t),this.document=e,this.loaded=!1,e.fonts.push(this)}var e;return Eo(t,[{key:"load",value:(e=gn(dn.mark((function t(e,r){var n,i,o;return dn.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,n=this.document,t.next=4,n.canvg.parser.load(r);case 4:i=t.sent,o=i.getElementsByTagName("font"),Array.from(o).forEach((function(t){var r=n.createElement(t);n.definitions[e]=r})),t.next=12;break;case 9:t.prev=9,t.t0=t.catch(0),console.error('Error while loading font "'.concat(r,'":'),t.t0);case 12:this.loaded=!0;case 13:case"end":return t.stop()}}),t,this,[[0,9]])}))),function(t,r){return e.apply(this,arguments)})}]),t}();function Kl(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var Jl=function(t){uu(r,t);var e=Kl(r);function r(t,n,i){var o;return Po(this,r),(o=e.call(this,t,n,i)).type="style",Ui(Array.from(n.childNodes).map((function(t){return t.textContent})).join("").replace(/(\/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+\/)|(^[\s]*\/\/.*)/gm,"").replace(/@import.*;/g,"")).split("}").forEach((function(e){var r=e.trim();if(r){var n=r.split("{"),i=n[0].split(","),o=n[1].split(";");i.forEach((function(e){var r=e.trim();if(r){var n=t.styles[r]||{};if(o.forEach((function(e){var r=e.indexOf(":"),i=e.substr(0,r).trim(),o=e.substr(r+1,e.length-r).trim();i&&o&&(n[i]=new Ua(t,i,o))})),t.styles[r]=n,t.stylesSpecificity[r]=vo(r),"@font-face"===r){var i=n["font-family"].getString().replace(/"|'/g,"");n.src.getString().split(",").forEach((function(e){if(e.indexOf('format("svg")')>0){var r=qi(e);r&&new Zl(t).load(i,r)}}))}}}))}})),o}return r}(ps);function tf(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}Jl.parseExternalUrl=qi;var ef=function(t){uu(r,t);var e=tf(r);function r(){var t;return Po(this,r),(t=e.apply(this,arguments)).type="use",t}return Eo(r,[{key:"setContext",value:function(t){Vs(pu(r.prototype),"setContext",this).call(this,t);var e=this.getAttribute("x"),n=this.getAttribute("y");e.hasValue()&&t.translate(e.getPixels("x"),0),n.hasValue()&&t.translate(0,n.getPixels("y"))}},{key:"path",value:function(t){var e=this.element;e&&e.path(t)}},{key:"renderChildren",value:function(t){var e=this.document,r=this.element;if(r){var n=r;if("symbol"===r.type&&((n=new Pc(e,null)).attributes.viewBox=new Ua(e,"viewBox",r.getAttribute("viewBox").getString()),n.attributes.preserveAspectRatio=new Ua(e,"preserveAspectRatio",r.getAttribute("preserveAspectRatio").getString()),n.attributes.overflow=new Ua(e,"overflow",r.getAttribute("overflow").getString()),n.children=r.children,r.styles.opacity=new Ua(e,"opacity",this.calculateOpacity())),"svg"===n.type){var i=this.getStyle("width",!1,!0),o=this.getStyle("height",!1,!0);i.hasValue()&&(n.attributes.width=new Ua(e,"width",i.getString())),o.hasValue()&&(n.attributes.height=new Ua(e,"height",o.getString()))}var a=n.parent;n.parent=this,n.render(t),n.parent=a}}},{key:"getBoundingBox",value:function(t){var e=this.element;return e?e.getBoundingBox(t):null}},{key:"elementTransform",value:function(){var t=this.document,e=this.element;return hs.fromElement(t,e)}},{key:"element",get:function(){return this.cachedElement||(this.cachedElement=this.getHrefAttribute().getDefinition()),this.cachedElement}}]),r}(dc);function rf(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}function nf(t,e,r,n,i,o){return t[r*n*4+4*e+o]}function of(t,e,r,n,i,o,a){t[r*n*4+4*e+o]=a}function af(t,e,r){return t[e]*r}function uf(t,e,r,n){return e+Math.cos(t)*r+Math.sin(t)*n}var sf=function(t){uu(r,t);var e=rf(r);function r(t,n,i){var o;Po(this,r),(o=e.call(this,t,n,i)).type="feColorMatrix";var a=Yi(o.getAttribute("values").getString());switch(o.getAttribute("type").getString("matrix")){case"saturate":var u=a[0];a=[.213+.787*u,.715-.715*u,.072-.072*u,0,0,.213-.213*u,.715+.285*u,.072-.072*u,0,0,.213-.213*u,.715-.715*u,.072+.928*u,0,0,0,0,0,1,0,0,0,0,0,1];break;case"hueRotate":var s=a[0]*Math.PI/180;a=[uf(s,.213,.787,-.213),uf(s,.715,-.715,-.715),uf(s,.072,-.072,.928),0,0,uf(s,.213,-.213,.143),uf(s,.715,.285,.14),uf(s,.072,-.072,-.283),0,0,uf(s,.213,-.213,-.787),uf(s,.715,-.715,.715),uf(s,.072,.928,.072),0,0,0,0,0,1,0,0,0,0,0,1];break;case"luminanceToAlpha":a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,.2125,.7154,.0721,0,0,0,0,0,0,1]}return o.matrix=a,o.includeOpacity=o.getAttribute("includeOpacity").hasValue(),o}return Eo(r,[{key:"apply",value:function(t,e,r,n,i){for(var o=this.includeOpacity,a=this.matrix,u=t.getImageData(0,0,n,i),s=0;s<i;s++)for(var c=0;c<n;c++){var l=nf(u.data,c,s,n,0,0),f=nf(u.data,c,s,n,0,1),h=nf(u.data,c,s,n,0,2),p=nf(u.data,c,s,n,0,3),v=af(a,0,l)+af(a,1,f)+af(a,2,h)+af(a,3,p)+af(a,4,1),y=af(a,5,l)+af(a,6,f)+af(a,7,h)+af(a,8,p)+af(a,9,1),d=af(a,10,l)+af(a,11,f)+af(a,12,h)+af(a,13,p)+af(a,14,1),g=af(a,15,l)+af(a,16,f)+af(a,17,h)+af(a,18,p)+af(a,19,1);o&&(v=0,y=0,d=0,g*=p/255),of(u.data,c,s,n,0,0,v),of(u.data,c,s,n,0,1,y),of(u.data,c,s,n,0,2,d),of(u.data,c,s,n,0,3,g)}t.clearRect(0,0,n,i),t.putImageData(u,0,0)}}]),r}(ps);function cf(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var lf=function(t){uu(r,t);var e=cf(r);function r(){var t;return Po(this,r),(t=e.apply(this,arguments)).type="mask",t}return Eo(r,[{key:"apply",value:function(t,e){var n=this.document,i=this.getAttribute("x").getPixels("x"),o=this.getAttribute("y").getPixels("y"),a=this.getStyle("width").getPixels("x"),u=this.getStyle("height").getPixels("y");if(!a&&!u){var s=new Fs;this.children.forEach((function(e){s.addBoundingBox(e.getBoundingBox(t))})),i=Math.floor(s.x1),o=Math.floor(s.y1),a=Math.floor(s.width),u=Math.floor(s.height)}var c=this.removeStyles(e,r.ignoreStyles),l=n.createCanvas(i+a,o+u),f=l.getContext("2d");n.screen.setDefaults(f),this.renderChildren(f),new sf(n,{nodeType:1,childNodes:[],attributes:[{nodeName:"type",value:"luminanceToAlpha"},{nodeName:"includeOpacity",value:"true"}]}).apply(f,0,0,i+a,o+u);var h=n.createCanvas(i+a,o+u),p=h.getContext("2d");n.screen.setDefaults(p),e.render(p),p.globalCompositeOperation="destination-in",p.fillStyle=f.createPattern(l,"no-repeat"),p.fillRect(0,0,i+a,o+u),t.fillStyle=p.createPattern(h,"no-repeat"),t.fillRect(0,0,i+a,o+u),this.restoreStyles(e,c)}},{key:"render",value:function(t){}}]),r}(ps);lf.ignoreStyles=["mask","transform","clip-path"];var ff=w("Reflect","apply"),hf=Function.apply,pf=!P((function(){ff((function(){}))}));function vf(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}fe({target:"Reflect",stat:!0,forced:pf},{apply:function(t,e,r){return G(t),H(r),ff?ff(t,e,r):hf.call(t,e,r)}}),fe({target:"Reflect",stat:!0,sham:!Eu},{getPrototypeOf:function(t){return Nu(H(t))}});var yf=function(){},df=function(t){uu(r,t);var e=vf(r);function r(){var t;return Po(this,r),(t=e.apply(this,arguments)).type="clipPath",t}return Eo(r,[{key:"apply",value:function(t){var e=this.document,r=Reflect.getPrototypeOf(t),n=t.beginPath,i=t.closePath;r&&(r.beginPath=yf,r.closePath=yf),Reflect.apply(n,t,[]),this.children.forEach((function(n){if(void 0!==n.path){var o=void 0!==n.elementTransform?n.elementTransform():null;o||(o=hs.fromElement(e,n)),o&&o.apply(t),n.path(t),r&&(r.closePath=i),o&&o.unapply(t)}})),Reflect.apply(i,t,[]),t.clip(),r&&(r.beginPath=n,r.closePath=i)}},{key:"render",value:function(t){}}]),r}(ps);function gf(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var mf=function(t){uu(r,t);var e=gf(r);function r(){var t;return Po(this,r),(t=e.apply(this,arguments)).type="filter",t}return Eo(r,[{key:"apply",value:function(t,e){var n=this.document,i=this.children,o=e.getBoundingBox(t);if(o){var a=0,u=0;i.forEach((function(t){var e=t.extraFilterDistance||0;a=Math.max(a,e),u=Math.max(u,e)}));var s=Math.floor(o.width),c=Math.floor(o.height),l=s+2*a,f=c+2*u;if(!(l<1||f<1)){var h=Math.floor(o.x),p=Math.floor(o.y),v=this.removeStyles(e,r.ignoreStyles),y=n.createCanvas(l,f),d=y.getContext("2d");n.screen.setDefaults(d),d.translate(-h+a,-p+u),e.render(d),i.forEach((function(t){"function"==typeof t.apply&&t.apply(d,0,0,l,f)})),t.drawImage(y,0,0,l,f,h-a,p-u,l,f),this.restoreStyles(e,v)}}}},{key:"render",value:function(t){}}]),r}(ps);function xf(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}mf.ignoreStyles=["filter","transform","clip-path"];var bf=function(t){uu(r,t);var e=xf(r);function r(t,n,i){var o;return Po(this,r),(o=e.call(this,t,n,i)).type="feDropShadow",o.addStylesFromStyleDefinition(),o}return Eo(r,[{key:"apply",value:function(t,e,r,n,i){}}]),r}(ps);function wf(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var Sf=function(t){uu(r,t);var e=wf(r);function r(){var t;return Po(this,r),(t=e.apply(this,arguments)).type="feMorphology",t}return Eo(r,[{key:"apply",value:function(t,e,r,n,i){}}]),r}(ps);function Of(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var kf=function(t){uu(r,t);var e=Of(r);function r(){var t;return Po(this,r),(t=e.apply(this,arguments)).type="feComposite",t}return Eo(r,[{key:"apply",value:function(t,e,r,n,i){}}]),r}(ps);function Tf(t){return(Tf="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var Af=[512,512,456,512,328,456,335,512,405,328,271,456,388,335,292,512,454,405,364,328,298,271,496,456,420,388,360,335,312,292,273,512,482,454,428,405,383,364,345,328,312,298,284,271,259,496,475,456,437,420,404,388,374,360,347,335,323,312,302,292,282,273,265,512,497,482,468,454,441,428,417,405,394,383,373,364,354,345,337,328,320,312,305,298,291,284,278,271,265,259,507,496,485,475,465,456,446,437,428,420,412,404,396,388,381,374,367,360,354,347,341,335,329,323,318,312,307,302,297,292,287,282,278,273,269,265,261,512,505,497,489,482,475,468,461,454,447,441,435,428,422,417,411,405,399,394,389,383,378,373,368,364,359,354,350,345,341,337,332,328,324,320,316,312,309,305,301,298,294,291,287,284,281,278,274,271,268,265,262,259,257,507,501,496,491,485,480,475,470,465,460,456,451,446,442,437,433,428,424,420,416,412,408,404,400,396,392,388,385,381,377,374,370,367,363,360,357,354,350,347,344,341,338,335,332,329,326,323,320,318,315,312,310,307,304,302,299,297,294,292,289,287,285,282,280,278,275,273,271,269,267,265,263,261,259],Rf=[9,11,12,13,13,14,14,15,15,15,15,16,16,16,16,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24];function Pf(t,e,r,n,i,o){if(!(isNaN(o)||o<1)){o|=0;var a=function(t,e,r,n,i){if("string"==typeof t&&(t=document.getElementById(t)),!t||"object"!==Tf(t)||!("getContext"in t))throw new TypeError("Expecting canvas with `getContext` method in processCanvasRGB(A) calls!");var o=t.getContext("2d");try{return o.getImageData(e,r,n,i)}catch(t){throw new Error("unable to access image data: "+t)}}(t,e,r,n,i);a=function(t,e,r,n,i,o){for(var a,u=t.data,s=2*o+1,c=n-1,l=i-1,f=o+1,h=f*(f+1)/2,p=new Ef,v=p,y=1;y<s;y++)v=v.next=new Ef,y===f&&(a=v);v.next=p;for(var d=null,g=null,m=0,x=0,b=Af[o],w=Rf[o],S=0;S<i;S++){v=p;for(var O=u[x],k=u[x+1],T=u[x+2],A=u[x+3],R=0;R<f;R++)v.r=O,v.g=k,v.b=T,v.a=A,v=v.next;for(var P=0,E=0,C=0,M=0,N=f*O,_=f*k,I=f*T,V=f*A,L=h*O,B=h*k,D=h*T,j=h*A,F=1;F<f;F++){var z=x+((c<F?c:F)<<2),U=u[z],H=u[z+1],X=u[z+2],Y=u[z+3],G=f-F;L+=(v.r=U)*G,B+=(v.g=H)*G,D+=(v.b=X)*G,j+=(v.a=Y)*G,P+=U,E+=H,C+=X,M+=Y,v=v.next}d=p,g=a;for(var W=0;W<n;W++){var q=j*b>>w;if(u[x+3]=q,0!==q){var $=255/q;u[x]=(L*b>>w)*$,u[x+1]=(B*b>>w)*$,u[x+2]=(D*b>>w)*$}else u[x]=u[x+1]=u[x+2]=0;L-=N,B-=_,D-=I,j-=V,N-=d.r,_-=d.g,I-=d.b,V-=d.a;var Q=W+o+1;Q=m+(Q<c?Q:c)<<2,L+=P+=d.r=u[Q],B+=E+=d.g=u[Q+1],D+=C+=d.b=u[Q+2],j+=M+=d.a=u[Q+3],d=d.next;var Z=g,K=Z.r,J=Z.g,tt=Z.b,et=Z.a;N+=K,_+=J,I+=tt,V+=et,P-=K,E-=J,C-=tt,M-=et,g=g.next,x+=4}m+=n}for(var rt=0;rt<n;rt++){var nt=u[x=rt<<2],it=u[x+1],ot=u[x+2],at=u[x+3],ut=f*nt,st=f*it,ct=f*ot,lt=f*at,ft=h*nt,ht=h*it,pt=h*ot,vt=h*at;v=p;for(var yt=0;yt<f;yt++)v.r=nt,v.g=it,v.b=ot,v.a=at,v=v.next;for(var dt=n,gt=0,mt=0,xt=0,bt=0,wt=1;wt<=o;wt++){x=dt+rt<<2;var St=f-wt;ft+=(v.r=nt=u[x])*St,ht+=(v.g=it=u[x+1])*St,pt+=(v.b=ot=u[x+2])*St,vt+=(v.a=at=u[x+3])*St,bt+=nt,gt+=it,mt+=ot,xt+=at,v=v.next,wt<l&&(dt+=n)}x=rt,d=p,g=a;for(var Ot=0;Ot<i;Ot++){var kt=x<<2;u[kt+3]=at=vt*b>>w,at>0?(at=255/at,u[kt]=(ft*b>>w)*at,u[kt+1]=(ht*b>>w)*at,u[kt+2]=(pt*b>>w)*at):u[kt]=u[kt+1]=u[kt+2]=0,ft-=ut,ht-=st,pt-=ct,vt-=lt,ut-=d.r,st-=d.g,ct-=d.b,lt-=d.a,kt=rt+((kt=Ot+f)<l?kt:l)*n<<2,ft+=bt+=d.r=u[kt],ht+=gt+=d.g=u[kt+1],pt+=mt+=d.b=u[kt+2],vt+=xt+=d.a=u[kt+3],d=d.next,ut+=nt=g.r,st+=it=g.g,ct+=ot=g.b,lt+=at=g.a,bt-=nt,gt-=it,mt-=ot,xt-=at,g=g.next,x+=n}}return t}(a,0,0,n,i,o),t.getContext("2d").putImageData(a,e,r)}}var Ef=function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.r=0,this.g=0,this.b=0,this.a=0,this.next=null};function Cf(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var Mf=function(t){uu(r,t);var e=Cf(r);function r(t,n,i){var o;return Po(this,r),(o=e.call(this,t,n,i)).type="feGaussianBlur",o.blurRadius=Math.floor(o.getAttribute("stdDeviation").getNumber()),o.extraFilterDistance=o.blurRadius,o}return Eo(r,[{key:"apply",value:function(t,e,r,n,i){var o=this.document,a=this.blurRadius,u=o.window?o.window.document.body:null,s=t.canvas;s.id=o.getUniqueId(),u&&(s.style.display="none",u.appendChild(s)),Pf(s,e,r,n,i,a),u&&u.removeChild(s)}}]),r}(ps);function Nf(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var _f=function(t){uu(r,t);var e=Nf(r);function r(){var t;return Po(this,r),(t=e.apply(this,arguments)).type="title",t}return r}(ps);function If(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=pu(t);if(e){var i=pu(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return fu(this,r)}}var Vf=function(t){uu(r,t);var e=If(r);function r(){var t;return Po(this,r),(t=e.apply(this,arguments)).type="desc",t}return r}(ps),Lf={svg:Pc,rect:Cc,circle:Nc,ellipse:Ic,line:Lc,polyline:Dc,polygon:Fc,path:mc,pattern:Uc,marker:Xc,defs:Gc,linearGradient:Kc,radialGradient:tl,stop:rl,animate:pl,animateColor:yl,animateTransform:gl,font:wl,"font-face":Ol,"missing-glyph":Tl,glyph:bc,text:Sc,tspan:kc,tref:Rl,a:El,textPath:Yl,image:ql,g:qc,symbol:Ql,style:Jl,use:ef,mask:lf,clipPath:df,filter:mf,feDropShadow:bf,feMorphology:Sf,feComposite:kf,feColorMatrix:sf,feGaussianBlur:Mf,title:_f,desc:Vf};function Bf(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function Df(){return(Df=gn(dn.mark((function t(e){var r,n,i=arguments;return dn.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=i.length>1&&void 0!==i[1]&&i[1],n=document.createElement("img"),r&&(n.crossOrigin="Anonymous"),t.abrupt("return",new Promise((function(t,r){n.onload=function(){t(n)},n.onerror=function(t,e,n,i,o){r(o)},n.src=e})));case 4:case"end":return t.stop()}}),t)})))).apply(this,arguments)}var jf=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=r.rootEmSize,i=void 0===n?12:n,o=r.emSize,a=void 0===o?12:o,u=r.createCanvas,s=void 0===u?t.createCanvas:u,c=r.createImage,l=void 0===c?t.createImage:c,f=r.anonymousCrossOrigin;Po(this,t),this.canvg=e,this.definitions={},this.styles={},this.stylesSpecificity={},this.images=[],this.fonts=[],this.emSizeStack=[],this.uniqueId=0,this.screen=e.screen,this.rootEmSize=i,this.emSize=a,this.createCanvas=s,this.createImage=this.bindCreateImage(l,f),this.screen.wait(this.isImagesLoaded.bind(this)),this.screen.wait(this.isFontsLoaded.bind(this))}return Eo(t,[{key:"bindCreateImage",value:function(t,e){return"boolean"==typeof e?function(r,n){return t(r,"boolean"==typeof n?n:e)}:t}},{key:"popEmSize",value:function(){this.emSizeStack.pop()}},{key:"getUniqueId",value:function(){return"canvg".concat(++this.uniqueId)}},{key:"isImagesLoaded",value:function(){return this.images.every((function(t){return t.loaded}))}},{key:"isFontsLoaded",value:function(){return this.fonts.every((function(t){return t.loaded}))}},{key:"createDocumentElement",value:function(t){var e=this.createElement(t.documentElement);return e.root=!0,e.addStylesFromStyleDefinition(),this.documentElement=e,e}},{key:"createElement",value:function(e){var r=e.nodeName.replace(/^[^:]+:/,""),n=t.elementTypes[r];return void 0!==n?new n(this,e):new ys(this,e)}},{key:"createTextNode",value:function(t){return new Ac(this,t)}},{key:"setViewBox",value:function(t){this.screen.setViewBox(function(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?Bf(Object(r),!0).forEach((function(e){Ro(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Bf(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}({document:this},t))}},{key:"window",get:function(){return this.screen.window}},{key:"fetch",get:function(){return this.screen.fetch}},{key:"ctx",get:function(){return this.screen.ctx}},{key:"emSize",get:function(){var t=this.emSizeStack;return t[t.length-1]},set:function(t){this.emSizeStack.push(t)}}]),t}();function Ff(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function zf(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?Ff(Object(r),!0).forEach((function(e){Ro(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Ff(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}jf.createCanvas=function(t,e){var r=document.createElement("canvas");return r.width=t,r.height=e,r},jf.createImage=function(t){return Df.apply(this,arguments)},jf.elementTypes=Lf;var Uf=function(){function t(e,r){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};Po(this,t),this.parser=new ou(n),this.screen=new ru(e,n),this.options=n;var i=new jf(this,n),o=i.createDocumentElement(r);this.document=i,this.documentElement=o}var e,r;return Eo(t,[{key:"fork",value:function(e,r){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return t.from(e,r,zf(zf({},this.options),n))}},{key:"forkString",value:function(e,r){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return t.fromString(e,r,zf(zf({},this.options),n))}},{key:"ready",value:function(){return this.screen.ready()}},{key:"isReady",value:function(){return this.screen.isReady()}},{key:"render",value:(r=gn(dn.mark((function t(){var e,r=arguments;return dn.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e=r.length>0&&void 0!==r[0]?r[0]:{},this.start(zf({enableRedraw:!0,ignoreAnimation:!0,ignoreMouse:!0},e)),t.next=4,this.ready();case 4:this.stop();case 5:case"end":return t.stop()}}),t,this)}))),function(){return r.apply(this,arguments)})},{key:"start",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.documentElement,r=this.screen,n=this.options;r.start(e,zf(zf({enableRedraw:!0},n),t))}},{key:"stop",value:function(){this.screen.stop()}},{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this.documentElement.resize(t,e,r)}}],[{key:"from",value:(e=gn(dn.mark((function e(r,n){var i,o,a,u=arguments;return dn.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=u.length>2&&void 0!==u[2]?u[2]:{},o=new ou(i),e.next=4,o.parse(n);case 4:return a=e.sent,e.abrupt("return",new t(r,a,i));case 6:case"end":return e.stop()}}),e)}))),function(t,r){return e.apply(this,arguments)})},{key:"fromString",value:function(e,r){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=new ou(n),o=i.parseFromString(r);return new t(e,o,n)}}]),t}();t.AElement=El,t.AnimateColorElement=yl,t.AnimateElement=pl,t.AnimateTransformElement=gl,t.BoundingBox=Fs,t.CB1=bo,t.CB2=wo,t.CB3=So,t.CB4=Oo,t.Canvg=Uf,t.CircleElement=Nc,t.ClipPathElement=df,t.DefsElement=Gc,t.DescElement=Vf,t.Document=jf,t.Element=ps,t.EllipseElement=Ic,t.FeColorMatrixElement=sf,t.FeCompositeElement=kf,t.FeDropShadowElement=bf,t.FeGaussianBlurElement=Mf,t.FeMorphologyElement=Sf,t.FilterElement=mf,t.Font=js,t.FontElement=wl,t.FontFaceElement=Ol,t.GElement=qc,t.GlyphElement=bc,t.GradientElement=Qc,t.ImageElement=ql,t.LineElement=Lc,t.LinearGradientElement=Kc,t.MarkerElement=Xc,t.MaskElement=lf,t.Matrix=os,t.MissingGlyphElement=Tl,t.Mouse=Ja,t.PSEUDO_ZERO=yo,t.Parser=ou,t.PathElement=mc,t.PathParser=sc,t.PatternElement=Uc,t.Point=Ka,t.PolygonElement=Fc,t.PolylineElement=Dc,t.Property=Ua,t.QB1=ko,t.QB2=To,t.QB3=Ao,t.RadialGradientElement=tl,t.RectElement=Cc,t.RenderedElement=dc,t.Rotate=ns,t.SVGElement=Pc,t.SVGFontLoader=Zl,t.Scale=is,t.Screen=ru,t.Skew=us,t.SkewX=cs,t.SkewY=fs,t.StopElement=rl,t.StyleElement=Jl,t.SymbolElement=Ql,t.TRefElement=Rl,t.TSpanElement=kc,t.TextElement=Sc,t.TextPathElement=Yl,t.TitleElement=_f,t.Transform=hs,t.Translate=rs,t.UnknownElement=ys,t.UseElement=ef,t.ViewPort=Ha,t.compressSpaces=Ui,t.default=Uf,t.getSelectorSpecificity=vo,t.normalizeAttributeName=Wi,t.normalizeColor=$i,t.parseExternalUrl=qi,t.presets=mn,t.toNumbers=Yi,t.trimLeft=Hi,t.trimRight=Xi,t.vectorMagnitude=go,t.vectorsAngle=xo,t.vectorsRatio=mo,Object.defineProperty(t,"__esModule",{value:!0})}));
+//# sourceMappingURL=umd.js.map
diff --git a/node_modules/canvg/lib/umd.js.map b/node_modules/canvg/lib/umd.js.map
new file mode 100644
index 0000000..470c99c
--- /dev/null
+++ b/node_modules/canvg/lib/umd.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"umd.js","sources":["../node_modules/core-js/internals/global.js","../node_modules/core-js/internals/engine-v8-version.js","../node_modules/core-js/internals/set-global.js","../node_modules/core-js/internals/shared-store.js","../node_modules/core-js/internals/shared.js","../node_modules/core-js/internals/require-object-coercible.js","../node_modules/core-js/internals/to-object.js","../node_modules/core-js/internals/has-own-property.js","../node_modules/core-js/internals/uid.js","../node_modules/core-js/internals/is-callable.js","../node_modules/core-js/internals/get-built-in.js","../node_modules/core-js/internals/engine-user-agent.js","../node_modules/core-js/internals/fails.js","../node_modules/core-js/internals/native-symbol.js","../node_modules/core-js/internals/use-symbol-as-uid.js","../node_modules/core-js/internals/well-known-symbol.js","../node_modules/core-js/internals/to-string-tag-support.js","../node_modules/core-js/internals/descriptors.js","../node_modules/core-js/internals/is-object.js","../node_modules/core-js/internals/document-create-element.js","../node_modules/core-js/internals/ie8-dom-define.js","../node_modules/core-js/internals/an-object.js","../node_modules/core-js/internals/is-symbol.js","../node_modules/core-js/internals/try-to-string.js","../node_modules/core-js/internals/a-callable.js","../node_modules/core-js/internals/get-method.js","../node_modules/core-js/internals/to-primitive.js","../node_modules/core-js/internals/ordinary-to-primitive.js","../node_modules/core-js/internals/to-property-key.js","../node_modules/core-js/internals/object-define-property.js","../node_modules/core-js/internals/create-property-descriptor.js","../node_modules/core-js/internals/create-non-enumerable-property.js","../node_modules/core-js/internals/inspect-source.js","../node_modules/core-js/internals/internal-state.js","../node_modules/core-js/internals/native-weak-map.js","../node_modules/core-js/internals/shared-key.js","../node_modules/core-js/internals/hidden-keys.js","../node_modules/core-js/internals/function-name.js","../node_modules/core-js/internals/redefine.js","../node_modules/core-js/internals/classof-raw.js","../node_modules/core-js/internals/classof.js","../node_modules/core-js/internals/object-to-string.js","../node_modules/core-js/modules/es.object.to-string.js","../node_modules/core-js/internals/object-property-is-enumerable.js","../node_modules/core-js/internals/indexed-object.js","../node_modules/core-js/internals/to-indexed-object.js","../node_modules/core-js/internals/object-get-own-property-descriptor.js","../node_modules/core-js/internals/to-integer-or-infinity.js","../node_modules/core-js/internals/to-absolute-index.js","../node_modules/core-js/internals/to-length.js","../node_modules/core-js/internals/length-of-array-like.js","../node_modules/core-js/internals/array-includes.js","../node_modules/core-js/internals/object-keys-internal.js","../node_modules/core-js/internals/enum-bug-keys.js","../node_modules/core-js/internals/object-get-own-property-names.js","../node_modules/core-js/internals/object-get-own-property-symbols.js","../node_modules/core-js/internals/own-keys.js","../node_modules/core-js/internals/copy-constructor-properties.js","../node_modules/core-js/internals/is-forced.js","../node_modules/core-js/internals/export.js","../node_modules/core-js/internals/native-promise-constructor.js","../node_modules/core-js/internals/redefine-all.js","../node_modules/core-js/internals/object-set-prototype-of.js","../node_modules/core-js/internals/a-possible-prototype.js","../node_modules/core-js/internals/set-to-string-tag.js","../node_modules/core-js/internals/set-species.js","../node_modules/core-js/internals/an-instance.js","../node_modules/core-js/internals/iterators.js","../node_modules/core-js/internals/is-array-iterator-method.js","../node_modules/core-js/internals/function-bind-context.js","../node_modules/core-js/internals/get-iterator-method.js","../node_modules/core-js/internals/get-iterator.js","../node_modules/core-js/internals/iterator-close.js","../node_modules/core-js/internals/iterate.js","../node_modules/core-js/internals/check-correctness-of-iteration.js","../node_modules/core-js/internals/task.js","../node_modules/core-js/internals/is-constructor.js","../node_modules/core-js/internals/species-constructor.js","../node_modules/core-js/internals/a-constructor.js","../node_modules/core-js/internals/html.js","../node_modules/core-js/internals/engine-is-ios.js","../node_modules/core-js/internals/engine-is-node.js","../node_modules/core-js/internals/microtask.js","../node_modules/core-js/internals/engine-is-ios-pebble.js","../node_modules/core-js/internals/engine-is-webos-webkit.js","../node_modules/core-js/modules/es.promise.js","../node_modules/core-js/internals/new-promise-capability.js","../node_modules/core-js/internals/perform.js","../node_modules/core-js/internals/engine-is-browser.js","../node_modules/core-js/internals/host-report-errors.js","../node_modules/core-js/internals/promise-resolve.js","../node_modules/core-js/modules/es.reflect.delete-property.js","../node_modules/regenerator-runtime/runtime.js","../node_modules/@babel/runtime/helpers/asyncToGenerator.js","../node_modules/core-js/internals/is-array.js","../node_modules/core-js/internals/array-species-constructor.js","../node_modules/core-js/internals/array-species-create.js","../node_modules/core-js/internals/array-iteration.js","../node_modules/core-js/internals/array-method-has-species-support.js","../node_modules/core-js/modules/es.array.map.js","../node_modules/core-js/internals/to-string.js","../node_modules/core-js/internals/whitespaces.js","../node_modules/core-js/internals/string-trim.js","../node_modules/core-js/internals/number-parse-float.js","../node_modules/core-js/modules/es.parse-float.js","../node_modules/core-js/internals/regexp-flags.js","../node_modules/core-js/internals/object-create.js","../node_modules/core-js/internals/regexp-sticky-helpers.js","../node_modules/core-js/internals/object-keys.js","../node_modules/core-js/internals/object-define-properties.js","../node_modules/core-js/internals/regexp-exec.js","../node_modules/core-js/internals/regexp-unsupported-dot-all.js","../node_modules/core-js/internals/regexp-unsupported-ncg.js","../node_modules/core-js/modules/es.regexp.exec.js","../node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","../node_modules/core-js/internals/string-multibyte.js","../node_modules/core-js/internals/advance-string-index.js","../node_modules/core-js/internals/regexp-exec-abstract.js","../node_modules/core-js/modules/es.string.match.js","../node_modules/core-js/internals/get-substitution.js","../node_modules/core-js/modules/es.string.replace.js","../node_modules/core-js/internals/is-regexp.js","../node_modules/core-js/modules/es.string.starts-with.js","../node_modules/core-js/internals/not-a-regexp.js","../node_modules/core-js/internals/correct-is-regexp-logic.js","../node_modules/core-js/internals/array-method-is-strict.js","../node_modules/core-js/modules/es.array.join.js","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/core-js/internals/create-property.js","../node_modules/core-js/modules/es.array.concat.js","../node_modules/core-js/modules/es.array.every.js","../node_modules/core-js/internals/array-reduce.js","../node_modules/core-js/modules/es.array.reduce.js","../node_modules/core-js/modules/es.string.ends-with.js","../node_modules/core-js/modules/es.string.split.js","../node_modules/rollup-plugin-node-globals/src/global.js","../node_modules/process-es6/browser.js","../node_modules/raf/index.js","../node_modules/performance-now/lib/performance-now.js","../node_modules/core-js/modules/es.function.name.js","../node_modules/core-js/internals/string-trim-forced.js","../node_modules/core-js/modules/es.string.trim.js","../node_modules/rgbcolor/index.js","../node_modules/core-js/internals/array-for-each.js","../node_modules/core-js/modules/es.array.for-each.js","../node_modules/core-js/internals/dom-iterables.js","../node_modules/core-js/internals/dom-token-list-prototype.js","../node_modules/core-js/modules/web.dom-collections.for-each.js","../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/inherits.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../node_modules/core-js/internals/call-with-safe-iteration-closing.js","../node_modules/core-js/modules/es.array.from.js","../node_modules/core-js/internals/array-from.js","../node_modules/core-js/internals/add-to-unscopables.js","../node_modules/core-js/modules/es.array.includes.js","../node_modules/core-js/modules/es.array.index-of.js","../node_modules/core-js/modules/es.array.some.js","../node_modules/core-js/modules/es.string.includes.js","../node_modules/core-js/internals/correct-prototype-getter.js","../node_modules/core-js/internals/iterators-core.js","../node_modules/core-js/internals/object-get-prototype-of.js","../node_modules/core-js/internals/create-iterator-constructor.js","../node_modules/core-js/internals/define-iterator.js","../node_modules/core-js/modules/es.string.iterator.js","../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/iterableToArray.js","../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/toConsumableArray.js","../node_modules/core-js/modules/es.array.reverse.js","../node_modules/core-js/internals/inherit-if-required.js","../node_modules/core-js/internals/this-number-value.js","../node_modules/core-js/modules/es.number.constructor.js","../node_modules/@babel/runtime/helpers/superPropBase.js","../node_modules/@babel/runtime/helpers/get.js","../node_modules/core-js/modules/es.array.fill.js","../node_modules/core-js/internals/array-fill.js","../node_modules/svg-pathdata/lib/SVGPathData.module.js","../node_modules/core-js/modules/es.regexp.to-string.js","../node_modules/core-js/modules/es.array.iterator.js","../node_modules/core-js/modules/web.dom-collections.iterator.js","../node_modules/core-js/internals/object-get-own-property-names-external.js","../node_modules/core-js/internals/freezing.js","../node_modules/core-js/internals/internal-metadata.js","../node_modules/core-js/internals/collection-strong.js","../node_modules/core-js/internals/collection.js","../node_modules/core-js/modules/es.map.js","../node_modules/core-js/modules/es.reflect.apply.js","../node_modules/core-js/modules/es.reflect.get-prototype-of.js","../node_modules/stackblur-canvas/dist/stackblur-es.js"],"sourcesContent":["var check = function (it) {\n  return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line es/no-global-this -- safe\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  // eslint-disable-next-line no-restricted-globals -- safe\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  // eslint-disable-next-line no-new-func -- fallback\n  (function () { return this; })() || Function('return this')();\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  version = match[0] < 4 ? 1 : match[0] + match[1];\n} else if (userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = match[1];\n  }\n}\n\nmodule.exports = version && +version;\n","var global = require('../internals/global');\n\nmodule.exports = function (key, value) {\n  try {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty(global, key, { value: value, configurable: true, writable: true });\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: '3.18.2',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n  return it;\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return Object(requireObjectCoercible(argument));\n};\n","var toObject = require('../internals/to-object');\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n  return hasOwnProperty.call(toObject(it), key);\n};\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n  return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n  return typeof argument === 'function';\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n  return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  var symbol = Symbol();\n  // Chrome 38 Symbol has incorrect toString conversion\n  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n  return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n    !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n  && !Symbol.sham\n  && typeof Symbol.iterator == 'symbol';\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n    if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n      WellKnownSymbolsStore[name] = Symbol[name];\n    } else {\n      WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n    }\n  } return WellKnownSymbolsStore[name];\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n  return typeof it === 'object' ? it !== null : isCallable(it);\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- requied for testing\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a != 7;\n});\n","var isObject = require('../internals/is-object');\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n  if (isObject(argument)) return argument;\n  throw TypeError(String(argument) + ' is not an object');\n};\n","var isCallable = require('../internals/is-callable');\nvar getBuiltIn = require('../internals/get-built-in');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  var $Symbol = getBuiltIn('Symbol');\n  return isCallable($Symbol) && Object(it) instanceof $Symbol;\n};\n","module.exports = function (argument) {\n  try {\n    return String(argument);\n  } catch (error) {\n    return 'Object';\n  }\n};\n","var isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n  if (isCallable(argument)) return argument;\n  throw TypeError(tryToString(argument) + ' is not a function');\n};\n","var aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n  var func = V[P];\n  return func == null ? undefined : aCallable(func);\n};\n","var isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n  if (!isObject(input) || isSymbol(input)) return input;\n  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n  var result;\n  if (exoticToPrim) {\n    if (pref === undefined) pref = 'default';\n    result = exoticToPrim.call(input, pref);\n    if (!isObject(result) || isSymbol(result)) return result;\n    throw TypeError(\"Can't convert object to primitive value\");\n  }\n  if (pref === undefined) pref = 'number';\n  return ordinaryToPrimitive(input, pref);\n};\n","var isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n  var fn, val;\n  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = fn.call(input))) return val;\n  if (isCallable(fn = input.valueOf) && !isObject(val = fn.call(input))) return val;\n  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = fn.call(input))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n  var key = toPrimitive(argument, 'string');\n  return isSymbol(key) ? key : String(key);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return $defineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","var isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n  store.inspectSource = function (it) {\n    return functionToString.call(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n  var store = shared.state || (shared.state = new WeakMap());\n  var wmget = store.get;\n  var wmhas = store.has;\n  var wmset = store.set;\n  set = function (it, metadata) {\n    if (wmhas.call(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    wmset.call(store, it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return wmget.call(store, it) || {};\n  };\n  has = function (it) {\n    return wmhas.call(store, it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return hasOwn(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return hasOwn(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n","module.exports = {};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n  EXISTS: EXISTS,\n  PROPER: PROPER,\n  CONFIGURABLE: CONFIGURABLE\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n  var unsafe = options ? !!options.unsafe : false;\n  var simple = options ? !!options.enumerable : false;\n  var noTargetGet = options ? !!options.noTargetGet : false;\n  var name = options && options.name !== undefined ? options.name : key;\n  var state;\n  if (isCallable(value)) {\n    if (String(name).slice(0, 7) === 'Symbol(') {\n      name = '[' + String(name).replace(/^Symbol\\(([^)]*)\\)/, '$1') + ']';\n    }\n    if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n      createNonEnumerableProperty(value, 'name', name);\n    }\n    state = enforceInternalState(value);\n    if (!state.source) {\n      state.source = TEMPLATE.join(typeof name == 'string' ? name : '');\n    }\n  }\n  if (O === global) {\n    if (simple) O[key] = value;\n    else setGlobal(key, value);\n    return;\n  } else if (!unsafe) {\n    delete O[key];\n  } else if (!noTargetGet && O[key]) {\n    simple = true;\n  }\n  if (simple) O[key] = value;\n  else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n  return isCallable(this) && getInternalState(this).source || inspectSource(this);\n});\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n  var O, tag, result;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n    // builtinTag case\n    : CORRECT_ARGUMENTS ? classofRaw(O)\n    // ES3 arguments fallback\n    : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n  return '[object ' + classof(this) + ']';\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n  redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPropertyKey(P);\n  if (IE8_DOM_DEFINE) try {\n    return $getOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (hasOwn(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n  var number = +argument;\n  // eslint-disable-next-line no-self-compare -- safe\n  return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n  var integer = toIntegerOrInfinity(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n  return toLength(obj.length);\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = lengthOfArrayLike(O);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare -- NaN check\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.es/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.es/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n","var hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (hasOwn(O, key = names[i++])) {\n    ~indexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n  var keys = ownKeys(source);\n  var defineProperty = definePropertyModule.f;\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (!hasOwn(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n  }\n};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value == POLYFILL ? true\n    : value == NATIVE ? false\n    : isCallable(detection) ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n  options.target      - name of the target object\n  options.global      - target is the global object\n  options.stat        - export as static methods of target\n  options.proto       - export as prototype methods of target\n  options.real        - real prototype method for the `pure` version\n  options.forced      - export even if the native feature is available\n  options.bind        - bind methods to the target, required for the `pure` version\n  options.wrap        - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe      - use the simple assignment of property instead of delete + defineProperty\n  options.sham        - add a flag to not completely full polyfills\n  options.enumerable  - export as enumerable property\n  options.noTargetGet - prevent calling a getter on target\n  options.name        - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n  if (GLOBAL) {\n    target = global;\n  } else if (STATIC) {\n    target = global[TARGET] || setGlobal(TARGET, {});\n  } else {\n    target = (global[TARGET] || {}).prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.noTargetGet) {\n      descriptor = getOwnPropertyDescriptor(target, key);\n      targetProperty = descriptor && descriptor.value;\n    } else targetProperty = target[key];\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contained in target\n    if (!FORCED && targetProperty !== undefined) {\n      if (typeof sourceProperty === typeof targetProperty) continue;\n      copyConstructorProperties(sourceProperty, targetProperty);\n    }\n    // add a flag to not completely full polyfills\n    if (options.sham || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\n    }\n    // extend global\n    redefine(target, key, sourceProperty, options);\n  }\n};\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n  for (var key in src) redefine(target, key, src[key], options);\n  return target;\n};\n","/* eslint-disable no-proto -- safe */\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n  var CORRECT_SETTER = false;\n  var test = {};\n  var setter;\n  try {\n    // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n    setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n    setter.call(test, []);\n    CORRECT_SETTER = test instanceof Array;\n  } catch (error) { /* empty */ }\n  return function setPrototypeOf(O, proto) {\n    anObject(O);\n    aPossiblePrototype(proto);\n    if (CORRECT_SETTER) setter.call(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (argument) {\n  if (typeof argument === 'object' || isCallable(argument)) return argument;\n  throw TypeError(\"Can't set \" + String(argument) + ' as a prototype');\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n  if (it && !hasOwn(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n    defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n  }\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n  var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n  var defineProperty = definePropertyModule.f;\n\n  if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n    defineProperty(Constructor, SPECIES, {\n      configurable: true,\n      get: function () { return this; }\n    });\n  }\n};\n","module.exports = function (it, Constructor, name) {\n  if (it instanceof Constructor) return it;\n  throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n};\n","module.exports = {};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var aCallable = require('../internals/a-callable');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n  aCallable(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 0: return function () {\n      return fn.call(that);\n    };\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","var classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n  if (it != undefined) return getMethod(it, ITERATOR)\n    || getMethod(it, '@@iterator')\n    || Iterators[classof(it)];\n};\n","var aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = function (argument, usingIterator) {\n  var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n  if (aCallable(iteratorMethod)) return anObject(iteratorMethod.call(argument));\n  throw TypeError(String(argument) + ' is not iterable');\n};\n","var anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n  var innerResult, innerError;\n  anObject(iterator);\n  try {\n    innerResult = getMethod(iterator, 'return');\n    if (!innerResult) {\n      if (kind === 'throw') throw value;\n      return value;\n    }\n    innerResult = innerResult.call(iterator);\n  } catch (error) {\n    innerError = true;\n    innerResult = error;\n  }\n  if (kind === 'throw') throw value;\n  if (innerError) throw innerResult;\n  anObject(innerResult);\n  return value;\n};\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar bind = require('../internals/function-bind-context');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar Result = function (stopped, result) {\n  this.stopped = stopped;\n  this.result = result;\n};\n\nmodule.exports = function (iterable, unboundFunction, options) {\n  var that = options && options.that;\n  var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n  var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n  var INTERRUPTED = !!(options && options.INTERRUPTED);\n  var fn = bind(unboundFunction, that, 1 + AS_ENTRIES + INTERRUPTED);\n  var iterator, iterFn, index, length, result, next, step;\n\n  var stop = function (condition) {\n    if (iterator) iteratorClose(iterator, 'normal', condition);\n    return new Result(true, condition);\n  };\n\n  var callFn = function (value) {\n    if (AS_ENTRIES) {\n      anObject(value);\n      return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n    } return INTERRUPTED ? fn(value, stop) : fn(value);\n  };\n\n  if (IS_ITERATOR) {\n    iterator = iterable;\n  } else {\n    iterFn = getIteratorMethod(iterable);\n    if (!iterFn) throw TypeError(String(iterable) + ' is not iterable');\n    // optimisation for array iterators\n    if (isArrayIteratorMethod(iterFn)) {\n      for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n        result = callFn(iterable[index]);\n        if (result && result instanceof Result) return result;\n      } return new Result(false);\n    }\n    iterator = getIterator(iterable, iterFn);\n  }\n\n  next = iterator.next;\n  while (!(step = next.call(iterator)).done) {\n    try {\n      result = callFn(step.value);\n    } catch (error) {\n      iteratorClose(iterator, 'throw', error);\n    }\n    if (typeof result == 'object' && result && result instanceof Result) return result;\n  } return new Result(false);\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var called = 0;\n  var iteratorWithReturn = {\n    next: function () {\n      return { done: !!called++ };\n    },\n    'return': function () {\n      SAFE_CLOSING = true;\n    }\n  };\n  iteratorWithReturn[ITERATOR] = function () {\n    return this;\n  };\n  // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n  Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n  if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n  var ITERATION_SUPPORT = false;\n  try {\n    var object = {};\n    object[ITERATOR] = function () {\n      return {\n        next: function () {\n          return { done: ITERATION_SUPPORT = true };\n        }\n      };\n    };\n    exec(object);\n  } catch (error) { /* empty */ }\n  return ITERATION_SUPPORT;\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar fails = require('../internals/fails');\nvar bind = require('../internals/function-bind-context');\nvar html = require('../internals/html');\nvar createElement = require('../internals/document-create-element');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar location, defer, channel, port;\n\ntry {\n  // Deno throws a ReferenceError on `location` access without `--location` flag\n  location = global.location;\n} catch (error) { /* empty */ }\n\nvar run = function (id) {\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  if (queue.hasOwnProperty(id)) {\n    var fn = queue[id];\n    delete queue[id];\n    fn();\n  }\n};\n\nvar runner = function (id) {\n  return function () {\n    run(id);\n  };\n};\n\nvar listener = function (event) {\n  run(event.data);\n};\n\nvar post = function (id) {\n  // old engines have not location.origin\n  global.postMessage(String(id), location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n  set = function setImmediate(fn) {\n    var args = [];\n    var argumentsLength = arguments.length;\n    var i = 1;\n    while (argumentsLength > i) args.push(arguments[i++]);\n    queue[++counter] = function () {\n      // eslint-disable-next-line no-new-func -- spec requirement\n      (isCallable(fn) ? fn : Function(fn)).apply(undefined, args);\n    };\n    defer(counter);\n    return counter;\n  };\n  clear = function clearImmediate(id) {\n    delete queue[id];\n  };\n  // Node.js 0.8-\n  if (IS_NODE) {\n    defer = function (id) {\n      process.nextTick(runner(id));\n    };\n  // Sphere (JS game engine) Dispatch API\n  } else if (Dispatch && Dispatch.now) {\n    defer = function (id) {\n      Dispatch.now(runner(id));\n    };\n  // Browsers with MessageChannel, includes WebWorkers\n  // except iOS - https://github.com/zloirock/core-js/issues/624\n  } else if (MessageChannel && !IS_IOS) {\n    channel = new MessageChannel();\n    port = channel.port2;\n    channel.port1.onmessage = listener;\n    defer = bind(port.postMessage, port, 1);\n  // Browsers with postMessage, skip WebWorkers\n  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n  } else if (\n    global.addEventListener &&\n    isCallable(global.postMessage) &&\n    !global.importScripts &&\n    location && location.protocol !== 'file:' &&\n    !fails(post)\n  ) {\n    defer = post;\n    global.addEventListener('message', listener, false);\n  // IE8-\n  } else if (ONREADYSTATECHANGE in createElement('script')) {\n    defer = function (id) {\n      html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n        html.removeChild(this);\n        run(id);\n      };\n    };\n  // Rest old browsers\n  } else {\n    defer = function (id) {\n      setTimeout(runner(id), 0);\n    };\n  }\n}\n\nmodule.exports = {\n  set: set,\n  clear: clear\n};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = constructorRegExp.exec;\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(function () { /* empty */ });\n\nvar isConstructorModern = function (argument) {\n  if (!isCallable(argument)) return false;\n  try {\n    construct(Object, empty, argument);\n    return true;\n  } catch (error) {\n    return false;\n  }\n};\n\nvar isConstructorLegacy = function (argument) {\n  if (!isCallable(argument)) return false;\n  switch (classof(argument)) {\n    case 'AsyncFunction':\n    case 'GeneratorFunction':\n    case 'AsyncGeneratorFunction': return false;\n    // we can't check .prototype since constructors produced by .bind haven't it\n  } return INCORRECT_TO_STRING || !!exec.call(constructorRegExp, inspectSource(argument));\n};\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n  var called;\n  return isConstructorModern(isConstructorModern.call)\n    || !isConstructorModern(Object)\n    || !isConstructorModern(function () { called = true; })\n    || called;\n}) ? isConstructorLegacy : isConstructorModern;\n","var anObject = require('../internals/an-object');\nvar aConstructor = require('../internals/a-constructor');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aConstructor(S);\n};\n","var isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n  if (isConstructor(argument)) return argument;\n  throw TypeError(tryToString(argument) + ' is not a constructor');\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_IOS_PEBBLE = require('../internals/engine-is-ios-pebble');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n  flush = function () {\n    var parent, fn;\n    if (IS_NODE && (parent = process.domain)) parent.exit();\n    while (head) {\n      fn = head.fn;\n      head = head.next;\n      try {\n        fn();\n      } catch (error) {\n        if (head) notify();\n        else last = undefined;\n        throw error;\n      }\n    } last = undefined;\n    if (parent) parent.enter();\n  };\n\n  // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n  // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n  if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n    toggle = true;\n    node = document.createTextNode('');\n    new MutationObserver(flush).observe(node, { characterData: true });\n    notify = function () {\n      node.data = toggle = !toggle;\n    };\n  // environments with maybe non-completely correct, but existent Promise\n  } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n    // Promise.resolve without an argument throws an error in LG WebOS 2\n    promise = Promise.resolve(undefined);\n    // workaround of WebKit ~ iOS Safari 10.1 bug\n    promise.constructor = Promise;\n    then = promise.then;\n    notify = function () {\n      then.call(promise, flush);\n    };\n  // Node.js without promises\n  } else if (IS_NODE) {\n    notify = function () {\n      process.nextTick(flush);\n    };\n  // for other environments - macrotask based on:\n  // - setImmediate\n  // - MessageChannel\n  // - window.postMessag\n  // - onreadystatechange\n  // - setTimeout\n  } else {\n    notify = function () {\n      // strange IE + webpack dev server bug - use .call(global)\n      macrotask.call(global, flush);\n    };\n  }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n  var task = { fn: fn, next: undefined };\n  if (last) last.next = task;\n  if (!head) {\n    head = task;\n    notify();\n  } last = task;\n};\n","var userAgent = require('../internals/engine-user-agent');\nvar global = require('../internals/global');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && global.Pebble !== undefined;\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar aCallable = require('../internals/a-callable');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_NODE = require('../internals/engine-is-node');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar NativePromisePrototype = NativePromise && NativePromise.prototype;\nvar PromiseConstructor = NativePromise;\nvar PromiseConstructorPrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar NATIVE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar SUBCLASSING = false;\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n  var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(PromiseConstructor);\n  var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(PromiseConstructor);\n  // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n  // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n  // We can't detect it synchronously, so just check versions\n  if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n  // We need Promise#finally in the pure version for preventing prototype pollution\n  if (IS_PURE && !PromiseConstructorPrototype['finally']) return true;\n  // We can't use @@species feature detection in V8 since it causes\n  // deoptimization and performance degradation\n  // https://github.com/zloirock/core-js/issues/679\n  if (V8_VERSION >= 51 && /native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) return false;\n  // Detect correctness of subclassing with @@species support\n  var promise = new PromiseConstructor(function (resolve) { resolve(1); });\n  var FakePromise = function (exec) {\n    exec(function () { /* empty */ }, function () { /* empty */ });\n  };\n  var constructor = promise.constructor = {};\n  constructor[SPECIES] = FakePromise;\n  SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n  if (!SUBCLASSING) return true;\n  // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n  return !GLOBAL_CORE_JS_PROMISE && IS_BROWSER && !NATIVE_REJECTION_EVENT;\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n  PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n  var then;\n  return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar notify = function (state, isReject) {\n  if (state.notified) return;\n  state.notified = true;\n  var chain = state.reactions;\n  microtask(function () {\n    var value = state.value;\n    var ok = state.state == FULFILLED;\n    var index = 0;\n    // variable length - can't use forEach\n    while (chain.length > index) {\n      var reaction = chain[index++];\n      var handler = ok ? reaction.ok : reaction.fail;\n      var resolve = reaction.resolve;\n      var reject = reaction.reject;\n      var domain = reaction.domain;\n      var result, then, exited;\n      try {\n        if (handler) {\n          if (!ok) {\n            if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n            state.rejection = HANDLED;\n          }\n          if (handler === true) result = value;\n          else {\n            if (domain) domain.enter();\n            result = handler(value); // can throw\n            if (domain) {\n              domain.exit();\n              exited = true;\n            }\n          }\n          if (result === reaction.promise) {\n            reject(TypeError('Promise-chain cycle'));\n          } else if (then = isThenable(result)) {\n            then.call(result, resolve, reject);\n          } else resolve(result);\n        } else reject(value);\n      } catch (error) {\n        if (domain && !exited) domain.exit();\n        reject(error);\n      }\n    }\n    state.reactions = [];\n    state.notified = false;\n    if (isReject && !state.rejection) onUnhandled(state);\n  });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n  var event, handler;\n  if (DISPATCH_EVENT) {\n    event = document.createEvent('Event');\n    event.promise = promise;\n    event.reason = reason;\n    event.initEvent(name, false, true);\n    global.dispatchEvent(event);\n  } else event = { promise: promise, reason: reason };\n  if (!NATIVE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n  else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n  task.call(global, function () {\n    var promise = state.facade;\n    var value = state.value;\n    var IS_UNHANDLED = isUnhandled(state);\n    var result;\n    if (IS_UNHANDLED) {\n      result = perform(function () {\n        if (IS_NODE) {\n          process.emit('unhandledRejection', value, promise);\n        } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n      });\n      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n      state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n      if (result.error) throw result.value;\n    }\n  });\n};\n\nvar isUnhandled = function (state) {\n  return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n  task.call(global, function () {\n    var promise = state.facade;\n    if (IS_NODE) {\n      process.emit('rejectionHandled', promise);\n    } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n  });\n};\n\nvar bind = function (fn, state, unwrap) {\n  return function (value) {\n    fn(state, value, unwrap);\n  };\n};\n\nvar internalReject = function (state, value, unwrap) {\n  if (state.done) return;\n  state.done = true;\n  if (unwrap) state = unwrap;\n  state.value = value;\n  state.state = REJECTED;\n  notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n  if (state.done) return;\n  state.done = true;\n  if (unwrap) state = unwrap;\n  try {\n    if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n    var then = isThenable(value);\n    if (then) {\n      microtask(function () {\n        var wrapper = { done: false };\n        try {\n          then.call(value,\n            bind(internalResolve, wrapper, state),\n            bind(internalReject, wrapper, state)\n          );\n        } catch (error) {\n          internalReject(wrapper, error, state);\n        }\n      });\n    } else {\n      state.value = value;\n      state.state = FULFILLED;\n      notify(state, false);\n    }\n  } catch (error) {\n    internalReject({ done: false }, error, state);\n  }\n};\n\n// constructor polyfill\nif (FORCED) {\n  // 25.4.3.1 Promise(executor)\n  PromiseConstructor = function Promise(executor) {\n    anInstance(this, PromiseConstructor, PROMISE);\n    aCallable(executor);\n    Internal.call(this);\n    var state = getInternalState(this);\n    try {\n      executor(bind(internalResolve, state), bind(internalReject, state));\n    } catch (error) {\n      internalReject(state, error);\n    }\n  };\n  PromiseConstructorPrototype = PromiseConstructor.prototype;\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  Internal = function Promise(executor) {\n    setInternalState(this, {\n      type: PROMISE,\n      done: false,\n      notified: false,\n      parent: false,\n      reactions: [],\n      rejection: false,\n      state: PENDING,\n      value: undefined\n    });\n  };\n  Internal.prototype = redefineAll(PromiseConstructorPrototype, {\n    // `Promise.prototype.then` method\n    // https://tc39.es/ecma262/#sec-promise.prototype.then\n    then: function then(onFulfilled, onRejected) {\n      var state = getInternalPromiseState(this);\n      var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n      reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n      reaction.fail = isCallable(onRejected) && onRejected;\n      reaction.domain = IS_NODE ? process.domain : undefined;\n      state.parent = true;\n      state.reactions.push(reaction);\n      if (state.state != PENDING) notify(state, false);\n      return reaction.promise;\n    },\n    // `Promise.prototype.catch` method\n    // https://tc39.es/ecma262/#sec-promise.prototype.catch\n    'catch': function (onRejected) {\n      return this.then(undefined, onRejected);\n    }\n  });\n  OwnPromiseCapability = function () {\n    var promise = new Internal();\n    var state = getInternalState(promise);\n    this.promise = promise;\n    this.resolve = bind(internalResolve, state);\n    this.reject = bind(internalReject, state);\n  };\n  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n    return C === PromiseConstructor || C === PromiseWrapper\n      ? new OwnPromiseCapability(C)\n      : newGenericPromiseCapability(C);\n  };\n\n  if (!IS_PURE && isCallable(NativePromise) && NativePromisePrototype !== Object.prototype) {\n    nativeThen = NativePromisePrototype.then;\n\n    if (!SUBCLASSING) {\n      // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n      redefine(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n        var that = this;\n        return new PromiseConstructor(function (resolve, reject) {\n          nativeThen.call(that, resolve, reject);\n        }).then(onFulfilled, onRejected);\n      // https://github.com/zloirock/core-js/issues/640\n      }, { unsafe: true });\n\n      // makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\n      redefine(NativePromisePrototype, 'catch', PromiseConstructorPrototype['catch'], { unsafe: true });\n    }\n\n    // make `.constructor === Promise` work for native promise-based APIs\n    try {\n      delete NativePromisePrototype.constructor;\n    } catch (error) { /* empty */ }\n\n    // make `instanceof Promise` work for native promise-based APIs\n    if (setPrototypeOf) {\n      setPrototypeOf(NativePromisePrototype, PromiseConstructorPrototype);\n    }\n  }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n  Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n  // `Promise.reject` method\n  // https://tc39.es/ecma262/#sec-promise.reject\n  reject: function reject(r) {\n    var capability = newPromiseCapability(this);\n    capability.reject.call(undefined, r);\n    return capability.promise;\n  }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n  // `Promise.resolve` method\n  // https://tc39.es/ecma262/#sec-promise.resolve\n  resolve: function resolve(x) {\n    return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n  }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n  // `Promise.all` method\n  // https://tc39.es/ecma262/#sec-promise.all\n  all: function all(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var $promiseResolve = aCallable(C.resolve);\n      var values = [];\n      var counter = 0;\n      var remaining = 1;\n      iterate(iterable, function (promise) {\n        var index = counter++;\n        var alreadyCalled = false;\n        values.push(undefined);\n        remaining++;\n        $promiseResolve.call(C, promise).then(function (value) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[index] = value;\n          --remaining || resolve(values);\n        }, reject);\n      });\n      --remaining || resolve(values);\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  },\n  // `Promise.race` method\n  // https://tc39.es/ecma262/#sec-promise.race\n  race: function race(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(C);\n    var reject = capability.reject;\n    var result = perform(function () {\n      var $promiseResolve = aCallable(C.resolve);\n      iterate(iterable, function (promise) {\n        $promiseResolve.call(C, promise).then(capability.resolve, reject);\n      });\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n","'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar PromiseCapability = function (C) {\n  var resolve, reject;\n  this.promise = new C(function ($$resolve, $$reject) {\n    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n    resolve = $$resolve;\n    reject = $$reject;\n  });\n  this.resolve = aCallable(resolve);\n  this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n  return new PromiseCapability(C);\n};\n","module.exports = function (exec) {\n  try {\n    return { error: false, value: exec() };\n  } catch (error) {\n    return { error: true, value: error };\n  }\n};\n","module.exports = typeof window == 'object';\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n  var console = global.console;\n  if (console && console.error) {\n    arguments.length === 1 ? console.error(a) : console.error(a, b);\n  }\n};\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n  anObject(C);\n  if (isObject(x) && x.constructor === C) return x;\n  var promiseCapability = newPromiseCapability.f(C);\n  var resolve = promiseCapability.resolve;\n  resolve(x);\n  return promiseCapability.promise;\n};\n","var $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\n\n// `Reflect.deleteProperty` method\n// https://tc39.es/ecma262/#sec-reflect.deleteproperty\n$({ target: 'Reflect', stat: true }, {\n  deleteProperty: function deleteProperty(target, propertyKey) {\n    var descriptor = getOwnPropertyDescriptor(anObject(target), propertyKey);\n    return descriptor && !descriptor.configurable ? false : delete target[propertyKey];\n  }\n});\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n  \"use strict\";\n\n  var Op = Object.prototype;\n  var hasOwn = Op.hasOwnProperty;\n  var undefined; // More compressible than void 0.\n  var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n  var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n  var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n  var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n  function define(obj, key, value) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n    return obj[key];\n  }\n  try {\n    // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n    define({}, \"\");\n  } catch (err) {\n    define = function(obj, key, value) {\n      return obj[key] = value;\n    };\n  }\n\n  function wrap(innerFn, outerFn, self, tryLocsList) {\n    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n    var generator = Object.create(protoGenerator.prototype);\n    var context = new Context(tryLocsList || []);\n\n    // The ._invoke method unifies the implementations of the .next,\n    // .throw, and .return methods.\n    generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n    return generator;\n  }\n  exports.wrap = wrap;\n\n  // Try/catch helper to minimize deoptimizations. Returns a completion\n  // record like context.tryEntries[i].completion. This interface could\n  // have been (and was previously) designed to take a closure to be\n  // invoked without arguments, but in all the cases we care about we\n  // already have an existing method we want to call, so there's no need\n  // to create a new function object. We can even get away with assuming\n  // the method takes exactly one argument, since that happens to be true\n  // in every case, so we don't have to touch the arguments object. The\n  // only additional allocation required is the completion record, which\n  // has a stable shape and so hopefully should be cheap to allocate.\n  function tryCatch(fn, obj, arg) {\n    try {\n      return { type: \"normal\", arg: fn.call(obj, arg) };\n    } catch (err) {\n      return { type: \"throw\", arg: err };\n    }\n  }\n\n  var GenStateSuspendedStart = \"suspendedStart\";\n  var GenStateSuspendedYield = \"suspendedYield\";\n  var GenStateExecuting = \"executing\";\n  var GenStateCompleted = \"completed\";\n\n  // Returning this object from the innerFn has the same effect as\n  // breaking out of the dispatch switch statement.\n  var ContinueSentinel = {};\n\n  // Dummy constructor functions that we use as the .constructor and\n  // .constructor.prototype properties for functions that return Generator\n  // objects. For full spec compliance, you may wish to configure your\n  // minifier not to mangle the names of these two functions.\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n\n  // This is a polyfill for %IteratorPrototype% for environments that\n  // don't natively support it.\n  var IteratorPrototype = {};\n  define(IteratorPrototype, iteratorSymbol, function () {\n    return this;\n  });\n\n  var getProto = Object.getPrototypeOf;\n  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n  if (NativeIteratorPrototype &&\n      NativeIteratorPrototype !== Op &&\n      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n    // This environment has a native %IteratorPrototype%; use it instead\n    // of the polyfill.\n    IteratorPrototype = NativeIteratorPrototype;\n  }\n\n  var Gp = GeneratorFunctionPrototype.prototype =\n    Generator.prototype = Object.create(IteratorPrototype);\n  GeneratorFunction.prototype = GeneratorFunctionPrototype;\n  define(Gp, \"constructor\", GeneratorFunctionPrototype);\n  define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n  GeneratorFunction.displayName = define(\n    GeneratorFunctionPrototype,\n    toStringTagSymbol,\n    \"GeneratorFunction\"\n  );\n\n  // Helper for defining the .next, .throw, and .return methods of the\n  // Iterator interface in terms of a single ._invoke method.\n  function defineIteratorMethods(prototype) {\n    [\"next\", \"throw\", \"return\"].forEach(function(method) {\n      define(prototype, method, function(arg) {\n        return this._invoke(method, arg);\n      });\n    });\n  }\n\n  exports.isGeneratorFunction = function(genFun) {\n    var ctor = typeof genFun === \"function\" && genFun.constructor;\n    return ctor\n      ? ctor === GeneratorFunction ||\n        // For the native GeneratorFunction constructor, the best we can\n        // do is to check its .name property.\n        (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n      : false;\n  };\n\n  exports.mark = function(genFun) {\n    if (Object.setPrototypeOf) {\n      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n    } else {\n      genFun.__proto__ = GeneratorFunctionPrototype;\n      define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n    }\n    genFun.prototype = Object.create(Gp);\n    return genFun;\n  };\n\n  // Within the body of any async function, `await x` is transformed to\n  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n  // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n  // meant to be awaited.\n  exports.awrap = function(arg) {\n    return { __await: arg };\n  };\n\n  function AsyncIterator(generator, PromiseImpl) {\n    function invoke(method, arg, resolve, reject) {\n      var record = tryCatch(generator[method], generator, arg);\n      if (record.type === \"throw\") {\n        reject(record.arg);\n      } else {\n        var result = record.arg;\n        var value = result.value;\n        if (value &&\n            typeof value === \"object\" &&\n            hasOwn.call(value, \"__await\")) {\n          return PromiseImpl.resolve(value.__await).then(function(value) {\n            invoke(\"next\", value, resolve, reject);\n          }, function(err) {\n            invoke(\"throw\", err, resolve, reject);\n          });\n        }\n\n        return PromiseImpl.resolve(value).then(function(unwrapped) {\n          // When a yielded Promise is resolved, its final value becomes\n          // the .value of the Promise<{value,done}> result for the\n          // current iteration.\n          result.value = unwrapped;\n          resolve(result);\n        }, function(error) {\n          // If a rejected Promise was yielded, throw the rejection back\n          // into the async generator function so it can be handled there.\n          return invoke(\"throw\", error, resolve, reject);\n        });\n      }\n    }\n\n    var previousPromise;\n\n    function enqueue(method, arg) {\n      function callInvokeWithMethodAndArg() {\n        return new PromiseImpl(function(resolve, reject) {\n          invoke(method, arg, resolve, reject);\n        });\n      }\n\n      return previousPromise =\n        // If enqueue has been called before, then we want to wait until\n        // all previous Promises have been resolved before calling invoke,\n        // so that results are always delivered in the correct order. If\n        // enqueue has not been called before, then it is important to\n        // call invoke immediately, without waiting on a callback to fire,\n        // so that the async generator function has the opportunity to do\n        // any necessary setup in a predictable way. This predictability\n        // is why the Promise constructor synchronously invokes its\n        // executor callback, and why async functions synchronously\n        // execute code before the first await. Since we implement simple\n        // async functions in terms of async generators, it is especially\n        // important to get this right, even though it requires care.\n        previousPromise ? previousPromise.then(\n          callInvokeWithMethodAndArg,\n          // Avoid propagating failures to Promises returned by later\n          // invocations of the iterator.\n          callInvokeWithMethodAndArg\n        ) : callInvokeWithMethodAndArg();\n    }\n\n    // Define the unified helper method that is used to implement .next,\n    // .throw, and .return (see defineIteratorMethods).\n    this._invoke = enqueue;\n  }\n\n  defineIteratorMethods(AsyncIterator.prototype);\n  define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n    return this;\n  });\n  exports.AsyncIterator = AsyncIterator;\n\n  // Note that simple async functions are implemented on top of\n  // AsyncIterator objects; they just return a Promise for the value of\n  // the final result produced by the iterator.\n  exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n    if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n    var iter = new AsyncIterator(\n      wrap(innerFn, outerFn, self, tryLocsList),\n      PromiseImpl\n    );\n\n    return exports.isGeneratorFunction(outerFn)\n      ? iter // If outerFn is a generator, return the full iterator.\n      : iter.next().then(function(result) {\n          return result.done ? result.value : iter.next();\n        });\n  };\n\n  function makeInvokeMethod(innerFn, self, context) {\n    var state = GenStateSuspendedStart;\n\n    return function invoke(method, arg) {\n      if (state === GenStateExecuting) {\n        throw new Error(\"Generator is already running\");\n      }\n\n      if (state === GenStateCompleted) {\n        if (method === \"throw\") {\n          throw arg;\n        }\n\n        // Be forgiving, per 25.3.3.3.3 of the spec:\n        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n        return doneResult();\n      }\n\n      context.method = method;\n      context.arg = arg;\n\n      while (true) {\n        var delegate = context.delegate;\n        if (delegate) {\n          var delegateResult = maybeInvokeDelegate(delegate, context);\n          if (delegateResult) {\n            if (delegateResult === ContinueSentinel) continue;\n            return delegateResult;\n          }\n        }\n\n        if (context.method === \"next\") {\n          // Setting context._sent for legacy support of Babel's\n          // function.sent implementation.\n          context.sent = context._sent = context.arg;\n\n        } else if (context.method === \"throw\") {\n          if (state === GenStateSuspendedStart) {\n            state = GenStateCompleted;\n            throw context.arg;\n          }\n\n          context.dispatchException(context.arg);\n\n        } else if (context.method === \"return\") {\n          context.abrupt(\"return\", context.arg);\n        }\n\n        state = GenStateExecuting;\n\n        var record = tryCatch(innerFn, self, context);\n        if (record.type === \"normal\") {\n          // If an exception is thrown from innerFn, we leave state ===\n          // GenStateExecuting and loop back for another invocation.\n          state = context.done\n            ? GenStateCompleted\n            : GenStateSuspendedYield;\n\n          if (record.arg === ContinueSentinel) {\n            continue;\n          }\n\n          return {\n            value: record.arg,\n            done: context.done\n          };\n\n        } else if (record.type === \"throw\") {\n          state = GenStateCompleted;\n          // Dispatch the exception by looping back around to the\n          // context.dispatchException(context.arg) call above.\n          context.method = \"throw\";\n          context.arg = record.arg;\n        }\n      }\n    };\n  }\n\n  // Call delegate.iterator[context.method](context.arg) and handle the\n  // result, either by returning a { value, done } result from the\n  // delegate iterator, or by modifying context.method and context.arg,\n  // setting context.delegate to null, and returning the ContinueSentinel.\n  function maybeInvokeDelegate(delegate, context) {\n    var method = delegate.iterator[context.method];\n    if (method === undefined) {\n      // A .throw or .return when the delegate iterator has no .throw\n      // method always terminates the yield* loop.\n      context.delegate = null;\n\n      if (context.method === \"throw\") {\n        // Note: [\"return\"] must be used for ES3 parsing compatibility.\n        if (delegate.iterator[\"return\"]) {\n          // If the delegate iterator has a return method, give it a\n          // chance to clean up.\n          context.method = \"return\";\n          context.arg = undefined;\n          maybeInvokeDelegate(delegate, context);\n\n          if (context.method === \"throw\") {\n            // If maybeInvokeDelegate(context) changed context.method from\n            // \"return\" to \"throw\", let that override the TypeError below.\n            return ContinueSentinel;\n          }\n        }\n\n        context.method = \"throw\";\n        context.arg = new TypeError(\n          \"The iterator does not provide a 'throw' method\");\n      }\n\n      return ContinueSentinel;\n    }\n\n    var record = tryCatch(method, delegate.iterator, context.arg);\n\n    if (record.type === \"throw\") {\n      context.method = \"throw\";\n      context.arg = record.arg;\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    var info = record.arg;\n\n    if (! info) {\n      context.method = \"throw\";\n      context.arg = new TypeError(\"iterator result is not an object\");\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    if (info.done) {\n      // Assign the result of the finished delegate to the temporary\n      // variable specified by delegate.resultName (see delegateYield).\n      context[delegate.resultName] = info.value;\n\n      // Resume execution at the desired location (see delegateYield).\n      context.next = delegate.nextLoc;\n\n      // If context.method was \"throw\" but the delegate handled the\n      // exception, let the outer generator proceed normally. If\n      // context.method was \"next\", forget context.arg since it has been\n      // \"consumed\" by the delegate iterator. If context.method was\n      // \"return\", allow the original .return call to continue in the\n      // outer generator.\n      if (context.method !== \"return\") {\n        context.method = \"next\";\n        context.arg = undefined;\n      }\n\n    } else {\n      // Re-yield the result returned by the delegate method.\n      return info;\n    }\n\n    // The delegate iterator is finished, so forget it and continue with\n    // the outer generator.\n    context.delegate = null;\n    return ContinueSentinel;\n  }\n\n  // Define Generator.prototype.{next,throw,return} in terms of the\n  // unified ._invoke helper method.\n  defineIteratorMethods(Gp);\n\n  define(Gp, toStringTagSymbol, \"Generator\");\n\n  // A Generator should always return itself as the iterator object when the\n  // @@iterator function is called on it. Some browsers' implementations of the\n  // iterator prototype chain incorrectly implement this, causing the Generator\n  // object to not be returned from this call. This ensures that doesn't happen.\n  // See https://github.com/facebook/regenerator/issues/274 for more details.\n  define(Gp, iteratorSymbol, function() {\n    return this;\n  });\n\n  define(Gp, \"toString\", function() {\n    return \"[object Generator]\";\n  });\n\n  function pushTryEntry(locs) {\n    var entry = { tryLoc: locs[0] };\n\n    if (1 in locs) {\n      entry.catchLoc = locs[1];\n    }\n\n    if (2 in locs) {\n      entry.finallyLoc = locs[2];\n      entry.afterLoc = locs[3];\n    }\n\n    this.tryEntries.push(entry);\n  }\n\n  function resetTryEntry(entry) {\n    var record = entry.completion || {};\n    record.type = \"normal\";\n    delete record.arg;\n    entry.completion = record;\n  }\n\n  function Context(tryLocsList) {\n    // The root entry object (effectively a try statement without a catch\n    // or a finally block) gives us a place to store values thrown from\n    // locations where there is no enclosing try statement.\n    this.tryEntries = [{ tryLoc: \"root\" }];\n    tryLocsList.forEach(pushTryEntry, this);\n    this.reset(true);\n  }\n\n  exports.keys = function(object) {\n    var keys = [];\n    for (var key in object) {\n      keys.push(key);\n    }\n    keys.reverse();\n\n    // Rather than returning an object with a next method, we keep\n    // things simple and return the next function itself.\n    return function next() {\n      while (keys.length) {\n        var key = keys.pop();\n        if (key in object) {\n          next.value = key;\n          next.done = false;\n          return next;\n        }\n      }\n\n      // To avoid creating an additional object, we just hang the .value\n      // and .done properties off the next function object itself. This\n      // also ensures that the minifier will not anonymize the function.\n      next.done = true;\n      return next;\n    };\n  };\n\n  function values(iterable) {\n    if (iterable) {\n      var iteratorMethod = iterable[iteratorSymbol];\n      if (iteratorMethod) {\n        return iteratorMethod.call(iterable);\n      }\n\n      if (typeof iterable.next === \"function\") {\n        return iterable;\n      }\n\n      if (!isNaN(iterable.length)) {\n        var i = -1, next = function next() {\n          while (++i < iterable.length) {\n            if (hasOwn.call(iterable, i)) {\n              next.value = iterable[i];\n              next.done = false;\n              return next;\n            }\n          }\n\n          next.value = undefined;\n          next.done = true;\n\n          return next;\n        };\n\n        return next.next = next;\n      }\n    }\n\n    // Return an iterator with no values.\n    return { next: doneResult };\n  }\n  exports.values = values;\n\n  function doneResult() {\n    return { value: undefined, done: true };\n  }\n\n  Context.prototype = {\n    constructor: Context,\n\n    reset: function(skipTempReset) {\n      this.prev = 0;\n      this.next = 0;\n      // Resetting context._sent for legacy support of Babel's\n      // function.sent implementation.\n      this.sent = this._sent = undefined;\n      this.done = false;\n      this.delegate = null;\n\n      this.method = \"next\";\n      this.arg = undefined;\n\n      this.tryEntries.forEach(resetTryEntry);\n\n      if (!skipTempReset) {\n        for (var name in this) {\n          // Not sure about the optimal order of these conditions:\n          if (name.charAt(0) === \"t\" &&\n              hasOwn.call(this, name) &&\n              !isNaN(+name.slice(1))) {\n            this[name] = undefined;\n          }\n        }\n      }\n    },\n\n    stop: function() {\n      this.done = true;\n\n      var rootEntry = this.tryEntries[0];\n      var rootRecord = rootEntry.completion;\n      if (rootRecord.type === \"throw\") {\n        throw rootRecord.arg;\n      }\n\n      return this.rval;\n    },\n\n    dispatchException: function(exception) {\n      if (this.done) {\n        throw exception;\n      }\n\n      var context = this;\n      function handle(loc, caught) {\n        record.type = \"throw\";\n        record.arg = exception;\n        context.next = loc;\n\n        if (caught) {\n          // If the dispatched exception was caught by a catch block,\n          // then let that catch block handle the exception normally.\n          context.method = \"next\";\n          context.arg = undefined;\n        }\n\n        return !! caught;\n      }\n\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        var record = entry.completion;\n\n        if (entry.tryLoc === \"root\") {\n          // Exception thrown outside of any try block that could handle\n          // it, so set the completion value of the entire function to\n          // throw the exception.\n          return handle(\"end\");\n        }\n\n        if (entry.tryLoc <= this.prev) {\n          var hasCatch = hasOwn.call(entry, \"catchLoc\");\n          var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n          if (hasCatch && hasFinally) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            } else if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else if (hasCatch) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            }\n\n          } else if (hasFinally) {\n            if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else {\n            throw new Error(\"try statement without catch or finally\");\n          }\n        }\n      }\n    },\n\n    abrupt: function(type, arg) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc <= this.prev &&\n            hasOwn.call(entry, \"finallyLoc\") &&\n            this.prev < entry.finallyLoc) {\n          var finallyEntry = entry;\n          break;\n        }\n      }\n\n      if (finallyEntry &&\n          (type === \"break\" ||\n           type === \"continue\") &&\n          finallyEntry.tryLoc <= arg &&\n          arg <= finallyEntry.finallyLoc) {\n        // Ignore the finally entry if control is not jumping to a\n        // location outside the try/catch block.\n        finallyEntry = null;\n      }\n\n      var record = finallyEntry ? finallyEntry.completion : {};\n      record.type = type;\n      record.arg = arg;\n\n      if (finallyEntry) {\n        this.method = \"next\";\n        this.next = finallyEntry.finallyLoc;\n        return ContinueSentinel;\n      }\n\n      return this.complete(record);\n    },\n\n    complete: function(record, afterLoc) {\n      if (record.type === \"throw\") {\n        throw record.arg;\n      }\n\n      if (record.type === \"break\" ||\n          record.type === \"continue\") {\n        this.next = record.arg;\n      } else if (record.type === \"return\") {\n        this.rval = this.arg = record.arg;\n        this.method = \"return\";\n        this.next = \"end\";\n      } else if (record.type === \"normal\" && afterLoc) {\n        this.next = afterLoc;\n      }\n\n      return ContinueSentinel;\n    },\n\n    finish: function(finallyLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.finallyLoc === finallyLoc) {\n          this.complete(entry.completion, entry.afterLoc);\n          resetTryEntry(entry);\n          return ContinueSentinel;\n        }\n      }\n    },\n\n    \"catch\": function(tryLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc === tryLoc) {\n          var record = entry.completion;\n          if (record.type === \"throw\") {\n            var thrown = record.arg;\n            resetTryEntry(entry);\n          }\n          return thrown;\n        }\n      }\n\n      // The context.catch method must only be called with a location\n      // argument that corresponds to a known catch block.\n      throw new Error(\"illegal catch attempt\");\n    },\n\n    delegateYield: function(iterable, resultName, nextLoc) {\n      this.delegate = {\n        iterator: values(iterable),\n        resultName: resultName,\n        nextLoc: nextLoc\n      };\n\n      if (this.method === \"next\") {\n        // Deliberately forget the last sent value so that we don't\n        // accidentally pass it on to the delegate.\n        this.arg = undefined;\n      }\n\n      return ContinueSentinel;\n    }\n  };\n\n  // Regardless of whether this script is executing as a CommonJS module\n  // or not, return the runtime object so that we can declare the variable\n  // regeneratorRuntime in the outer scope, which allows this module to be\n  // injected easily by `bin/regenerator --include-runtime script.js`.\n  return exports;\n\n}(\n  // If this script is executing as a CommonJS module, use module.exports\n  // as the regeneratorRuntime namespace. Otherwise create a new empty\n  // object. Either way, the resulting object will be used to initialize\n  // the regeneratorRuntime variable at the top of this file.\n  typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n  regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n  // This module should not be running in strict mode, so the above\n  // assignment should always work unless something is misconfigured. Just\n  // in case runtime.js accidentally runs in strict mode, in modern engines\n  // we can explicitly access globalThis. In older engines we can escape\n  // strict mode using a global Function call. This could conceivably fail\n  // if a Content Security Policy forbids using Function, but in that case\n  // the proper solution is to fix the accidental strict mode problem. If\n  // you've misconfigured your bundler to force strict mode and applied a\n  // CSP to forbid Function, and you're not willing to fix either of those\n  // problems, please detail your unique predicament in a GitHub issue.\n  if (typeof globalThis === \"object\") {\n    globalThis.regeneratorRuntime = runtime;\n  } else {\n    Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n  }\n}\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n  try {\n    var info = gen[key](arg);\n    var value = info.value;\n  } catch (error) {\n    reject(error);\n    return;\n  }\n\n  if (info.done) {\n    resolve(value);\n  } else {\n    Promise.resolve(value).then(_next, _throw);\n  }\n}\n\nfunction _asyncToGenerator(fn) {\n  return function () {\n    var self = this,\n        args = arguments;\n    return new Promise(function (resolve, reject) {\n      var gen = fn.apply(self, args);\n\n      function _next(value) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n      }\n\n      function _throw(err) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n      }\n\n      _next(undefined);\n    });\n  };\n}\n\nmodule.exports = _asyncToGenerator;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n  return classof(argument) == 'Array';\n};\n","var isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n  var C;\n  if (isArray(originalArray)) {\n    C = originalArray.constructor;\n    // cross-realm fallback\n    if (isConstructor(C) && (C === Array || isArray(C.prototype))) C = undefined;\n    else if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  } return C === undefined ? Array : C;\n};\n","var arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n  return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n  var IS_MAP = TYPE == 1;\n  var IS_FILTER = TYPE == 2;\n  var IS_SOME = TYPE == 3;\n  var IS_EVERY = TYPE == 4;\n  var IS_FIND_INDEX = TYPE == 6;\n  var IS_FILTER_REJECT = TYPE == 7;\n  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n  return function ($this, callbackfn, that, specificCreate) {\n    var O = toObject($this);\n    var self = IndexedObject(O);\n    var boundFunction = bind(callbackfn, that, 3);\n    var length = lengthOfArrayLike(self);\n    var index = 0;\n    var create = specificCreate || arraySpeciesCreate;\n    var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n    var value, result;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      value = self[index];\n      result = boundFunction(value, index, O);\n      if (TYPE) {\n        if (IS_MAP) target[index] = result; // map\n        else if (result) switch (TYPE) {\n          case 3: return true;              // some\n          case 5: return value;             // find\n          case 6: return index;             // findIndex\n          case 2: push.call(target, value); // filter\n        } else switch (TYPE) {\n          case 4: return false;             // every\n          case 7: push.call(target, value); // filterReject\n        }\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.forEach` method\n  // https://tc39.es/ecma262/#sec-array.prototype.foreach\n  forEach: createMethod(0),\n  // `Array.prototype.map` method\n  // https://tc39.es/ecma262/#sec-array.prototype.map\n  map: createMethod(1),\n  // `Array.prototype.filter` method\n  // https://tc39.es/ecma262/#sec-array.prototype.filter\n  filter: createMethod(2),\n  // `Array.prototype.some` method\n  // https://tc39.es/ecma262/#sec-array.prototype.some\n  some: createMethod(3),\n  // `Array.prototype.every` method\n  // https://tc39.es/ecma262/#sec-array.prototype.every\n  every: createMethod(4),\n  // `Array.prototype.find` method\n  // https://tc39.es/ecma262/#sec-array.prototype.find\n  find: createMethod(5),\n  // `Array.prototype.findIndex` method\n  // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n  findIndex: createMethod(6),\n  // `Array.prototype.filterReject` method\n  // https://github.com/tc39/proposal-array-filtering\n  filterReject: createMethod(7)\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n  // We can't use this feature detection in V8 since it causes\n  // deoptimization and serious performance degradation\n  // https://github.com/zloirock/core-js/issues/677\n  return V8_VERSION >= 51 || !fails(function () {\n    var array = [];\n    var constructor = array.constructor = {};\n    constructor[SPECIES] = function () {\n      return { foo: 1 };\n    };\n    return array[METHOD_NAME](Boolean).foo !== 1;\n  });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  map: function map(callbackfn /* , thisArg */) {\n    return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","var classof = require('../internals/classof');\n\nmodule.exports = function (argument) {\n  if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n  return String(argument);\n};\n","// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n  '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n  return function ($this) {\n    var string = toString(requireObjectCoercible($this));\n    if (TYPE & 1) string = string.replace(ltrim, '');\n    if (TYPE & 2) string = string.replace(rtrim, '');\n    return string;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.{ trimLeft, trimStart }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n  start: createMethod(1),\n  // `String.prototype.{ trimRight, trimEnd }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimend\n  end: createMethod(2),\n  // `String.prototype.trim` method\n  // https://tc39.es/ecma262/#sec-string.prototype.trim\n  trim: createMethod(3)\n};\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar toString = require('../internals/to-string');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseFloat = global.parseFloat;\nvar Symbol = global.Symbol;\nvar ITERATOR = Symbol && Symbol.iterator;\nvar FORCED = 1 / $parseFloat(whitespaces + '-0') !== -Infinity\n  // MS Edge 18- broken with boxed symbols\n  || (ITERATOR && !fails(function () { $parseFloat(Object(ITERATOR)); }));\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n  var trimmedString = trim(toString(string));\n  var result = $parseFloat(trimmedString);\n  return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n","var $ = require('../internals/export');\nvar $parseFloat = require('../internals/number-parse-float');\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\n$({ global: true, forced: parseFloat != $parseFloat }, {\n  parseFloat: $parseFloat\n});\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.dotAll) result += 's';\n  if (that.unicode) result += 'u';\n  if (that.sticky) result += 'y';\n  return result;\n};\n","/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n  activeXDocument.write(scriptTag(''));\n  activeXDocument.close();\n  var temp = activeXDocument.parentWindow.Object;\n  activeXDocument = null; // avoid memory leak\n  return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = documentCreateElement('iframe');\n  var JS = 'java' + SCRIPT + ':';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  html.appendChild(iframe);\n  // https://github.com/zloirock/core-js/issues/475\n  iframe.src = String(JS);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(scriptTag('document.F=Object'));\n  iframeDocument.close();\n  return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n  try {\n    activeXDocument = new ActiveXObject('htmlfile');\n  } catch (error) { /* ignore */ }\n  NullProtoObject = typeof document != 'undefined'\n    ? document.domain && activeXDocument\n      ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n      : NullProtoObjectViaIFrame()\n    : NullProtoObjectViaActiveX(activeXDocument); // WSH\n  var length = enumBugKeys.length;\n  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n  return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    EmptyConstructor[PROTOTYPE] = anObject(O);\n    result = new EmptyConstructor();\n    EmptyConstructor[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = NullProtoObject();\n  return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nexports.UNSUPPORTED_Y = fails(function () {\n  var re = $RegExp('a', 'y');\n  re.lastIndex = 2;\n  return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n  // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n  var re = $RegExp('^r', 'gy');\n  re.lastIndex = 2;\n  return re.exec('str') != null;\n});\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n  return internalObjectKeys(O, enumBugKeys);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = objectKeys(Properties);\n  var length = keys.length;\n  var index = 0;\n  var key;\n  while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n  return O;\n};\n","'use strict';\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar toString = require('../internals/to-string');\nvar regexpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar shared = require('../internals/shared');\nvar create = require('../internals/object-create');\nvar getInternalState = require('../internals/internal-state').get;\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar nativeExec = RegExp.prototype.exec;\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/;\n  var re2 = /b*/g;\n  nativeExec.call(re1, 'a');\n  nativeExec.call(re2, 'a');\n  return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n  // eslint-disable-next-line max-statements -- TODO\n  patchedExec = function exec(string) {\n    var re = this;\n    var state = getInternalState(re);\n    var str = toString(string);\n    var raw = state.raw;\n    var result, reCopy, lastIndex, match, i, object, group;\n\n    if (raw) {\n      raw.lastIndex = re.lastIndex;\n      result = patchedExec.call(raw, str);\n      re.lastIndex = raw.lastIndex;\n      return result;\n    }\n\n    var groups = state.groups;\n    var sticky = UNSUPPORTED_Y && re.sticky;\n    var flags = regexpFlags.call(re);\n    var source = re.source;\n    var charsAdded = 0;\n    var strCopy = str;\n\n    if (sticky) {\n      flags = flags.replace('y', '');\n      if (flags.indexOf('g') === -1) {\n        flags += 'g';\n      }\n\n      strCopy = str.slice(re.lastIndex);\n      // Support anchored sticky behavior.\n      if (re.lastIndex > 0 && (!re.multiline || re.multiline && str.charAt(re.lastIndex - 1) !== '\\n')) {\n        source = '(?: ' + source + ')';\n        strCopy = ' ' + strCopy;\n        charsAdded++;\n      }\n      // ^(? + rx + ) is needed, in combination with some str slicing, to\n      // simulate the 'y' flag.\n      reCopy = new RegExp('^(?:' + source + ')', flags);\n    }\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n    match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n    if (sticky) {\n      if (match) {\n        match.input = match.input.slice(charsAdded);\n        match[0] = match[0].slice(charsAdded);\n        match.index = re.lastIndex;\n        re.lastIndex += match[0].length;\n      } else re.lastIndex = 0;\n    } else if (UPDATES_LAST_INDEX_WRONG && match) {\n      re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n      nativeReplace.call(match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    if (match && groups) {\n      match.groups = object = create(null);\n      for (i = 0; i < groups.length; i++) {\n        group = groups[i];\n        object[group[0]] = match[group[1]];\n      }\n    }\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n  var re = $RegExp('.', 's');\n  return !(re.dotAll && re.exec('\\n') && re.flags === 's');\n});\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('(?<a>b)', 'g') -> /(?<a>b)/g and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n  var re = $RegExp('(?<a>b)', 'g');\n  return re.exec('b').groups.a !== 'b' ||\n    'b'.replace(re, '$<a>c') !== 'bc';\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n  exec: exec\n});\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar redefine = require('../internals/redefine');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n  var SYMBOL = wellKnownSymbol(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegEp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) != 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n\n    if (KEY === 'split') {\n      // We can't use real regex here since it causes deoptimization\n      // and serious performance degradation in V8\n      // https://github.com/zloirock/core-js/issues/306\n      re = {};\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES] = function () { return re; };\n      re.flags = '';\n      re[SYMBOL] = /./[SYMBOL];\n    }\n\n    re.exec = function () { execCalled = true; return null; };\n\n    re[SYMBOL]('');\n    return !execCalled;\n  });\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    FORCED\n  ) {\n    var nativeRegExpMethod = /./[SYMBOL];\n    var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n      var $exec = regexp.exec;\n      if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n        if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n          // The native String method already delegates to @@method (this\n          // polyfilled function), leasing to infinite recursion.\n          // We avoid it by directly calling the native @@method method.\n          return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n        }\n        return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n      }\n      return { done: false };\n    });\n\n    redefine(String.prototype, KEY, methods[0]);\n    redefine(RegExpPrototype, SYMBOL, methods[1]);\n  }\n\n  if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar createMethod = function (CONVERT_TO_STRING) {\n  return function ($this, pos) {\n    var S = toString(requireObjectCoercible($this));\n    var position = toIntegerOrInfinity(pos);\n    var size = S.length;\n    var first, second;\n    if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n    first = S.charCodeAt(position);\n    return first < 0xD800 || first > 0xDBFF || position + 1 === size\n      || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n        ? CONVERT_TO_STRING ? S.charAt(position) : first\n        : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.codePointAt` method\n  // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n  codeAt: createMethod(false),\n  // `String.prototype.at` method\n  // https://github.com/mathiasbynens/String.prototype.at\n  charAt: createMethod(true)\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? charAt(S, index).length : 1);\n};\n","var anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar regexpExec = require('../internals/regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (isCallable(exec)) {\n    var result = exec.call(R, S);\n    if (result !== null) anObject(result);\n    return result;\n  }\n  if (classof(R) === 'RegExp') return regexpExec.call(R, S);\n  throw TypeError('RegExp#exec called on incompatible receiver');\n};\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar getMethod = require('../internals/get-method');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\n  return [\n    // `String.prototype.match` method\n    // https://tc39.es/ecma262/#sec-string.prototype.match\n    function match(regexp) {\n      var O = requireObjectCoercible(this);\n      var matcher = regexp == undefined ? undefined : getMethod(regexp, MATCH);\n      return matcher ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](toString(O));\n    },\n    // `RegExp.prototype[@@match]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n    function (string) {\n      var rx = anObject(this);\n      var S = toString(string);\n      var res = maybeCallNative(nativeMatch, rx, S);\n\n      if (res.done) return res.value;\n\n      if (!rx.global) return regExpExec(rx, S);\n\n      var fullUnicode = rx.unicode;\n      rx.lastIndex = 0;\n      var A = [];\n      var n = 0;\n      var result;\n      while ((result = regExpExec(rx, S)) !== null) {\n        var matchStr = toString(result[0]);\n        A[n] = matchStr;\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n        n++;\n      }\n      return n === 0 ? null : A;\n    }\n  ];\n});\n","var toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar replace = ''.replace;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n  var tailPos = position + matched.length;\n  var m = captures.length;\n  var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n  if (namedCaptures !== undefined) {\n    namedCaptures = toObject(namedCaptures);\n    symbols = SUBSTITUTION_SYMBOLS;\n  }\n  return replace.call(replacement, symbols, function (match, ch) {\n    var capture;\n    switch (ch.charAt(0)) {\n      case '$': return '$';\n      case '&': return matched;\n      case '`': return str.slice(0, position);\n      case \"'\": return str.slice(tailPos);\n      case '<':\n        capture = namedCaptures[ch.slice(1, -1)];\n        break;\n      default: // \\d\\d?\n        var n = +ch;\n        if (n === 0) return match;\n        if (n > m) {\n          var f = floor(n / 10);\n          if (f === 0) return match;\n          if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n          return match;\n        }\n        capture = captures[n - 1];\n    }\n    return capture === undefined ? '' : capture;\n  });\n};\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar fails = require('../internals/fails');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getMethod = require('../internals/get-method');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar max = Math.max;\nvar min = Math.min;\n\nvar maybeToString = function (it) {\n  return it === undefined ? it : String(it);\n};\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n  // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n  return 'a'.replace(/./, '$0') === '$0';\n})();\n\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n  if (/./[REPLACE]) {\n    return /./[REPLACE]('a', '$0') === '';\n  }\n  return false;\n})();\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive\n  return ''.replace(re, '$<a>') !== '7';\n});\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\n  var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n  return [\n    // `String.prototype.replace` method\n    // https://tc39.es/ecma262/#sec-string.prototype.replace\n    function replace(searchValue, replaceValue) {\n      var O = requireObjectCoercible(this);\n      var replacer = searchValue == undefined ? undefined : getMethod(searchValue, REPLACE);\n      return replacer\n        ? replacer.call(searchValue, O, replaceValue)\n        : nativeReplace.call(toString(O), searchValue, replaceValue);\n    },\n    // `RegExp.prototype[@@replace]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n    function (string, replaceValue) {\n      var rx = anObject(this);\n      var S = toString(string);\n\n      if (\n        typeof replaceValue === 'string' &&\n        replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1 &&\n        replaceValue.indexOf('$<') === -1\n      ) {\n        var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\n        if (res.done) return res.value;\n      }\n\n      var functionalReplace = isCallable(replaceValue);\n      if (!functionalReplace) replaceValue = toString(replaceValue);\n\n      var global = rx.global;\n      if (global) {\n        var fullUnicode = rx.unicode;\n        rx.lastIndex = 0;\n      }\n      var results = [];\n      while (true) {\n        var result = regExpExec(rx, S);\n        if (result === null) break;\n\n        results.push(result);\n        if (!global) break;\n\n        var matchStr = toString(result[0]);\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n      }\n\n      var accumulatedResult = '';\n      var nextSourcePosition = 0;\n      for (var i = 0; i < results.length; i++) {\n        result = results[i];\n\n        var matched = toString(result[0]);\n        var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);\n        var captures = [];\n        // NOTE: This is equivalent to\n        //   captures = result.slice(1).map(maybeToString)\n        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n        // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n        for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n        var namedCaptures = result.groups;\n        if (functionalReplace) {\n          var replacerArgs = [matched].concat(captures, position, S);\n          if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n          var replacement = toString(replaceValue.apply(undefined, replacerArgs));\n        } else {\n          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n        }\n        if (position >= nextSourcePosition) {\n          accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n          nextSourcePosition = position + matched.length;\n        }\n      }\n      return accumulatedResult + S.slice(nextSourcePosition);\n    }\n  ];\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\n// eslint-disable-next-line es/no-string-prototype-startswith -- safe\nvar $startsWith = ''.startsWith;\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n  var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n  return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n  startsWith: function startsWith(searchString /* , position = 0 */) {\n    var that = toString(requireObjectCoercible(this));\n    notARegExp(searchString);\n    var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n    var search = toString(searchString);\n    return $startsWith\n      ? $startsWith.call(that, search, index)\n      : that.slice(index, index + search.length) === search;\n  }\n});\n","var isRegExp = require('../internals/is-regexp');\n\nmodule.exports = function (it) {\n  if (isRegExp(it)) {\n    throw TypeError(\"The method doesn't accept regular expressions\");\n  } return it;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n  var regexp = /./;\n  try {\n    '/./'[METHOD_NAME](regexp);\n  } catch (error1) {\n    try {\n      regexp[MATCH] = false;\n      return '/./'[METHOD_NAME](regexp);\n    } catch (error2) { /* empty */ }\n  } return false;\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n  var method = [][METHOD_NAME];\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing\n    method.call(null, argument || function () { throw 1; }, 1);\n  });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.es/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n  join: function join(separator) {\n    return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n  }\n});\n","function _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _iterableToArrayLimit(arr, i) {\n  var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n  if (_i == null) return;\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n\n  var _s, _e;\n\n  try {\n    for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) {\n    arr2[i] = arr[i];\n  }\n\n  return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nmodule.exports = _defineProperty;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nmodule.exports = _classCallCheck;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}\n\nmodule.exports = _createClass;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n  var propertyKey = toPropertyKey(key);\n  if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n  else object[propertyKey] = value;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n  var array = [];\n  array[IS_CONCAT_SPREADABLE] = false;\n  return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n  if (!isObject(O)) return false;\n  var spreadable = O[IS_CONCAT_SPREADABLE];\n  return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  concat: function concat(arg) {\n    var O = toObject(this);\n    var A = arraySpeciesCreate(O, 0);\n    var n = 0;\n    var i, k, length, len, E;\n    for (i = -1, length = arguments.length; i < length; i++) {\n      E = i === -1 ? O : arguments[i];\n      if (isConcatSpreadable(E)) {\n        len = lengthOfArrayLike(E);\n        if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n        for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n      } else {\n        if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n        createProperty(A, n++, E);\n      }\n    }\n    A.length = n;\n    return A;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $every = require('../internals/array-iteration').every;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('every');\n\n// `Array.prototype.every` method\n// https://tc39.es/ecma262/#sec-array.prototype.every\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {\n  every: function every(callbackfn /* , thisArg */) {\n    return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","var aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n  return function (that, callbackfn, argumentsLength, memo) {\n    aCallable(callbackfn);\n    var O = toObject(that);\n    var self = IndexedObject(O);\n    var length = lengthOfArrayLike(O);\n    var index = IS_RIGHT ? length - 1 : 0;\n    var i = IS_RIGHT ? -1 : 1;\n    if (argumentsLength < 2) while (true) {\n      if (index in self) {\n        memo = self[index];\n        index += i;\n        break;\n      }\n      index += i;\n      if (IS_RIGHT ? index < 0 : length <= index) {\n        throw TypeError('Reduce of empty array with no initial value');\n      }\n    }\n    for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n      memo = callbackfn(memo, self[index], index, O);\n    }\n    return memo;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.reduce` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduce\n  left: createMethod(false),\n  // `Array.prototype.reduceRight` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n  right: createMethod(true)\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/engine-v8-version');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || CHROME_BUG }, {\n  reduce: function reduce(callbackfn /* , initialValue */) {\n    return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\n// eslint-disable-next-line es/no-string-prototype-endswith -- safe\nvar $endsWith = ''.endsWith;\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n  var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n  return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.endsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.endswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n  endsWith: function endsWith(searchString /* , endPosition = @length */) {\n    var that = toString(requireObjectCoercible(this));\n    notARegExp(searchString);\n    var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n    var len = that.length;\n    var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n    var search = toString(searchString);\n    return $endsWith\n      ? $endsWith.call(that, search, end)\n      : that.slice(end - search.length, end) === search;\n  }\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar fails = require('../internals/fails');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n  // eslint-disable-next-line regexp/no-empty-group -- required for testing\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n  var internalSplit;\n  if (\n    'abbc'.split(/(b)*/)[1] == 'c' ||\n    // eslint-disable-next-line regexp/no-empty-group -- required for testing\n    'test'.split(/(?:)/, -1).length != 4 ||\n    'ab'.split(/(?:ab)*/).length != 2 ||\n    '.'.split(/(.?)(.?)/).length != 4 ||\n    // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n    '.'.split(/()()/).length > 1 ||\n    ''.split(/.?/).length\n  ) {\n    // based on es5-shim implementation, need to rework it\n    internalSplit = function (separator, limit) {\n      var string = toString(requireObjectCoercible(this));\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (separator === undefined) return [string];\n      // If `separator` is not a regex, use native split\n      if (!isRegExp(separator)) {\n        return nativeSplit.call(string, separator, lim);\n      }\n      var output = [];\n      var flags = (separator.ignoreCase ? 'i' : '') +\n                  (separator.multiline ? 'm' : '') +\n                  (separator.unicode ? 'u' : '') +\n                  (separator.sticky ? 'y' : '');\n      var lastLastIndex = 0;\n      // Make `global` and avoid `lastIndex` issues by working with a copy\n      var separatorCopy = new RegExp(separator.source, flags + 'g');\n      var match, lastIndex, lastLength;\n      while (match = regexpExec.call(separatorCopy, string)) {\n        lastIndex = separatorCopy.lastIndex;\n        if (lastIndex > lastLastIndex) {\n          output.push(string.slice(lastLastIndex, match.index));\n          if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n          lastLength = match[0].length;\n          lastLastIndex = lastIndex;\n          if (output.length >= lim) break;\n        }\n        if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n      }\n      if (lastLastIndex === string.length) {\n        if (lastLength || !separatorCopy.test('')) output.push('');\n      } else output.push(string.slice(lastLastIndex));\n      return output.length > lim ? output.slice(0, lim) : output;\n    };\n  // Chakra, V8\n  } else if ('0'.split(undefined, 0).length) {\n    internalSplit = function (separator, limit) {\n      return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n    };\n  } else internalSplit = nativeSplit;\n\n  return [\n    // `String.prototype.split` method\n    // https://tc39.es/ecma262/#sec-string.prototype.split\n    function split(separator, limit) {\n      var O = requireObjectCoercible(this);\n      var splitter = separator == undefined ? undefined : getMethod(separator, SPLIT);\n      return splitter\n        ? splitter.call(separator, O, limit)\n        : internalSplit.call(toString(O), separator, limit);\n    },\n    // `RegExp.prototype[@@split]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n    //\n    // NOTE: This cannot be properly polyfilled in engines that don't support\n    // the 'y' flag.\n    function (string, limit) {\n      var rx = anObject(this);\n      var S = toString(string);\n      var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n\n      if (res.done) return res.value;\n\n      var C = speciesConstructor(rx, RegExp);\n\n      var unicodeMatching = rx.unicode;\n      var flags = (rx.ignoreCase ? 'i' : '') +\n                  (rx.multiline ? 'm' : '') +\n                  (rx.unicode ? 'u' : '') +\n                  (UNSUPPORTED_Y ? 'g' : 'y');\n\n      // ^(? + rx + ) is needed, in combination with some S slicing, to\n      // simulate the 'y' flag.\n      var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n      var p = 0;\n      var q = 0;\n      var A = [];\n      while (q < S.length) {\n        splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n        var z = callRegExpExec(splitter, UNSUPPORTED_Y ? S.slice(q) : S);\n        var e;\n        if (\n          z === null ||\n          (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n        ) {\n          q = advanceStringIndex(S, q, unicodeMatching);\n        } else {\n          A.push(S.slice(p, q));\n          if (A.length === lim) return A;\n          for (var i = 1; i <= z.length - 1; i++) {\n            A.push(z[i]);\n            if (A.length === lim) return A;\n          }\n          q = p = e;\n        }\n      }\n      A.push(S.slice(p));\n      return A;\n    }\n  ];\n}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n","export default (typeof global !== \"undefined\" ? global :\n            typeof self !== \"undefined\" ? self :\n            typeof window !== \"undefined\" ? window : {});\n","// shim for using process in browser\n// based off https://github.com/defunctzombie/node-process/blob/master/browser.js\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\nvar cachedSetTimeout = defaultSetTimout;\nvar cachedClearTimeout = defaultClearTimeout;\nif (typeof global.setTimeout === 'function') {\n    cachedSetTimeout = setTimeout;\n}\nif (typeof global.clearTimeout === 'function') {\n    cachedClearTimeout = clearTimeout;\n}\n\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\nexport function nextTick(fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n}\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nexport var title = 'browser';\nexport var platform = 'browser';\nexport var browser = true;\nexport var env = {};\nexport var argv = [];\nexport var version = ''; // empty string to avoid regexp issues\nexport var versions = {};\nexport var release = {};\nexport var config = {};\n\nfunction noop() {}\n\nexport var on = noop;\nexport var addListener = noop;\nexport var once = noop;\nexport var off = noop;\nexport var removeListener = noop;\nexport var removeAllListeners = noop;\nexport var emit = noop;\n\nexport function binding(name) {\n    throw new Error('process.binding is not supported');\n}\n\nexport function cwd () { return '/' }\nexport function chdir (dir) {\n    throw new Error('process.chdir is not supported');\n};\nexport function umask() { return 0; }\n\n// from https://github.com/kumavis/browser-process-hrtime/blob/master/index.js\nvar performance = global.performance || {}\nvar performanceNow =\n  performance.now        ||\n  performance.mozNow     ||\n  performance.msNow      ||\n  performance.oNow       ||\n  performance.webkitNow  ||\n  function(){ return (new Date()).getTime() }\n\n// generate timestamp or delta\n// see http://nodejs.org/api/process.html#process_process_hrtime\nexport function hrtime(previousTimestamp){\n  var clocktime = performanceNow.call(performance)*1e-3\n  var seconds = Math.floor(clocktime)\n  var nanoseconds = Math.floor((clocktime%1)*1e9)\n  if (previousTimestamp) {\n    seconds = seconds - previousTimestamp[0]\n    nanoseconds = nanoseconds - previousTimestamp[1]\n    if (nanoseconds<0) {\n      seconds--\n      nanoseconds += 1e9\n    }\n  }\n  return [seconds,nanoseconds]\n}\n\nvar startTime = new Date();\nexport function uptime() {\n  var currentTime = new Date();\n  var dif = currentTime - startTime;\n  return dif / 1000;\n}\n\nexport default {\n  nextTick: nextTick,\n  title: title,\n  browser: browser,\n  env: env,\n  argv: argv,\n  version: version,\n  versions: versions,\n  on: on,\n  addListener: addListener,\n  once: once,\n  off: off,\n  removeListener: removeListener,\n  removeAllListeners: removeAllListeners,\n  emit: emit,\n  binding: binding,\n  cwd: cwd,\n  chdir: chdir,\n  umask: umask,\n  hrtime: hrtime,\n  platform: platform,\n  release: release,\n  config: config,\n  uptime: uptime\n};\n","var now = require('performance-now')\n  , root = typeof window === 'undefined' ? global : window\n  , vendors = ['moz', 'webkit']\n  , suffix = 'AnimationFrame'\n  , raf = root['request' + suffix]\n  , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n  raf = root[vendors[i] + 'Request' + suffix]\n  caf = root[vendors[i] + 'Cancel' + suffix]\n      || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n  var last = 0\n    , id = 0\n    , queue = []\n    , frameDuration = 1000 / 60\n\n  raf = function(callback) {\n    if(queue.length === 0) {\n      var _now = now()\n        , next = Math.max(0, frameDuration - (_now - last))\n      last = next + _now\n      setTimeout(function() {\n        var cp = queue.slice(0)\n        // Clear queue here to prevent\n        // callbacks from appending listeners\n        // to the current frame's queue\n        queue.length = 0\n        for(var i = 0; i < cp.length; i++) {\n          if(!cp[i].cancelled) {\n            try{\n              cp[i].callback(last)\n            } catch(e) {\n              setTimeout(function() { throw e }, 0)\n            }\n          }\n        }\n      }, Math.round(next))\n    }\n    queue.push({\n      handle: ++id,\n      callback: callback,\n      cancelled: false\n    })\n    return id\n  }\n\n  caf = function(handle) {\n    for(var i = 0; i < queue.length; i++) {\n      if(queue[i].handle === handle) {\n        queue[i].cancelled = true\n      }\n    }\n  }\n}\n\nmodule.exports = function(fn) {\n  // Wrap in a new function to prevent\n  // `cancel` potentially being assigned\n  // to the native rAF function\n  return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n  caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n  if (!object) {\n    object = root;\n  }\n  object.requestAnimationFrame = raf\n  object.cancelAnimationFrame = caf\n}\n","// Generated by CoffeeScript 1.12.2\n(function() {\n  var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n  if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n    module.exports = function() {\n      return performance.now();\n    };\n  } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n    module.exports = function() {\n      return (getNanoSeconds() - nodeLoadTime) / 1e6;\n    };\n    hrtime = process.hrtime;\n    getNanoSeconds = function() {\n      var hr;\n      hr = hrtime();\n      return hr[0] * 1e9 + hr[1];\n    };\n    moduleLoadTime = getNanoSeconds();\n    upTime = process.uptime() * 1e9;\n    nodeLoadTime = moduleLoadTime - upTime;\n  } else if (Date.now) {\n    module.exports = function() {\n      return Date.now() - loadTime;\n    };\n    loadTime = Date.now();\n  } else {\n    module.exports = function() {\n      return new Date().getTime() - loadTime;\n    };\n    loadTime = new Date().getTime();\n  }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\n","var DESCRIPTORS = require('../internals/descriptors');\nvar FUNCTION_NAME_EXISTS = require('../internals/function-name').EXISTS;\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !FUNCTION_NAME_EXISTS) {\n  defineProperty(FunctionPrototype, NAME, {\n    configurable: true,\n    get: function () {\n      try {\n        return FunctionPrototypeToString.call(this).match(nameRE)[1];\n      } catch (error) {\n        return '';\n      }\n    }\n  });\n}\n","var PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n  return fails(function () {\n    return !!whitespaces[METHOD_NAME]()\n      || non[METHOD_NAME]() !== non\n      || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n  });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n  trim: function trim() {\n    return $trim(this);\n  }\n});\n","/*\n\tBased on rgbcolor.js by Stoyan Stefanov <sstoo@gmail.com>\n\thttp://www.phpied.com/rgb-color-parser-in-javascript/\n*/\n\nmodule.exports = function(color_string) {\n    this.ok = false;\n    this.alpha = 1.0;\n\n    // strip any leading #\n    if (color_string.charAt(0) == '#') { // remove # if any\n        color_string = color_string.substr(1,6);\n    }\n\n    color_string = color_string.replace(/ /g,'');\n    color_string = color_string.toLowerCase();\n\n    // before getting into regexps, try simple matches\n    // and overwrite the input\n    var simple_colors = {\n        aliceblue: 'f0f8ff',\n        antiquewhite: 'faebd7',\n        aqua: '00ffff',\n        aquamarine: '7fffd4',\n        azure: 'f0ffff',\n        beige: 'f5f5dc',\n        bisque: 'ffe4c4',\n        black: '000000',\n        blanchedalmond: 'ffebcd',\n        blue: '0000ff',\n        blueviolet: '8a2be2',\n        brown: 'a52a2a',\n        burlywood: 'deb887',\n        cadetblue: '5f9ea0',\n        chartreuse: '7fff00',\n        chocolate: 'd2691e',\n        coral: 'ff7f50',\n        cornflowerblue: '6495ed',\n        cornsilk: 'fff8dc',\n        crimson: 'dc143c',\n        cyan: '00ffff',\n        darkblue: '00008b',\n        darkcyan: '008b8b',\n        darkgoldenrod: 'b8860b',\n        darkgray: 'a9a9a9',\n        darkgreen: '006400',\n        darkkhaki: 'bdb76b',\n        darkmagenta: '8b008b',\n        darkolivegreen: '556b2f',\n        darkorange: 'ff8c00',\n        darkorchid: '9932cc',\n        darkred: '8b0000',\n        darksalmon: 'e9967a',\n        darkseagreen: '8fbc8f',\n        darkslateblue: '483d8b',\n        darkslategray: '2f4f4f',\n        darkturquoise: '00ced1',\n        darkviolet: '9400d3',\n        deeppink: 'ff1493',\n        deepskyblue: '00bfff',\n        dimgray: '696969',\n        dodgerblue: '1e90ff',\n        feldspar: 'd19275',\n        firebrick: 'b22222',\n        floralwhite: 'fffaf0',\n        forestgreen: '228b22',\n        fuchsia: 'ff00ff',\n        gainsboro: 'dcdcdc',\n        ghostwhite: 'f8f8ff',\n        gold: 'ffd700',\n        goldenrod: 'daa520',\n        gray: '808080',\n        green: '008000',\n        greenyellow: 'adff2f',\n        honeydew: 'f0fff0',\n        hotpink: 'ff69b4',\n        indianred : 'cd5c5c',\n        indigo : '4b0082',\n        ivory: 'fffff0',\n        khaki: 'f0e68c',\n        lavender: 'e6e6fa',\n        lavenderblush: 'fff0f5',\n        lawngreen: '7cfc00',\n        lemonchiffon: 'fffacd',\n        lightblue: 'add8e6',\n        lightcoral: 'f08080',\n        lightcyan: 'e0ffff',\n        lightgoldenrodyellow: 'fafad2',\n        lightgrey: 'd3d3d3',\n        lightgreen: '90ee90',\n        lightpink: 'ffb6c1',\n        lightsalmon: 'ffa07a',\n        lightseagreen: '20b2aa',\n        lightskyblue: '87cefa',\n        lightslateblue: '8470ff',\n        lightslategray: '778899',\n        lightsteelblue: 'b0c4de',\n        lightyellow: 'ffffe0',\n        lime: '00ff00',\n        limegreen: '32cd32',\n        linen: 'faf0e6',\n        magenta: 'ff00ff',\n        maroon: '800000',\n        mediumaquamarine: '66cdaa',\n        mediumblue: '0000cd',\n        mediumorchid: 'ba55d3',\n        mediumpurple: '9370d8',\n        mediumseagreen: '3cb371',\n        mediumslateblue: '7b68ee',\n        mediumspringgreen: '00fa9a',\n        mediumturquoise: '48d1cc',\n        mediumvioletred: 'c71585',\n        midnightblue: '191970',\n        mintcream: 'f5fffa',\n        mistyrose: 'ffe4e1',\n        moccasin: 'ffe4b5',\n        navajowhite: 'ffdead',\n        navy: '000080',\n        oldlace: 'fdf5e6',\n        olive: '808000',\n        olivedrab: '6b8e23',\n        orange: 'ffa500',\n        orangered: 'ff4500',\n        orchid: 'da70d6',\n        palegoldenrod: 'eee8aa',\n        palegreen: '98fb98',\n        paleturquoise: 'afeeee',\n        palevioletred: 'd87093',\n        papayawhip: 'ffefd5',\n        peachpuff: 'ffdab9',\n        peru: 'cd853f',\n        pink: 'ffc0cb',\n        plum: 'dda0dd',\n        powderblue: 'b0e0e6',\n        purple: '800080',\n        rebeccapurple: '663399',\n        red: 'ff0000',\n        rosybrown: 'bc8f8f',\n        royalblue: '4169e1',\n        saddlebrown: '8b4513',\n        salmon: 'fa8072',\n        sandybrown: 'f4a460',\n        seagreen: '2e8b57',\n        seashell: 'fff5ee',\n        sienna: 'a0522d',\n        silver: 'c0c0c0',\n        skyblue: '87ceeb',\n        slateblue: '6a5acd',\n        slategray: '708090',\n        snow: 'fffafa',\n        springgreen: '00ff7f',\n        steelblue: '4682b4',\n        tan: 'd2b48c',\n        teal: '008080',\n        thistle: 'd8bfd8',\n        tomato: 'ff6347',\n        turquoise: '40e0d0',\n        violet: 'ee82ee',\n        violetred: 'd02090',\n        wheat: 'f5deb3',\n        white: 'ffffff',\n        whitesmoke: 'f5f5f5',\n        yellow: 'ffff00',\n        yellowgreen: '9acd32'\n    };\n    color_string = simple_colors[color_string] || color_string;\n    // emd of simple type-in colors\n\n    // array of color definition objects\n    var color_defs = [\n        {\n            re: /^rgba\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3}),\\s*((?:\\d?\\.)?\\d)\\)$/,\n            example: ['rgba(123, 234, 45, 0.8)', 'rgba(255,234,245,1.0)'],\n            process: function (bits){\n                return [\n                    parseInt(bits[1]),\n                    parseInt(bits[2]),\n                    parseInt(bits[3]),\n                    parseFloat(bits[4])\n                ];\n            }\n        },\n        {\n            re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n            example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'],\n            process: function (bits){\n                return [\n                    parseInt(bits[1]),\n                    parseInt(bits[2]),\n                    parseInt(bits[3])\n                ];\n            }\n        },\n        {\n            re: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n            example: ['#00ff00', '336699'],\n            process: function (bits){\n                return [\n                    parseInt(bits[1], 16),\n                    parseInt(bits[2], 16),\n                    parseInt(bits[3], 16)\n                ];\n            }\n        },\n        {\n            re: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n            example: ['#fb0', 'f0f'],\n            process: function (bits){\n                return [\n                    parseInt(bits[1] + bits[1], 16),\n                    parseInt(bits[2] + bits[2], 16),\n                    parseInt(bits[3] + bits[3], 16)\n                ];\n            }\n        }\n    ];\n\n    // search through the definitions to find a match\n    for (var i = 0; i < color_defs.length; i++) {\n        var re = color_defs[i].re;\n        var processor = color_defs[i].process;\n        var bits = re.exec(color_string);\n        if (bits) {\n            var channels = processor(bits);\n            this.r = channels[0];\n            this.g = channels[1];\n            this.b = channels[2];\n            if (channels.length > 3) {\n                this.alpha = channels[3];\n            }\n            this.ok = true;\n        }\n\n    }\n\n    // validate/cleanup values\n    this.r = (this.r < 0 || isNaN(this.r)) ? 0 : ((this.r > 255) ? 255 : this.r);\n    this.g = (this.g < 0 || isNaN(this.g)) ? 0 : ((this.g > 255) ? 255 : this.g);\n    this.b = (this.b < 0 || isNaN(this.b)) ? 0 : ((this.b > 255) ? 255 : this.b);\n    this.alpha = (this.alpha < 0) ? 0 : ((this.alpha > 1.0 || isNaN(this.alpha)) ? 1.0 : this.alpha);\n\n    // some getters\n    this.toRGB = function () {\n        return 'rgb(' + this.r + ', ' + this.g + ', ' + this.b + ')';\n    }\n    this.toRGBA = function () {\n        return 'rgba(' + this.r + ', ' + this.g + ', ' + this.b + ', ' + this.alpha + ')';\n    }\n    this.toHex = function () {\n        var r = this.r.toString(16);\n        var g = this.g.toString(16);\n        var b = this.b.toString(16);\n        if (r.length == 1) r = '0' + r;\n        if (g.length == 1) g = '0' + g;\n        if (b.length == 1) b = '0' + b;\n        return '#' + r + g + b;\n    }\n\n    // help\n    this.getHelpXML = function () {\n\n        var examples = new Array();\n        // add regexps\n        for (var i = 0; i < color_defs.length; i++) {\n            var example = color_defs[i].example;\n            for (var j = 0; j < example.length; j++) {\n                examples[examples.length] = example[j];\n            }\n        }\n        // add type-in colors\n        for (var sc in simple_colors) {\n            examples[examples.length] = sc;\n        }\n\n        var xml = document.createElement('ul');\n        xml.setAttribute('id', 'rgbcolor-examples');\n        for (var i = 0; i < examples.length; i++) {\n            try {\n                var list_item = document.createElement('li');\n                var list_color = new RGBColor(examples[i]);\n                var example_div = document.createElement('div');\n                example_div.style.cssText =\n                        'margin: 3px; '\n                        + 'border: 1px solid black; '\n                        + 'background:' + list_color.toHex() + '; '\n                        + 'color:' + list_color.toHex()\n                ;\n                example_div.appendChild(document.createTextNode('test'));\n                var list_item_value = document.createTextNode(\n                    ' ' + examples[i] + ' -> ' + list_color.toRGB() + ' -> ' + list_color.toHex()\n                );\n                list_item.appendChild(example_div);\n                list_item.appendChild(list_item_value);\n                xml.appendChild(list_item);\n\n            } catch(e){}\n        }\n        return xml;\n\n    }\n\n}\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n  return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n  forEach: forEach\n});\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n  CSSRuleList: 0,\n  CSSStyleDeclaration: 0,\n  CSSValueList: 0,\n  ClientRectList: 0,\n  DOMRectList: 0,\n  DOMStringList: 0,\n  DOMTokenList: 1,\n  DataTransferItemList: 0,\n  FileList: 0,\n  HTMLAllCollection: 0,\n  HTMLCollection: 0,\n  HTMLFormElement: 0,\n  HTMLSelectElement: 0,\n  MediaList: 0,\n  MimeTypeArray: 0,\n  NamedNodeMap: 0,\n  NodeList: 1,\n  PaintRequestList: 0,\n  Plugin: 0,\n  PluginArray: 0,\n  SVGLengthList: 0,\n  SVGNumberList: 0,\n  SVGPathSegList: 0,\n  SVGPointList: 0,\n  SVGStringList: 0,\n  SVGTransformList: 0,\n  SourceBufferList: 0,\n  StyleSheetList: 0,\n  TextTrackCueList: 0,\n  TextTrackList: 0,\n  TouchList: 0\n};\n","// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`\nvar documentCreateElement = require('../internals/document-create-element');\n\nvar classList = documentCreateElement('span').classList;\nvar DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;\n\nmodule.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar handlePrototype = function (CollectionPrototype) {\n  // some Chrome versions have non-configurable methods on DOMTokenList\n  if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n    createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n  } catch (error) {\n    CollectionPrototype.forEach = forEach;\n  }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  if (DOMIterables[COLLECTION_NAME]) {\n    handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype);\n  }\n}\n\nhandlePrototype(DOMTokenListPrototype);\n","function _setPrototypeOf(o, p) {\n  module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n  return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    module.exports = _typeof = function _typeof(obj) {\n      return typeof obj;\n    };\n\n    module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n  } else {\n    module.exports = _typeof = function _typeof(obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n\n    module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n  }\n\n  return _typeof(obj);\n}\n\nmodule.exports = _typeof;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nmodule.exports = _assertThisInitialized;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var _typeof = require(\"@babel/runtime/helpers/typeof\")[\"default\"];\n\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n  if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n    return call;\n  } else if (call !== void 0) {\n    throw new TypeError(\"Derived constructors may only return object or undefined\");\n  }\n\n  return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _getPrototypeOf(o) {\n  module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n  return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n  try {\n    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n  } catch (error) {\n    iteratorClose(iterator, 'throw', error);\n  }\n};\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n  // eslint-disable-next-line es/no-array-from -- required for testing\n  Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n  from: from\n});\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isConstructor = require('../internals/is-constructor');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n  var O = toObject(arrayLike);\n  var IS_CONSTRUCTOR = isConstructor(this);\n  var argumentsLength = arguments.length;\n  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n  var mapping = mapfn !== undefined;\n  if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n  var iteratorMethod = getIteratorMethod(O);\n  var index = 0;\n  var length, result, step, iterator, next, value;\n  // if the target is not iterable or it's an array with the default iterator - use a simple case\n  if (iteratorMethod && !(this == Array && isArrayIteratorMethod(iteratorMethod))) {\n    iterator = getIterator(O, iteratorMethod);\n    next = iterator.next;\n    result = IS_CONSTRUCTOR ? new this() : [];\n    for (;!(step = next.call(iterator)).done; index++) {\n      value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n      createProperty(result, index, value);\n    }\n  } else {\n    length = lengthOfArrayLike(O);\n    result = IS_CONSTRUCTOR ? new this(length) : Array(length);\n    for (;length > index; index++) {\n      value = mapping ? mapfn(O[index], index) : O[index];\n      createProperty(result, index, value);\n    }\n  }\n  result.length = index;\n  return result;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n  definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n    configurable: true,\n    value: create(null)\n  });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n  ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true }, {\n  includes: function includes(el /* , fromIndex = 0 */) {\n    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\n/* eslint-disable es/no-array-prototype-indexof -- required for testing */\nvar $ = require('../internals/export');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD }, {\n  indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n    return NEGATIVE_ZERO\n      // convert -0 to +0\n      ? nativeIndexOf.apply(this, arguments) || 0\n      : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $some = require('../internals/array-iteration').some;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('some');\n\n// `Array.prototype.some` method\n// https://tc39.es/ecma262/#sec-array.prototype.some\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {\n  some: function some(callbackfn /* , thisArg */) {\n    return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n  includes: function includes(searchString /* , position = 0 */) {\n    return !!~toString(requireObjectCoercible(this))\n      .indexOf(toString(notARegExp(searchString)), arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n  arrayIterator = [].keys();\n  // Safari 8 has buggy iterators w/o `next`\n  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n  else {\n    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n  }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n  var test = {};\n  // FF44- legacy iterators case\n  return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n  redefine(IteratorPrototype, ITERATOR, function () {\n    return this;\n  });\n}\n\nmodule.exports = {\n  IteratorPrototype: IteratorPrototype,\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","var hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n  var object = toObject(O);\n  if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n  var constructor = object.constructor;\n  if (isCallable(constructor) && object instanceof constructor) {\n    return constructor.prototype;\n  } return object instanceof Object ? ObjectPrototype : null;\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n  var TO_STRING_TAG = NAME + ' Iterator';\n  IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n  setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n  Iterators[TO_STRING_TAG] = returnThis;\n  return IteratorConstructor;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n  createIteratorConstructor(IteratorConstructor, NAME, next);\n\n  var getIterationMethod = function (KIND) {\n    if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n    if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n    switch (KIND) {\n      case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n      case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n      case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n    } return function () { return new IteratorConstructor(this); };\n  };\n\n  var TO_STRING_TAG = NAME + ' Iterator';\n  var INCORRECT_VALUES_NAME = false;\n  var IterablePrototype = Iterable.prototype;\n  var nativeIterator = IterablePrototype[ITERATOR]\n    || IterablePrototype['@@iterator']\n    || DEFAULT && IterablePrototype[DEFAULT];\n  var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n  var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n  var CurrentIteratorPrototype, methods, KEY;\n\n  // fix native\n  if (anyNativeIterator) {\n    CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n    if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n      if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n        if (setPrototypeOf) {\n          setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n        } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n          redefine(CurrentIteratorPrototype, ITERATOR, returnThis);\n        }\n      }\n      // Set @@toStringTag to native iterators\n      setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n      if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n    }\n  }\n\n  // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n  if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n    if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n      createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n    } else {\n      INCORRECT_VALUES_NAME = true;\n      defaultIterator = function values() { return nativeIterator.call(this); };\n    }\n  }\n\n  // export additional methods\n  if (DEFAULT) {\n    methods = {\n      values: getIterationMethod(VALUES),\n      keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n      entries: getIterationMethod(ENTRIES)\n    };\n    if (FORCED) for (KEY in methods) {\n      if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n        redefine(IterablePrototype, KEY, methods[KEY]);\n      }\n    } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n  }\n\n  // define iterator\n  if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n    redefine(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n  }\n  Iterators[NAME] = defaultIterator;\n\n  return methods;\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n  setInternalState(this, {\n    type: STRING_ITERATOR,\n    string: toString(iterated),\n    index: 0\n  });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n  var state = getInternalState(this);\n  var string = state.string;\n  var index = state.index;\n  var point;\n  if (index >= string.length) return { value: undefined, done: true };\n  point = charAt(string, index);\n  state.index += point.length;\n  return { value: point, done: false };\n});\n","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\nvar nativeReverse = [].reverse;\nvar test = [1, 2];\n\n// `Array.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-array.prototype.reverse\n// fix for Safari 12.0 bug\n// https://bugs.webkit.org/show_bug.cgi?id=188794\n$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {\n  reverse: function reverse() {\n    // eslint-disable-next-line no-self-assign -- dirty hack\n    if (isArray(this)) this.length = this.length;\n    return nativeReverse.call(this);\n  }\n});\n","var isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n  var NewTarget, NewTargetPrototype;\n  if (\n    // it can work only with native `setPrototypeOf`\n    setPrototypeOf &&\n    // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n    isCallable(NewTarget = dummy.constructor) &&\n    NewTarget !== Wrapper &&\n    isObject(NewTargetPrototype = NewTarget.prototype) &&\n    NewTargetPrototype !== Wrapper.prototype\n  ) setPrototypeOf($this, NewTargetPrototype);\n  return $this;\n};\n","var valueOf = 1.0.valueOf;\n\n// `thisNumberValue` abstract operation\n// https://tc39.es/ecma262/#sec-thisnumbervalue\nmodule.exports = function (value) {\n  return valueOf.call(value);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar hasOwn = require('../internals/has-own-property');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar isSymbol = require('../internals/is-symbol');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar thisNumberValue = require('../internals/this-number-value');\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// `ToNumeric` abstract operation\n// https://tc39.es/ecma262/#sec-tonumeric\nvar toNumeric = function (value) {\n  var primValue = toPrimitive(value, 'number');\n  return typeof primValue === 'bigint' ? primValue : toNumber(primValue);\n};\n\n// `ToNumber` abstract operation\n// https://tc39.es/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n  var it = toPrimitive(argument, 'number');\n  var first, third, radix, maxCode, digits, length, index, code;\n  if (isSymbol(it)) throw TypeError('Cannot convert a Symbol value to a number');\n  if (typeof it == 'string' && it.length > 2) {\n    it = trim(it);\n    first = it.charCodeAt(0);\n    if (first === 43 || first === 45) {\n      third = it.charCodeAt(2);\n      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n    } else if (first === 48) {\n      switch (it.charCodeAt(1)) {\n        case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n        case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n        default: return +it;\n      }\n      digits = it.slice(2);\n      length = digits.length;\n      for (index = 0; index < length; index++) {\n        code = digits.charCodeAt(index);\n        // parseInt parses a string to a first unavailable symbol\n        // but ToNumber should return NaN if a string contains unavailable symbols\n        if (code < 48 || code > maxCode) return NaN;\n      } return parseInt(digits, radix);\n    }\n  } return +it;\n};\n\n// `Number` constructor\n// https://tc39.es/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n  var NumberWrapper = function Number(value) {\n    var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value));\n    var dummy = this;\n    // check on 1..constructor(foo) case\n    return dummy instanceof NumberWrapper && fails(function () { thisNumberValue(dummy); })\n      ? inheritIfRequired(Object(n), dummy, NumberWrapper) : n;\n  };\n  for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n    // ES3:\n    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n    // ES2015 (in case, if modules with ES2015 Number statics required before):\n    'EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,' +\n    // ESNext\n    'fromString,range'\n  ).split(','), j = 0, key; keys.length > j; j++) {\n    if (hasOwn(NativeNumber, key = keys[j]) && !hasOwn(NumberWrapper, key)) {\n      defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n    }\n  }\n  NumberWrapper.prototype = NumberPrototype;\n  NumberPrototype.constructor = NumberWrapper;\n  redefine(global, NUMBER, NumberWrapper);\n}\n","var getPrototypeOf = require(\"./getPrototypeOf.js\");\n\nfunction _superPropBase(object, property) {\n  while (!Object.prototype.hasOwnProperty.call(object, property)) {\n    object = getPrototypeOf(object);\n    if (object === null) break;\n  }\n\n  return object;\n}\n\nmodule.exports = _superPropBase;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var superPropBase = require(\"./superPropBase.js\");\n\nfunction _get(target, property, receiver) {\n  if (typeof Reflect !== \"undefined\" && Reflect.get) {\n    module.exports = _get = Reflect.get;\n    module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n  } else {\n    module.exports = _get = function _get(target, property, receiver) {\n      var base = superPropBase(target, property);\n      if (!base) return;\n      var desc = Object.getOwnPropertyDescriptor(base, property);\n\n      if (desc.get) {\n        return desc.get.call(receiver);\n      }\n\n      return desc.value;\n    };\n\n    module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n  }\n\n  return _get(target, property, receiver || target);\n}\n\nmodule.exports = _get;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.es/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n  fill: fill\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n  var O = toObject(this);\n  var length = lengthOfArrayLike(O);\n  var argumentsLength = arguments.length;\n  var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n  var end = argumentsLength > 2 ? arguments[2] : undefined;\n  var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n  while (endPos > index) O[index++] = value;\n  return O;\n};\n","/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\nvar t=function(r,e){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var e in r)Object.prototype.hasOwnProperty.call(r,e)&&(t[e]=r[e])})(r,e)};function r(r,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Class extends value \"+String(e)+\" is not a constructor or null\");function i(){this.constructor=r}t(r,e),r.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}function e(t){var r=\"\";Array.isArray(t)||(t=[t]);for(var e=0;e<t.length;e++){var i=t[e];if(i.type===_.CLOSE_PATH)r+=\"z\";else if(i.type===_.HORIZ_LINE_TO)r+=(i.relative?\"h\":\"H\")+i.x;else if(i.type===_.VERT_LINE_TO)r+=(i.relative?\"v\":\"V\")+i.y;else if(i.type===_.MOVE_TO)r+=(i.relative?\"m\":\"M\")+i.x+\" \"+i.y;else if(i.type===_.LINE_TO)r+=(i.relative?\"l\":\"L\")+i.x+\" \"+i.y;else if(i.type===_.CURVE_TO)r+=(i.relative?\"c\":\"C\")+i.x1+\" \"+i.y1+\" \"+i.x2+\" \"+i.y2+\" \"+i.x+\" \"+i.y;else if(i.type===_.SMOOTH_CURVE_TO)r+=(i.relative?\"s\":\"S\")+i.x2+\" \"+i.y2+\" \"+i.x+\" \"+i.y;else if(i.type===_.QUAD_TO)r+=(i.relative?\"q\":\"Q\")+i.x1+\" \"+i.y1+\" \"+i.x+\" \"+i.y;else if(i.type===_.SMOOTH_QUAD_TO)r+=(i.relative?\"t\":\"T\")+i.x+\" \"+i.y;else{if(i.type!==_.ARC)throw new Error('Unexpected command type \"'+i.type+'\" at index '+e+\".\");r+=(i.relative?\"a\":\"A\")+i.rX+\" \"+i.rY+\" \"+i.xRot+\" \"+ +i.lArcFlag+\" \"+ +i.sweepFlag+\" \"+i.x+\" \"+i.y}}return r}function i(t,r){var e=t[0],i=t[1];return[e*Math.cos(r)-i*Math.sin(r),e*Math.sin(r)+i*Math.cos(r)]}function a(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];for(var e=0;e<t.length;e++)if(\"number\"!=typeof t[e])throw new Error(\"assertNumbers arguments[\"+e+\"] is not a number. \"+typeof t[e]+\" == typeof \"+t[e]);return!0}var n=Math.PI;function o(t,r,e){t.lArcFlag=0===t.lArcFlag?0:1,t.sweepFlag=0===t.sweepFlag?0:1;var a=t.rX,o=t.rY,s=t.x,u=t.y;a=Math.abs(t.rX),o=Math.abs(t.rY);var h=i([(r-s)/2,(e-u)/2],-t.xRot/180*n),c=h[0],y=h[1],p=Math.pow(c,2)/Math.pow(a,2)+Math.pow(y,2)/Math.pow(o,2);1<p&&(a*=Math.sqrt(p),o*=Math.sqrt(p)),t.rX=a,t.rY=o;var m=Math.pow(a,2)*Math.pow(y,2)+Math.pow(o,2)*Math.pow(c,2),O=(t.lArcFlag!==t.sweepFlag?1:-1)*Math.sqrt(Math.max(0,(Math.pow(a,2)*Math.pow(o,2)-m)/m)),l=a*y/o*O,T=-o*c/a*O,v=i([l,T],t.xRot/180*n);t.cX=v[0]+(r+s)/2,t.cY=v[1]+(e+u)/2,t.phi1=Math.atan2((y-T)/o,(c-l)/a),t.phi2=Math.atan2((-y-T)/o,(-c-l)/a),0===t.sweepFlag&&t.phi2>t.phi1&&(t.phi2-=2*n),1===t.sweepFlag&&t.phi2<t.phi1&&(t.phi2+=2*n),t.phi1*=180/n,t.phi2*=180/n}function s(t,r,e){a(t,r,e);var i=t*t+r*r-e*e;if(0>i)return[];if(0===i)return[[t*e/(t*t+r*r),r*e/(t*t+r*r)]];var n=Math.sqrt(i);return[[(t*e+r*n)/(t*t+r*r),(r*e-t*n)/(t*t+r*r)],[(t*e-r*n)/(t*t+r*r),(r*e+t*n)/(t*t+r*r)]]}var u,h=Math.PI/180;function c(t,r,e){return(1-e)*t+e*r}function y(t,r,e,i){return t+Math.cos(i/180*n)*r+Math.sin(i/180*n)*e}function p(t,r,e,i){var a=1e-6,n=r-t,o=e-r,s=3*n+3*(i-e)-6*o,u=6*(o-n),h=3*n;return Math.abs(s)<a?[-h/u]:function(t,r,e){void 0===e&&(e=1e-6);var i=t*t/4-r;if(i<-e)return[];if(i<=e)return[-t/2];var a=Math.sqrt(i);return[-t/2-a,-t/2+a]}(u/s,h/s,a)}function m(t,r,e,i,a){var n=1-a;return t*(n*n*n)+r*(3*n*n*a)+e*(3*n*a*a)+i*(a*a*a)}!function(t){function r(){return u((function(t,r,e){return t.relative&&(void 0!==t.x1&&(t.x1+=r),void 0!==t.y1&&(t.y1+=e),void 0!==t.x2&&(t.x2+=r),void 0!==t.y2&&(t.y2+=e),void 0!==t.x&&(t.x+=r),void 0!==t.y&&(t.y+=e),t.relative=!1),t}))}function e(){var t=NaN,r=NaN,e=NaN,i=NaN;return u((function(a,n,o){return a.type&_.SMOOTH_CURVE_TO&&(a.type=_.CURVE_TO,t=isNaN(t)?n:t,r=isNaN(r)?o:r,a.x1=a.relative?n-t:2*n-t,a.y1=a.relative?o-r:2*o-r),a.type&_.CURVE_TO?(t=a.relative?n+a.x2:a.x2,r=a.relative?o+a.y2:a.y2):(t=NaN,r=NaN),a.type&_.SMOOTH_QUAD_TO&&(a.type=_.QUAD_TO,e=isNaN(e)?n:e,i=isNaN(i)?o:i,a.x1=a.relative?n-e:2*n-e,a.y1=a.relative?o-i:2*o-i),a.type&_.QUAD_TO?(e=a.relative?n+a.x1:a.x1,i=a.relative?o+a.y1:a.y1):(e=NaN,i=NaN),a}))}function n(){var t=NaN,r=NaN;return u((function(e,i,a){if(e.type&_.SMOOTH_QUAD_TO&&(e.type=_.QUAD_TO,t=isNaN(t)?i:t,r=isNaN(r)?a:r,e.x1=e.relative?i-t:2*i-t,e.y1=e.relative?a-r:2*a-r),e.type&_.QUAD_TO){t=e.relative?i+e.x1:e.x1,r=e.relative?a+e.y1:e.y1;var n=e.x1,o=e.y1;e.type=_.CURVE_TO,e.x1=((e.relative?0:i)+2*n)/3,e.y1=((e.relative?0:a)+2*o)/3,e.x2=(e.x+2*n)/3,e.y2=(e.y+2*o)/3}else t=NaN,r=NaN;return e}))}function u(t){var r=0,e=0,i=NaN,a=NaN;return function(n){if(isNaN(i)&&!(n.type&_.MOVE_TO))throw new Error(\"path must start with moveto\");var o=t(n,r,e,i,a);return n.type&_.CLOSE_PATH&&(r=i,e=a),void 0!==n.x&&(r=n.relative?r+n.x:n.x),void 0!==n.y&&(e=n.relative?e+n.y:n.y),n.type&_.MOVE_TO&&(i=r,a=e),o}}function O(t,r,e,i,n,o){return a(t,r,e,i,n,o),u((function(a,s,u,h){var c=a.x1,y=a.x2,p=a.relative&&!isNaN(h),m=void 0!==a.x?a.x:p?0:s,O=void 0!==a.y?a.y:p?0:u;function l(t){return t*t}a.type&_.HORIZ_LINE_TO&&0!==r&&(a.type=_.LINE_TO,a.y=a.relative?0:u),a.type&_.VERT_LINE_TO&&0!==e&&(a.type=_.LINE_TO,a.x=a.relative?0:s),void 0!==a.x&&(a.x=a.x*t+O*e+(p?0:n)),void 0!==a.y&&(a.y=m*r+a.y*i+(p?0:o)),void 0!==a.x1&&(a.x1=a.x1*t+a.y1*e+(p?0:n)),void 0!==a.y1&&(a.y1=c*r+a.y1*i+(p?0:o)),void 0!==a.x2&&(a.x2=a.x2*t+a.y2*e+(p?0:n)),void 0!==a.y2&&(a.y2=y*r+a.y2*i+(p?0:o));var T=t*i-r*e;if(void 0!==a.xRot&&(1!==t||0!==r||0!==e||1!==i))if(0===T)delete a.rX,delete a.rY,delete a.xRot,delete a.lArcFlag,delete a.sweepFlag,a.type=_.LINE_TO;else{var v=a.xRot*Math.PI/180,f=Math.sin(v),N=Math.cos(v),x=1/l(a.rX),d=1/l(a.rY),E=l(N)*x+l(f)*d,A=2*f*N*(x-d),C=l(f)*x+l(N)*d,M=E*i*i-A*r*i+C*r*r,R=A*(t*i+r*e)-2*(E*e*i+C*t*r),g=E*e*e-A*t*e+C*t*t,I=(Math.atan2(R,M-g)+Math.PI)%Math.PI/2,S=Math.sin(I),L=Math.cos(I);a.rX=Math.abs(T)/Math.sqrt(M*l(L)+R*S*L+g*l(S)),a.rY=Math.abs(T)/Math.sqrt(M*l(S)-R*S*L+g*l(L)),a.xRot=180*I/Math.PI}return void 0!==a.sweepFlag&&0>T&&(a.sweepFlag=+!a.sweepFlag),a}))}function l(){return function(t){var r={};for(var e in t)r[e]=t[e];return r}}t.ROUND=function(t){function r(r){return Math.round(r*t)/t}return void 0===t&&(t=1e13),a(t),function(t){return void 0!==t.x1&&(t.x1=r(t.x1)),void 0!==t.y1&&(t.y1=r(t.y1)),void 0!==t.x2&&(t.x2=r(t.x2)),void 0!==t.y2&&(t.y2=r(t.y2)),void 0!==t.x&&(t.x=r(t.x)),void 0!==t.y&&(t.y=r(t.y)),void 0!==t.rX&&(t.rX=r(t.rX)),void 0!==t.rY&&(t.rY=r(t.rY)),t}},t.TO_ABS=r,t.TO_REL=function(){return u((function(t,r,e){return t.relative||(void 0!==t.x1&&(t.x1-=r),void 0!==t.y1&&(t.y1-=e),void 0!==t.x2&&(t.x2-=r),void 0!==t.y2&&(t.y2-=e),void 0!==t.x&&(t.x-=r),void 0!==t.y&&(t.y-=e),t.relative=!0),t}))},t.NORMALIZE_HVZ=function(t,r,e){return void 0===t&&(t=!0),void 0===r&&(r=!0),void 0===e&&(e=!0),u((function(i,a,n,o,s){if(isNaN(o)&&!(i.type&_.MOVE_TO))throw new Error(\"path must start with moveto\");return r&&i.type&_.HORIZ_LINE_TO&&(i.type=_.LINE_TO,i.y=i.relative?0:n),e&&i.type&_.VERT_LINE_TO&&(i.type=_.LINE_TO,i.x=i.relative?0:a),t&&i.type&_.CLOSE_PATH&&(i.type=_.LINE_TO,i.x=i.relative?o-a:o,i.y=i.relative?s-n:s),i.type&_.ARC&&(0===i.rX||0===i.rY)&&(i.type=_.LINE_TO,delete i.rX,delete i.rY,delete i.xRot,delete i.lArcFlag,delete i.sweepFlag),i}))},t.NORMALIZE_ST=e,t.QT_TO_C=n,t.INFO=u,t.SANITIZE=function(t){void 0===t&&(t=0),a(t);var r=NaN,e=NaN,i=NaN,n=NaN;return u((function(a,o,s,u,h){var c=Math.abs,y=!1,p=0,m=0;if(a.type&_.SMOOTH_CURVE_TO&&(p=isNaN(r)?0:o-r,m=isNaN(e)?0:s-e),a.type&(_.CURVE_TO|_.SMOOTH_CURVE_TO)?(r=a.relative?o+a.x2:a.x2,e=a.relative?s+a.y2:a.y2):(r=NaN,e=NaN),a.type&_.SMOOTH_QUAD_TO?(i=isNaN(i)?o:2*o-i,n=isNaN(n)?s:2*s-n):a.type&_.QUAD_TO?(i=a.relative?o+a.x1:a.x1,n=a.relative?s+a.y1:a.y2):(i=NaN,n=NaN),a.type&_.LINE_COMMANDS||a.type&_.ARC&&(0===a.rX||0===a.rY||!a.lArcFlag)||a.type&_.CURVE_TO||a.type&_.SMOOTH_CURVE_TO||a.type&_.QUAD_TO||a.type&_.SMOOTH_QUAD_TO){var O=void 0===a.x?0:a.relative?a.x:a.x-o,l=void 0===a.y?0:a.relative?a.y:a.y-s;p=isNaN(i)?void 0===a.x1?p:a.relative?a.x:a.x1-o:i-o,m=isNaN(n)?void 0===a.y1?m:a.relative?a.y:a.y1-s:n-s;var T=void 0===a.x2?0:a.relative?a.x:a.x2-o,v=void 0===a.y2?0:a.relative?a.y:a.y2-s;c(O)<=t&&c(l)<=t&&c(p)<=t&&c(m)<=t&&c(T)<=t&&c(v)<=t&&(y=!0)}return a.type&_.CLOSE_PATH&&c(o-u)<=t&&c(s-h)<=t&&(y=!0),y?[]:a}))},t.MATRIX=O,t.ROTATE=function(t,r,e){void 0===r&&(r=0),void 0===e&&(e=0),a(t,r,e);var i=Math.sin(t),n=Math.cos(t);return O(n,i,-i,n,r-r*n+e*i,e-r*i-e*n)},t.TRANSLATE=function(t,r){return void 0===r&&(r=0),a(t,r),O(1,0,0,1,t,r)},t.SCALE=function(t,r){return void 0===r&&(r=t),a(t,r),O(t,0,0,r,0,0)},t.SKEW_X=function(t){return a(t),O(1,0,Math.atan(t),1,0,0)},t.SKEW_Y=function(t){return a(t),O(1,Math.atan(t),0,1,0,0)},t.X_AXIS_SYMMETRY=function(t){return void 0===t&&(t=0),a(t),O(-1,0,0,1,t,0)},t.Y_AXIS_SYMMETRY=function(t){return void 0===t&&(t=0),a(t),O(1,0,0,-1,0,t)},t.A_TO_C=function(){return u((function(t,r,e){return _.ARC===t.type?function(t,r,e){var a,n,s,u;t.cX||o(t,r,e);for(var y=Math.min(t.phi1,t.phi2),p=Math.max(t.phi1,t.phi2)-y,m=Math.ceil(p/90),O=new Array(m),l=r,T=e,v=0;v<m;v++){var f=c(t.phi1,t.phi2,v/m),N=c(t.phi1,t.phi2,(v+1)/m),x=N-f,d=4/3*Math.tan(x*h/4),E=[Math.cos(f*h)-d*Math.sin(f*h),Math.sin(f*h)+d*Math.cos(f*h)],A=E[0],C=E[1],M=[Math.cos(N*h),Math.sin(N*h)],R=M[0],g=M[1],I=[R+d*Math.sin(N*h),g-d*Math.cos(N*h)],S=I[0],L=I[1];O[v]={relative:t.relative,type:_.CURVE_TO};var H=function(r,e){var a=i([r*t.rX,e*t.rY],t.xRot),n=a[0],o=a[1];return[t.cX+n,t.cY+o]};a=H(A,C),O[v].x1=a[0],O[v].y1=a[1],n=H(S,L),O[v].x2=n[0],O[v].y2=n[1],s=H(R,g),O[v].x=s[0],O[v].y=s[1],t.relative&&(O[v].x1-=l,O[v].y1-=T,O[v].x2-=l,O[v].y2-=T,O[v].x-=l,O[v].y-=T),l=(u=[O[v].x,O[v].y])[0],T=u[1]}return O}(t,t.relative?0:r,t.relative?0:e):t}))},t.ANNOTATE_ARCS=function(){return u((function(t,r,e){return t.relative&&(r=0,e=0),_.ARC===t.type&&o(t,r,e),t}))},t.CLONE=l,t.CALCULATE_BOUNDS=function(){var t=function(t){var r={};for(var e in t)r[e]=t[e];return r},i=r(),a=n(),h=e(),c=u((function(r,e,n){var u=h(a(i(t(r))));function O(t){t>c.maxX&&(c.maxX=t),t<c.minX&&(c.minX=t)}function l(t){t>c.maxY&&(c.maxY=t),t<c.minY&&(c.minY=t)}if(u.type&_.DRAWING_COMMANDS&&(O(e),l(n)),u.type&_.HORIZ_LINE_TO&&O(u.x),u.type&_.VERT_LINE_TO&&l(u.y),u.type&_.LINE_TO&&(O(u.x),l(u.y)),u.type&_.CURVE_TO){O(u.x),l(u.y);for(var T=0,v=p(e,u.x1,u.x2,u.x);T<v.length;T++){0<(w=v[T])&&1>w&&O(m(e,u.x1,u.x2,u.x,w))}for(var f=0,N=p(n,u.y1,u.y2,u.y);f<N.length;f++){0<(w=N[f])&&1>w&&l(m(n,u.y1,u.y2,u.y,w))}}if(u.type&_.ARC){O(u.x),l(u.y),o(u,e,n);for(var x=u.xRot/180*Math.PI,d=Math.cos(x)*u.rX,E=Math.sin(x)*u.rX,A=-Math.sin(x)*u.rY,C=Math.cos(x)*u.rY,M=u.phi1<u.phi2?[u.phi1,u.phi2]:-180>u.phi2?[u.phi2+360,u.phi1+360]:[u.phi2,u.phi1],R=M[0],g=M[1],I=function(t){var r=t[0],e=t[1],i=180*Math.atan2(e,r)/Math.PI;return i<R?i+360:i},S=0,L=s(A,-d,0).map(I);S<L.length;S++){(w=L[S])>R&&w<g&&O(y(u.cX,d,A,w))}for(var H=0,U=s(C,-E,0).map(I);H<U.length;H++){var w;(w=U[H])>R&&w<g&&l(y(u.cY,E,C,w))}}return r}));return c.minX=1/0,c.maxX=-1/0,c.minY=1/0,c.maxY=-1/0,c}}(u||(u={}));var O,l=function(){function t(){}return t.prototype.round=function(t){return this.transform(u.ROUND(t))},t.prototype.toAbs=function(){return this.transform(u.TO_ABS())},t.prototype.toRel=function(){return this.transform(u.TO_REL())},t.prototype.normalizeHVZ=function(t,r,e){return this.transform(u.NORMALIZE_HVZ(t,r,e))},t.prototype.normalizeST=function(){return this.transform(u.NORMALIZE_ST())},t.prototype.qtToC=function(){return this.transform(u.QT_TO_C())},t.prototype.aToC=function(){return this.transform(u.A_TO_C())},t.prototype.sanitize=function(t){return this.transform(u.SANITIZE(t))},t.prototype.translate=function(t,r){return this.transform(u.TRANSLATE(t,r))},t.prototype.scale=function(t,r){return this.transform(u.SCALE(t,r))},t.prototype.rotate=function(t,r,e){return this.transform(u.ROTATE(t,r,e))},t.prototype.matrix=function(t,r,e,i,a,n){return this.transform(u.MATRIX(t,r,e,i,a,n))},t.prototype.skewX=function(t){return this.transform(u.SKEW_X(t))},t.prototype.skewY=function(t){return this.transform(u.SKEW_Y(t))},t.prototype.xSymmetry=function(t){return this.transform(u.X_AXIS_SYMMETRY(t))},t.prototype.ySymmetry=function(t){return this.transform(u.Y_AXIS_SYMMETRY(t))},t.prototype.annotateArcs=function(){return this.transform(u.ANNOTATE_ARCS())},t}(),T=function(t){return\" \"===t||\"\\t\"===t||\"\\r\"===t||\"\\n\"===t},v=function(t){return\"0\".charCodeAt(0)<=t.charCodeAt(0)&&t.charCodeAt(0)<=\"9\".charCodeAt(0)},f=function(t){function e(){var r=t.call(this)||this;return r.curNumber=\"\",r.curCommandType=-1,r.curCommandRelative=!1,r.canParseCommandOrComma=!0,r.curNumberHasExp=!1,r.curNumberHasExpDigits=!1,r.curNumberHasDecimal=!1,r.curArgs=[],r}return r(e,t),e.prototype.finish=function(t){if(void 0===t&&(t=[]),this.parse(\" \",t),0!==this.curArgs.length||!this.canParseCommandOrComma)throw new SyntaxError(\"Unterminated command at the path end.\");return t},e.prototype.parse=function(t,r){var e=this;void 0===r&&(r=[]);for(var i=function(t){r.push(t),e.curArgs.length=0,e.canParseCommandOrComma=!0},a=0;a<t.length;a++){var n=t[a],o=!(this.curCommandType!==_.ARC||3!==this.curArgs.length&&4!==this.curArgs.length||1!==this.curNumber.length||\"0\"!==this.curNumber&&\"1\"!==this.curNumber),s=v(n)&&(\"0\"===this.curNumber&&\"0\"===n||o);if(!v(n)||s)if(\"e\"!==n&&\"E\"!==n)if(\"-\"!==n&&\"+\"!==n||!this.curNumberHasExp||this.curNumberHasExpDigits)if(\".\"!==n||this.curNumberHasExp||this.curNumberHasDecimal||o){if(this.curNumber&&-1!==this.curCommandType){var u=Number(this.curNumber);if(isNaN(u))throw new SyntaxError(\"Invalid number ending at \"+a);if(this.curCommandType===_.ARC)if(0===this.curArgs.length||1===this.curArgs.length){if(0>u)throw new SyntaxError('Expected positive number, got \"'+u+'\" at index \"'+a+'\"')}else if((3===this.curArgs.length||4===this.curArgs.length)&&\"0\"!==this.curNumber&&\"1\"!==this.curNumber)throw new SyntaxError('Expected a flag, got \"'+this.curNumber+'\" at index \"'+a+'\"');this.curArgs.push(u),this.curArgs.length===N[this.curCommandType]&&(_.HORIZ_LINE_TO===this.curCommandType?i({type:_.HORIZ_LINE_TO,relative:this.curCommandRelative,x:u}):_.VERT_LINE_TO===this.curCommandType?i({type:_.VERT_LINE_TO,relative:this.curCommandRelative,y:u}):this.curCommandType===_.MOVE_TO||this.curCommandType===_.LINE_TO||this.curCommandType===_.SMOOTH_QUAD_TO?(i({type:this.curCommandType,relative:this.curCommandRelative,x:this.curArgs[0],y:this.curArgs[1]}),_.MOVE_TO===this.curCommandType&&(this.curCommandType=_.LINE_TO)):this.curCommandType===_.CURVE_TO?i({type:_.CURVE_TO,relative:this.curCommandRelative,x1:this.curArgs[0],y1:this.curArgs[1],x2:this.curArgs[2],y2:this.curArgs[3],x:this.curArgs[4],y:this.curArgs[5]}):this.curCommandType===_.SMOOTH_CURVE_TO?i({type:_.SMOOTH_CURVE_TO,relative:this.curCommandRelative,x2:this.curArgs[0],y2:this.curArgs[1],x:this.curArgs[2],y:this.curArgs[3]}):this.curCommandType===_.QUAD_TO?i({type:_.QUAD_TO,relative:this.curCommandRelative,x1:this.curArgs[0],y1:this.curArgs[1],x:this.curArgs[2],y:this.curArgs[3]}):this.curCommandType===_.ARC&&i({type:_.ARC,relative:this.curCommandRelative,rX:this.curArgs[0],rY:this.curArgs[1],xRot:this.curArgs[2],lArcFlag:this.curArgs[3],sweepFlag:this.curArgs[4],x:this.curArgs[5],y:this.curArgs[6]})),this.curNumber=\"\",this.curNumberHasExpDigits=!1,this.curNumberHasExp=!1,this.curNumberHasDecimal=!1,this.canParseCommandOrComma=!0}if(!T(n))if(\",\"===n&&this.canParseCommandOrComma)this.canParseCommandOrComma=!1;else if(\"+\"!==n&&\"-\"!==n&&\".\"!==n)if(s)this.curNumber=n,this.curNumberHasDecimal=!1;else{if(0!==this.curArgs.length)throw new SyntaxError(\"Unterminated command at index \"+a+\".\");if(!this.canParseCommandOrComma)throw new SyntaxError('Unexpected character \"'+n+'\" at index '+a+\". Command cannot follow comma\");if(this.canParseCommandOrComma=!1,\"z\"!==n&&\"Z\"!==n)if(\"h\"===n||\"H\"===n)this.curCommandType=_.HORIZ_LINE_TO,this.curCommandRelative=\"h\"===n;else if(\"v\"===n||\"V\"===n)this.curCommandType=_.VERT_LINE_TO,this.curCommandRelative=\"v\"===n;else if(\"m\"===n||\"M\"===n)this.curCommandType=_.MOVE_TO,this.curCommandRelative=\"m\"===n;else if(\"l\"===n||\"L\"===n)this.curCommandType=_.LINE_TO,this.curCommandRelative=\"l\"===n;else if(\"c\"===n||\"C\"===n)this.curCommandType=_.CURVE_TO,this.curCommandRelative=\"c\"===n;else if(\"s\"===n||\"S\"===n)this.curCommandType=_.SMOOTH_CURVE_TO,this.curCommandRelative=\"s\"===n;else if(\"q\"===n||\"Q\"===n)this.curCommandType=_.QUAD_TO,this.curCommandRelative=\"q\"===n;else if(\"t\"===n||\"T\"===n)this.curCommandType=_.SMOOTH_QUAD_TO,this.curCommandRelative=\"t\"===n;else{if(\"a\"!==n&&\"A\"!==n)throw new SyntaxError('Unexpected character \"'+n+'\" at index '+a+\".\");this.curCommandType=_.ARC,this.curCommandRelative=\"a\"===n}else r.push({type:_.CLOSE_PATH}),this.canParseCommandOrComma=!0,this.curCommandType=-1}else this.curNumber=n,this.curNumberHasDecimal=\".\"===n}else this.curNumber+=n,this.curNumberHasDecimal=!0;else this.curNumber+=n;else this.curNumber+=n,this.curNumberHasExp=!0;else this.curNumber+=n,this.curNumberHasExpDigits=this.curNumberHasExp}return r},e.prototype.transform=function(t){return Object.create(this,{parse:{value:function(r,e){void 0===e&&(e=[]);for(var i=0,a=Object.getPrototypeOf(this).parse.call(this,r);i<a.length;i++){var n=a[i],o=t(n);Array.isArray(o)?e.push.apply(e,o):e.push(o)}return e}}})},e}(l),_=function(t){function i(r){var e=t.call(this)||this;return e.commands=\"string\"==typeof r?i.parse(r):r,e}return r(i,t),i.prototype.encode=function(){return i.encode(this.commands)},i.prototype.getBounds=function(){var t=u.CALCULATE_BOUNDS();return this.transform(t),t},i.prototype.transform=function(t){for(var r=[],e=0,i=this.commands;e<i.length;e++){var a=t(i[e]);Array.isArray(a)?r.push.apply(r,a):r.push(a)}return this.commands=r,this},i.encode=function(t){return e(t)},i.parse=function(t){var r=new f,e=[];return r.parse(t,e),r.finish(e),e},i.CLOSE_PATH=1,i.MOVE_TO=2,i.HORIZ_LINE_TO=4,i.VERT_LINE_TO=8,i.LINE_TO=16,i.CURVE_TO=32,i.SMOOTH_CURVE_TO=64,i.QUAD_TO=128,i.SMOOTH_QUAD_TO=256,i.ARC=512,i.LINE_COMMANDS=i.LINE_TO|i.HORIZ_LINE_TO|i.VERT_LINE_TO,i.DRAWING_COMMANDS=i.HORIZ_LINE_TO|i.VERT_LINE_TO|i.LINE_TO|i.CURVE_TO|i.SMOOTH_CURVE_TO|i.QUAD_TO|i.SMOOTH_QUAD_TO|i.ARC,i}(l),N=((O={})[_.MOVE_TO]=2,O[_.LINE_TO]=2,O[_.HORIZ_LINE_TO]=1,O[_.VERT_LINE_TO]=1,O[_.CLOSE_PATH]=0,O[_.QUAD_TO]=4,O[_.SMOOTH_QUAD_TO]=2,O[_.CURVE_TO]=6,O[_.SMOOTH_CURVE_TO]=4,O[_.ARC]=7,O);export{N as COMMAND_ARG_COUNTS,_ as SVGPathData,f as SVGPathDataParser,u as SVGPathDataTransformer,e as encodeSVGPath};\n//# sourceMappingURL=SVGPathData.module.js.map\n","'use strict';\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar $toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = PROPER_FUNCTION_NAME && nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n  redefine(RegExp.prototype, TO_STRING, function toString() {\n    var R = anObject(this);\n    var p = $toString(R.source);\n    var rf = R.flags;\n    var f = $toString(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n    return '/' + p + '/' + f;\n  }, { unsafe: true });\n}\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n  setInternalState(this, {\n    type: ARRAY_ITERATOR,\n    target: toIndexedObject(iterated), // target\n    index: 0,                          // next index\n    kind: kind                         // kind\n  });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n  var state = getInternalState(this);\n  var target = state.target;\n  var kind = state.kind;\n  var index = state.index++;\n  if (!target || index >= target.length) {\n    state.target = undefined;\n    return { value: undefined, done: true };\n  }\n  if (kind == 'keys') return { value: index, done: false };\n  if (kind == 'values') return { value: target[index], done: false };\n  return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nvar handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {\n  if (CollectionPrototype) {\n    // some Chrome versions have non-configurable methods on DOMTokenList\n    if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n      createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n    } catch (error) {\n      CollectionPrototype[ITERATOR] = ArrayValues;\n    }\n    if (!CollectionPrototype[TO_STRING_TAG]) {\n      createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n    }\n    if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n      // some Chrome versions have non-configurable methods on DOMTokenList\n      if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n        createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n      } catch (error) {\n        CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n      }\n    }\n  }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype, COLLECTION_NAME);\n}\n\nhandlePrototype(DOMTokenListPrototype, 'DOMTokenList');\n","/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n  ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n  try {\n    return $getOwnPropertyNames(it);\n  } catch (error) {\n    return windowNames.slice();\n  }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n  return windowNames && toString.call(it) == '[object Window]'\n    ? getWindowNames(it)\n    : $getOwnPropertyNames(toIndexedObject(it));\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing\n  return Object.isExtensible(Object.preventExtensions({}));\n});\n","var $ = require('../internals/export');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternalModule = require('../internals/object-get-own-property-names-external');\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar REQUIRED = false;\nvar METADATA = uid('meta');\nvar id = 0;\n\n// eslint-disable-next-line es/no-object-isextensible -- safe\nvar isExtensible = Object.isExtensible || function () {\n  return true;\n};\n\nvar setMetadata = function (it) {\n  defineProperty(it, METADATA, { value: {\n    objectID: 'O' + id++, // object ID\n    weakData: {}          // weak collections IDs\n  } });\n};\n\nvar fastKey = function (it, create) {\n  // return a primitive with prefix\n  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n  if (!hasOwn(it, METADATA)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return 'F';\n    // not necessary to add metadata\n    if (!create) return 'E';\n    // add missing metadata\n    setMetadata(it);\n  // return object ID\n  } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n  if (!hasOwn(it, METADATA)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return true;\n    // not necessary to add metadata\n    if (!create) return false;\n    // add missing metadata\n    setMetadata(it);\n  // return the store of weak collections IDs\n  } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n  if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it);\n  return it;\n};\n\nvar enable = function () {\n  meta.enable = function () { /* empty */ };\n  REQUIRED = true;\n  var getOwnPropertyNames = getOwnPropertyNamesModule.f;\n  var splice = [].splice;\n  var test = {};\n  test[METADATA] = 1;\n\n  // prevent exposing of metadata key\n  if (getOwnPropertyNames(test).length) {\n    getOwnPropertyNamesModule.f = function (it) {\n      var result = getOwnPropertyNames(it);\n      for (var i = 0, length = result.length; i < length; i++) {\n        if (result[i] === METADATA) {\n          splice.call(result, i, 1);\n          break;\n        }\n      } return result;\n    };\n\n    $({ target: 'Object', stat: true, forced: true }, {\n      getOwnPropertyNames: getOwnPropertyNamesExternalModule.f\n    });\n  }\n};\n\nvar meta = module.exports = {\n  enable: enable,\n  fastKey: fastKey,\n  getWeakData: getWeakData,\n  onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar redefineAll = require('../internals/redefine-all');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n  getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n    var C = wrapper(function (that, iterable) {\n      anInstance(that, C, CONSTRUCTOR_NAME);\n      setInternalState(that, {\n        type: CONSTRUCTOR_NAME,\n        index: create(null),\n        first: undefined,\n        last: undefined,\n        size: 0\n      });\n      if (!DESCRIPTORS) that.size = 0;\n      if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n    });\n\n    var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n    var define = function (that, key, value) {\n      var state = getInternalState(that);\n      var entry = getEntry(that, key);\n      var previous, index;\n      // change existing entry\n      if (entry) {\n        entry.value = value;\n      // create new entry\n      } else {\n        state.last = entry = {\n          index: index = fastKey(key, true),\n          key: key,\n          value: value,\n          previous: previous = state.last,\n          next: undefined,\n          removed: false\n        };\n        if (!state.first) state.first = entry;\n        if (previous) previous.next = entry;\n        if (DESCRIPTORS) state.size++;\n        else that.size++;\n        // add to index\n        if (index !== 'F') state.index[index] = entry;\n      } return that;\n    };\n\n    var getEntry = function (that, key) {\n      var state = getInternalState(that);\n      // fast case\n      var index = fastKey(key);\n      var entry;\n      if (index !== 'F') return state.index[index];\n      // frozen object case\n      for (entry = state.first; entry; entry = entry.next) {\n        if (entry.key == key) return entry;\n      }\n    };\n\n    redefineAll(C.prototype, {\n      // `{ Map, Set }.prototype.clear()` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.clear\n      // https://tc39.es/ecma262/#sec-set.prototype.clear\n      clear: function clear() {\n        var that = this;\n        var state = getInternalState(that);\n        var data = state.index;\n        var entry = state.first;\n        while (entry) {\n          entry.removed = true;\n          if (entry.previous) entry.previous = entry.previous.next = undefined;\n          delete data[entry.index];\n          entry = entry.next;\n        }\n        state.first = state.last = undefined;\n        if (DESCRIPTORS) state.size = 0;\n        else that.size = 0;\n      },\n      // `{ Map, Set }.prototype.delete(key)` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.delete\n      // https://tc39.es/ecma262/#sec-set.prototype.delete\n      'delete': function (key) {\n        var that = this;\n        var state = getInternalState(that);\n        var entry = getEntry(that, key);\n        if (entry) {\n          var next = entry.next;\n          var prev = entry.previous;\n          delete state.index[entry.index];\n          entry.removed = true;\n          if (prev) prev.next = next;\n          if (next) next.previous = prev;\n          if (state.first == entry) state.first = next;\n          if (state.last == entry) state.last = prev;\n          if (DESCRIPTORS) state.size--;\n          else that.size--;\n        } return !!entry;\n      },\n      // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.foreach\n      // https://tc39.es/ecma262/#sec-set.prototype.foreach\n      forEach: function forEach(callbackfn /* , that = undefined */) {\n        var state = getInternalState(this);\n        var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n        var entry;\n        while (entry = entry ? entry.next : state.first) {\n          boundFunction(entry.value, entry.key, this);\n          // revert to the last existing entry\n          while (entry && entry.removed) entry = entry.previous;\n        }\n      },\n      // `{ Map, Set}.prototype.has(key)` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.has\n      // https://tc39.es/ecma262/#sec-set.prototype.has\n      has: function has(key) {\n        return !!getEntry(this, key);\n      }\n    });\n\n    redefineAll(C.prototype, IS_MAP ? {\n      // `Map.prototype.get(key)` method\n      // https://tc39.es/ecma262/#sec-map.prototype.get\n      get: function get(key) {\n        var entry = getEntry(this, key);\n        return entry && entry.value;\n      },\n      // `Map.prototype.set(key, value)` method\n      // https://tc39.es/ecma262/#sec-map.prototype.set\n      set: function set(key, value) {\n        return define(this, key === 0 ? 0 : key, value);\n      }\n    } : {\n      // `Set.prototype.add(value)` method\n      // https://tc39.es/ecma262/#sec-set.prototype.add\n      add: function add(value) {\n        return define(this, value = value === 0 ? 0 : value, value);\n      }\n    });\n    if (DESCRIPTORS) defineProperty(C.prototype, 'size', {\n      get: function () {\n        return getInternalState(this).size;\n      }\n    });\n    return C;\n  },\n  setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) {\n    var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n    var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n    var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n    // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods\n    // https://tc39.es/ecma262/#sec-map.prototype.entries\n    // https://tc39.es/ecma262/#sec-map.prototype.keys\n    // https://tc39.es/ecma262/#sec-map.prototype.values\n    // https://tc39.es/ecma262/#sec-map.prototype-@@iterator\n    // https://tc39.es/ecma262/#sec-set.prototype.entries\n    // https://tc39.es/ecma262/#sec-set.prototype.keys\n    // https://tc39.es/ecma262/#sec-set.prototype.values\n    // https://tc39.es/ecma262/#sec-set.prototype-@@iterator\n    defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) {\n      setInternalState(this, {\n        type: ITERATOR_NAME,\n        target: iterated,\n        state: getInternalCollectionState(iterated),\n        kind: kind,\n        last: undefined\n      });\n    }, function () {\n      var state = getInternalIteratorState(this);\n      var kind = state.kind;\n      var entry = state.last;\n      // revert to the last existing entry\n      while (entry && entry.removed) entry = entry.previous;\n      // get next entry\n      if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n        // or finish the iteration\n        state.target = undefined;\n        return { value: undefined, done: true };\n      }\n      // return step by kind\n      if (kind == 'keys') return { value: entry.key, done: false };\n      if (kind == 'values') return { value: entry.value, done: false };\n      return { value: [entry.key, entry.value], done: false };\n    }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n    // `{ Map, Set }.prototype[@@species]` accessors\n    // https://tc39.es/ecma262/#sec-get-map-@@species\n    // https://tc39.es/ecma262/#sec-get-set-@@species\n    setSpecies(CONSTRUCTOR_NAME);\n  }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n  var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n  var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n  var ADDER = IS_MAP ? 'set' : 'add';\n  var NativeConstructor = global[CONSTRUCTOR_NAME];\n  var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n  var Constructor = NativeConstructor;\n  var exported = {};\n\n  var fixMethod = function (KEY) {\n    var nativeMethod = NativePrototype[KEY];\n    redefine(NativePrototype, KEY,\n      KEY == 'add' ? function add(value) {\n        nativeMethod.call(this, value === 0 ? 0 : value);\n        return this;\n      } : KEY == 'delete' ? function (key) {\n        return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n      } : KEY == 'get' ? function get(key) {\n        return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key);\n      } : KEY == 'has' ? function has(key) {\n        return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n      } : function set(key, value) {\n        nativeMethod.call(this, key === 0 ? 0 : key, value);\n        return this;\n      }\n    );\n  };\n\n  var REPLACE = isForced(\n    CONSTRUCTOR_NAME,\n    !isCallable(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n      new NativeConstructor().entries().next();\n    }))\n  );\n\n  if (REPLACE) {\n    // create collection constructor\n    Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n    InternalMetadataModule.enable();\n  } else if (isForced(CONSTRUCTOR_NAME, true)) {\n    var instance = new Constructor();\n    // early implementations not supports chaining\n    var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n    // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n    var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n    // most early implementations doesn't supports iterables, most modern - not close it correctly\n    // eslint-disable-next-line no-new -- required for testing\n    var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n    // for early implementations -0 and +0 not the same\n    var BUGGY_ZERO = !IS_WEAK && fails(function () {\n      // V8 ~ Chromium 42- fails only with 5+ elements\n      var $instance = new NativeConstructor();\n      var index = 5;\n      while (index--) $instance[ADDER](index, index);\n      return !$instance.has(-0);\n    });\n\n    if (!ACCEPT_ITERABLES) {\n      Constructor = wrapper(function (dummy, iterable) {\n        anInstance(dummy, Constructor, CONSTRUCTOR_NAME);\n        var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n        if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n        return that;\n      });\n      Constructor.prototype = NativePrototype;\n      NativePrototype.constructor = Constructor;\n    }\n\n    if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n      fixMethod('delete');\n      fixMethod('has');\n      IS_MAP && fixMethod('get');\n    }\n\n    if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n    // weak collections should not contains .clear method\n    if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n  }\n\n  exported[CONSTRUCTOR_NAME] = Constructor;\n  $({ global: true, forced: Constructor != NativeConstructor }, exported);\n\n  setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n  if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n  return Constructor;\n};\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.es/ecma262/#sec-map-objects\nmodule.exports = collection('Map', function (init) {\n  return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\n\nvar nativeApply = getBuiltIn('Reflect', 'apply');\nvar functionApply = Function.apply;\n\n// MS Edge argumentsList argument is optional\nvar OPTIONAL_ARGUMENTS_LIST = !fails(function () {\n  nativeApply(function () { /* empty */ });\n});\n\n// `Reflect.apply` method\n// https://tc39.es/ecma262/#sec-reflect.apply\n$({ target: 'Reflect', stat: true, forced: OPTIONAL_ARGUMENTS_LIST }, {\n  apply: function apply(target, thisArgument, argumentsList) {\n    aCallable(target);\n    anObject(argumentsList);\n    return nativeApply\n      ? nativeApply(target, thisArgument, argumentsList)\n      : functionApply.call(target, thisArgument, argumentsList);\n  }\n});\n","var $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar objectGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\n// `Reflect.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-reflect.getprototypeof\n$({ target: 'Reflect', stat: true, sham: !CORRECT_PROTOTYPE_GETTER }, {\n  getPrototypeOf: function getPrototypeOf(target) {\n    return objectGetPrototypeOf(anObject(target));\n  }\n});\n","function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\n/* eslint-disable no-bitwise -- used for calculations */\n\n/* eslint-disable unicorn/prefer-query-selector -- aiming at\n  backward-compatibility */\n\n/**\n* StackBlur - a fast almost Gaussian Blur For Canvas\n*\n* In case you find this class useful - especially in commercial projects -\n* I am not totally unhappy for a small donation to my PayPal account\n* mario@quasimondo.de\n*\n* Or support me on flattr:\n* {@link https://flattr.com/thing/72791/StackBlur-a-fast-almost-Gaussian-Blur-Effect-for-CanvasJavascript}.\n*\n* @module StackBlur\n* @author Mario Klingemann\n* Contact: mario@quasimondo.com\n* Website: {@link http://www.quasimondo.com/StackBlurForCanvas/StackBlurDemo.html}\n* Twitter: @quasimondo\n*\n* @copyright (c) 2010 Mario Klingemann\n*\n* Permission is hereby granted, free of charge, to any person\n* obtaining a copy of this software and associated documentation\n* files (the \"Software\"), to deal in the Software without\n* restriction, including without limitation the rights to use,\n* copy, modify, merge, publish, distribute, sublicense, and/or sell\n* copies of the Software, and to permit persons to whom the\n* Software is furnished to do so, subject to the following\n* conditions:\n*\n* The above copyright notice and this permission notice shall be\n* included in all copies or substantial portions of the Software.\n*\n* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n* OTHER DEALINGS IN THE SOFTWARE.\n*/\nvar mulTable = [512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292, 512, 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292, 273, 512, 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259, 496, 475, 456, 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292, 282, 273, 265, 512, 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373, 364, 354, 345, 337, 328, 320, 312, 305, 298, 291, 284, 278, 271, 265, 259, 507, 496, 485, 475, 465, 456, 446, 437, 428, 420, 412, 404, 396, 388, 381, 374, 367, 360, 354, 347, 341, 335, 329, 323, 318, 312, 307, 302, 297, 292, 287, 282, 278, 273, 269, 265, 261, 512, 505, 497, 489, 482, 475, 468, 461, 454, 447, 441, 435, 428, 422, 417, 411, 405, 399, 394, 389, 383, 378, 373, 368, 364, 359, 354, 350, 345, 341, 337, 332, 328, 324, 320, 316, 312, 309, 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271, 268, 265, 262, 259, 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456, 451, 446, 442, 437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388, 385, 381, 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335, 332, 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292, 289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259];\nvar shgTable = [9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24];\n/**\n * @param {string|HTMLImageElement} img\n * @param {string|HTMLCanvasElement} canvas\n * @param {Float} radius\n * @param {boolean} blurAlphaChannel\n * @param {boolean} useOffsetWidth\n * @returns {undefined}\n */\n\nfunction processImage(img, canvas, radius, blurAlphaChannel, useOffsetWidth) {\n  if (typeof img === 'string') {\n    img = document.getElementById(img);\n  }\n\n  if (!img || !('naturalWidth' in img)) {\n    return;\n  }\n\n  var dimensionType = useOffsetWidth ? 'offset' : 'natural';\n  var w = img[dimensionType + 'Width'];\n  var h = img[dimensionType + 'Height'];\n\n  if (typeof canvas === 'string') {\n    canvas = document.getElementById(canvas);\n  }\n\n  if (!canvas || !('getContext' in canvas)) {\n    return;\n  }\n\n  canvas.style.width = w + 'px';\n  canvas.style.height = h + 'px';\n  canvas.width = w;\n  canvas.height = h;\n  var context = canvas.getContext('2d');\n  context.clearRect(0, 0, w, h);\n  context.drawImage(img, 0, 0, img.naturalWidth, img.naturalHeight, 0, 0, w, h);\n\n  if (isNaN(radius) || radius < 1) {\n    return;\n  }\n\n  if (blurAlphaChannel) {\n    processCanvasRGBA(canvas, 0, 0, w, h, radius);\n  } else {\n    processCanvasRGB(canvas, 0, 0, w, h, radius);\n  }\n}\n/**\n * @param {string|HTMLCanvasElement} canvas\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @throws {Error|TypeError}\n * @returns {ImageData} See {@link https://html.spec.whatwg.org/multipage/canvas.html#imagedata}\n */\n\n\nfunction getImageDataFromCanvas(canvas, topX, topY, width, height) {\n  if (typeof canvas === 'string') {\n    canvas = document.getElementById(canvas);\n  }\n\n  if (!canvas || _typeof(canvas) !== 'object' || !('getContext' in canvas)) {\n    throw new TypeError('Expecting canvas with `getContext` method ' + 'in processCanvasRGB(A) calls!');\n  }\n\n  var context = canvas.getContext('2d');\n\n  try {\n    return context.getImageData(topX, topY, width, height);\n  } catch (e) {\n    throw new Error('unable to access image data: ' + e);\n  }\n}\n/**\n * @param {HTMLCanvasElement} canvas\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {undefined}\n */\n\n\nfunction processCanvasRGBA(canvas, topX, topY, width, height, radius) {\n  if (isNaN(radius) || radius < 1) {\n    return;\n  }\n\n  radius |= 0;\n  var imageData = getImageDataFromCanvas(canvas, topX, topY, width, height);\n  imageData = processImageDataRGBA(imageData, topX, topY, width, height, radius);\n  canvas.getContext('2d').putImageData(imageData, topX, topY);\n}\n/**\n * @param {ImageData} imageData\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {ImageData}\n */\n\n\nfunction processImageDataRGBA(imageData, topX, topY, width, height, radius) {\n  var pixels = imageData.data;\n  var div = 2 * radius + 1; // const w4 = width << 2;\n\n  var widthMinus1 = width - 1;\n  var heightMinus1 = height - 1;\n  var radiusPlus1 = radius + 1;\n  var sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;\n  var stackStart = new BlurStack();\n  var stack = stackStart;\n  var stackEnd;\n\n  for (var i = 1; i < div; i++) {\n    stack = stack.next = new BlurStack();\n\n    if (i === radiusPlus1) {\n      stackEnd = stack;\n    }\n  }\n\n  stack.next = stackStart;\n  var stackIn = null,\n      stackOut = null,\n      yw = 0,\n      yi = 0;\n  var mulSum = mulTable[radius];\n  var shgSum = shgTable[radius];\n\n  for (var y = 0; y < height; y++) {\n    stack = stackStart;\n    var pr = pixels[yi],\n        pg = pixels[yi + 1],\n        pb = pixels[yi + 2],\n        pa = pixels[yi + 3];\n\n    for (var _i = 0; _i < radiusPlus1; _i++) {\n      stack.r = pr;\n      stack.g = pg;\n      stack.b = pb;\n      stack.a = pa;\n      stack = stack.next;\n    }\n\n    var rInSum = 0,\n        gInSum = 0,\n        bInSum = 0,\n        aInSum = 0,\n        rOutSum = radiusPlus1 * pr,\n        gOutSum = radiusPlus1 * pg,\n        bOutSum = radiusPlus1 * pb,\n        aOutSum = radiusPlus1 * pa,\n        rSum = sumFactor * pr,\n        gSum = sumFactor * pg,\n        bSum = sumFactor * pb,\n        aSum = sumFactor * pa;\n\n    for (var _i2 = 1; _i2 < radiusPlus1; _i2++) {\n      var p = yi + ((widthMinus1 < _i2 ? widthMinus1 : _i2) << 2);\n      var r = pixels[p],\n          g = pixels[p + 1],\n          b = pixels[p + 2],\n          a = pixels[p + 3];\n      var rbs = radiusPlus1 - _i2;\n      rSum += (stack.r = r) * rbs;\n      gSum += (stack.g = g) * rbs;\n      bSum += (stack.b = b) * rbs;\n      aSum += (stack.a = a) * rbs;\n      rInSum += r;\n      gInSum += g;\n      bInSum += b;\n      aInSum += a;\n      stack = stack.next;\n    }\n\n    stackIn = stackStart;\n    stackOut = stackEnd;\n\n    for (var x = 0; x < width; x++) {\n      var paInitial = aSum * mulSum >> shgSum;\n      pixels[yi + 3] = paInitial;\n\n      if (paInitial !== 0) {\n        var _a2 = 255 / paInitial;\n\n        pixels[yi] = (rSum * mulSum >> shgSum) * _a2;\n        pixels[yi + 1] = (gSum * mulSum >> shgSum) * _a2;\n        pixels[yi + 2] = (bSum * mulSum >> shgSum) * _a2;\n      } else {\n        pixels[yi] = pixels[yi + 1] = pixels[yi + 2] = 0;\n      }\n\n      rSum -= rOutSum;\n      gSum -= gOutSum;\n      bSum -= bOutSum;\n      aSum -= aOutSum;\n      rOutSum -= stackIn.r;\n      gOutSum -= stackIn.g;\n      bOutSum -= stackIn.b;\n      aOutSum -= stackIn.a;\n\n      var _p = x + radius + 1;\n\n      _p = yw + (_p < widthMinus1 ? _p : widthMinus1) << 2;\n      rInSum += stackIn.r = pixels[_p];\n      gInSum += stackIn.g = pixels[_p + 1];\n      bInSum += stackIn.b = pixels[_p + 2];\n      aInSum += stackIn.a = pixels[_p + 3];\n      rSum += rInSum;\n      gSum += gInSum;\n      bSum += bInSum;\n      aSum += aInSum;\n      stackIn = stackIn.next;\n      var _stackOut = stackOut,\n          _r = _stackOut.r,\n          _g = _stackOut.g,\n          _b = _stackOut.b,\n          _a = _stackOut.a;\n      rOutSum += _r;\n      gOutSum += _g;\n      bOutSum += _b;\n      aOutSum += _a;\n      rInSum -= _r;\n      gInSum -= _g;\n      bInSum -= _b;\n      aInSum -= _a;\n      stackOut = stackOut.next;\n      yi += 4;\n    }\n\n    yw += width;\n  }\n\n  for (var _x = 0; _x < width; _x++) {\n    yi = _x << 2;\n\n    var _pr = pixels[yi],\n        _pg = pixels[yi + 1],\n        _pb = pixels[yi + 2],\n        _pa = pixels[yi + 3],\n        _rOutSum = radiusPlus1 * _pr,\n        _gOutSum = radiusPlus1 * _pg,\n        _bOutSum = radiusPlus1 * _pb,\n        _aOutSum = radiusPlus1 * _pa,\n        _rSum = sumFactor * _pr,\n        _gSum = sumFactor * _pg,\n        _bSum = sumFactor * _pb,\n        _aSum = sumFactor * _pa;\n\n    stack = stackStart;\n\n    for (var _i3 = 0; _i3 < radiusPlus1; _i3++) {\n      stack.r = _pr;\n      stack.g = _pg;\n      stack.b = _pb;\n      stack.a = _pa;\n      stack = stack.next;\n    }\n\n    var yp = width;\n    var _gInSum = 0,\n        _bInSum = 0,\n        _aInSum = 0,\n        _rInSum = 0;\n\n    for (var _i4 = 1; _i4 <= radius; _i4++) {\n      yi = yp + _x << 2;\n\n      var _rbs = radiusPlus1 - _i4;\n\n      _rSum += (stack.r = _pr = pixels[yi]) * _rbs;\n      _gSum += (stack.g = _pg = pixels[yi + 1]) * _rbs;\n      _bSum += (stack.b = _pb = pixels[yi + 2]) * _rbs;\n      _aSum += (stack.a = _pa = pixels[yi + 3]) * _rbs;\n      _rInSum += _pr;\n      _gInSum += _pg;\n      _bInSum += _pb;\n      _aInSum += _pa;\n      stack = stack.next;\n\n      if (_i4 < heightMinus1) {\n        yp += width;\n      }\n    }\n\n    yi = _x;\n    stackIn = stackStart;\n    stackOut = stackEnd;\n\n    for (var _y = 0; _y < height; _y++) {\n      var _p2 = yi << 2;\n\n      pixels[_p2 + 3] = _pa = _aSum * mulSum >> shgSum;\n\n      if (_pa > 0) {\n        _pa = 255 / _pa;\n        pixels[_p2] = (_rSum * mulSum >> shgSum) * _pa;\n        pixels[_p2 + 1] = (_gSum * mulSum >> shgSum) * _pa;\n        pixels[_p2 + 2] = (_bSum * mulSum >> shgSum) * _pa;\n      } else {\n        pixels[_p2] = pixels[_p2 + 1] = pixels[_p2 + 2] = 0;\n      }\n\n      _rSum -= _rOutSum;\n      _gSum -= _gOutSum;\n      _bSum -= _bOutSum;\n      _aSum -= _aOutSum;\n      _rOutSum -= stackIn.r;\n      _gOutSum -= stackIn.g;\n      _bOutSum -= stackIn.b;\n      _aOutSum -= stackIn.a;\n      _p2 = _x + ((_p2 = _y + radiusPlus1) < heightMinus1 ? _p2 : heightMinus1) * width << 2;\n      _rSum += _rInSum += stackIn.r = pixels[_p2];\n      _gSum += _gInSum += stackIn.g = pixels[_p2 + 1];\n      _bSum += _bInSum += stackIn.b = pixels[_p2 + 2];\n      _aSum += _aInSum += stackIn.a = pixels[_p2 + 3];\n      stackIn = stackIn.next;\n      _rOutSum += _pr = stackOut.r;\n      _gOutSum += _pg = stackOut.g;\n      _bOutSum += _pb = stackOut.b;\n      _aOutSum += _pa = stackOut.a;\n      _rInSum -= _pr;\n      _gInSum -= _pg;\n      _bInSum -= _pb;\n      _aInSum -= _pa;\n      stackOut = stackOut.next;\n      yi += width;\n    }\n  }\n\n  return imageData;\n}\n/**\n * @param {HTMLCanvasElement} canvas\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {undefined}\n */\n\n\nfunction processCanvasRGB(canvas, topX, topY, width, height, radius) {\n  if (isNaN(radius) || radius < 1) {\n    return;\n  }\n\n  radius |= 0;\n  var imageData = getImageDataFromCanvas(canvas, topX, topY, width, height);\n  imageData = processImageDataRGB(imageData, topX, topY, width, height, radius);\n  canvas.getContext('2d').putImageData(imageData, topX, topY);\n}\n/**\n * @param {ImageData} imageData\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {ImageData}\n */\n\n\nfunction processImageDataRGB(imageData, topX, topY, width, height, radius) {\n  var pixels = imageData.data;\n  var div = 2 * radius + 1; // const w4 = width << 2;\n\n  var widthMinus1 = width - 1;\n  var heightMinus1 = height - 1;\n  var radiusPlus1 = radius + 1;\n  var sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;\n  var stackStart = new BlurStack();\n  var stack = stackStart;\n  var stackEnd;\n\n  for (var i = 1; i < div; i++) {\n    stack = stack.next = new BlurStack();\n\n    if (i === radiusPlus1) {\n      stackEnd = stack;\n    }\n  }\n\n  stack.next = stackStart;\n  var stackIn = null;\n  var stackOut = null;\n  var mulSum = mulTable[radius];\n  var shgSum = shgTable[radius];\n  var p, rbs;\n  var yw = 0,\n      yi = 0;\n\n  for (var y = 0; y < height; y++) {\n    var pr = pixels[yi],\n        pg = pixels[yi + 1],\n        pb = pixels[yi + 2],\n        rOutSum = radiusPlus1 * pr,\n        gOutSum = radiusPlus1 * pg,\n        bOutSum = radiusPlus1 * pb,\n        rSum = sumFactor * pr,\n        gSum = sumFactor * pg,\n        bSum = sumFactor * pb;\n    stack = stackStart;\n\n    for (var _i5 = 0; _i5 < radiusPlus1; _i5++) {\n      stack.r = pr;\n      stack.g = pg;\n      stack.b = pb;\n      stack = stack.next;\n    }\n\n    var rInSum = 0,\n        gInSum = 0,\n        bInSum = 0;\n\n    for (var _i6 = 1; _i6 < radiusPlus1; _i6++) {\n      p = yi + ((widthMinus1 < _i6 ? widthMinus1 : _i6) << 2);\n      rSum += (stack.r = pr = pixels[p]) * (rbs = radiusPlus1 - _i6);\n      gSum += (stack.g = pg = pixels[p + 1]) * rbs;\n      bSum += (stack.b = pb = pixels[p + 2]) * rbs;\n      rInSum += pr;\n      gInSum += pg;\n      bInSum += pb;\n      stack = stack.next;\n    }\n\n    stackIn = stackStart;\n    stackOut = stackEnd;\n\n    for (var x = 0; x < width; x++) {\n      pixels[yi] = rSum * mulSum >> shgSum;\n      pixels[yi + 1] = gSum * mulSum >> shgSum;\n      pixels[yi + 2] = bSum * mulSum >> shgSum;\n      rSum -= rOutSum;\n      gSum -= gOutSum;\n      bSum -= bOutSum;\n      rOutSum -= stackIn.r;\n      gOutSum -= stackIn.g;\n      bOutSum -= stackIn.b;\n      p = yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1) << 2;\n      rInSum += stackIn.r = pixels[p];\n      gInSum += stackIn.g = pixels[p + 1];\n      bInSum += stackIn.b = pixels[p + 2];\n      rSum += rInSum;\n      gSum += gInSum;\n      bSum += bInSum;\n      stackIn = stackIn.next;\n      rOutSum += pr = stackOut.r;\n      gOutSum += pg = stackOut.g;\n      bOutSum += pb = stackOut.b;\n      rInSum -= pr;\n      gInSum -= pg;\n      bInSum -= pb;\n      stackOut = stackOut.next;\n      yi += 4;\n    }\n\n    yw += width;\n  }\n\n  for (var _x2 = 0; _x2 < width; _x2++) {\n    yi = _x2 << 2;\n\n    var _pr2 = pixels[yi],\n        _pg2 = pixels[yi + 1],\n        _pb2 = pixels[yi + 2],\n        _rOutSum2 = radiusPlus1 * _pr2,\n        _gOutSum2 = radiusPlus1 * _pg2,\n        _bOutSum2 = radiusPlus1 * _pb2,\n        _rSum2 = sumFactor * _pr2,\n        _gSum2 = sumFactor * _pg2,\n        _bSum2 = sumFactor * _pb2;\n\n    stack = stackStart;\n\n    for (var _i7 = 0; _i7 < radiusPlus1; _i7++) {\n      stack.r = _pr2;\n      stack.g = _pg2;\n      stack.b = _pb2;\n      stack = stack.next;\n    }\n\n    var _rInSum2 = 0,\n        _gInSum2 = 0,\n        _bInSum2 = 0;\n\n    for (var _i8 = 1, yp = width; _i8 <= radius; _i8++) {\n      yi = yp + _x2 << 2;\n      _rSum2 += (stack.r = _pr2 = pixels[yi]) * (rbs = radiusPlus1 - _i8);\n      _gSum2 += (stack.g = _pg2 = pixels[yi + 1]) * rbs;\n      _bSum2 += (stack.b = _pb2 = pixels[yi + 2]) * rbs;\n      _rInSum2 += _pr2;\n      _gInSum2 += _pg2;\n      _bInSum2 += _pb2;\n      stack = stack.next;\n\n      if (_i8 < heightMinus1) {\n        yp += width;\n      }\n    }\n\n    yi = _x2;\n    stackIn = stackStart;\n    stackOut = stackEnd;\n\n    for (var _y2 = 0; _y2 < height; _y2++) {\n      p = yi << 2;\n      pixels[p] = _rSum2 * mulSum >> shgSum;\n      pixels[p + 1] = _gSum2 * mulSum >> shgSum;\n      pixels[p + 2] = _bSum2 * mulSum >> shgSum;\n      _rSum2 -= _rOutSum2;\n      _gSum2 -= _gOutSum2;\n      _bSum2 -= _bOutSum2;\n      _rOutSum2 -= stackIn.r;\n      _gOutSum2 -= stackIn.g;\n      _bOutSum2 -= stackIn.b;\n      p = _x2 + ((p = _y2 + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width << 2;\n      _rSum2 += _rInSum2 += stackIn.r = pixels[p];\n      _gSum2 += _gInSum2 += stackIn.g = pixels[p + 1];\n      _bSum2 += _bInSum2 += stackIn.b = pixels[p + 2];\n      stackIn = stackIn.next;\n      _rOutSum2 += _pr2 = stackOut.r;\n      _gOutSum2 += _pg2 = stackOut.g;\n      _bOutSum2 += _pb2 = stackOut.b;\n      _rInSum2 -= _pr2;\n      _gInSum2 -= _pg2;\n      _bInSum2 -= _pb2;\n      stackOut = stackOut.next;\n      yi += width;\n    }\n  }\n\n  return imageData;\n}\n/**\n *\n */\n\n\nvar BlurStack =\n/**\n * Set properties.\n */\nfunction BlurStack() {\n  _classCallCheck(this, BlurStack);\n\n  this.r = 0;\n  this.g = 0;\n  this.b = 0;\n  this.a = 0;\n  this.next = null;\n};\n\nexport { BlurStack, processCanvasRGB as canvasRGB, processCanvasRGBA as canvasRGBA, processImage as image, processImageDataRGB as imageDataRGB, processImageDataRGBA as imageDataRGBA };\n"],"names":["match","version","check","it","Math","globalThis","window","self","global","this","Function","key","value","Object","defineProperty","configurable","writable","error","SHARED","setGlobal","module","store","undefined","push","mode","copyright","TypeError","argument","requireObjectCoercible","hasOwnProperty","hasOwn","call","toObject","id","postfix","random","String","toString","aFunction","isCallable","namespace","method","arguments","length","getBuiltIn","process","Deno","versions","v8","split","userAgent","exec","getOwnPropertySymbols","fails","symbol","Symbol","sham","V8_VERSION","NATIVE_SYMBOL","iterator","WellKnownSymbolsStore","shared","createWellKnownSymbol","USE_SYMBOL_AS_UID","withoutSetter","uid","name","test","wellKnownSymbol","get","document","EXISTS","isObject","createElement","DESCRIPTORS","a","$Symbol","tryToString","V","P","func","aCallable","TO_PRIMITIVE","input","pref","isSymbol","result","exoticToPrim","getMethod","fn","val","valueOf","ordinaryToPrimitive","toPrimitive","$defineProperty","O","Attributes","anObject","toPropertyKey","IE8_DOM_DEFINE","bitmap","enumerable","object","definePropertyModule","f","createPropertyDescriptor","functionToString","inspectSource","set","has","WeakMap","keys","OBJECT_ALREADY_INITIALIZED","NATIVE_WEAK_MAP","state","wmget","wmhas","wmset","metadata","facade","STATE","sharedKey","hiddenKeys","createNonEnumerableProperty","enforce","getterFor","TYPE","type","FunctionPrototype","prototype","getDescriptor","getOwnPropertyDescriptor","PROPER","CONFIGURABLE","CONFIGURABLE_FUNCTION_NAME","require$$0","getInternalState","InternalStateModule","enforceInternalState","TEMPLATE","options","unsafe","simple","noTargetGet","slice","replace","source","join","TO_STRING_TAG","CORRECT_ARGUMENTS","classofRaw","TO_STRING_TAG_SUPPORT","tag","tryGet","callee","classof","redefine","$propertyIsEnumerable","propertyIsEnumerable","descriptor","IndexedObject","$getOwnPropertyDescriptor","toIndexedObject","propertyIsEnumerableModule","ceil","floor","number","max","min","index","integer","toIntegerOrInfinity","obj","toLength","createMethod","IS_INCLUDES","$this","el","fromIndex","lengthOfArrayLike","toAbsoluteIndex","includes","indexOf","names","i","enumBugKeys","concat","getOwnPropertyNames","internalObjectKeys","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","target","ownKeys","getOwnPropertyDescriptorModule","replacement","isForced","feature","detection","data","normalize","POLYFILL","NATIVE","string","toLowerCase","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","forced","copyConstructorProperties","Promise","src","setPrototypeOf","setter","CORRECT_SETTER","Array","proto","aPossiblePrototype","__proto__","TAG","SPECIES","CONSTRUCTOR_NAME","Constructor","ITERATOR","ArrayPrototype","Iterators","that","b","c","apply","usingIterator","iteratorMethod","getIteratorMethod","kind","innerResult","innerError","Result","stopped","iterable","unboundFunction","iterFn","next","step","AS_ENTRIES","IS_ITERATOR","INTERRUPTED","bind","stop","condition","iteratorClose","callFn","isArrayIteratorMethod","getIterator","done","SAFE_CLOSING","called","iteratorWithReturn","from","location","defer","channel","port","SKIP_CLOSING","ITERATION_SUPPORT","empty","construct","constructorRegExp","INCORRECT_TO_STRING","isConstructorModern","defaultConstructor","S","C","constructor","isConstructor","aConstructor","setImmediate","clear","clearImmediate","MessageChannel","Dispatch","counter","queue","ONREADYSTATECHANGE","run","runner","listener","event","post","postMessage","protocol","host","args","argumentsLength","IS_NODE","nextTick","now","IS_IOS","port2","port1","onmessage","addEventListener","importScripts","html","appendChild","removeChild","setTimeout","flush","head","last","notify","toggle","node","promise","then","Pebble","macrotask","require$$1","MutationObserver","WebKitMutationObserver","queueMicrotaskDescriptor","queueMicrotask","parent","domain","exit","enter","IS_WEBOS_WEBKIT","IS_IOS_PEBBLE","resolve","createTextNode","observe","characterData","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","task","PromiseCapability","reject","$$resolve","$$reject","PROMISE","setInternalState","getInternalPromiseState","NativePromisePrototype","NativePromise","PromiseConstructor","PromiseConstructorPrototype","newPromiseCapability","newPromiseCapabilityModule","newGenericPromiseCapability","DISPATCH_EVENT","createEvent","dispatchEvent","NATIVE_REJECTION_EVENT","PromiseRejectionEvent","UNHANDLED_REJECTION","SUBCLASSING","FORCED","PROMISE_CONSTRUCTOR_SOURCE","GLOBAL_CORE_JS_PROMISE","FakePromise","IS_BROWSER","INCORRECT_ITERATION","checkCorrectnessOfIteration","all","isThenable","isReject","notified","chain","reactions","microtask","ok","exited","reaction","handler","fail","rejection","onHandleUnhandled","onUnhandled","reason","initEvent","console","hostReportErrors","isUnhandled","perform","emit","unwrap","internalReject","internalResolve","wrapper","executor","anInstance","redefineAll","onFulfilled","onRejected","speciesConstructor","wrap","setToStringTag","setSpecies","r","capability","x","promiseCapability","promiseResolve","$promiseResolve","values","remaining","iterate","alreadyCalled","race","deleteProperty","propertyKey","runtime","exports","Op","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","err","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","create","context","Context","_invoke","GenStateSuspendedStart","arg","GenStateExecuting","Error","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","Gp","defineIteratorMethods","forEach","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","info","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","genFun","ctor","mark","awrap","async","iter","reverse","pop","skipTempReset","prev","charAt","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","asyncGeneratorStep","gen","_next","_throw","isArray","originalArray","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_REJECT","NO_HOLES","callbackfn","specificCreate","boundFunction","arraySpeciesCreate","map","filter","some","every","find","findIndex","filterReject","METHOD_NAME","array","foo","Boolean","$map","HAS_SPECIES_SUPPORT","arrayMethodHasSpeciesSupport","whitespace","whitespaces","ltrim","RegExp","rtrim","start","end","trim","$parseFloat","parseFloat","Infinity","trimmedString","activeXDocument","ignoreCase","multiline","dotAll","unicode","sticky","$RegExp","re","lastIndex","defineProperties","Properties","objectKeys","IE_PROTO","EmptyConstructor","scriptTag","content","LT","NullProtoObjectViaActiveX","write","close","temp","parentWindow","NullProtoObject","ActiveXObject","iframeDocument","iframe","documentCreateElement","style","display","contentWindow","open","F","re1","re2","flags","groups","nativeExec","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","UNSUPPORTED_Y","stickyHelpers","BROKEN_CARET","NPCG_INCLUDED","UNSUPPORTED_DOT_ALL","UNSUPPORTED_NCG","reCopy","group","str","raw","regexpFlags","charsAdded","strCopy","RegExpPrototype","KEY","SHAM","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","methods","nativeMethod","regexp","arg2","forceStringMethod","$exec","regexpExec","CONVERT_TO_STRING","pos","first","second","position","size","charCodeAt","codeAt","R","MATCH","nativeMatch","maybeCallNative","matcher","rx","res","regExpExec","fullUnicode","A","n","matchStr","advanceStringIndex","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","matched","captures","namedCaptures","tailPos","m","symbols","ch","capture","REPLACE","REPLACE_KEEPS_$0","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","_","UNSAFE_SUBSTITUTE","searchValue","replaceValue","replacer","functionalReplace","results","accumulatedResult","nextSourcePosition","j","replacerArgs","getSubstitution","isRegExp","error1","error2","$startsWith","startsWith","CORRECT_IS_REGEXP_LOGIC","correctIsRegExpLogic","MDN_POLYFILL_BUG","searchString","notARegExp","search","nativeJoin","ES3_STRINGS","STRICT_METHOD","arrayMethodIsStrict","separator","arr","_i","_s","_e","_arr","_n","_d","len","arr2","o","minLen","arrayLikeToArray","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","instance","_defineProperties","props","protoProps","staticProps","IS_CONCAT_SPREADABLE","MAX_SAFE_INTEGER","MAXIMUM_ALLOWED_INDEX_EXCEEDED","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","k","E","createProperty","$every","IS_RIGHT","memo","$reduce","left","right","CHROME_VERSION","reduce","$endsWith","endsWith","endPosition","arrayPush","MAX_UINT32","SPLIT","nativeSplit","internalSplit","limit","lim","lastLength","output","lastLastIndex","separatorCopy","splitter","unicodeMatching","callRegExpExec","p","q","e","z","originalExec","defaultSetTimout","defaultClearTimeout","cachedSetTimeout","cachedClearTimeout","runTimeout","fun","clearTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","marker","runClearTimeout","Item","noop","on","addListener","once","off","removeListener","removeAllListeners","performance","performanceNow","mozNow","msNow","oNow","webkitNow","Date","getTime","startTime","title","browser","env","argv","binding","cwd","chdir","dir","umask","hrtime","previousTimestamp","clocktime","seconds","nanoseconds","platform","release","config","uptime","hr","root","vendors","suffix","raf","caf","callback","_now","cp","cancelled","round","requestAnimationFrame","cancelAnimationFrame","FUNCTION_NAME_EXISTS","FunctionPrototypeToString","nameRE","PROPER_FUNCTION_NAME","$trim","color_string","alpha","substr","simple_colors","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","feldspar","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslateblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","violetred","wheat","white","whitesmoke","yellow","yellowgreen","color_defs","example","bits","parseInt","processor","channels","g","toRGB","toRGBA","toHex","getHelpXML","examples","sc","xml","setAttribute","list_item","list_color","RGBColor","example_div","cssText","list_item_value","$forEach","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","classList","DOMTokenListPrototype","handlePrototype","CollectionPrototype","COLLECTION_NAME","DOMIterables","_setPrototypeOf","subClass","superClass","_typeof","ReferenceError","assertThisInitialized","_getPrototypeOf","ENTRIES","arrayLike","IS_CONSTRUCTOR","mapfn","mapping","callWithSafeIterationClosing","UNSCOPABLES","$includes","addToUnscopables","$indexOf","nativeIndexOf","NEGATIVE_ZERO","searchElement","$some","PrototypeOfArrayIteratorPrototype","arrayIterator","ObjectPrototype","CORRECT_PROTOTYPE_GETTER","BUGGY_SAFARI_ITERATORS","returnThis","FunctionName","IteratorsCore","KEYS","VALUES","Iterable","NAME","IteratorConstructor","DEFAULT","IS_SET","createIteratorConstructor","CurrentIteratorPrototype","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","entries","$","STRING_ITERATOR","defineIterator","iterated","point","arrayWithoutHoles","iterableToArray","nonIterableSpread","nativeReverse","dummy","Wrapper","NewTarget","NewTargetPrototype","require$$2","require$$3","NUMBER","NativeNumber","NumberPrototype","toNumeric","primValue","toNumber","third","radix","maxCode","digits","code","NaN","NumberWrapper","thisNumberValue","inheritIfRequired","property","_get","receiver","Reflect","base","superPropBase","desc","fill","endPos","extendStatics","d","__extends","__","TO_STRING","nativeToString","NOT_GENERIC","INCORRECT_NAME","$toString","rf","ARRAY_ITERATOR","Arguments","ArrayValues","ArrayIteratorMethods","$getOwnPropertyNames","windowNames","getWindowNames","isExtensible","preventExtensions","REQUIRED","METADATA","setMetadata","objectID","weakData","meta","enable","splice","getOwnPropertyNamesExternalModule","fastKey","getWeakData","onFreeze","FREEZING","internalStateGetterFor","common","IS_WEAK","ADDER","NativeConstructor","NativePrototype","exported","fixMethod","getConstructor","InternalMetadataModule","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","setStrong","collection","init","previous","getEntry","removed","add","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","nativeApply","functionApply","OPTIONAL_ARGUMENTS_LIST","thisArgument","argumentsList","objectGetPrototypeOf","mulTable","shgTable","processCanvasRGBA","canvas","topX","topY","width","height","radius","imageData","getElementById","getContext","getImageData","getImageDataFromCanvas","stackEnd","pixels","div","widthMinus1","heightMinus1","radiusPlus1","sumFactor","stackStart","BlurStack","stack","stackIn","stackOut","yw","yi","mulSum","shgSum","y","pr","pg","pb","pa","rInSum","gInSum","bInSum","aInSum","rOutSum","gOutSum","bOutSum","aOutSum","rSum","gSum","bSum","aSum","_i2","rbs","paInitial","_a2","_p","_stackOut","_r","_g","_b","_a","_x","_pr","_pg","_pb","_pa","_rOutSum","_gOutSum","_bOutSum","_aOutSum","_rSum","_gSum","_bSum","_aSum","_i3","yp","_gInSum","_bInSum","_aInSum","_rInSum","_i4","_rbs","_y","_p2","processImageDataRGBA","putImageData","_classCallCheck"],"mappings":"uiBAAA,ICOIA,EAAOC,EDPPC,EAAQ,SAAUC,UACbA,GAAMA,EAAGC,MAAQA,MAAQD,KAMhCD,EAA2B,iBAAdG,YAA0BA,aACvCH,EAAuB,iBAAVI,QAAsBA,SAEnCJ,EAAqB,iBAARK,MAAoBA,OACjCL,EAAuB,iBAAVM,GAAsBA,IAElC,kBAAqBC,KAArB,IAAmCC,SAAS,cAATA,KEXrB,SAAUC,EAAKC,OAG5BC,OAAOC,eAAeN,EAAQG,EAAK,CAAEC,MAAOA,EAAOG,cAAc,EAAMC,UAAU,IACjF,MAAOC,GACPT,EAAOG,GAAOC,SACPA,GCLPM,EAAS,uBACDV,EAAOU,IAAWC,EAAUD,EAAQ,sBCD/CE,UAAiB,SAAUT,EAAKC,UACxBS,EAAMV,KAASU,EAAMV,QAAiBW,IAAVV,EAAsBA,EAAQ,MAChE,WAAY,IAAIW,KAAK,CACtBtB,QAAS,SACTuB,KAAyB,SACzBC,UAAW,8CCNI,SAAUtB,MACfmB,MAANnB,EAAiB,MAAMuB,UAAU,wBAA0BvB,UACxDA,KCAQ,SAAUwB,UAClBd,OAAOe,EAAuBD,KCHnCE,EAAiB,GAAGA,iBAIPhB,OAAOiB,QAAU,SAAgB3B,EAAIQ,UAC7CkB,EAAeE,KAAKC,EAAS7B,GAAKQ,ICPvCsB,EAAK,EACLC,EAAU9B,KAAK+B,WAEF,SAAUxB,SAClB,UAAYyB,YAAed,IAARX,EAAoB,GAAKA,GAAO,QAAUsB,EAAKC,GAASG,SAAS,OCF5E,SAAUV,SACE,mBAAbA,GCAZW,EAAY,SAAUX,UACjBY,EAAWZ,GAAYA,OAAWL,KAG1B,SAAUkB,EAAWC,UAC7BC,UAAUC,OAAS,EAAIL,EAAU9B,EAAOgC,IAAchC,EAAOgC,IAAchC,EAAOgC,GAAWC,MCNrFG,EAAW,YAAa,cAAgB,GVCrDC,EAAUrC,EAAOqC,QACjBC,EAAOtC,EAAOsC,KACdC,EAAWF,GAAWA,EAAQE,UAAYD,GAAQA,EAAK7C,QACvD+C,EAAKD,GAAYA,EAASC,GAG1BA,EAEF/C,GADAD,EAAQgD,EAAGC,MAAM,MACD,GAAK,EAAI,EAAIjD,EAAM,GAAKA,EAAM,GACrCkD,MACTlD,EAAQkD,EAAUlD,MAAM,iBACVA,EAAM,IAAM,MACxBA,EAAQkD,EAAUlD,MAAM,oBACbC,EAAUD,EAAM,IAI/B,MAAiBC,IAAYA,IWpBZ,SAAUkD,eAEdA,IACT,MAAOlC,UACA,QCCQJ,OAAOuC,wBAA0BC,GAAM,eACpDC,EAASC,gBAGLnB,OAAOkB,MAAazC,OAAOyC,aAAmBC,UAEnDA,OAAOC,MAAQC,GAAcA,EAAa,QCR9BC,IACXH,OAAOC,MACkB,iBAAnBD,OAAOI,SCEfC,EAAwBC,EAAO,OAC/BN,EAAS/C,EAAO+C,OAChBO,EAAwBC,EAAoBR,EAASA,GAAUA,EAAOS,eAAiBC,IAE1E,SAAUC,UACpBpC,EAAO8B,EAAuBM,KAAWR,GAAuD,iBAA/BE,EAAsBM,MACtFR,GAAiB5B,EAAOyB,EAAQW,GAClCN,EAAsBM,GAAQX,EAAOW,GAErCN,EAAsBM,GAAQJ,EAAsB,UAAYI,IAE3DN,EAAsBM,ICf7BC,EAAO,KADSC,EAAgB,gBAGd,IAEtB,MAAkC,eAAjBhC,OAAO+B,MCJNd,GAAM,kBAEwD,GAAvExC,OAAOC,eAAe,GAAI,EAAG,CAAEuD,IAAK,kBAAqB,KAAQ,QCHzD,SAAUlE,SACJ,iBAAPA,EAAyB,OAAPA,EAAcoC,EAAWpC,ICAvDmE,EAAW9D,EAAO8D,SAElBC,EAASC,EAASF,IAAaE,EAASF,EAASG,iBAEpC,SAAUtE,UAClBoE,EAASD,EAASG,cAActE,GAAM,OCH7BuE,IAAgBrB,GAAM,kBAI9B,GAFDxC,OAAOC,eAAe2D,EAAc,OAAQ,IAAK,CACtDJ,IAAK,kBAAqB,KACzBM,OCNY,SAAUhD,MACrB6C,EAAS7C,GAAW,OAAOA,QACzBD,UAAUU,OAAOT,GAAY,wBCDpBoC,EAAoB,SAAU5D,SACzB,iBAANA,GACZ,SAAUA,OACRyE,EAAUhC,EAAW,iBAClBL,EAAWqC,IAAY/D,OAAOV,aAAeyE,KCRrC,SAAUjD,cAEhBS,OAAOT,GACd,MAAOV,SACA,aCAM,SAAUU,MACrBY,EAAWZ,GAAW,OAAOA,QAC3BD,UAAUmD,EAAYlD,GAAY,yBCFzB,SAAUmD,EAAGC,OACxBC,EAAOF,EAAEC,UACE,MAARC,OAAe1D,EAAY2D,EAAUD,ICA1CE,EAAed,EAAgB,iBAIlB,SAAUe,EAAOC,OAC3BZ,EAASW,IAAUE,EAASF,GAAQ,OAAOA,MAE5CG,EADAC,EAAeC,EAAUL,EAAOD,MAEhCK,EAAc,SACHjE,IAAT8D,IAAoBA,EAAO,WAC/BE,EAASC,EAAaxD,KAAKoD,EAAOC,IAC7BZ,EAASc,IAAWD,EAASC,GAAS,OAAOA,QAC5C5D,UAAU,uDAELJ,IAAT8D,IAAoBA,EAAO,UCfhB,SAAUD,EAAOC,OAC5BK,EAAIC,KACK,WAATN,GAAqB7C,EAAWkD,EAAKN,EAAM9C,YAAcmC,EAASkB,EAAMD,EAAG1D,KAAKoD,IAAS,OAAOO,KAChGnD,EAAWkD,EAAKN,EAAMQ,WAAanB,EAASkB,EAAMD,EAAG1D,KAAKoD,IAAS,OAAOO,KACjE,WAATN,GAAqB7C,EAAWkD,EAAKN,EAAM9C,YAAcmC,EAASkB,EAAMD,EAAG1D,KAAKoD,IAAS,OAAOO,QAC9FhE,UAAU,2CDWTkE,CAAoBT,EAAOC,MEhBnB,SAAUzD,OACrBhB,EAAMkF,EAAYlE,EAAU,iBACzB0D,EAAS1E,GAAOA,EAAMyB,OAAOzB,ICDlCmF,EAAkBjF,OAAOC,oBAIjB4D,EAAcoB,EAAkB,SAAwBC,EAAGhB,EAAGiB,MACxEC,EAASF,GACThB,EAAImB,EAAcnB,GAClBkB,EAASD,GACLG,EAAgB,WACXL,EAAgBC,EAAGhB,EAAGiB,GAC7B,MAAO/E,OACL,QAAS+E,GAAc,QAASA,EAAY,MAAMtE,UAAU,iCAC5D,UAAWsE,IAAYD,EAAEhB,GAAKiB,EAAWpF,OACtCmF,MCnBQ,SAAUK,EAAQxF,SAC1B,CACLyF,aAAuB,EAATD,GACdrF,eAAyB,EAATqF,GAChBpF,WAAqB,EAAToF,GACZxF,MAAOA,OCDM8D,EAAc,SAAU4B,EAAQ3F,EAAKC,UAC7C2F,EAAqBC,EAAEF,EAAQ3F,EAAK8F,EAAyB,EAAG7F,KACrE,SAAU0F,EAAQ3F,EAAKC,UACzB0F,EAAO3F,GAAOC,EACP0F,GCLLI,GAAmBhG,SAAS2B,SAG3BE,EAAWlB,EAAMsF,iBACpBtF,EAAMsF,cAAgB,SAAUxG,UACvBuG,GAAiB3E,KAAK5B,KAIjC,ICDIyG,GAAKvC,GAAKwC,MDCGxF,EAAMsF,cERnBG,GAAUtG,EAAOsG,WAEJvE,EAAWuE,KAAY,cAAc3C,KAAKwC,GAAcG,KCHrEC,GAAOlD,EAAO,WAED,SAAUlD,UAClBoG,GAAKpG,KAASoG,GAAKpG,GAAOsD,EAAItD,QCNtB,GHSbqG,GAA6B,6BAC7BF,GAAUtG,EAAOsG,QAgBrB,GAAIG,IAAmBpD,EAAOqD,MAAO,KAC/B7F,GAAQwC,EAAOqD,QAAUrD,EAAOqD,MAAQ,IAAIJ,IAC5CK,GAAQ9F,GAAMgD,IACd+C,GAAQ/F,GAAMwF,IACdQ,GAAQhG,GAAMuF,IAClBA,GAAM,SAAUzG,EAAImH,MACdF,GAAMrF,KAAKV,GAAOlB,GAAK,MAAM,IAAIuB,UAAUsF,WAC/CM,EAASC,OAASpH,EAClBkH,GAAMtF,KAAKV,GAAOlB,EAAImH,GACfA,GAETjD,GAAM,SAAUlE,UACPgH,GAAMpF,KAAKV,GAAOlB,IAAO,IAElC0G,GAAM,SAAU1G,UACPiH,GAAMrF,KAAKV,GAAOlB,QAEtB,KACDqH,GAAQC,GAAU,SACtBC,GAAWF,KAAS,EACpBZ,GAAM,SAAUzG,EAAImH,MACdxF,EAAO3B,EAAIqH,IAAQ,MAAM,IAAI9F,UAAUsF,WAC3CM,EAASC,OAASpH,EAClBwH,GAA4BxH,EAAIqH,GAAOF,GAChCA,GAETjD,GAAM,SAAUlE,UACP2B,EAAO3B,EAAIqH,IAASrH,EAAGqH,IAAS,IAEzCX,GAAM,SAAU1G,UACP2B,EAAO3B,EAAIqH,KAItB,OAAiB,CACfZ,IAAKA,GACLvC,IAAKA,GACLwC,IAAKA,GACLe,QAnDY,SAAUzH,UACf0G,GAAI1G,GAAMkE,GAAIlE,GAAMyG,GAAIzG,EAAI,KAmDnC0H,UAhDc,SAAUC,UACjB,SAAU3H,OACX+G,MACC1C,EAASrE,KAAQ+G,EAAQ7C,GAAIlE,IAAK4H,OAASD,QACxCpG,UAAU,0BAA4BoG,EAAO,oBAC5CZ,KInBTc,GAAoBtH,SAASuH,UAE7BC,GAAgBxD,GAAe7D,OAAOsH,yBAEtC5D,GAASzC,EAAOkG,GAAmB,WAKtB,CACfzD,OAAQA,GACR6D,OALW7D,IAA0D,cAA/C,aAAsCL,KAM5DmE,aALiB9D,MAAYG,GAAgBA,GAAewD,GAAcF,GAAmB,QAAQjH,qCCHnGuH,EAA6BC,GAAsCF,aAEnEG,EAAmBC,GAAoBpE,IACvCqE,EAAuBD,GAAoBb,QAC3Ce,EAAWvG,OAAOA,QAAQa,MAAM,WAEnC7B,UAAiB,SAAU2E,EAAGpF,EAAKC,EAAOgI,OAKrC1B,EAJA2B,IAASD,KAAYA,EAAQC,OAC7BC,IAASF,KAAYA,EAAQvC,WAC7B0C,IAAcH,KAAYA,EAAQG,YAClC7E,EAAO0E,QAA4BtH,IAAjBsH,EAAQ1E,KAAqB0E,EAAQ1E,KAAOvD,EAE9D4B,EAAW3B,KACoB,YAA7BwB,OAAO8B,GAAM8E,MAAM,EAAG,KACxB9E,EAAO,IAAM9B,OAAO8B,GAAM+E,QAAQ,qBAAsB,MAAQ,OAE7DnH,EAAOlB,EAAO,SAAY0H,GAA8B1H,EAAMsD,OAASA,IAC1EyD,GAA4B/G,EAAO,OAAQsD,IAE7CgD,EAAQwB,EAAqB9H,IAClBsI,SACThC,EAAMgC,OAASP,EAASQ,KAAoB,iBAARjF,EAAmBA,EAAO,MAG9D6B,IAAMvF,GAIEqI,GAEAE,GAAehD,EAAEpF,KAC3BmI,GAAS,UAFF/C,EAAEpF,GAIPmI,EAAQ/C,EAAEpF,GAAOC,EAChB+G,GAA4B5B,EAAGpF,EAAKC,IATnCkI,EAAQ/C,EAAEpF,GAAOC,EAChBO,EAAUR,EAAKC,KAUrBF,SAASuH,UAAW,YAAY,kBAC1B1F,EAAW9B,OAAS+H,EAAiB/H,MAAMyI,QAAUvC,GAAclG,YC5CxE4B,GAAW,GAAGA,YAED,SAAUlC,UAClBkC,GAASN,KAAK5B,GAAI6I,MAAM,GAAI,ICEjCI,GAAgBhF,EAAgB,eAEhCiF,GAAuE,aAAnDC,GAAW,kBAAqB5G,UAArB,OAUlB6G,EAAwBD,GAAa,SAAUnJ,OAC1D4F,EAAGyD,EAAKlE,cACEhE,IAAPnB,EAAmB,YAAqB,OAAPA,EAAc,OAEM,iBAAhDqJ,EAXD,SAAUrJ,EAAIQ,cAEhBR,EAAGQ,GACV,MAAOM,KAQSwI,CAAO1D,EAAIlF,OAAOV,GAAKiJ,KAA8BI,EAEnEH,GAAoBC,GAAWvD,GAEH,WAA3BT,EAASgE,GAAWvD,KAAmBxD,EAAWwD,EAAE2D,QAAU,YAAcpE,MCnBlEiE,EAAwB,GAAGlH,SAAW,iBAC9C,WAAasH,GAAQlJ,MAAQ,KCDjC8I,GACHK,GAAS/I,OAAOoH,UAAW,WAAY5F,GAAU,CAAEwG,QAAQ,ICN7D,IAAIgB,GAAwB,GAAGC,qBAE3B3B,GAA2BtH,OAAOsH,+BAGpBA,KAA6B0B,GAAsB9H,KAAK,GAAK,GAAK,GAI1D,SAA8B+C,OAClDiF,EAAa5B,GAAyB1H,KAAMqE,WACvCiF,GAAcA,EAAW1D,YAChCwD,ICVA5G,GAAQ,GAAGA,SAGEI,GAAM,kBAGbxC,OAAO,KAAKiJ,qBAAqB,MACtC,SAAU3J,SACS,UAAfwJ,GAAQxJ,GAAkB8C,GAAMlB,KAAK5B,EAAI,IAAMU,OAAOV,IAC3DU,UCRa,SAAUV,UAClB6J,GAAcpI,EAAuBzB,KCI1C8J,GAA4BpJ,OAAOsH,+BAI3BzD,EAAcuF,GAA4B,SAAkClE,EAAGhB,MACzFgB,EAAImE,GAAgBnE,GACpBhB,EAAImB,EAAcnB,GACdoB,EAAgB,WACX8D,GAA0BlE,EAAGhB,GACpC,MAAO9D,OACLa,EAAOiE,EAAGhB,GAAI,OAAO0B,GAA0B0D,GAA2B3D,EAAEzE,KAAKgE,EAAGhB,GAAIgB,EAAEhB,MCnB5FqF,GAAOhK,KAAKgK,KACZC,GAAQjK,KAAKiK,SAIA,SAAU1I,OACrB2I,GAAU3I,SAEP2I,GAAWA,GAAqB,IAAXA,EAAe,GAAKA,EAAS,EAAID,GAAQD,IAAME,ICNzEC,GAAMnK,KAAKmK,IACXC,GAAMpK,KAAKoK,OAKE,SAAUC,EAAO9H,OAC5B+H,EAAUC,GAAoBF,UAC3BC,EAAU,EAAIH,GAAIG,EAAU/H,EAAQ,GAAK6H,GAAIE,EAAS/H,ICR3D6H,GAAMpK,KAAKoK,OAIE,SAAU7I,UAClBA,EAAW,EAAI6I,GAAIG,GAAoBhJ,GAAW,kBAAoB,MCH9D,SAAUiJ,UAClBC,GAASD,EAAIjI,SCAlBmI,GAAe,SAAUC,UACpB,SAAUC,EAAOC,EAAIC,OAItBtK,EAHAmF,EAAImE,GAAgBc,GACpBrI,EAASwI,GAAkBpF,GAC3B0E,EAAQW,GAAgBF,EAAWvI,MAInCoI,GAAeE,GAAMA,GAAI,KAAOtI,EAAS8H,OAC3C7J,EAAQmF,EAAE0E,OAEG7J,EAAO,OAAO,OAEtB,KAAM+B,EAAS8H,EAAOA,QACtBM,GAAeN,KAAS1E,IAAMA,EAAE0E,KAAWQ,EAAI,OAAOF,GAAeN,GAAS,SAC3EM,IAAgB,OAIb,CAGfM,SAAUP,IAAa,GAGvBQ,QAASR,IAAa,IC5BpBQ,GAAU/C,GAAuC+C,WAGpC,SAAUhF,EAAQiF,OAI7B5K,EAHAoF,EAAImE,GAAgB5D,GACpBkF,EAAI,EACJlG,EAAS,OAER3E,KAAOoF,GAAIjE,EAAO4F,GAAY/G,IAAQmB,EAAOiE,EAAGpF,IAAQ2E,EAAO/D,KAAKZ,QAElE4K,EAAM5I,OAAS6I,GAAO1J,EAAOiE,EAAGpF,EAAM4K,EAAMC,SAChDF,GAAQhG,EAAQ3E,IAAQ2E,EAAO/D,KAAKZ,WAEhC2E,MCdQ,CACf,cACA,iBACA,gBACA,uBACA,iBACA,WACA,WCLEoC,GAAa+D,GAAYC,OAAO,SAAU,mBAKlC7K,OAAO8K,qBAAuB,SAA6B5F,UAC9D6F,GAAmB7F,EAAG2B,YCRnB7G,OAAOuC,0BCKFR,EAAW,UAAW,YAAc,SAAiBzC,OAChE4G,EAAO8E,GAA0BrF,EAAEP,EAAS9F,IAC5CiD,EAAwB0I,GAA4BtF,SACjDpD,EAAwB2D,EAAK2E,OAAOtI,EAAsBjD,IAAO4G,MCJzD,SAAUgF,EAAQ7C,WAC7BnC,EAAOiF,GAAQ9C,GACfpI,EAAiByF,EAAqBC,EACtC2B,EAA2B8D,GAA+BzF,EACrDgF,EAAI,EAAGA,EAAIzE,EAAKpE,OAAQ6I,IAAK,KAChC7K,EAAMoG,EAAKyE,GACV1J,EAAOiK,EAAQpL,IAAMG,EAAeiL,EAAQpL,EAAKwH,EAAyBe,EAAQvI,MCRvFuL,GAAc,kBAEdC,GAAW,SAAUC,EAASC,OAC5BzL,EAAQ0L,GAAKC,GAAUH,WACpBxL,GAAS4L,IACZ5L,GAAS6L,KACTlK,EAAW8J,GAAahJ,EAAMgJ,KAC5BA,IAGJE,GAAYJ,GAASI,UAAY,SAAUG,UACtCtK,OAAOsK,GAAQzD,QAAQiD,GAAa,KAAKS,eAG9CL,GAAOH,GAASG,KAAO,GACvBG,GAASN,GAASM,OAAS,IAC3BD,GAAWL,GAASK,SAAW,OAElBL,GCpBbhE,GAA2BI,GAA2D/B,KAsBzE,SAAUoC,EAASM,OAItB6C,EAAQpL,EAAKiM,EAAgBC,EAAgB9C,EAHrD+C,EAASlE,EAAQmD,OACjBgB,EAASnE,EAAQpI,OACjBwM,EAASpE,EAAQqE,QAGnBlB,EADEgB,EACOvM,EACAwM,EACAxM,EAAOsM,IAAW3L,EAAU2L,EAAQ,KAEnCtM,EAAOsM,IAAW,IAAI7E,UAEtB,IAAKtH,KAAOuI,EAAQ,IAC9B2D,EAAiB3D,EAAOvI,GAGtBiM,EAFEhE,EAAQG,aACVgB,EAAa5B,GAAyB4D,EAAQpL,KACfoJ,EAAWnJ,MACpBmL,EAAOpL,IACtBwL,GAASY,EAASpM,EAAMmM,GAAUE,EAAS,IAAM,KAAOrM,EAAKiI,EAAQsE,cAE5C5L,IAAnBsL,EAA8B,WAChCC,UAA0BD,EAAgB,SACrDO,GAA0BN,EAAgBD,IAGxChE,EAAQpF,MAASoJ,GAAkBA,EAAepJ,OACpDmE,GAA4BkF,EAAgB,QAAQ,GAGtDjD,GAASmC,EAAQpL,EAAKkM,EAAgBjE,QClDzBpI,EAAO4M,WCAP,SAAUrB,EAAQsB,EAAKzE,OACjC,IAAIjI,KAAO0M,EAAKzD,GAASmC,EAAQpL,EAAK0M,EAAI1M,GAAMiI,UAC9CmD,MCIQlL,OAAOyM,iBAAmB,aAAe,GAAK,eAGzDC,EAFAC,GAAiB,EACjBrJ,EAAO,QAIToJ,EAAS1M,OAAOsH,yBAAyBtH,OAAOoH,UAAW,aAAarB,KACjE7E,KAAKoC,EAAM,IAClBqJ,EAAiBrJ,aAAgBsJ,MACjC,MAAOxM,WACF,SAAwB8E,EAAG2H,UAChCzH,EAASF,GCjBI,SAAUpE,MACD,iBAAbA,GAAyBY,EAAWZ,GAAW,OAAOA,QAC3DD,UAAU,aAAeU,OAAOT,GAAY,mBDgBhDgM,CAAmBD,GACfF,EAAgBD,EAAOxL,KAAKgE,EAAG2H,GAC9B3H,EAAE6H,UAAYF,EACZ3H,GAfoD,QAiBzDzE,GEzBFR,GAAiByH,EAA+C/B,EAIhE4C,GAAgBhF,EAAgB,kBAEnB,SAAUjE,EAAI0N,EAAKb,GAC9B7M,IAAO2B,EAAO3B,EAAK6M,EAAS7M,EAAKA,EAAG8H,UAAWmB,KACjDtI,GAAeX,EAAIiJ,GAAe,CAAErI,cAAc,EAAMH,MAAOiN,KCF/DC,GAAU1J,EAAgB,cAEb,SAAU2J,OACrBC,EAAcpL,EAAWmL,GACzBjN,EAAiByF,EAAqBC,EAEtC9B,GAAesJ,IAAgBA,EAAYF,KAC7ChN,EAAekN,EAAaF,GAAS,CACnC/M,cAAc,EACdsD,IAAK,kBAAqB5D,YCff,SAAUN,EAAI6N,EAAa9J,MACtC/D,aAAc6N,EAAa,OAAO7N,QAChCuB,UAAU,cAAgBwC,EAAOA,EAAO,IAAM,IAAM,kBCF3C,GCGb+J,GAAW7J,EAAgB,YAC3B8J,GAAiBT,MAAMxF,aAGV,SAAU9H,eACXmB,IAAPnB,IAAqBgO,GAAUV,QAAUtN,GAAM+N,GAAeD,MAAc9N,OCLpE,SAAUsF,EAAI2I,EAAMzL,MACnCsC,EAAUQ,QACGnE,IAAT8M,EAAoB,OAAO3I,SACvB9C,QACD,SAAU,kBACN8C,EAAG1D,KAAKqM,SAEZ,SAAU,SAAUzJ,UAChBc,EAAG1D,KAAKqM,EAAMzJ,SAElB,SAAU,SAAUA,EAAG0J,UACnB5I,EAAG1D,KAAKqM,EAAMzJ,EAAG0J,SAErB,SAAU,SAAU1J,EAAG0J,EAAGC,UACtB7I,EAAG1D,KAAKqM,EAAMzJ,EAAG0J,EAAGC,WAGxB,kBACE7I,EAAG8I,MAAMH,EAAM1L,aChBtBuL,GAAW7J,EAAgB,eAEd,SAAUjE,MACfmB,MAANnB,EAAiB,OAAOqF,EAAUrF,EAAI8N,KACrCzI,EAAUrF,EAAI,eACdgO,GAAUxE,GAAQxJ,QCNR,SAAUwB,EAAU6M,OAC/BC,EAAiB/L,UAAUC,OAAS,EAAI+L,GAAkB/M,GAAY6M,KACtEvJ,EAAUwJ,GAAiB,OAAOxI,EAASwI,EAAe1M,KAAKJ,UAC7DD,UAAUU,OAAOT,GAAY,wBCJpB,SAAUgC,EAAUgL,EAAM/N,OACrCgO,EAAaC,EACjB5I,EAAStC,YAEPiL,EAAcpJ,EAAU7B,EAAU,WAChB,IACH,UAATgL,EAAkB,MAAM/N,SACrBA,EAETgO,EAAcA,EAAY7M,KAAK4B,GAC/B,MAAO1C,GACP4N,GAAa,EACbD,EAAc3N,KAEH,UAAT0N,EAAkB,MAAM/N,KACxBiO,EAAY,MAAMD,SACtB3I,EAAS2I,GACFhO,GCZLkO,GAAS,SAAUC,EAASzJ,QACzByJ,QAAUA,OACVzJ,OAASA,MAGC,SAAU0J,EAAUC,EAAiBrG,OAMhDjF,EAAUuL,EAAQzE,EAAO9H,EAAQ2C,EAAQ6J,EAAMC,EAL/ChB,EAAOxF,GAAWA,EAAQwF,KAC1BiB,KAAgBzG,IAAWA,EAAQyG,YACnCC,KAAiB1G,IAAWA,EAAQ0G,aACpCC,KAAiB3G,IAAWA,EAAQ2G,aACpC9J,EAAK+J,GAAKP,EAAiBb,EAAM,EAAIiB,EAAaE,GAGlDE,EAAO,SAAUC,UACf/L,GAAUgM,GAAchM,EAAU,SAAU+L,GACzC,IAAIZ,IAAO,EAAMY,IAGtBE,EAAS,SAAUhP,UACjByO,GACFpJ,EAASrF,GACF2O,EAAc9J,EAAG7E,EAAM,GAAIA,EAAM,GAAI6O,GAAQhK,EAAG7E,EAAM,GAAIA,EAAM,KAChE2O,EAAc9J,EAAG7E,EAAO6O,GAAQhK,EAAG7E,OAG1C0O,EACF3L,EAAWqL,MACN,MACLE,EAASR,GAAkBM,IACd,MAAMtN,UAAUU,OAAO4M,GAAY,uBAE5Ca,GAAsBX,GAAS,KAC5BzE,EAAQ,EAAG9H,EAASwI,GAAkB6D,GAAWrM,EAAS8H,EAAOA,QACpEnF,EAASsK,EAAOZ,EAASvE,MACXnF,aAAkBwJ,GAAQ,OAAOxJ,SACxC,IAAIwJ,IAAO,GAEtBnL,EAAWmM,GAAYd,EAAUE,OAGnCC,EAAOxL,EAASwL,OACPC,EAAOD,EAAKpN,KAAK4B,IAAWoM,MAAM,KAEvCzK,EAASsK,EAAOR,EAAKxO,OACrB,MAAOK,GACP0O,GAAchM,EAAU,QAAS1C,MAEd,iBAAVqE,GAAsBA,GAAUA,aAAkBwJ,GAAQ,OAAOxJ,SACrE,IAAIwJ,IAAO,ICtDlBb,GAAW7J,EAAgB,YAC3B4L,IAAe,EAEnB,QACMC,GAAS,EACTC,GAAqB,CACvBf,KAAM,iBACG,CAAEY,OAAQE,cAET,WACRD,IAAe,IAGnBE,GAAmBjC,IAAY,kBACtBxN,MAGTgN,MAAM0C,KAAKD,IAAoB,iBAAoB,KACnD,MAAOjP,IAET,ICLImP,GAAUC,GAAOC,GAASC,MDKb,SAAUpN,EAAMqN,OAC1BA,IAAiBR,GAAc,OAAO,MACvCS,GAAoB,UAElBnK,EAAS,GACbA,EAAO2H,IAAY,iBACV,CACLkB,KAAM,iBACG,CAAEY,KAAMU,GAAoB,MAIzCtN,EAAKmD,GACL,MAAOrF,WACFwP,GE9BLC,GAAQ,GACRC,GAAY/N,EAAW,UAAW,aAClCgO,GAAoB,2BACpBzN,GAAOyN,GAAkBzN,KACzB0N,IAAuBD,GAAkBzN,MAAK,eAE9C2N,GAAsB,SAAUnP,OAC7BY,EAAWZ,GAAW,OAAO,aAEhCgP,GAAU9P,OAAQ6P,GAAO/O,IAClB,EACP,MAAOV,UACA,QAgBO0P,IAAatN,GAAM,eAC/B4M,SACGa,GAAoBA,GAAoB/O,QACzC+O,GAAoBjQ,UACpBiQ,IAAoB,WAAcb,GAAS,MAC5CA,KAjBmB,SAAUtO,OAC7BY,EAAWZ,GAAW,OAAO,SAC1BgI,GAAQhI,QACT,oBACA,wBACA,gCAAiC,SAE/BkP,MAAyB1N,GAAKpB,KAAK6O,GAAmBjK,GAAchF,KAWpDmP,GCpCvBhD,GAAU1J,EAAgB,cAIb,SAAU2B,EAAGgL,OAExBC,EADAC,EAAIhL,EAASF,GAAGmL,wBAEP5P,IAAN2P,GAAiD3P,OAA7B0P,EAAI/K,EAASgL,GAAGnD,KAAyBiD,ECPrD,SAAUpP,MACrBwP,GAAcxP,GAAW,OAAOA,QAC9BD,UAAUmD,EAAYlD,GAAY,yBDKiDyP,CAAaJ,OETvFpO,EAAW,WAAY,sBCAvB,qCAAqCuB,KAAKjB,MCCf,WAA3ByG,GAAQnJ,EAAOqC,SNM5B+D,GAAMpG,EAAO6Q,aACbC,GAAQ9Q,EAAO+Q,eACf1O,GAAUrC,EAAOqC,QACjB2O,GAAiBhR,EAAOgR,eACxBC,GAAWjR,EAAOiR,SAClBC,GAAU,EACVC,GAAQ,GACRC,GAAqB,qBAGzB,IAEExB,GAAW5P,EAAO4P,SAClB,MAAOnP,IAET,IAAI4Q,GAAM,SAAU5P,MAEd0P,GAAM9P,eAAeI,GAAK,KACxBwD,EAAKkM,GAAM1P,UACR0P,GAAM1P,GACbwD,MAIAqM,GAAS,SAAU7P,UACd,WACL4P,GAAI5P,KAIJ8P,GAAW,SAAUC,GACvBH,GAAIG,EAAM1F,OAGR2F,GAAO,SAAUhQ,GAEnBzB,EAAO0R,YAAY9P,OAAOH,GAAKmO,GAAS+B,SAAW,KAAO/B,GAASgC,OAIhExL,IAAQ0K,KACX1K,GAAM,SAAsBnB,WACtB4M,EAAO,GACPC,EAAkB5P,UAAUC,OAC5B6I,EAAI,EACD8G,EAAkB9G,GAAG6G,EAAK9Q,KAAKmB,UAAU8I,aAChDmG,KAAQD,IAAW,YAEhBnP,EAAWkD,GAAMA,EAAK/E,SAAS+E,IAAK8I,WAAMjN,EAAW+Q,IAExDhC,GAAMqB,IACCA,IAETJ,GAAQ,SAAwBrP,UACvB0P,GAAM1P,IAGXsQ,GACFlC,GAAQ,SAAUpO,GAChBY,GAAQ2P,SAASV,GAAO7P,KAGjBwP,IAAYA,GAASgB,IAC9BpC,GAAQ,SAAUpO,GAChBwP,GAASgB,IAAIX,GAAO7P,KAIbuP,KAAmBkB,IAE5BnC,IADAD,GAAU,IAAIkB,IACCmB,MACfrC,GAAQsC,MAAMC,UAAYd,GAC1B1B,GAAQb,GAAKe,GAAK2B,YAAa3B,GAAM,IAIrC/P,EAAOsS,kBACPvQ,EAAW/B,EAAO0R,eACjB1R,EAAOuS,eACR3C,IAAkC,UAAtBA,GAAS+B,WACpB9O,EAAM4O,KAEP5B,GAAQ4B,GACRzR,EAAOsS,iBAAiB,UAAWf,IAAU,IAG7C1B,GADSuB,MAAsBnN,EAAc,UACrC,SAAUxC,GAChB+Q,GAAKC,YAAYxO,EAAc,WAA/B,mBAAgE,WAC9DuO,GAAKE,YAAYzS,MACjBoR,GAAI5P,KAKA,SAAUA,GAChBkR,WAAWrB,GAAO7P,GAAK,KAK7B,IO7FImR,GAAOC,GAAMC,GAAMC,GAAQC,GAAQC,GAAMC,GAASC,MP6FrC,CACf/M,IAAKA,GACL0K,MAAOA,OQ5GQ,oBAAoBnN,KAAKjB,SAAgC5B,IAAlBd,EAAOoT,UCD9C,qBAAqBzP,KAAKjB,GFDvCiF,GAA2BI,GAA2D/B,EACtFqN,GAAYC,GAA6BlN,IAMzCmN,GAAmBvT,EAAOuT,kBAAoBvT,EAAOwT,uBACrD1P,GAAW9D,EAAO8D,SAClBzB,GAAUrC,EAAOqC,QACjBuK,GAAU5M,EAAO4M,QAEjB6G,GAA2B9L,GAAyB3H,EAAQ,kBAC5D0T,GAAiBD,IAA4BA,GAAyBrT,MAKrEsT,KACHd,GAAQ,eACFe,EAAQ1O,MACR8M,KAAY4B,EAAStR,GAAQuR,SAASD,EAAOE,OAC1ChB,IAAM,CACX5N,EAAK4N,GAAK5N,GACV4N,GAAOA,GAAKlE,SAEV1J,IACA,MAAOxE,SACHoS,GAAME,KACLD,QAAOhS,EACNL,GAERqS,QAAOhS,EACL6S,GAAQA,EAAOG,SAKhB5B,IAAWH,IAAYgC,KAAmBR,KAAoBzP,IAQvDkQ,IAAiBpH,IAAWA,GAAQqH,UAE9Cf,GAAUtG,GAAQqH,aAAQnT,IAElB4P,YAAc9D,GACtBuG,GAAOD,GAAQC,KACfJ,GAAS,WACPI,GAAK5R,KAAK2R,GAASN,MAIrBG,GADShB,GACA,WACP1P,GAAQ2P,SAASY,KASV,WAEPS,GAAU9R,KAAKvB,EAAQ4S,MA9BzBI,IAAS,EACTC,GAAOnP,GAASoQ,eAAe,QAC3BX,GAAiBX,IAAOuB,QAAQlB,GAAM,CAAEmB,eAAe,IAC3DrB,GAAS,WACPE,GAAKnH,KAAOkH,IAAUA,MA+B5B,IGpBIqB,GAAUC,GAAsBC,GAAgBC,MHoBnCd,IAAkB,SAAUzO,OACvCwP,EAAO,CAAExP,GAAIA,EAAI0J,UAAM7N,GACvBgS,KAAMA,GAAKnE,KAAO8F,GACjB5B,KACHA,GAAO4B,EACP1B,MACAD,GAAO2B,GI9EPC,GAAoB,SAAUjE,OAC5BwD,EAASU,OACRzB,QAAU,IAAIzC,GAAE,SAAUmE,EAAWC,WACxB/T,IAAZmT,QAAoCnT,IAAX6T,EAAsB,MAAMzT,UAAU,2BACnE+S,EAAUW,EACVD,EAASE,UAENZ,QAAUxP,EAAUwP,QACpBU,OAASlQ,EAAUkQ,UAKP,SAAUlE,UACpB,IAAIiE,GAAkBjE,QCjBd,SAAU9N,aAEhB,CAAElC,OAAO,EAAOL,MAAOuC,KAC9B,MAAOlC,SACA,CAAEA,OAAO,EAAML,MAAOK,QCJC,iBAAVX,OHmBpB2U,GAAO1M,GAA6B3B,IAapCkH,GAAU1J,EAAgB,WAC1BkR,GAAU,UACV9M,GAAmBC,GAAoBpE,IACvCkR,GAAmB9M,GAAoB7B,IACvC4O,GAA0B/M,GAAoBZ,UAAUyN,IACxDG,GAAyBC,IAAiBA,GAAczN,UACxD0N,GAAqBD,GACrBE,GAA8BH,GAC9B/T,GAAYlB,EAAOkB,UACnB4C,GAAW9D,EAAO8D,SAClBzB,GAAUrC,EAAOqC,QACjBgT,GAAuBC,GAA2BtP,EAClDuP,GAA8BF,GAC9BG,MAAoB1R,IAAYA,GAAS2R,aAAezV,EAAO0V,eAC/DC,GAAyB5T,EAAW/B,EAAO4V,uBAC3CC,GAAsB,qBAOtBC,IAAc,EAGdC,GAASpK,GAASmJ,IAAS,eACzBkB,EAA6B7P,GAAcgP,IAC3Cc,EAAyBD,IAA+BpU,OAAOuT,QAI9Dc,GAAyC,KAAfhT,EAAmB,OAAO,KAMrDA,GAAc,IAAM,cAAcU,KAAKqS,GAA6B,OAAO,MAE3E9C,EAAU,IAAIiC,IAAmB,SAAUlB,GAAWA,EAAQ,MAC9DiC,EAAc,SAAUvT,GAC1BA,GAAK,eAA6B,uBAElBuQ,EAAQxC,YAAc,IAC5BpD,IAAW4I,IACvBJ,GAAc5C,EAAQC,MAAK,yBAAwC+C,KAG3DD,GAA0BE,KAAeR,MAG/CS,GAAsBL,KAAWM,IAA4B,SAAU7H,GACzE2G,GAAmBmB,IAAI9H,GAAvB,OAA0C,kBAIxC+H,GAAa,SAAU5W,OACrBwT,WACGnP,EAASrE,KAAOoC,EAAWoR,EAAOxT,EAAGwT,QAAQA,GAGlDJ,GAAS,SAAUrM,EAAO8P,OACxB9P,EAAM+P,UACV/P,EAAM+P,UAAW,MACbC,EAAQhQ,EAAMiQ,UAClBC,IAAU,mBACJxW,EAAQsG,EAAMtG,MACdyW,EAjDQ,GAiDHnQ,EAAMA,MACXuD,EAAQ,EAELyM,EAAMvU,OAAS8H,GAAO,KAMvBnF,EAAQqO,EAAM2D,EALdC,EAAWL,EAAMzM,KACjB+M,EAAUH,EAAKE,EAASF,GAAKE,EAASE,KACtChD,EAAU8C,EAAS9C,QACnBU,EAASoC,EAASpC,OAClBf,EAASmD,EAASnD,WAGhBoD,GACGH,IA1DC,IA2DAnQ,EAAMwQ,WAAyBC,GAAkBzQ,GACrDA,EAAMwQ,UA7DJ,IA+DY,IAAZF,EAAkBlS,EAAS1E,GAEzBwT,GAAQA,EAAOE,QACnBhP,EAASkS,EAAQ5W,GACbwT,IACFA,EAAOC,OACPiD,GAAS,IAGThS,IAAWiS,EAAS7D,QACtByB,EAAOzT,GAAU,yBACRiS,EAAOoD,GAAWzR,IAC3BqO,EAAK5R,KAAKuD,EAAQmP,EAASU,GACtBV,EAAQnP,IACV6P,EAAOvU,GACd,MAAOK,GACHmT,IAAWkD,GAAQlD,EAAOC,OAC9Bc,EAAOlU,IAGXiG,EAAMiQ,UAAY,GAClBjQ,EAAM+P,UAAW,EACbD,IAAa9P,EAAMwQ,WAAWE,GAAY1Q,QAI9CgP,GAAgB,SAAUhS,EAAMwP,EAASmE,OACvC7F,EAAOwF,EACPxB,KACFhE,EAAQ1N,GAAS2R,YAAY,UACvBvC,QAAUA,EAChB1B,EAAM6F,OAASA,EACf7F,EAAM8F,UAAU5T,GAAM,GAAO,GAC7B1D,EAAO0V,cAAclE,IAChBA,EAAQ,CAAE0B,QAASA,EAASmE,OAAQA,IACtC1B,KAA2BqB,EAAUhX,EAAO,KAAO0D,IAAQsT,EAAQxF,GAC/D9N,IAASmS,IIrJH,SAAU1R,EAAG0J,OACxB0J,EAAUvX,EAAOuX,QACjBA,GAAWA,EAAQ9W,QACA,IAArByB,UAAUC,OAAeoV,EAAQ9W,MAAM0D,GAAKoT,EAAQ9W,MAAM0D,EAAG0J,IJkJxB2J,CAAiB,8BAA+BH,IAGrFD,GAAc,SAAU1Q,GAC1B+N,GAAKlT,KAAKvB,GAAQ,eAIZ8E,EAHAoO,EAAUxM,EAAMK,OAChB3G,EAAQsG,EAAMtG,SACCqX,GAAY/Q,KAG7B5B,EAAS4S,IAAQ,WACX3F,GACF1P,GAAQsV,KAAK,qBAAsBvX,EAAO8S,GACrCwC,GAAcG,GAAqB3C,EAAS9S,MAGrDsG,EAAMwQ,UAAYnF,IAAW0F,GAAY/Q,GAlH/B,EADF,EAoHJ5B,EAAOrE,OAAO,MAAMqE,EAAO1E,UAKjCqX,GAAc,SAAU/Q,UAzHd,IA0HLA,EAAMwQ,YAA0BxQ,EAAMiN,QAG3CwD,GAAoB,SAAUzQ,GAChC+N,GAAKlT,KAAKvB,GAAQ,eACZkT,EAAUxM,EAAMK,OAChBgL,GACF1P,GAAQsV,KAAK,mBAAoBzE,GAC5BwC,GAtIa,mBAsIoBxC,EAASxM,EAAMtG,WAIvD4O,GAAO,SAAU/J,EAAIyB,EAAOkR,UACvB,SAAUxX,GACf6E,EAAGyB,EAAOtG,EAAOwX,KAIjBC,GAAiB,SAAUnR,EAAOtG,EAAOwX,GACvClR,EAAM6I,OACV7I,EAAM6I,MAAO,EACTqI,IAAQlR,EAAQkR,GACpBlR,EAAMtG,MAAQA,EACdsG,EAAMA,MAlJO,EAmJbqM,GAAOrM,GAAO,KAGZoR,GAAkB,SAAUpR,EAAOtG,EAAOwX,OACxClR,EAAM6I,MACV7I,EAAM6I,MAAO,EACTqI,IAAQlR,EAAQkR,UAEdlR,EAAMK,SAAW3G,EAAO,MAAMc,GAAU,wCACxCiS,EAAOoD,GAAWnW,GAClB+S,EACFyD,IAAU,eACJmB,EAAU,CAAExI,MAAM,OAEpB4D,EAAK5R,KAAKnB,EACR4O,GAAK8I,GAAiBC,EAASrR,GAC/BsI,GAAK6I,GAAgBE,EAASrR,IAEhC,MAAOjG,GACPoX,GAAeE,EAAStX,EAAOiG,QAInCA,EAAMtG,MAAQA,EACdsG,EAAMA,MA5KI,EA6KVqM,GAAOrM,GAAO,IAEhB,MAAOjG,GACPoX,GAAe,CAAEtI,MAAM,GAAS9O,EAAOiG,MAK3C,GAAIqP,KAaFX,IAXAD,GAAqB,SAAiB6C,GACpCC,GAAWhY,KAAMkV,GAAoBL,IACrCrQ,EAAUuT,GACV3D,GAAS9S,KAAKtB,UACVyG,EAAQsB,GAAiB/H,UAE3B+X,EAAShJ,GAAK8I,GAAiBpR,GAAQsI,GAAK6I,GAAgBnR,IAC5D,MAAOjG,GACPoX,GAAenR,EAAOjG,MAGuBgH,WAEjD4M,GAAW,SAAiB2D,GAC1BjD,GAAiB9U,KAAM,CACrBsH,KAAMuN,GACNvF,MAAM,EACNkH,UAAU,EACV9C,QAAQ,EACRgD,UAAW,GACXO,WAAW,EACXxQ,MA7MQ,EA8MRtG,WAAOU,MAGF2G,UAAYyQ,GAAY9C,GAA6B,CAG5DjC,KAAM,SAAcgF,EAAaC,OAC3B1R,EAAQsO,GAAwB/U,MAChC8W,EAAW1B,GAAqBgD,GAAmBpY,KAAMkV,YAC7D4B,EAASF,IAAK9U,EAAWoW,IAAeA,EACxCpB,EAASE,KAAOlV,EAAWqW,IAAeA,EAC1CrB,EAASnD,OAAS7B,GAAU1P,GAAQuR,YAAS9S,EAC7C4F,EAAMiN,QAAS,EACfjN,EAAMiQ,UAAU5V,KAAKgW,GA3Nb,GA4NJrQ,EAAMA,OAAkBqM,GAAOrM,GAAO,GACnCqQ,EAAS7D,eAIT,SAAUkF,UACVnY,KAAKkT,UAAKrS,EAAWsX,MAGhC9D,GAAuB,eACjBpB,EAAU,IAAImB,GACd3N,EAAQsB,GAAiBkL,QACxBA,QAAUA,OACVe,QAAUjF,GAAK8I,GAAiBpR,QAChCiO,OAAS3F,GAAK6I,GAAgBnR,IAErC4O,GAA2BtP,EAAIqP,GAAuB,SAAU5E,UACvDA,IAAM0E,IAAsB1E,IAAM8D,GACrC,IAAID,GAAqB7D,GACzB8E,GAA4B9E,IAGlB1O,EAAWmT,KAAkBD,KAA2B5U,OAAOoH,WAAW,CACxF+M,GAAaS,GAAuB9B,KAE/B2C,KAEH1M,GAAS6L,GAAwB,QAAQ,SAAckD,EAAaC,OAC9DxK,EAAO3N,YACJ,IAAIkV,IAAmB,SAAUlB,EAASU,GAC/CH,GAAWjT,KAAKqM,EAAMqG,EAASU,MAC9BxB,KAAKgF,EAAaC,KAEpB,CAAE/P,QAAQ,IAGbe,GAAS6L,GAAwB,QAASG,GAA2B,MAAW,CAAE/M,QAAQ,gBAKnF4M,GAAuBvE,YAC9B,MAAOjQ,IAGLqM,IACFA,GAAemI,GAAwBG,OAK3C,CAAEpV,QAAQ,EAAMsY,MAAM,EAAM5L,OAAQqJ,IAAU,CAC9CnJ,QAASuI,KAGXoD,GAAepD,GAAoBL,IAAS,GAC5C0D,GAAW1D,IAEXP,GAAiBnS,EAAW0S,OAG1B,CAAEvJ,OAAQuJ,GAASrI,MAAM,EAAMC,OAAQqJ,IAAU,CAGjDpB,OAAQ,SAAgB8D,OAClBC,EAAarD,GAAqBpV,aACtCyY,EAAW/D,OAAOpT,UAAKT,EAAW2X,GAC3BC,EAAWxF,cAIpB,CAAE3H,OAAQuJ,GAASrI,MAAM,EAAMC,OAAmBqJ,IAAU,CAG5D9B,QAAS,SAAiB0E,UKnVX,SAAUlI,EAAGkI,MAC5BlT,EAASgL,GACLzM,EAAS2U,IAAMA,EAAEjI,cAAgBD,EAAG,OAAOkI,MAC3CC,EAAoBvD,GAAqBrP,EAAEyK,UAE/CwD,EADc2E,EAAkB3E,SACxB0E,GACDC,EAAkB1F,QL8UhB2F,CAAyE5Y,KAAM0Y,SAIxF,CAAEpN,OAAQuJ,GAASrI,MAAM,EAAMC,OAAQ0J,IAAuB,CAG9DE,IAAK,SAAa9H,OACZiC,EAAIxQ,KACJyY,EAAarD,GAAqB5E,GAClCwD,EAAUyE,EAAWzE,QACrBU,EAAS+D,EAAW/D,OACpB7P,EAAS4S,IAAQ,eACfoB,EAAkBrU,EAAUgM,EAAEwD,SAC9B8E,EAAS,GACT7H,EAAU,EACV8H,EAAY,EAChBC,GAAQzK,GAAU,SAAU0E,OACtBjJ,EAAQiH,IACRgI,GAAgB,EACpBH,EAAOhY,UAAKD,GACZkY,IACAF,EAAgBvX,KAAKkP,EAAGyC,GAASC,MAAK,SAAU/S,GAC1C8Y,IACJA,GAAgB,EAChBH,EAAO9O,GAAS7J,IACd4Y,GAAa/E,EAAQ8E,MACtBpE,QAEHqE,GAAa/E,EAAQ8E,aAErBjU,EAAOrE,OAAOkU,EAAO7P,EAAO1E,OACzBsY,EAAWxF,SAIpBiG,KAAM,SAAc3K,OACdiC,EAAIxQ,KACJyY,EAAarD,GAAqB5E,GAClCkE,EAAS+D,EAAW/D,OACpB7P,EAAS4S,IAAQ,eACfoB,EAAkBrU,EAAUgM,EAAEwD,SAClCgF,GAAQzK,GAAU,SAAU0E,GAC1B4F,EAAgBvX,KAAKkP,EAAGyC,GAASC,KAAKuF,EAAWzE,QAASU,gBAG1D7P,EAAOrE,OAAOkU,EAAO7P,EAAO1E,OACzBsY,EAAWxF,WMrYtB,IAAIvL,GAA2BI,GAA2D/B,KAIxF,CAAEuF,OAAQ,UAAWkB,MAAM,GAAQ,CACnC2M,eAAgB,SAAwB7N,EAAQ8N,OAC1C9P,EAAa5B,GAAyBlC,EAAS8F,GAAS8N,WACrD9P,IAAeA,EAAWhJ,sBAA8BgL,EAAO8N,gCCFtEC,EAAW,SAAUC,OAKnBzY,EAFA0Y,EAAKnZ,OAAOoH,UACZnG,EAASkY,EAAGnY,eAEZ+C,EAA4B,mBAAXrB,OAAwBA,OAAS,GAClD0W,EAAiBrV,EAAQjB,UAAY,aACrCuW,EAAsBtV,EAAQuV,eAAiB,kBAC/CC,EAAoBxV,EAAQyV,aAAe,yBAEtCC,EAAO1P,EAAKjK,EAAKC,UACxBC,OAAOC,eAAe8J,EAAKjK,EAAK,CAC9BC,MAAOA,EACPyF,YAAY,EACZtF,cAAc,EACdC,UAAU,IAEL4J,EAAIjK,OAIX2Z,EAAO,GAAI,IACX,MAAOC,GACPD,EAAS,SAAS1P,EAAKjK,EAAKC,UACnBgK,EAAIjK,GAAOC,YAIbkY,EAAK0B,EAASC,EAASla,EAAMma,OAEhCC,EAAiBF,GAAWA,EAAQxS,qBAAqB2S,EAAYH,EAAUG,EAC/EC,EAAYha,OAAOia,OAAOH,EAAe1S,WACzC8S,EAAU,IAAIC,EAAQN,GAAe,WAIzCG,EAAUI,iBAuMcT,EAASja,EAAMwa,OACnC7T,EAAQgU,SAEL,SAAgBzY,EAAQ0Y,MACzBjU,IAAUkU,QACN,IAAIC,MAAM,mCAGdnU,IAAUoU,EAAmB,IAChB,UAAX7Y,QACI0Y,SAKDI,QAGTR,EAAQtY,OAASA,EACjBsY,EAAQI,IAAMA,IAED,KACPK,EAAWT,EAAQS,YACnBA,EAAU,KACRC,EAAiBC,EAAoBF,EAAUT,MAC/CU,EAAgB,IACdA,IAAmBE,EAAkB,gBAClCF,MAIY,SAAnBV,EAAQtY,OAGVsY,EAAQa,KAAOb,EAAQc,MAAQd,EAAQI,SAElC,GAAuB,UAAnBJ,EAAQtY,OAAoB,IACjCyE,IAAUgU,QACZhU,EAAQoU,EACFP,EAAQI,IAGhBJ,EAAQe,kBAAkBf,EAAQI,SAEN,WAAnBJ,EAAQtY,QACjBsY,EAAQgB,OAAO,SAAUhB,EAAQI,KAGnCjU,EAAQkU,MAEJY,EAASC,EAASzB,EAASja,EAAMwa,MACjB,WAAhBiB,EAAOjU,KAAmB,IAG5Bb,EAAQ6T,EAAQhL,KACZuL,EACAY,EAEAF,EAAOb,MAAQQ,iBAIZ,CACL/a,MAAOob,EAAOb,IACdpL,KAAMgL,EAAQhL,MAGS,UAAhBiM,EAAOjU,OAChBb,EAAQoU,EAGRP,EAAQtY,OAAS,QACjBsY,EAAQI,IAAMa,EAAOb,OA/QPgB,CAAiB3B,EAASja,EAAMwa,GAE7CF,WAcAoB,EAASxW,EAAImF,EAAKuQ,aAEhB,CAAEpT,KAAM,SAAUoT,IAAK1V,EAAG1D,KAAK6I,EAAKuQ,IAC3C,MAAOZ,SACA,CAAExS,KAAM,QAASoT,IAAKZ,IAhBjCR,EAAQjB,KAAOA,MAoBXoC,EAAyB,iBACzBgB,EAAyB,iBACzBd,EAAoB,YACpBE,EAAoB,YAIpBK,EAAmB,YAMdf,cACAwB,cACAC,SAILC,EAAoB,GACxBhC,EAAOgC,EAAmBrC,GAAgB,kBACjCxZ,YAGL8b,EAAW1b,OAAO2b,eAClBC,EAA0BF,GAAYA,EAASA,EAAShD,EAAO,MAC/DkD,GACAA,IAA4BzC,GAC5BlY,EAAOC,KAAK0a,EAAyBxC,KAGvCqC,EAAoBG,OAGlBC,EAAKL,EAA2BpU,UAClC2S,EAAU3S,UAAYpH,OAAOia,OAAOwB,YAY7BK,EAAsB1U,IAC5B,OAAQ,QAAS,UAAU2U,SAAQ,SAASna,GAC3C6X,EAAOrS,EAAWxF,GAAQ,SAAS0Y,UAC1B1a,KAAKwa,QAAQxY,EAAQ0Y,kBAkCzB0B,EAAchC,EAAWiC,YACvBC,EAAOta,EAAQ0Y,EAAK1G,EAASU,OAChC6G,EAASC,EAASpB,EAAUpY,GAASoY,EAAWM,MAChC,UAAhBa,EAAOjU,KAEJ,KACDzC,EAAS0W,EAAOb,IAChBva,EAAQ0E,EAAO1E,aACfA,GACiB,iBAAVA,GACPkB,EAAOC,KAAKnB,EAAO,WACdkc,EAAYrI,QAAQ7T,EAAMoc,SAASrJ,MAAK,SAAS/S,GACtDmc,EAAO,OAAQnc,EAAO6T,EAASU,MAC9B,SAASoF,GACVwC,EAAO,QAASxC,EAAK9F,EAASU,MAI3B2H,EAAYrI,QAAQ7T,GAAO+S,MAAK,SAASsJ,GAI9C3X,EAAO1E,MAAQqc,EACfxI,EAAQnP,MACP,SAASrE,UAGH8b,EAAO,QAAS9b,EAAOwT,EAASU,MAvBzCA,EAAO6G,EAAOb,SA4Bd+B,OAgCCjC,iBA9BYxY,EAAQ0Y,YACdgC,WACA,IAAIL,GAAY,SAASrI,EAASU,GACvC4H,EAAOta,EAAQ0Y,EAAK1G,EAASU,aAI1B+H,EAaLA,EAAkBA,EAAgBvJ,KAChCwJ,EAGAA,GACEA,cAkHDzB,EAAoBF,EAAUT,OACjCtY,EAAS+Y,EAAS7X,SAASoX,EAAQtY,WACnCA,IAAWnB,EAAW,IAGxByZ,EAAQS,SAAW,KAEI,UAAnBT,EAAQtY,OAAoB,IAE1B+Y,EAAS7X,SAAT,SAGFoX,EAAQtY,OAAS,SACjBsY,EAAQI,IAAM7Z,EACdoa,EAAoBF,EAAUT,GAEP,UAAnBA,EAAQtY,eAGHkZ,EAIXZ,EAAQtY,OAAS,QACjBsY,EAAQI,IAAM,IAAIzZ,UAChB,yDAGGia,MAGLK,EAASC,EAASxZ,EAAQ+Y,EAAS7X,SAAUoX,EAAQI,QAErC,UAAhBa,EAAOjU,YACTgT,EAAQtY,OAAS,QACjBsY,EAAQI,IAAMa,EAAOb,IACrBJ,EAAQS,SAAW,KACZG,MAGLyB,EAAOpB,EAAOb,WAEZiC,EAOFA,EAAKrN,MAGPgL,EAAQS,EAAS6B,YAAcD,EAAKxc,MAGpCma,EAAQ5L,KAAOqM,EAAS8B,QAQD,WAAnBvC,EAAQtY,SACVsY,EAAQtY,OAAS,OACjBsY,EAAQI,IAAM7Z,GAUlByZ,EAAQS,SAAW,KACZG,GANEyB,GA3BPrC,EAAQtY,OAAS,QACjBsY,EAAQI,IAAM,IAAIzZ,UAAU,oCAC5BqZ,EAAQS,SAAW,KACZG,YAoDF4B,EAAaC,OAChBC,EAAQ,CAAEC,OAAQF,EAAK,IAEvB,KAAKA,IACPC,EAAME,SAAWH,EAAK,IAGpB,KAAKA,IACPC,EAAMG,WAAaJ,EAAK,GACxBC,EAAMI,SAAWL,EAAK,SAGnBM,WAAWvc,KAAKkc,YAGdM,EAAcN,OACjBzB,EAASyB,EAAMO,YAAc,GACjChC,EAAOjU,KAAO,gBACPiU,EAAOb,IACdsC,EAAMO,WAAahC,WAGZhB,EAAQN,QAIVoD,WAAa,CAAC,CAAEJ,OAAQ,SAC7BhD,EAAYkC,QAAQW,EAAc9c,WAC7Bwd,OAAM,YA8BJ1E,EAAOvK,MACVA,EAAU,KACRP,EAAiBO,EAASiL,MAC1BxL,SACKA,EAAe1M,KAAKiN,MAGA,mBAAlBA,EAASG,YACXH,MAGJkP,MAAMlP,EAASrM,QAAS,KACvB6I,GAAK,EAAG2D,EAAO,SAASA,WACjB3D,EAAIwD,EAASrM,WAChBb,EAAOC,KAAKiN,EAAUxD,UACxB2D,EAAKvO,MAAQoO,EAASxD,GACtB2D,EAAKY,MAAO,EACLZ,SAIXA,EAAKvO,MAAQU,EACb6N,EAAKY,MAAO,EAELZ,UAGFA,EAAKA,KAAOA,SAKhB,CAAEA,KAAMoM,YAIRA,UACA,CAAE3a,MAAOU,EAAWyO,MAAM,UA9ZnCqM,EAAkBnU,UAAYoU,EAC9B/B,EAAOoC,EAAI,cAAeL,GAC1B/B,EAAO+B,EAA4B,cAAeD,GAClDA,EAAkB+B,YAAc7D,EAC9B+B,EACAjC,EACA,qBAaFL,EAAQqE,oBAAsB,SAASC,OACjCC,EAAyB,mBAAXD,GAAyBA,EAAOnN,oBAC3CoN,IACHA,IAASlC,GAG2B,uBAAnCkC,EAAKH,aAAeG,EAAKpa,QAIhC6V,EAAQwE,KAAO,SAASF,UAClBxd,OAAOyM,eACTzM,OAAOyM,eAAe+Q,EAAQhC,IAE9BgC,EAAOzQ,UAAYyO,EACnB/B,EAAO+D,EAAQjE,EAAmB,sBAEpCiE,EAAOpW,UAAYpH,OAAOia,OAAO4B,GAC1B2B,GAOTtE,EAAQyE,MAAQ,SAASrD,SAChB,CAAE6B,QAAS7B,IAsEpBwB,EAAsBE,EAAc5U,WACpCqS,EAAOuC,EAAc5U,UAAWiS,GAAqB,kBAC5CzZ,QAETsZ,EAAQ8C,cAAgBA,EAKxB9C,EAAQ0E,MAAQ,SAASjE,EAASC,EAASla,EAAMma,EAAaoC,QACxC,IAAhBA,IAAwBA,EAAc1P,aAEtCsR,EAAO,IAAI7B,EACb/D,EAAK0B,EAASC,EAASla,EAAMma,GAC7BoC,UAGK/C,EAAQqE,oBAAoB3D,GAC/BiE,EACAA,EAAKvP,OAAOwE,MAAK,SAASrO,UACjBA,EAAOyK,KAAOzK,EAAO1E,MAAQ8d,EAAKvP,WAuKjDwN,EAAsBD,GAEtBpC,EAAOoC,EAAItC,EAAmB,aAO9BE,EAAOoC,EAAIzC,GAAgB,kBAClBxZ,QAGT6Z,EAAOoC,EAAI,YAAY,iBACd,wBAkCT3C,EAAQhT,KAAO,SAAST,OAClBS,EAAO,OACN,IAAIpG,KAAO2F,EACdS,EAAKxF,KAAKZ,UAEZoG,EAAK4X,UAIE,SAASxP,SACPpI,EAAKpE,QAAQ,KACdhC,EAAMoG,EAAK6X,SACXje,KAAO2F,SACT6I,EAAKvO,MAAQD,EACbwO,EAAKY,MAAO,EACLZ,SAOXA,EAAKY,MAAO,EACLZ,IAsCX4K,EAAQR,OAASA,EAMjByB,EAAQ/S,UAAY,CAClBiJ,YAAa8J,EAEbiD,MAAO,SAASY,WACTC,KAAO,OACP3P,KAAO,OAGPyM,KAAOnb,KAAKob,MAAQva,OACpByO,MAAO,OACPyL,SAAW,UAEX/Y,OAAS,YACT0Y,IAAM7Z,OAENwc,WAAWlB,QAAQmB,IAEnBc,MACE,IAAI3a,KAAQzD,KAEQ,MAAnByD,EAAK6a,OAAO,IACZjd,EAAOC,KAAKtB,KAAMyD,KACjBga,OAAOha,EAAK8E,MAAM,WAChB9E,GAAQ5C,IAMrBmO,KAAM,gBACCM,MAAO,MAGRiP,EADYve,KAAKqd,WAAW,GACLE,cACH,UAApBgB,EAAWjX,WACPiX,EAAW7D,WAGZ1a,KAAKwe,MAGdnD,kBAAmB,SAASoD,MACtBze,KAAKsP,WACDmP,MAGJnE,EAAUta,cACL0e,EAAOC,EAAKC,UACnBrD,EAAOjU,KAAO,QACdiU,EAAOb,IAAM+D,EACbnE,EAAQ5L,KAAOiQ,EAEXC,IAGFtE,EAAQtY,OAAS,OACjBsY,EAAQI,IAAM7Z,KAGN+d,MAGP,IAAI7T,EAAI/K,KAAKqd,WAAWnb,OAAS,EAAG6I,GAAK,IAAKA,EAAG,KAChDiS,EAAQhd,KAAKqd,WAAWtS,GACxBwQ,EAASyB,EAAMO,cAEE,SAAjBP,EAAMC,cAIDyB,EAAO,UAGZ1B,EAAMC,QAAUjd,KAAKqe,KAAM,KACzBQ,EAAWxd,EAAOC,KAAK0b,EAAO,YAC9B8B,EAAazd,EAAOC,KAAK0b,EAAO,iBAEhC6B,GAAYC,EAAY,IACtB9e,KAAKqe,KAAOrB,EAAME,gBACbwB,EAAO1B,EAAME,UAAU,GACzB,GAAIld,KAAKqe,KAAOrB,EAAMG,kBACpBuB,EAAO1B,EAAMG,iBAGjB,GAAI0B,MACL7e,KAAKqe,KAAOrB,EAAME,gBACbwB,EAAO1B,EAAME,UAAU,OAG3B,CAAA,IAAI4B,QAMH,IAAIlE,MAAM,6CALZ5a,KAAKqe,KAAOrB,EAAMG,kBACbuB,EAAO1B,EAAMG,gBAU9B7B,OAAQ,SAAShU,EAAMoT,OAChB,IAAI3P,EAAI/K,KAAKqd,WAAWnb,OAAS,EAAG6I,GAAK,IAAKA,EAAG,KAChDiS,EAAQhd,KAAKqd,WAAWtS,MACxBiS,EAAMC,QAAUjd,KAAKqe,MACrBhd,EAAOC,KAAK0b,EAAO,eACnBhd,KAAKqe,KAAOrB,EAAMG,WAAY,KAC5B4B,EAAe/B,SAKnB+B,IACU,UAATzX,GACS,aAATA,IACDyX,EAAa9B,QAAUvC,GACvBA,GAAOqE,EAAa5B,aAGtB4B,EAAe,UAGbxD,EAASwD,EAAeA,EAAaxB,WAAa,UACtDhC,EAAOjU,KAAOA,EACdiU,EAAOb,IAAMA,EAETqE,QACG/c,OAAS,YACT0M,KAAOqQ,EAAa5B,WAClBjC,GAGFlb,KAAKgf,SAASzD,IAGvByD,SAAU,SAASzD,EAAQ6B,MACL,UAAhB7B,EAAOjU,WACHiU,EAAOb,UAGK,UAAhBa,EAAOjU,MACS,aAAhBiU,EAAOjU,UACJoH,KAAO6M,EAAOb,IACM,WAAhBa,EAAOjU,WACXkX,KAAOxe,KAAK0a,IAAMa,EAAOb,SACzB1Y,OAAS,cACT0M,KAAO,OACa,WAAhB6M,EAAOjU,MAAqB8V,SAChC1O,KAAO0O,GAGPlC,GAGT+D,OAAQ,SAAS9B,OACV,IAAIpS,EAAI/K,KAAKqd,WAAWnb,OAAS,EAAG6I,GAAK,IAAKA,EAAG,KAChDiS,EAAQhd,KAAKqd,WAAWtS,MACxBiS,EAAMG,aAAeA,cAClB6B,SAAShC,EAAMO,WAAYP,EAAMI,UACtCE,EAAcN,GACP9B,UAKJ,SAAS+B,OACX,IAAIlS,EAAI/K,KAAKqd,WAAWnb,OAAS,EAAG6I,GAAK,IAAKA,EAAG,KAChDiS,EAAQhd,KAAKqd,WAAWtS,MACxBiS,EAAMC,SAAWA,EAAQ,KACvB1B,EAASyB,EAAMO,cACC,UAAhBhC,EAAOjU,KAAkB,KACvB4X,EAAS3D,EAAOb,IACpB4C,EAAcN,UAETkC,SAML,IAAItE,MAAM,0BAGlBuE,cAAe,SAAS5Q,EAAUqO,EAAYC,eACvC9B,SAAW,CACd7X,SAAU4V,EAAOvK,GACjBqO,WAAYA,EACZC,QAASA,GAGS,SAAhB7c,KAAKgC,cAGF0Y,IAAM7Z,GAGNqa,IAQJ5B,EA9sBM,CAqtBgB3Y,EAAO2Y,aAIpC8F,mBAAqB/F,EACrB,MAAOgG,GAWmB,iBAAfzf,WACTA,WAAWwf,mBAAqB/F,EAEhCpZ,SAAS,IAAK,yBAAdA,CAAwCoZ,oCC/uBnCiG,EAAmBC,EAAKvL,EAASU,EAAQ8K,EAAOC,EAAQvf,EAAKwa,WAE9DiC,EAAO4C,EAAIrf,GAAKwa,GAChBva,EAAQwc,EAAKxc,MACjB,MAAOK,eACPkU,EAAOlU,GAILmc,EAAKrN,KACP0E,EAAQ7T,GAERwM,QAAQqH,QAAQ7T,GAAO+S,KAAKsM,EAAOC,GAwBvC9e,mBApB2BqE,UAClB,eACDlF,EAAOE,KACP4R,EAAO3P,iBACJ,IAAI0K,SAAQ,SAAUqH,EAASU,OAChC6K,EAAMva,EAAG8I,MAAMhO,EAAM8R,YAEhB4N,EAAMrf,GACbmf,EAAmBC,EAAKvL,EAASU,EAAQ8K,EAAOC,EAAQ,OAAQtf,YAGzDsf,EAAO3F,GACdwF,EAAmBC,EAAKvL,EAASU,EAAQ8K,EAAOC,EAAQ,QAAS3F,GAGnE0F,OAAM3e,QAMZF,EAAO2Y,QAAP,QAA4B3Y,EAAO2Y,QAAS3Y,sBAA4B,82BChCvDqM,MAAM0S,SAAW,SAAiBxe,SACrB,SAArBgI,GAAQhI,ICDbmM,GAAU1J,EAAgB,cCDb,SAAUgc,EAAezd,UACjC,IDIQ,SAAUyd,OACrBnP,SACAkP,GAAQC,KACVnP,EAAImP,EAAclP,aAEdC,GAAcF,KAAOA,IAAMxD,OAAS0S,GAAQlP,EAAEhJ,aACzCzD,EAASyM,IAEN,QADVA,EAAIA,EAAEnD,QAFuDmD,OAAI3P,SAKtDA,IAAN2P,EAAkBxD,MAAQwD,GCdCmP,GAA7B,CAAwD,IAAXzd,EAAe,EAAIA,ICCrEpB,GAAO,GAAGA,KAGVuJ,GAAe,SAAUhD,OACvBuY,EAAiB,GAARvY,EACTwY,EAAoB,GAARxY,EACZyY,EAAkB,GAARzY,EACV0Y,EAAmB,GAAR1Y,EACX2Y,EAAwB,GAAR3Y,EAChB4Y,EAA2B,GAAR5Y,EACnB6Y,EAAmB,GAAR7Y,GAAa2Y,SACrB,SAAUzV,EAAO4V,EAAYxS,EAAMyS,WAQpCjgB,EAAO0E,EAPPS,EAAI/D,EAASgJ,GACbzK,EAAOyJ,GAAcjE,GACrB+a,EAAgBtR,GAAKoR,EAAYxS,EAAM,GACvCzL,EAASwI,GAAkB5K,GAC3BkK,EAAQ,EACRqQ,EAAS+F,GAAkBE,GAC3BhV,EAASsU,EAASvF,EAAO9P,EAAOrI,GAAU2d,GAAaI,EAAmB5F,EAAO9P,EAAO,QAAK1J,EAE3FqB,EAAS8H,EAAOA,IAAS,IAAIkW,GAAYlW,KAASlK,KAEtD+E,EAASwb,EADTlgB,EAAQL,EAAKkK,GACiBA,EAAO1E,GACjC+B,MACEuY,EAAQtU,EAAOtB,GAASnF,OACvB,GAAIA,EAAQ,OAAQwC,QAClB,SAAU,OACV,SAAUlH,OACV,SAAU6J,OACV,EAAGlJ,GAAKQ,KAAKgK,EAAQnL,QACrB,OAAQkH,QACR,SAAU,OACV,EAAGvG,GAAKQ,KAAKgK,EAAQnL,UAIzB6f,GAAiB,EAAIF,GAAWC,EAAWA,EAAWzU,OAIhD,CAGf6Q,QAAS9R,GAAa,GAGtBkW,IAAKlW,GAAa,GAGlBmW,OAAQnW,GAAa,GAGrBoW,KAAMpW,GAAa,GAGnBqW,MAAOrW,GAAa,GAGpBsW,KAAMtW,GAAa,GAGnBuW,UAAWvW,GAAa,GAGxBwW,aAAcxW,GAAa,IClEzBgD,GAAU1J,EAAgB,cAEb,SAAUmd,UAIlB9d,GAAc,KAAOJ,GAAM,eAC5Bme,EAAQ,UACMA,EAAMtQ,YAAc,IAC1BpD,IAAW,iBACd,CAAE2T,IAAK,IAE2B,IAApCD,EAAMD,GAAaG,SAASD,QCdnCE,GAAOpZ,GAAwCyY,IAG/CY,GAAsBC,GAA6B,UAKrD,CAAE9V,OAAQ,QAAS2B,OAAO,EAAMR,QAAS0U,IAAuB,CAChEZ,IAAK,SAAaJ,UACTe,GAAKlhB,KAAMmgB,EAAYle,UAAUC,OAAS,EAAID,UAAU,QAAKpB,MCVxE,OAAiB,SAAUK,MACC,WAAtBgI,GAAQhI,GAAwB,MAAMD,UAAU,oDAC7CU,OAAOT,OCHC,gDCGbmgB,GAAa,IAAMC,GAAc,IACjCC,GAAQC,OAAO,IAAMH,GAAaA,GAAa,KAC/CI,GAAQD,OAAOH,GAAaA,GAAa,MAGzChX,GAAe,SAAUhD,UACpB,SAAUkD,OACX0B,EAASrK,GAAST,EAAuBoJ,WAClC,EAAPlD,IAAU4E,EAASA,EAAOzD,QAAQ+Y,GAAO,KAClC,EAAPla,IAAU4E,EAASA,EAAOzD,QAAQiZ,GAAO,KACtCxV,OAIM,CAGfyV,MAAOrX,GAAa,GAGpBsX,IAAKtX,GAAa,GAGlBuX,KAAMvX,GAAa,ICxBjBuX,GAAO9Z,GAAoC8Z,KAG3CC,GAAc9hB,EAAO+hB,WACrBhf,GAAS/C,EAAO+C,OAChB0K,GAAW1K,IAAUA,GAAOI,YACnB,EAAI2e,GAAYP,GAAc,QAAWS,EAAAA,GAEhDvU,KAAa5K,GAAM,WAAcif,GAAYzhB,OAAOoN,QAIhC,SAAoBvB,OACxC+V,EAAgBJ,GAAKhgB,GAASqK,IAC9BpH,EAASgd,GAAYG,UACP,IAAXnd,GAA2C,KAA3Bmd,EAAc1D,OAAO,IAAa,EAAIzZ,GAC3Dgd,MCdF,CAAE9hB,QAAQ,EAAM0M,OAAQqV,YAAcD,IAAe,CACrDC,WAAYD,KCDd,IC+CII,MD/Ca,eACXtU,EAAOnI,EAASxF,MAChB6E,EAAS,UACT8I,EAAK5N,SAAQ8E,GAAU,KACvB8I,EAAKuU,aAAYrd,GAAU,KAC3B8I,EAAKwU,YAAWtd,GAAU,KAC1B8I,EAAKyU,SAAQvd,GAAU,KACvB8I,EAAK0U,UAASxd,GAAU,KACxB8I,EAAK2U,SAAQzd,GAAU,KACpBA,GEVL0d,GAAUxiB,EAAOyhB,yBAEG5e,GAAM,eACxB4f,EAAKD,GAAQ,IAAK,YACtBC,EAAGC,UAAY,EACW,MAAnBD,EAAG9f,KAAK,wBAGME,GAAM,eAEvB4f,EAAKD,GAAQ,KAAM,aACvBC,EAAGC,UAAY,EACU,MAAlBD,EAAG9f,KAAK,cCVAtC,OAAOkG,MAAQ,SAAchB,UACrC6F,GAAmB7F,EAAG0F,QCCd/G,EAAc7D,OAAOsiB,iBAAmB,SAA0Bpd,EAAGqd,GACpFnd,EAASF,WAILpF,EAHAoG,EAAOsc,GAAWD,GAClBzgB,EAASoE,EAAKpE,OACd8H,EAAQ,EAEL9H,EAAS8H,GAAOlE,EAAqBC,EAAET,EAAGpF,EAAMoG,EAAK0D,KAAU2Y,EAAWziB,WAC1EoF,GHFLud,GAAW7b,GAAU,YAErB8b,GAAmB,aAEnBC,GAAY,SAAUC,SACjBC,WAAmBD,EAAnBC,KAAAA,WAILC,GAA4B,SAAUjB,GACxCA,EAAgBkB,MAAMJ,GAAU,KAChCd,EAAgBmB,YACZC,EAAOpB,EAAgBqB,aAAaljB,cACxC6hB,EAAkB,KACXoB,GA0BLE,GAAkB,eAElBtB,GAAkB,IAAIuB,cAAc,YACpC,MAAOhjB,IAzBoB,IAIzBijB,EAFAC,EAwBJH,GAAqC,oBAAZ1f,SACrBA,SAAS8P,QAAUsO,GACjBiB,GAA0BjB,MA1B5ByB,EAASC,EAAsB,WAG5BC,MAAMC,QAAU,OACvBtR,GAAKC,YAAYkR,GAEjBA,EAAO9W,IAAMjL,OALJ,gBAMT8hB,EAAiBC,EAAOI,cAAcjgB,UACvBkgB,OACfN,EAAeN,MAAMJ,GAAU,sBAC/BU,EAAeL,QACRK,EAAeO,GAiBlBd,GAA0BjB,YAC1B/f,EAAS8I,GAAY9I,OAClBA,YAAiBqhB,GAAe,UAAYvY,GAAY9I,WACxDqhB,SAGEV,KAAY,EAIvB,IIrDMoB,GACAC,MJoDW9jB,OAAOia,QAAU,SAAgB/U,EAAGqd,OAC/C9d,SACM,OAANS,GACFwd,GAAgB,UAActd,EAASF,GACvCT,EAAS,IAAIie,GACbA,GAAgB,UAAc,KAE9Bje,EAAOge,IAAYvd,GACdT,EAAS0e,UACM1iB,IAAf8hB,EAA2B9d,EAAS6d,GAAiB7d,EAAQ8d,IK5ElEJ,GAAUxiB,EAAOyhB,UAEJ5e,GAAM,eACjB4f,EAAKD,GAAQ,IAAK,aACbC,EAAGJ,QAAUI,EAAG9f,KAAK,OAAsB,MAAb8f,EAAG2B,UCJxC5B,GAAUxiB,EAAOyhB,UAEJ5e,GAAM,eACjB4f,EAAKD,GAAQ,UAAW,WACK,MAA1BC,EAAG9f,KAAK,KAAK0hB,OAAOlgB,GACI,OAA7B,IAAIsE,QAAQga,EAAI,YFDhBza,GAAmBD,GAAuClE,IAI1DygB,GAAa7C,OAAOha,UAAU9E,KAC9B4hB,GAAgBlhB,EAAO,wBAAyBzB,OAAO6F,UAAUgB,SAEjE+b,GAAcF,GAEdG,IACEP,GAAM,IACNC,GAAM,MACVG,GAAW/iB,KAAK2iB,GAAK,KACrBI,GAAW/iB,KAAK4iB,GAAK,KACI,IAAlBD,GAAIxB,WAAqC,IAAlByB,GAAIzB,WAGhCgC,GAAgBC,GAAcD,eAAiBC,GAAcC,aAG7DC,QAAuC/jB,IAAvB,OAAO6B,KAAK,IAAI,IAExB8hB,IAA4BI,IAAiBH,IAAiBI,IAAuBC,MAI/FP,GAAc,SAActY,OAKtBpH,EAAQkgB,EAAQtC,EAAWljB,EAAOwL,EAAGlF,EAAQmf,EAJ7CxC,EAAKxiB,KACLyG,EAAQsB,GAAiBya,GACzByC,EAAMrjB,GAASqK,GACfiZ,EAAMze,EAAMye,OAGZA,SACFA,EAAIzC,UAAYD,EAAGC,UACnB5d,EAAS0f,GAAYjjB,KAAK4jB,EAAKD,GAC/BzC,EAAGC,UAAYyC,EAAIzC,UACZ5d,MAGLuf,EAAS3d,EAAM2d,OACf9B,EAASmC,IAAiBjC,EAAGF,OAC7B6B,EAAQgB,GAAY7jB,KAAKkhB,GACzB/Z,EAAS+Z,EAAG/Z,OACZ2c,EAAa,EACbC,EAAUJ,KAEV3C,KAE0B,KAD5B6B,EAAQA,EAAM3b,QAAQ,IAAK,KACjBqC,QAAQ,OAChBsZ,GAAS,KAGXkB,EAAUJ,EAAI1c,MAAMia,EAAGC,WAEnBD,EAAGC,UAAY,KAAOD,EAAGL,WAAaK,EAAGL,WAA8C,OAAjC8C,EAAI3G,OAAOkE,EAAGC,UAAY,MAClFha,EAAS,OAASA,EAAS,IAC3B4c,EAAU,IAAMA,EAChBD,KAIFL,EAAS,IAAIvD,OAAO,OAAS/Y,EAAS,IAAK0b,IAGzCS,KACFG,EAAS,IAAIvD,OAAO,IAAM/Y,EAAS,WAAY0b,IAE7CK,KAA0B/B,EAAYD,EAAGC,WAE7CljB,EAAQ8kB,GAAW/iB,KAAKghB,EAASyC,EAASvC,EAAI6C,GAE1C/C,EACE/iB,GACFA,EAAMmF,MAAQnF,EAAMmF,MAAM6D,MAAM6c,GAChC7lB,EAAM,GAAKA,EAAM,GAAGgJ,MAAM6c,GAC1B7lB,EAAMyK,MAAQwY,EAAGC,UACjBD,EAAGC,WAAaljB,EAAM,GAAG2C,QACpBsgB,EAAGC,UAAY,EACb+B,IAA4BjlB,IACrCijB,EAAGC,UAAYD,EAAGziB,OAASR,EAAMyK,MAAQzK,EAAM,GAAG2C,OAASugB,GAEzDmC,IAAiBrlB,GAASA,EAAM2C,OAAS,GAG3CoiB,GAAchjB,KAAK/B,EAAM,GAAIwlB,GAAQ,eAC9Bha,EAAI,EAAGA,EAAI9I,UAAUC,OAAS,EAAG6I,SACflK,IAAjBoB,UAAU8I,KAAkBxL,EAAMwL,QAAKlK,MAK7CtB,GAAS6kB,MACX7kB,EAAM6kB,OAASve,EAASwU,GAAO,MAC1BtP,EAAI,EAAGA,EAAIqZ,EAAOliB,OAAQ6I,IAE7BlF,GADAmf,EAAQZ,EAAOrZ,IACF,IAAMxL,EAAMylB,EAAM,WAI5BzlB,IAIX,OAAiBglB,MG1Gf,CAAEjZ,OAAQ,SAAU2B,OAAO,EAAMR,OAAQ,IAAI/J,OAASA,IAAQ,CAC9DA,KAAMA,KCER,IAAI2K,GAAU1J,EAAgB,WAC1B2hB,GAAkB9D,OAAOha,aAEZ,SAAU+d,EAAK7iB,EAAMoT,EAAQ0P,OACxCC,EAAS9hB,EAAgB4hB,GAEzBG,GAAuB9iB,GAAM,eAE3B0C,EAAI,UACRA,EAAEmgB,GAAU,kBAAqB,GACZ,GAAd,GAAGF,GAAKjgB,MAGbqgB,EAAoBD,IAAwB9iB,GAAM,eAEhDgjB,GAAa,EACbpD,EAAK,UAEG,UAAR+C,KAIF/C,EAAK,IAGF/R,YAAc,GACjB+R,EAAG/R,YAAYpD,IAAW,kBAAqBmV,GAC/CA,EAAG2B,MAAQ,GACX3B,EAAGiD,GAAU,IAAIA,IAGnBjD,EAAG9f,KAAO,kBAAckjB,GAAa,EAAa,MAElDpD,EAAGiD,GAAQ,KACHG,SAIPF,IACAC,GACD7P,EACA,KACI+P,EAAqB,IAAIJ,GACzBK,EAAUpjB,EAAK+iB,EAAQ,GAAGF,IAAM,SAAUQ,EAAcC,EAAQf,EAAKgB,EAAMC,OACzEC,EAAQH,EAAOtjB,YACfyjB,IAAUC,IAAcD,IAAUb,GAAgB5iB,KAChDgjB,IAAwBQ,EAInB,CAAE5W,MAAM,EAAMnP,MAAO0lB,EAAmBvkB,KAAK0kB,EAAQf,EAAKgB,IAE5D,CAAE3W,MAAM,EAAMnP,MAAO4lB,EAAazkB,KAAK2jB,EAAKe,EAAQC,IAEtD,CAAE3W,MAAM,MAGjBnG,GAASxH,OAAO6F,UAAW+d,EAAKO,EAAQ,IACxC3c,GAASmc,GAAiBG,EAAQK,EAAQ,IAGxCN,GAAMte,GAA4Boe,GAAgBG,GAAS,QAAQ,IClErEpb,GAAe,SAAUgc,UACpB,SAAU9b,EAAO+b,OAIlBC,EAAOC,EAHPjW,EAAI3O,GAAST,EAAuBoJ,IACpCkc,EAAWvc,GAAoBoc,GAC/BI,EAAOnW,EAAErO,cAETukB,EAAW,GAAKA,GAAYC,EAAaL,EAAoB,QAAKxlB,GACtE0lB,EAAQhW,EAAEoW,WAAWF,IACN,OAAUF,EAAQ,OAAUE,EAAW,IAAMC,IACtDF,EAASjW,EAAEoW,WAAWF,EAAW,IAAM,OAAUD,EAAS,MAC1DH,EAAoB9V,EAAE+N,OAAOmI,GAAYF,EACzCF,EAAoB9V,EAAEhI,MAAMke,EAAUA,EAAW,GAA+BD,EAAS,OAAlCD,EAAQ,OAAU,IAA0B,WAI5F,CAGfK,OAAQvc,IAAa,GAGrBiU,OAAQjU,IAAa,ICxBnBiU,GAASxW,GAAyCwW,UAIrC,SAAU/N,EAAGvG,EAAOqY,UAC5BrY,GAASqY,EAAU/D,GAAO/N,EAAGvG,GAAO9H,OAAS,OCCrC,SAAU2kB,EAAGtW,OACxB7N,EAAOmkB,EAAEnkB,QACTZ,EAAWY,GAAO,KAChBmC,EAASnC,EAAKpB,KAAKulB,EAAGtW,UACX,OAAX1L,GAAiBW,EAASX,GACvBA,KAEU,WAAfqE,GAAQ2d,GAAiB,OAAOT,GAAW9kB,KAAKulB,EAAGtW,SACjDtP,UAAU,mDCJY,SAAS,SAAU6lB,EAAOC,EAAaC,SAC5D,UAGUhB,OACT1gB,EAAInE,EAAuBnB,MAC3BinB,EAAoBpmB,MAAVmlB,OAAsBnlB,EAAYkE,EAAUihB,EAAQc,UAC3DG,EAAUA,EAAQ3lB,KAAK0kB,EAAQ1gB,GAAK,IAAIkc,OAAOwE,GAAQc,GAAOllB,GAAS0D,cAItE2G,OACJib,EAAK1hB,EAASxF,MACduQ,EAAI3O,GAASqK,GACbkb,EAAMH,EAAgBD,EAAaG,EAAI3W,MAEvC4W,EAAI7X,KAAM,OAAO6X,EAAIhnB,UAEpB+mB,EAAGnnB,OAAQ,OAAOqnB,GAAWF,EAAI3W,OAElC8W,EAAcH,EAAG7E,QACrB6E,EAAGzE,UAAY,UAGX5d,EAFAyiB,EAAI,GACJC,EAAI,EAEgC,QAAhC1iB,EAASuiB,GAAWF,EAAI3W,KAAc,KACxCiX,EAAW5lB,GAASiD,EAAO,IAC/ByiB,EAAEC,GAAKC,EACU,KAAbA,IAAiBN,EAAGzE,UAAYgF,GAAmBlX,EAAGnG,GAAS8c,EAAGzE,WAAY4E,IAClFE,WAEW,IAANA,EAAU,KAAOD,OCxC9B,IAAI1d,GAAQjK,KAAKiK,MACbpB,GAAU,GAAGA,QACbkf,GAAuB,8BACvBC,GAAgC,yBAInB,SAAUC,EAAS3C,EAAKwB,EAAUoB,EAAUC,EAAerc,OACtEsc,EAAUtB,EAAWmB,EAAQ1lB,OAC7B8lB,EAAIH,EAAS3lB,OACb+lB,EAAUN,eACQ9mB,IAAlBinB,IACFA,EAAgBvmB,EAASumB,GACzBG,EAAUP,IAELlf,GAAQlH,KAAKmK,EAAawc,GAAS,SAAU1oB,EAAO2oB,OACrDC,SACID,EAAG5J,OAAO,QACX,UAAY,QACZ,WAAYsJ,MACZ,WAAY3C,EAAI1c,MAAM,EAAGke,OACzB,WAAYxB,EAAI1c,MAAMwf,OACtB,IACHI,EAAUL,EAAcI,EAAG3f,MAAM,GAAI,sBAGjCgf,GAAKW,KACC,IAANX,EAAS,OAAOhoB,KAChBgoB,EAAIS,EAAG,KACLjiB,EAAI6D,GAAM2d,EAAI,WACR,IAANxhB,EAAgBxG,EAChBwG,GAAKiiB,OAA8BnnB,IAApBgnB,EAAS9hB,EAAI,GAAmBmiB,EAAG5J,OAAO,GAAKuJ,EAAS9hB,EAAI,GAAKmiB,EAAG5J,OAAO,GACvF/e,EAET4oB,EAAUN,EAASN,EAAI,eAER1mB,IAAZsnB,EAAwB,GAAKA,MCvBpCC,GAAUzkB,EAAgB,WAC1BmG,GAAMnK,KAAKmK,IACXC,GAAMpK,KAAKoK,IAQXse,GAEgC,OAA3B,IAAI7f,QAAQ,IAAK,MAItB8f,KACE,IAAIF,KAC6B,KAA5B,IAAIA,IAAS,IAAK,SAiBC,WAAW,SAAUG,EAAGjE,EAAe0C,OAC/DwB,EAAoBF,GAA+C,IAAM,WAEtE,UAGYG,EAAaC,OACxBpjB,EAAInE,EAAuBnB,MAC3B2oB,EAA0B9nB,MAAf4nB,OAA2B5nB,EAAYkE,EAAU0jB,EAAaL,WACtEO,EACHA,EAASrnB,KAAKmnB,EAAanjB,EAAGojB,GAC9BpE,EAAchjB,KAAKM,GAAS0D,GAAImjB,EAAaC,aAIzCzc,EAAQyc,OACZxB,EAAK1hB,EAASxF,MACduQ,EAAI3O,GAASqK,MAGS,iBAAjByc,IACsC,IAA7CA,EAAa7d,QAAQ2d,KACW,IAAhCE,EAAa7d,QAAQ,MACrB,KACIsc,EAAMH,EAAgB1C,EAAe4C,EAAI3W,EAAGmY,MAC5CvB,EAAI7X,KAAM,OAAO6X,EAAIhnB,UAGvByoB,EAAoB9mB,EAAW4mB,GAC9BE,IAAmBF,EAAe9mB,GAAS8mB,QAE5C3oB,EAASmnB,EAAGnnB,UACZA,EAAQ,KACNsnB,EAAcH,EAAG7E,QACrB6E,EAAGzE,UAAY,UAEboG,EAAU,KACD,KACPhkB,EAASuiB,GAAWF,EAAI3W,MACb,OAAX1L,EAAiB,SAErBgkB,EAAQ/nB,KAAK+D,IACR9E,EAAQ,MAGI,KADF6B,GAASiD,EAAO,MACVqiB,EAAGzE,UAAYgF,GAAmBlX,EAAGnG,GAAS8c,EAAGzE,WAAY4E,YA5E5D3nB,EA+EpBopB,EAAoB,GACpBC,EAAqB,EAChBhe,EAAI,EAAGA,EAAI8d,EAAQ3mB,OAAQ6I,IAAK,CACvClG,EAASgkB,EAAQ9d,WAEb6c,EAAUhmB,GAASiD,EAAO,IAC1B4hB,EAAW3c,GAAIC,GAAIG,GAAoBrF,EAAOmF,OAAQuG,EAAErO,QAAS,GACjE2lB,EAAW,GAMNmB,EAAI,EAAGA,EAAInkB,EAAO3C,OAAQ8mB,IAAKnB,EAAS/mB,UA3FzCD,KADcnB,EA4F8CmF,EAAOmkB,IA3FvDtpB,EAAKiC,OAAOjC,QA4F5BooB,EAAgBjjB,EAAOuf,UACvBwE,EAAmB,KACjBK,EAAe,CAACrB,GAAS3c,OAAO4c,EAAUpB,EAAUlW,QAClC1P,IAAlBinB,GAA6BmB,EAAanoB,KAAKgnB,OAC/Crc,EAAc7J,GAAS8mB,EAAa5a,WAAMjN,EAAWooB,SAEzDxd,EAAcyd,GAAgBtB,EAASrX,EAAGkW,EAAUoB,EAAUC,EAAeY,GAE3EjC,GAAYsC,IACdD,GAAqBvY,EAAEhI,MAAMwgB,EAAoBtC,GAAYhb,EAC7Dsd,EAAqBtC,EAAWmB,EAAQ1lB,eAGrC4mB,EAAoBvY,EAAEhI,MAAMwgB,SAvFJnmB,GAAM,eACrC4f,EAAK,WACTA,EAAG9f,KAAO,eACJmC,EAAS,UACbA,EAAOuf,OAAS,CAAElgB,EAAG,KACdW,GAGyB,MAA3B,GAAG2D,QAAQga,EAAI,aAkFc6F,IAAoBC,IC5H1D,ICaMhf,GDbFwd,GAAQnjB,EAAgB,YAIX,SAAUjE,OACrBypB,SACGplB,EAASrE,UAAmCmB,KAA1BsoB,EAAWzpB,EAAGonB,OAA0BqC,EAA0B,UAAfjgB,GAAQxJ,QERrE,SAAUA,MACrBypB,GAASzpB,SACLuB,UAAU,wDACTvB,GCHPonB,GAAQnjB,EAAgB,YAEX,SAAUmd,OACrBkF,EAAS,cAELlF,GAAakF,GACnB,MAAOoD,cAELpD,EAAOc,KAAS,EACT,MAAMhG,GAAakF,GAC1B,MAAOqD,YACF,GFXP3hB,GAA2BI,GAA2D/B,EAStFujB,GAAc,GAAGC,WACjBxf,GAAMpK,KAAKoK,IAEXyf,GAA0BC,GAAqB,cAE/CC,KAAgCF,KAC9BlgB,GAAa5B,GAAyB/F,OAAO6F,UAAW,eACrD8B,IAAeA,GAAW/I,oRAKjC,CAAE+K,OAAQ,SAAU2B,OAAO,EAAMR,QAASid,KAAqBF,IAA2B,CAC1FD,WAAY,SAAoBI,OAC1Bhc,EAAO/L,GAAST,EAAuBnB,OAC3C4pB,GAAWD,OACP3f,EAAQI,GAASL,GAAI9H,UAAUC,OAAS,EAAID,UAAU,QAAKpB,EAAW8M,EAAKzL,SAC3E2nB,EAASjoB,GAAS+nB,UACfL,GACHA,GAAYhoB,KAAKqM,EAAMkc,EAAQ7f,GAC/B2D,EAAKpF,MAAMyB,EAAOA,EAAQ6f,EAAO3nB,UAAY2nB,yUG5BrD,OAAiB,SAAU/I,EAAa5f,OAClCc,EAAS,GAAG8e,WACP9e,GAAUY,GAAM,WAEvBZ,EAAOV,KAAK,KAAMJ,GAAY,iBAAoB,GAAM,OCDxD4oB,GAAa,GAAGphB,KAEhBqhB,GAAcxgB,IAAiBnJ,OAC/B4pB,GAAgBC,GAAoB,OAAQ,QAI9C,CAAE3e,OAAQ,QAAS2B,OAAO,EAAMR,OAAQsd,KAAgBC,IAAiB,CACzEthB,KAAM,SAAcwhB,UACXJ,GAAWxoB,KAAKmI,GAAgBzJ,WAAqBa,IAAdqpB,EAA0B,IAAMA,4BCXlFvpB,mBAJyBwpB,MACnBnd,MAAM0S,QAAQyK,GAAM,OAAOA,GAIjCxpB,EAAO2Y,QAAP,QAA4B3Y,EAAO2Y,QAAS3Y,sBAA4B,uBCyBxEA,mBA9B+BwpB,EAAKpf,OAC9Bqf,EAAY,MAAPD,EAAc,KAAyB,oBAAXrnB,QAA0BqnB,EAAIrnB,OAAOI,WAAainB,EAAI,iBAEjF,MAANC,OAKAC,EAAIC,EAJJC,EAAO,GACPC,GAAK,EACLC,GAAK,UAKFL,EAAKA,EAAG9oB,KAAK6oB,KAAQK,GAAMH,EAAKD,EAAG1b,QAAQY,QAC9Cib,EAAKzpB,KAAKupB,EAAGlqB,QAET4K,GAAKwf,EAAKroB,SAAW6I,GAH4Byf,GAAK,IAK5D,MAAO1Q,GACP2Q,GAAK,EACLH,EAAKxQ,cAGE0Q,GAAsB,MAAhBJ,EAAE,QAAoBA,EAAE,oBAE/BK,EAAI,MAAMH,UAIXC,IAIT5pB,EAAO2Y,QAAP,QAA4B3Y,EAAO2Y,QAAS3Y,sBAA4B,uBCrBxEA,mBAV2BwpB,EAAKO,IACnB,MAAPA,GAAeA,EAAMP,EAAIjoB,UAAQwoB,EAAMP,EAAIjoB,YAE1C,IAAI6I,EAAI,EAAG4f,EAAO,IAAI3d,MAAM0d,GAAM3f,EAAI2f,EAAK3f,IAC9C4f,EAAK5f,GAAKof,EAAIpf,UAGT4f,GAIThqB,EAAO2Y,QAAP,QAA4B3Y,EAAO2Y,QAAS3Y,sBAA4B,uBCAxEA,mBATqCiqB,EAAGC,MACjCD,MACY,iBAANA,EAAgB,OAAOE,GAAiBF,EAAGC,OAClDtD,EAAInnB,OAAOoH,UAAU5F,SAASN,KAAKspB,GAAGriB,MAAM,GAAI,SAC1C,WAANgf,GAAkBqD,EAAEna,cAAa8W,EAAIqD,EAAEna,YAAYhN,MAC7C,QAAN8jB,GAAqB,QAANA,EAAoBva,MAAM0C,KAAKkb,GACxC,cAANrD,GAAqB,2CAA2C7jB,KAAK6jB,GAAWuD,GAAiBF,EAAGC,YAI1GlqB,EAAO2Y,QAAP,QAA4B3Y,EAAO2Y,QAAS3Y,sBAA4B,uBCRxEA,2BAHQ,IAAIM,UAAU,8IAItBN,EAAO2Y,QAAP,QAA4B3Y,EAAO2Y,QAAS3Y,sBAA4B,yBCOxEA,mBAJwBwpB,EAAKpf,UACpBggB,GAAeZ,IAAQa,GAAqBb,EAAKpf,IAAMkgB,GAA2Bd,EAAKpf,IAAMmgB,MAItGvqB,EAAO2Y,QAAP,QAA4B3Y,EAAO2Y,QAAS3Y,sBAA4B,ktCCExEA,mBAfyBwJ,EAAKjK,EAAKC,UAC7BD,KAAOiK,EACT/J,OAAOC,eAAe8J,EAAKjK,EAAK,CAC9BC,MAAOA,EACPyF,YAAY,EACZtF,cAAc,EACdC,UAAU,IAGZ4J,EAAIjK,GAAOC,EAGNgK,GAITxJ,EAAO2Y,QAAP,QAA4B3Y,EAAO2Y,QAAS3Y,sBAA4B,0BCVxEA,mBANyBwqB,EAAU5d,QAC3B4d,aAAoB5d,SAClB,IAAItM,UAAU,sCAKxBN,EAAO2Y,QAAP,QAA4B3Y,EAAO2Y,QAAS3Y,sBAA4B,mCCP/DyqB,EAAkB9f,EAAQ+f,OAC5B,IAAItgB,EAAI,EAAGA,EAAIsgB,EAAMnpB,OAAQ6I,IAAK,KACjCzB,EAAa+hB,EAAMtgB,GACvBzB,EAAW1D,WAAa0D,EAAW1D,aAAc,EACjD0D,EAAWhJ,cAAe,EACtB,UAAWgJ,IAAYA,EAAW/I,UAAW,GACjDH,OAAOC,eAAeiL,EAAQhC,EAAWpJ,IAAKoJ,IAUlD3I,mBANsB4M,EAAa+d,EAAYC,UACzCD,GAAYF,EAAkB7d,EAAY/F,UAAW8jB,GACrDC,GAAaH,EAAkB7d,EAAage,GACzChe,GAIT5M,EAAO2Y,QAAP,QAA4B3Y,EAAO2Y,QAAS3Y,sBAA4B,SCZvD,SAAUkF,EAAQ3F,EAAKC,OAClCiZ,EAAc3T,EAAcvF,GAC5BkZ,KAAevT,EAAQC,EAAqBC,EAAEF,EAAQuT,EAAapT,EAAyB,EAAG7F,IAC9F0F,EAAOuT,GAAejZ,GCKzBqrB,GAAuB7nB,EAAgB,sBACvC8nB,GAAmB,iBACnBC,GAAiC,iCAKjCC,GAA+B3oB,GAAc,KAAOJ,GAAM,eACxDme,EAAQ,UACZA,EAAMyK,KAAwB,EACvBzK,EAAM9V,SAAS,KAAO8V,KAG3B6K,GAAkBxK,GAA6B,UAE/CyK,GAAqB,SAAUvmB,OAC5BvB,EAASuB,GAAI,OAAO,MACrBwmB,EAAaxmB,EAAEkmB,gBACG3qB,IAAfirB,IAA6BA,EAAapM,GAAQpa,OAQzD,CAAEgG,OAAQ,QAAS2B,OAAO,EAAMR,QALpBkf,KAAiCC,IAKK,CAElD3gB,OAAQ,SAAgByP,OAIlB3P,EAAGghB,EAAG7pB,EAAQwoB,EAAKsB,EAHnB1mB,EAAI/D,EAASvB,MACbsnB,EAAIhH,GAAmBhb,EAAG,GAC1BiiB,EAAI,MAEHxc,GAAK,EAAG7I,EAASD,UAAUC,OAAQ6I,EAAI7I,EAAQ6I,OAE9C8gB,GADJG,GAAW,IAAPjhB,EAAWzF,EAAIrD,UAAU8I,IACF,IAErBwc,GADJmD,EAAMhgB,GAAkBshB,IACVP,GAAkB,MAAMxqB,UAAUyqB,QAC3CK,EAAI,EAAGA,EAAIrB,EAAKqB,IAAKxE,IAASwE,KAAKC,GAAGC,GAAe3E,EAAGC,EAAGyE,EAAED,QAC7D,IACDxE,GAAKkE,GAAkB,MAAMxqB,UAAUyqB,IAC3CO,GAAe3E,EAAGC,IAAKyE,UAG3B1E,EAAEplB,OAASqlB,EACJD,KCxDX,IAAI4E,GAASpkB,GAAwC4Y,MAGjDsJ,GAAgBC,GAAoB,YAItC,CAAE3e,OAAQ,QAAS2B,OAAO,EAAMR,QAASud,IAAiB,CAC1DtJ,MAAO,SAAeP,UACb+L,GAAOlsB,KAAMmgB,EAAYle,UAAUC,OAAS,EAAID,UAAU,QAAKpB,MCL1E,IAAIwJ,GAAe,SAAU8hB,UACpB,SAAUxe,EAAMwS,EAAYtO,EAAiBua,GAClD5nB,EAAU2b,OACN7a,EAAI/D,EAASoM,GACb7N,EAAOyJ,GAAcjE,GACrBpD,EAASwI,GAAkBpF,GAC3B0E,EAAQmiB,EAAWjqB,EAAS,EAAI,EAChC6I,EAAIohB,GAAY,EAAI,KACpBta,EAAkB,EAAG,OAAa,IAChC7H,KAASlK,EAAM,CACjBssB,EAAOtsB,EAAKkK,GACZA,GAASe,WAGXf,GAASe,EACLohB,EAAWniB,EAAQ,EAAI9H,GAAU8H,QAC7B/I,UAAU,oDAGdkrB,EAAWniB,GAAS,EAAI9H,EAAS8H,EAAOA,GAASe,EAAOf,KAASlK,IACrEssB,EAAOjM,EAAWiM,EAAMtsB,EAAKkK,GAAQA,EAAO1E,WAEvC8mB,IC1BPC,GD8Ba,CAGfC,KAAMjiB,IAAa,GAGnBkiB,MAAOliB,IAAa,ICpC6BiiB,KAK/CtC,GAAgBC,GAAoB,aAOtC,CAAE3e,OAAQ,QAAS2B,OAAO,EAAMR,QAASud,KAJzBlY,IAAW0a,EAAiB,IAAMA,EAAiB,IAIK,CACxEC,OAAQ,SAAgBtM,UACfkM,GAAQrsB,KAAMmgB,EAAYle,UAAUC,OAAQD,UAAUC,OAAS,EAAID,UAAU,QAAKpB,MCd7F,IAAI6G,GAA2BI,GAA2D/B,EAStF2mB,GAAY,GAAGC,SACf5iB,GAAMpK,KAAKoK,IAEXyf,GAA0BC,GAAqB,YAE/CC,IAAgCF,MAA6B,eAC3DlgB,EAAa5B,GAAyB/F,OAAO6F,UAAW,mBACrD8B,IAAeA,EAAW/I,SAF8B,MAO/D,CAAE+K,OAAQ,SAAU2B,OAAO,EAAMR,QAASid,KAAqBF,IAA2B,CAC1FmD,SAAU,SAAkBhD,OACtBhc,EAAO/L,GAAST,EAAuBnB,OAC3C4pB,GAAWD,OACPiD,EAAc3qB,UAAUC,OAAS,EAAID,UAAU,QAAKpB,EACpD6pB,EAAM/c,EAAKzL,OACXyf,OAAsB9gB,IAAhB+rB,EAA4BlC,EAAM3gB,GAAIK,GAASwiB,GAAclC,GACnEb,EAASjoB,GAAS+nB,UACf+C,GACHA,GAAUprB,KAAKqM,EAAMkc,EAAQlI,GAC7BhU,EAAKpF,MAAMoZ,EAAMkI,EAAO3nB,OAAQyf,KAASkI,KClBjD,IAAIpF,GAAgBC,GAAcD,cAC9BoI,GAAY,GAAG/rB,KACfiJ,GAAMpK,KAAKoK,IACX+iB,GAAa,cAca,SAAS,SAAUC,EAAOC,EAAahG,OAC/DiG,SAYFA,EAV2B,KAA3B,OAAOzqB,MAAM,QAAQ,IAEc,UAA5BA,MAAM,QAAS,GAAGN,QACO,GAAhC,KAAKM,MAAM,WAAWN,QACU,GAAhC,IAAIM,MAAM,YAAYN,YAElBM,MAAM,QAAQN,OAAS,GAC3B,GAAGM,MAAM,MAAMN,OAGC,SAAUgoB,EAAWgD,OAC/BjhB,EAASrK,GAAST,EAAuBnB,OACzCmtB,OAAgBtsB,IAAVqsB,EAAsBJ,GAAaI,IAAU,KAC3C,IAARC,EAAW,MAAO,WACJtsB,IAAdqpB,EAAyB,MAAO,CAACje,OAEhCkd,GAASe,UACL8C,EAAY1rB,KAAK2K,EAAQie,EAAWiD,WAUzC5tB,EAAOkjB,EAAW2K,EARlBC,EAAS,GACTlJ,GAAS+F,EAAUhI,WAAa,IAAM,KAC7BgI,EAAU/H,UAAY,IAAM,KAC5B+H,EAAU7H,QAAU,IAAM,KAC1B6H,EAAU5H,OAAS,IAAM,IAClCgL,EAAgB,EAEhBC,EAAgB,IAAI/L,OAAO0I,EAAUzhB,OAAQ0b,EAAQ,MAElD5kB,EAAQ6mB,GAAW9kB,KAAKisB,EAAethB,QAC5CwW,EAAY8K,EAAc9K,WACV6K,IACdD,EAAOvsB,KAAKmL,EAAO1D,MAAM+kB,EAAe/tB,EAAMyK,QAC1CzK,EAAM2C,OAAS,GAAK3C,EAAMyK,MAAQiC,EAAO/J,QAAQ2qB,GAAU/e,MAAMuf,EAAQ9tB,EAAMgJ,MAAM,IACzF6kB,EAAa7tB,EAAM,GAAG2C,OACtBorB,EAAgB7K,EACZ4K,EAAOnrB,QAAUirB,KAEnBI,EAAc9K,YAAcljB,EAAMyK,OAAOujB,EAAc9K,mBAEzD6K,IAAkBrhB,EAAO/J,QACvBkrB,GAAeG,EAAc7pB,KAAK,KAAK2pB,EAAOvsB,KAAK,IAClDusB,EAAOvsB,KAAKmL,EAAO1D,MAAM+kB,IACzBD,EAAOnrB,OAASirB,EAAME,EAAO9kB,MAAM,EAAG4kB,GAAOE,GAG7C,IAAI7qB,WAAM3B,EAAW,GAAGqB,OACjB,SAAUgoB,EAAWgD,eACdrsB,IAAdqpB,GAAqC,IAAVgD,EAAc,GAAKF,EAAY1rB,KAAKtB,KAAMkqB,EAAWgD,IAEpEF,EAEhB,UAGU9C,EAAWgD,OACpB5nB,EAAInE,EAAuBnB,MAC3BwtB,EAAwB3sB,MAAbqpB,OAAyBrpB,EAAYkE,EAAUmlB,EAAW6C,UAClES,EACHA,EAASlsB,KAAK4oB,EAAW5kB,EAAG4nB,GAC5BD,EAAc3rB,KAAKM,GAAS0D,GAAI4kB,EAAWgD,aAOvCjhB,EAAQihB,OACZhG,EAAK1hB,EAASxF,MACduQ,EAAI3O,GAASqK,GACbkb,EAAMH,EAAgBiG,EAAe/F,EAAI3W,EAAG2c,EAAOD,IAAkBD,MAErE7F,EAAI7X,KAAM,OAAO6X,EAAIhnB,UAErBqQ,EAAI4H,GAAmB8O,EAAI1F,QAE3BiM,EAAkBvG,EAAG7E,QACrB8B,GAAS+C,EAAGhF,WAAa,IAAM,KACtBgF,EAAG/E,UAAY,IAAM,KACrB+E,EAAG7E,QAAU,IAAM,KACnBoC,GAAgB,IAAM,KAI/B+I,EAAW,IAAIhd,EAAEiU,GAAgB,OAASyC,EAAGze,OAAS,IAAMye,EAAI/C,GAChEgJ,OAAgBtsB,IAAVqsB,EAAsBJ,GAAaI,IAAU,KAC3C,IAARC,EAAW,MAAO,MACL,IAAb5c,EAAErO,OAAc,OAAuC,OAAhCwrB,GAAeF,EAAUjd,GAAc,CAACA,GAAK,WACpEod,EAAI,EACJC,EAAI,EACJtG,EAAI,GACDsG,EAAIrd,EAAErO,QAAQ,CACnBsrB,EAAS/K,UAAYgC,GAAgB,EAAImJ,MAErCC,EADAC,EAAIJ,GAAeF,EAAU/I,GAAgBlU,EAAEhI,MAAMqlB,GAAKrd,MAGtD,OAANud,IACCD,EAAI9jB,GAAIK,GAASojB,EAAS/K,WAAagC,GAAgBmJ,EAAI,IAAKrd,EAAErO,WAAayrB,EAEhFC,EAAInG,GAAmBlX,EAAGqd,EAAGH,OACxB,IACLnG,EAAExmB,KAAKyP,EAAEhI,MAAMolB,EAAGC,IACdtG,EAAEplB,SAAWirB,EAAK,OAAO7F,MACxB,IAAIvc,EAAI,EAAGA,GAAK+iB,EAAE5rB,OAAS,EAAG6I,OACjCuc,EAAExmB,KAAKgtB,EAAE/iB,IACLuc,EAAEplB,SAAWirB,EAAK,OAAO7F,EAE/BsG,EAAID,EAAIE,UAGZvG,EAAExmB,KAAKyP,EAAEhI,MAAMolB,IACRrG,QA3H4B1kB,GAAM,eAEzC4f,EAAK,OACLuL,EAAevL,EAAG9f,KACtB8f,EAAG9f,KAAO,kBAAqBqrB,EAAajgB,MAAM9N,KAAMiC,gBACpD4C,EAAS,KAAKrC,MAAMggB,UACC,IAAlB3d,EAAO3C,QAA8B,MAAd2C,EAAO,IAA4B,MAAdA,EAAO,MAwHrB4f,WCpJL,oBAAX1kB,OAAyBA,OACpB,oBAATD,KAAuBA,KACZ,oBAAXD,OAAyBA,OAAS,GCCrD,SAASmuB,WACC,IAAIpT,MAAM,mCAEpB,SAASqT,WACC,IAAIrT,MAAM,qCAEpB,IAAIsT,GAAmBF,GACnBG,GAAqBF,GAQzB,SAASG,GAAWC,MACZH,KAAqBxb,kBAEdA,WAAW2b,EAAK,OAGtBH,KAAqBF,KAAqBE,KAAqBxb,kBAChEwb,GAAmBxb,WACZA,WAAW2b,EAAK,cAIhBH,GAAiBG,EAAK,GAC/B,MAAMR,cAGOK,GAAiB5sB,KAAK,KAAM+sB,EAAK,GAC1C,MAAMR,UAEGK,GAAiB5sB,KAAKtB,KAAMquB,EAAK,KA1BnB,mBAAtBtuB,GAAO2S,aACdwb,GAAmBxb,YAEY,mBAAxB3S,GAAOuuB,eACdH,GAAqBG,cAuDzB,IAEIC,GAFArd,GAAQ,GACRsd,IAAW,EAEXC,IAAc,EAElB,SAASC,KACAF,IAAaD,KAGlBC,IAAW,EACPD,GAAarsB,OACbgP,GAAQqd,GAAatjB,OAAOiG,IAE5Bud,IAAc,EAEdvd,GAAMhP,QACNysB,MAIR,SAASA,SACDH,QAGAI,EAAUR,GAAWM,IACzBF,IAAW,UAEP9D,EAAMxZ,GAAMhP,OACVwoB,GAAK,KACP6D,GAAerd,GACfA,GAAQ,KACCud,GAAa/D,GACd6D,IACAA,GAAaE,IAAYrd,MAGjCqd,IAAc,EACd/D,EAAMxZ,GAAMhP,OAEhBqsB,GAAe,KACfC,IAAW,EAnEf,SAAyBK,MACjBV,KAAuBG,oBAEhBA,aAAaO,OAGnBV,KAAuBF,KAAwBE,KAAuBG,oBACvEH,GAAqBG,aACdA,aAAaO,OAIbV,GAAmBU,GAC5B,MAAOhB,cAGMM,GAAmB7sB,KAAK,KAAMutB,GACvC,MAAOhB,UAGEM,GAAmB7sB,KAAKtB,KAAM6uB,KAgD7CC,CAAgBF,IAepB,SAASG,GAAKV,EAAKtN,QACVsN,IAAMA,OACNtN,MAAQA,EAEjBgO,GAAKvnB,UAAU4J,IAAM,gBACZid,IAAIvgB,MAAM,KAAM9N,KAAK+gB,QAY9B,SAASiO,MAEF,IAAIC,GAAKD,GACLE,GAAcF,GACdG,GAAOH,GACPI,GAAMJ,GACNK,GAAiBL,GACjBM,GAAqBN,GACrBtX,GAAOsX,GAalB,IAAIO,GAAcxvB,GAAOwvB,aAAe,GACpCC,GACFD,GAAYvd,KACZud,GAAYE,QACZF,GAAYG,OACZH,GAAYI,MACZJ,GAAYK,WACZ,kBAAoB,IAAIC,MAAQC,WAmBlC,IAAIC,GAAY,IAAIF,KCvLpB,WD8Le,CACb9d,SArFK,SAAkBsc,OACjBzc,EAAO,IAAI5E,MAAM/K,UAAUC,OAAS,MACpCD,UAAUC,OAAS,MACd,IAAI6I,EAAI,EAAGA,EAAI9I,UAAUC,OAAQ6I,IAClC6G,EAAK7G,EAAI,GAAK9I,UAAU8I,GAGhCmG,GAAMpQ,KAAK,IAAIiuB,GAAKV,EAAKzc,IACJ,IAAjBV,GAAMhP,QAAiBssB,IACvBJ,GAAWO,KA6EjBqB,MAlEiB,UAmEjBC,SAjEmB,EAkEnBC,IAjEe,GAkEfC,KAjEgB,GAkEhB3wB,QAjEmB,GAkEnB8C,SAjEoB,GAkEpB2sB,GAAIA,GACJC,YAAaA,GACbC,KAAMA,GACNC,IAAKA,GACLC,eAAgBA,GAChBC,mBAAoBA,GACpB5X,KAAMA,GACN0Y,QA3DK,SAAiB3sB,SACd,IAAImX,MAAM,qCA2DlByV,IAxDK,iBAAyB,KAyD9BC,MAxDK,SAAgBC,SACb,IAAI3V,MAAM,mCAwDlB4V,MAtDK,kBAA0B,GAuD/BC,OAzCK,SAAgBC,OACjBC,EAA6C,KAAjCnB,GAAeluB,KAAKiuB,IAChCqB,EAAUjxB,KAAKiK,MAAM+mB,GACrBE,EAAclxB,KAAKiK,MAAO+mB,EAAU,EAAG,YACvCD,IACFE,GAAoBF,EAAkB,IACtCG,GAA4BH,EAAkB,IAC9B,IACdE,IACAC,GAAe,MAGZ,CAACD,EAAQC,IA8BhBC,SAnFoB,UAoFpBC,QA9EmB,GA+EnBC,OA9EkB,GA+ElBC,OA7BK,kBACa,IAAIpB,KACEE,IACX,qQE9LbmB,qNDHEC,GAAyB,oBAAXtxB,OAAyBE,EAASF,OAChDuxB,GAAU,CAAC,MAAO,UAClBC,GAAS,iBACTC,GAAMH,GAAK,UAAYE,IACvBE,GAAMJ,GAAK,SAAWE,KAAWF,GAAK,gBAAkBE,IAEpDtmB,GAAI,GAAIumB,IAAOvmB,GAAIqmB,GAAQlvB,OAAQ6I,KACzCumB,GAAMH,GAAKC,GAAQrmB,IAAK,UAAYsmB,IACpCE,GAAMJ,GAAKC,GAAQrmB,IAAK,SAAWsmB,KAC5BF,GAAKC,GAAQrmB,IAAK,gBAAkBsmB,IAI7C,IAAIC,KAAQC,GAAK,KACX1e,GAAO,EACPrR,GAAK,EACL0P,GAAQ,GAGZogB,GAAM,SAASE,MACO,IAAjBtgB,GAAMhP,OAAc,KACjBuvB,EAAOzf,KACPtD,EAAO/O,KAAKmK,IAAI,EALJ,oBAKwB2nB,EAAO5e,KAC/CA,GAAOnE,EAAO+iB,EACd/e,YAAW,eACLgf,EAAKxgB,GAAM3I,MAAM,GAIrB2I,GAAMhP,OAAS,MACX,IAAI6I,EAAI,EAAGA,EAAI2mB,EAAGxvB,OAAQ6I,QACxB2mB,EAAG3mB,GAAG4mB,cAEND,EAAG3mB,GAAGymB,SAAS3e,IACf,MAAMgb,GACNnb,YAAW,iBAAmBmb,IAAK,MAIxCluB,KAAKiyB,MAAMljB,WAEhBwC,GAAMpQ,KAAK,CACT4d,SAAUld,GACVgwB,SAAUA,EACVG,WAAW,IAENnwB,IAGT+vB,GAAM,SAAS7S,OACT,IAAI3T,EAAI,EAAGA,EAAImG,GAAMhP,OAAQ6I,IAC5BmG,GAAMnG,GAAG2T,SAAWA,IACrBxN,GAAMnG,GAAG4mB,WAAY,IAM7B,OAAiB,SAAS3sB,UAIjBssB,GAAIhwB,KAAK6vB,GAAMnsB,cAEA,WACtBusB,GAAIzjB,MAAMqjB,GAAMlvB,wBAEQ,SAAS4D,GAC5BA,IACHA,EAASsrB,IAEXtrB,EAAOgsB,sBAAwBP,GAC/BzrB,EAAOisB,qBAAuBP,IExEhC,IAAIQ,GAAuBjqB,GAAsChE,OAC7DzD,GAAiBgT,EAA+CtN,EAEhEwB,GAAoBtH,SAASuH,UAC7BwqB,GAA4BzqB,GAAkB3F,SAC9CqwB,GAAS,wBAKThuB,IAAgB8tB,IAClB1xB,GAAekH,GALN,OAK+B,CACtCjH,cAAc,EACdsD,IAAK,sBAEMouB,GAA0B1wB,KAAKtB,MAAMT,MAAM0yB,IAAQ,GAC1D,MAAOzxB,SACA,OClBf,IAQ2BsgB,GARvBoR,GAAuBpqB,GAAsCH,OCE7DwqB,GAAQrqB,GAAoC8Z,QAK9C,CAAEtW,OAAQ,SAAU2B,OAAO,EAAMR,QDCRqU,GCDuC,ODEzDle,GAAM,mBACF0e,GAAYR,OANf,QAAA,MAOGA,OACHoR,IAAwB5Q,GAAYR,IAAard,OAASqd,QCLS,CAC3Ec,KAAM,kBACGuQ,GAAMnyB,SCJjB,OAAiB,SAASoyB,QACjBxb,IAAK,OACLyb,MAAQ,EAGiB,KAA1BD,EAAa9T,OAAO,KACpB8T,EAAeA,EAAaE,OAAO,EAAE,IAIzCF,GADAA,EAAeA,EAAa5pB,QAAQ,KAAK,KACb0D,kBAIxBqmB,EAAgB,CAChBC,UAAW,SACXC,aAAc,SACdC,KAAM,SACNC,WAAY,SACZC,MAAO,SACPC,MAAO,SACPC,OAAQ,SACRC,MAAO,SACPC,eAAgB,SAChBC,KAAM,SACNC,WAAY,SACZC,MAAO,SACPC,UAAW,SACXC,UAAW,SACXC,WAAY,SACZC,UAAW,SACXC,MAAO,SACPC,eAAgB,SAChBC,SAAU,SACVC,QAAS,SACTC,KAAM,SACNC,SAAU,SACVC,SAAU,SACVC,cAAe,SACfC,SAAU,SACVC,UAAW,SACXC,UAAW,SACXC,YAAa,SACbC,eAAgB,SAChBC,WAAY,SACZC,WAAY,SACZC,QAAS,SACTC,WAAY,SACZC,aAAc,SACdC,cAAe,SACfC,cAAe,SACfC,cAAe,SACfC,WAAY,SACZC,SAAU,SACVC,YAAa,SACbC,QAAS,SACTC,WAAY,SACZC,SAAU,SACVC,UAAW,SACXC,YAAa,SACbC,YAAa,SACbC,QAAS,SACTC,UAAW,SACXC,WAAY,SACZC,KAAM,SACNC,UAAW,SACXC,KAAM,SACNC,MAAO,SACPC,YAAa,SACbC,SAAU,SACVC,QAAS,SACTC,UAAY,SACZC,OAAS,SACTC,MAAO,SACPC,MAAO,SACPC,SAAU,SACVC,cAAe,SACfC,UAAW,SACXC,aAAc,SACdC,UAAW,SACXC,WAAY,SACZC,UAAW,SACXC,qBAAsB,SACtBC,UAAW,SACXC,WAAY,SACZC,UAAW,SACXC,YAAa,SACbC,cAAe,SACfC,aAAc,SACdC,eAAgB,SAChBC,eAAgB,SAChBC,eAAgB,SAChBC,YAAa,SACbC,KAAM,SACNC,UAAW,SACXC,MAAO,SACPC,QAAS,SACTC,OAAQ,SACRC,iBAAkB,SAClBC,WAAY,SACZC,aAAc,SACdC,aAAc,SACdC,eAAgB,SAChBC,gBAAiB,SACjBC,kBAAmB,SACnBC,gBAAiB,SACjBC,gBAAiB,SACjBC,aAAc,SACdC,UAAW,SACXC,UAAW,SACXC,SAAU,SACVC,YAAa,SACbC,KAAM,SACNC,QAAS,SACTC,MAAO,SACPC,UAAW,SACXC,OAAQ,SACRC,UAAW,SACXC,OAAQ,SACRC,cAAe,SACfC,UAAW,SACXC,cAAe,SACfC,cAAe,SACfC,WAAY,SACZC,UAAW,SACXC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNC,WAAY,SACZC,OAAQ,SACRC,cAAe,SACfC,IAAK,SACLC,UAAW,SACXC,UAAW,SACXC,YAAa,SACbC,OAAQ,SACRC,WAAY,SACZC,SAAU,SACVC,SAAU,SACVC,OAAQ,SACRC,OAAQ,SACRC,QAAS,SACTC,UAAW,SACXC,UAAW,SACXC,KAAM,SACNC,YAAa,SACbC,UAAW,SACXC,IAAK,SACLC,KAAM,SACNC,QAAS,SACTC,OAAQ,SACRC,UAAW,SACXC,OAAQ,SACRC,UAAW,SACXC,MAAO,SACPC,MAAO,SACPC,WAAY,SACZC,OAAQ,SACRC,YAAa,UAEjBnJ,EAAeG,EAAcH,IAAiBA,UAI1CoJ,EAAa,CACb,CACIhZ,GAAI,kEACJiZ,QAAS,CAAC,0BAA2B,yBACrCr5B,QAAS,SAAUs5B,SACR,CACHC,SAASD,EAAK,IACdC,SAASD,EAAK,IACdC,SAASD,EAAK,IACd5Z,WAAW4Z,EAAK,OAI5B,CACIlZ,GAAI,+CACJiZ,QAAS,CAAC,oBAAqB,oBAC/Br5B,QAAS,SAAUs5B,SACR,CACHC,SAASD,EAAK,IACdC,SAASD,EAAK,IACdC,SAASD,EAAK,OAI1B,CACIlZ,GAAI,qDACJiZ,QAAS,CAAC,UAAW,UACrBr5B,QAAS,SAAUs5B,SACR,CACHC,SAASD,EAAK,GAAI,IAClBC,SAASD,EAAK,GAAI,IAClBC,SAASD,EAAK,GAAI,OAI9B,CACIlZ,GAAI,qDACJiZ,QAAS,CAAC,OAAQ,OAClBr5B,QAAS,SAAUs5B,SACR,CACHC,SAASD,EAAK,GAAKA,EAAK,GAAI,IAC5BC,SAASD,EAAK,GAAKA,EAAK,GAAI,IAC5BC,SAASD,EAAK,GAAKA,EAAK,GAAI,QAOnC3wB,EAAI,EAAGA,EAAIywB,EAAWt5B,OAAQ6I,IAAK,KACpCyX,EAAKgZ,EAAWzwB,GAAGyX,GACnBoZ,EAAYJ,EAAWzwB,GAAG3I,QAC1Bs5B,EAAOlZ,EAAG9f,KAAK0vB,MACfsJ,EAAM,KACFG,EAAWD,EAAUF,QACpBljB,EAAIqjB,EAAS,QACbC,EAAID,EAAS,QACbjuB,EAAIiuB,EAAS,GACdA,EAAS35B,OAAS,SACbmwB,MAAQwJ,EAAS,SAErBjlB,IAAK,QAMb4B,EAAKxY,KAAKwY,EAAI,GAAKiF,MAAMzd,KAAKwY,GAAM,EAAMxY,KAAKwY,EAAI,IAAO,IAAMxY,KAAKwY,OACrEsjB,EAAK97B,KAAK87B,EAAI,GAAKre,MAAMzd,KAAK87B,GAAM,EAAM97B,KAAK87B,EAAI,IAAO,IAAM97B,KAAK87B,OACrEluB,EAAK5N,KAAK4N,EAAI,GAAK6P,MAAMzd,KAAK4N,GAAM,EAAM5N,KAAK4N,EAAI,IAAO,IAAM5N,KAAK4N,OACrEykB,MAASryB,KAAKqyB,MAAQ,EAAK,EAAMryB,KAAKqyB,MAAQ,GAAO5U,MAAMzd,KAAKqyB,OAAU,EAAMryB,KAAKqyB,WAGrF0J,MAAQ,iBACF,OAAS/7B,KAAKwY,EAAI,KAAOxY,KAAK87B,EAAI,KAAO97B,KAAK4N,EAAI,UAExDouB,OAAS,iBACH,QAAUh8B,KAAKwY,EAAI,KAAOxY,KAAK87B,EAAI,KAAO97B,KAAK4N,EAAI,KAAO5N,KAAKqyB,MAAQ,UAE7E4J,MAAQ,eACLzjB,EAAIxY,KAAKwY,EAAE5W,SAAS,IACpBk6B,EAAI97B,KAAK87B,EAAEl6B,SAAS,IACpBgM,EAAI5N,KAAK4N,EAAEhM,SAAS,WACR,GAAZ4W,EAAEtW,SAAasW,EAAI,IAAMA,GACb,GAAZsjB,EAAE55B,SAAa45B,EAAI,IAAMA,GACb,GAAZluB,EAAE1L,SAAa0L,EAAI,IAAMA,GACtB,IAAM4K,EAAIsjB,EAAIluB,QAIpBsuB,WAAa,mBAEVC,EAAW,IAAInvB,MAEVjC,EAAI,EAAGA,EAAIywB,EAAWt5B,OAAQ6I,YAC/B0wB,EAAUD,EAAWzwB,GAAG0wB,QACnBzS,EAAI,EAAGA,EAAIyS,EAAQv5B,OAAQ8mB,IAChCmT,EAASA,EAASj6B,QAAUu5B,EAAQzS,OAIvC,IAAIoT,KAAM7J,EACX4J,EAASA,EAASj6B,QAAUk6B,MAG5BC,EAAMx4B,SAASG,cAAc,MACjCq4B,EAAIC,aAAa,KAAM,yBACdvxB,EAAI,EAAGA,EAAIoxB,EAASj6B,OAAQ6I,YAEzBwxB,EAAY14B,SAASG,cAAc,MACnCw4B,EAAa,IAAIC,SAASN,EAASpxB,IACnC2xB,EAAc74B,SAASG,cAAc,OACzC04B,EAAY9Y,MAAM+Y,QACV,oDAEkBH,EAAWP,QAF7B,WAGaO,EAAWP,QAEhCS,EAAYlqB,YAAY3O,SAASoQ,eAAe,aAC5C2oB,EAAkB/4B,SAASoQ,eAC3B,IAAMkoB,EAASpxB,GAAK,OAASyxB,EAAWT,QAAU,OAASS,EAAWP,SAE1EM,EAAU/pB,YAAYkqB,GACtBH,EAAU/pB,YAAYoqB,GACtBP,EAAI7pB,YAAY+pB,GAElB,MAAM1O,WAELwO,0uKCxSXQ,GAAW/0B,GAAwCqU,WAGnC8N,GAAoB,WAOpC,GAAG9N,QAH2B,SAAiBgE,UAC1C0c,GAAS78B,KAAMmgB,EAAYle,UAAUC,OAAS,EAAID,UAAU,QAAKpB,OCFxE,CAAEyK,OAAQ,QAAS2B,OAAO,EAAMR,OAAQ,GAAG0P,SAAWA,IAAW,CACjEA,QAASA,KCNX,OAAiB,CACf2gB,YAAa,EACbC,oBAAqB,EACrBC,aAAc,EACdC,eAAgB,EAChBC,YAAa,EACbC,cAAe,EACfC,aAAc,EACdC,qBAAsB,EACtBC,SAAU,EACVC,kBAAmB,EACnBC,eAAgB,EAChBC,gBAAiB,EACjBC,kBAAmB,EACnBC,UAAW,EACXC,cAAe,EACfC,aAAc,EACdC,SAAU,EACVC,iBAAkB,EAClBC,OAAQ,EACRC,YAAa,EACbC,cAAe,EACfC,cAAe,EACfC,eAAgB,EAChBC,aAAc,EACdC,cAAe,EACfC,iBAAkB,EAClBC,iBAAkB,EAClBC,eAAgB,EAChBC,iBAAkB,EAClBC,cAAe,EACfC,UAAW,GC9BTC,GAAYlb,EAAsB,QAAQkb,UAC1CC,GAAwBD,IAAaA,GAAUpuB,aAAeouB,GAAUpuB,YAAYjJ,aAEvEs3B,KAA0B1+B,OAAOoH,eAAY3G,EAAYi+B,GCAtEC,GAAkB,SAAUC,MAE1BA,GAAuBA,EAAoB7iB,UAAYA,GAAS,IAClEjV,GAA4B83B,EAAqB,UAAW7iB,IAC5D,MAAO3b,GACPw+B,EAAoB7iB,QAAUA,KAIlC,IAAK,IAAI8iB,MAAmBC,GACtBA,GAAaD,KACfF,GAAgBh/B,EAAOk/B,KAAoBl/B,EAAOk/B,IAAiBz3B,cAIvDs3B,05QCrBPK,EAAgBvU,EAAG+C,UAC1BhtB,UAAiBw+B,EAAkB/+B,OAAOyM,gBAAkB,SAAyB+d,EAAG+C,UACtF/C,EAAEzd,UAAYwgB,EACP/C,GAGTjqB,EAAO2Y,QAAP,QAA4B3Y,EAAO2Y,QAAS3Y,sBAA4B,EACjEw+B,EAAgBvU,EAAG+C,GAG5BhtB,UAAiBw+B,EACjBx+B,EAAO2Y,QAAP,QAA4B3Y,EAAO2Y,QAAS3Y,sBAA4B,yBCMxEA,mBAfmBy+B,EAAUC,MACD,mBAAfA,GAA4C,OAAfA,QAChC,IAAIp+B,UAAU,sDAGtBm+B,EAAS53B,UAAYpH,OAAOia,OAAOglB,GAAcA,EAAW73B,UAAW,CACrEiJ,YAAa,CACXtQ,MAAOi/B,EACP7+B,UAAU,EACVD,cAAc,KAGd++B,GAAYxyB,GAAeuyB,EAAUC,IAI3C1+B,EAAO2Y,QAAP,QAA4B3Y,EAAO2Y,QAAS3Y,sBAA4B,iCClB/D2+B,EAAQn1B,SAGO,mBAAXrH,QAAoD,iBAApBA,OAAOI,UAChDvC,UAAiB2+B,EAAU,SAAiBn1B,iBAC5BA,GAGhBxJ,EAAO2Y,QAAP,QAA4B3Y,EAAO2Y,QAAS3Y,sBAA4B,IAExEA,UAAiB2+B,EAAU,SAAiBn1B,UACnCA,GAAyB,mBAAXrH,QAAyBqH,EAAIsG,cAAgB3N,QAAUqH,IAAQrH,OAAO0E,UAAY,gBAAkB2C,GAG3HxJ,EAAO2Y,QAAP,QAA4B3Y,EAAO2Y,QAAS3Y,sBAA4B,GAGnE2+B,EAAQn1B,GAGjBxJ,UAAiB2+B,EACjB3+B,EAAO2Y,QAAP,QAA4B3Y,EAAO2Y,QAAS3Y,sBAA4B,uBCbxEA,mBARgCb,WACjB,IAATA,QACI,IAAIy/B,eAAe,oEAGpBz/B,GAITa,EAAO2Y,QAAP,QAA4B3Y,EAAO2Y,QAAS3Y,sBAA4B,sCCTpE2+B,EAAUx3B,GAAwC,QActDnH,mBAVoCb,EAAMwB,MACpCA,IAA2B,WAAlBg+B,EAAQh+B,IAAsC,mBAATA,UACzCA,EACF,QAAa,IAATA,QACH,IAAIL,UAAU,mEAGfu+B,GAAsB1/B,IAI/Ba,EAAO2Y,QAAP,QAA4B3Y,EAAO2Y,QAAS3Y,sBAA4B,iCCf/D8+B,EAAgB7U,UACvBjqB,UAAiB8+B,EAAkBr/B,OAAOyM,eAAiBzM,OAAO2b,eAAiB,SAAyB6O,UACnGA,EAAEzd,WAAa/M,OAAO2b,eAAe6O,IAE9CjqB,EAAO2Y,QAAP,QAA4B3Y,EAAO2Y,QAAS3Y,sBAA4B,EACjE8+B,EAAgB7U,GAGzBjqB,UAAiB8+B,EACjB9+B,EAAO2Y,QAAP,QAA4B3Y,EAAO2Y,QAAS3Y,sBAA4B,iBCLvD,SAAUuC,EAAU8B,EAAI7E,EAAOu/B,cAErCA,EAAU16B,EAAGQ,EAASrF,GAAO,GAAIA,EAAM,IAAM6E,EAAG7E,GACvD,MAAOK,GACP0O,GAAchM,EAAU,QAAS1C,KCJjC2V,IAAuBC,IAA4B,SAAU7H,GAE/DvB,MAAM0C,KAAKnB,SAKX,CAAEjD,OAAQ,QAASkB,MAAM,EAAMC,OAAQ0J,IAAuB,CAC9DzG,KCCe,SAAciwB,OACzBr6B,EAAI/D,EAASo+B,GACbC,EAAiBlvB,GAAc1Q,MAC/B6R,EAAkB5P,UAAUC,OAC5B29B,EAAQhuB,EAAkB,EAAI5P,UAAU,QAAKpB,EAC7Ci/B,OAAoBj/B,IAAVg/B,EACVC,IAASD,EAAQ9wB,GAAK8wB,EAAOhuB,EAAkB,EAAI5P,UAAU,QAAKpB,EAAW,QAG7EqB,EAAQ2C,EAAQ8J,EAAMzL,EAAUwL,EAAMvO,EAFtC6N,EAAiBC,GAAkB3I,GACnC0E,EAAQ,MAGRgE,GAAoBhO,MAAQgN,OAASoC,GAAsBpB,OAS7D9L,EAASwI,GAAkBpF,GAC3BT,EAAS+6B,EAAiB,IAAI5/B,KAAKkC,GAAU8K,MAAM9K,GAC7CA,EAAS8H,EAAOA,IACpB7J,EAAQ2/B,EAAUD,EAAMv6B,EAAE0E,GAAQA,GAAS1E,EAAE0E,GAC7CiiB,GAAepnB,EAAQmF,EAAO7J,YAXhCuO,GADAxL,EAAWmM,GAAY/J,EAAG0I,IACVU,KAChB7J,EAAS+6B,EAAiB,IAAI5/B,KAAS,KAC/B2O,EAAOD,EAAKpN,KAAK4B,IAAWoM,KAAMtF,IACxC7J,EAAQ2/B,EAAUC,GAA6B78B,EAAU28B,EAAO,CAAClxB,EAAKxO,MAAO6J,IAAQ,GAAQ2E,EAAKxO,MAClG8rB,GAAepnB,EAAQmF,EAAO7J,UAUlC0E,EAAO3C,OAAS8H,EACTnF,KCrCT,IAAIm7B,GAAcr8B,EAAgB,eAC9B8J,GAAiBT,MAAMxF,UAIQ3G,MAA/B4M,GAAeuyB,KACjBl6B,EAAqBC,EAAE0H,GAAgBuyB,GAAa,CAClD1/B,cAAc,EACdH,MAAOka,GAAO,QAKlB,OAAiB,SAAUna,GACzBuN,GAAeuyB,IAAa9/B,IAAO,GChBjC+/B,GAAYn4B,GAAuC8C,YAKrD,CAAEU,OAAQ,QAAS2B,OAAO,GAAQ,CAClCrC,SAAU,SAAkBJ,UACnBy1B,GAAUjgC,KAAMwK,EAAIvI,UAAUC,OAAS,EAAID,UAAU,QAAKpB,MAKrEq/B,GAAiB,YCXjB,IAAIC,GAAWr4B,GAAuC+C,QAGlDu1B,GAAgB,GAAGv1B,QAEnBw1B,KAAkBD,IAAiB,EAAI,CAAC,GAAGv1B,QAAQ,GAAI,GAAK,EAC5Dmf,GAAgBC,GAAoB,cAItC,CAAE3e,OAAQ,QAAS2B,OAAO,EAAMR,OAAQ4zB,KAAkBrW,IAAiB,CAC3Enf,QAAS,SAAiBy1B,UACjBD,GAEHD,GAActyB,MAAM9N,KAAMiC,YAAc,EACxCk+B,GAASngC,KAAMsgC,EAAer+B,UAAUC,OAAS,EAAID,UAAU,QAAKpB,MChB5E,IAAI0/B,GAAQz4B,GAAwC2Y,KAGhDuJ,GAAgBC,GAAoB,WAItC,CAAE3e,OAAQ,QAAS2B,OAAO,EAAMR,QAASud,IAAiB,CAC1DvJ,KAAM,SAAcN,UACXogB,GAAMvgC,KAAMmgB,EAAYle,UAAUC,OAAS,EAAID,UAAU,QAAKpB,SCFvE,CAAEyK,OAAQ,SAAU2B,OAAO,EAAMR,QAASgd,GAAqB,aAAe,CAC9E7e,SAAU,SAAkB+e,YAChB/nB,GAAST,EAAuBnB,OACvC6K,QAAQjJ,GAASgoB,GAAWD,IAAgB1nB,UAAUC,OAAS,EAAID,UAAU,QAAKpB,MCVzF,ICYIgb,GAAmB2kB,GAAmCC,ODZxC79B,GAAM,oBACbohB,YACTA,EAAExc,UAAUiJ,YAAc,KAEnBrQ,OAAO2b,eAAe,IAAIiI,KAASA,EAAExc,aEA1Cqb,GAAW7b,GAAU,YACrB05B,GAAkBtgC,OAAOoH,aAKZm5B,GAA2BvgC,OAAO2b,eAAiB,SAAUzW,OACxEO,EAAStE,EAAS+D,MAClBjE,EAAOwE,EAAQgd,IAAW,OAAOhd,EAAOgd,QACxCpS,EAAc5K,EAAO4K,mBACrB3O,EAAW2O,IAAgB5K,aAAkB4K,EACxCA,EAAYjJ,UACZ3B,aAAkBzF,OAASsgC,GAAkB,MDTpDlzB,GAAW7J,EAAgB,YAC3Bi9B,IAAyB,EAOzB,GAAGt6B,OAGC,SAFNm6B,GAAgB,GAAGn6B,SAIjBk6B,GAAoCzkB,GAAeA,GAAe0kB,QACxBrgC,OAAOoH,YAAWqU,GAAoB2kB,IAHlDI,IAAyB,IAOT//B,MAArBgb,IAAkCjZ,GAAM,eAC/Dc,EAAO,UAEJmY,GAAkBrO,IAAUlM,KAAKoC,KAAUA,QAGxBmY,GAAoB,IAK3C/Z,EAAW+Z,GAAkBrO,MAChCrE,GAAS0S,GAAmBrO,IAAU,kBAC7BxN,QAIX,OAAiB,CACf6b,kBAAmBA,GACnB+kB,uBAAwBA,IE7CtB/kB,GAAoB/T,GAAuC+T,kBAM3DglB,GAAa,kBAAqB7gC,MCQlCkyB,GAAuB4O,GAAan5B,OACpCE,GAA6Bi5B,GAAal5B,aAC1CiU,GAAoBklB,GAAcllB,kBAClC+kB,GAAyBG,GAAcH,uBACvCpzB,GAAW7J,EAAgB,YAC3Bq9B,GAAO,OACPC,GAAS,SACTvB,GAAU,UAEVmB,GAAa,kBAAqB7gC,SAErB,SAAUkhC,EAAUC,EAAMC,EAAqB1yB,EAAM2yB,EAASC,EAAQxrB,IDjBtE,SAAUsrB,EAAqBD,EAAMzyB,OAChD/F,EAAgBw4B,EAAO,YAC3BC,EAAoB55B,UAAY6S,GAAOwB,GAAmB,CAAEnN,KAAM1I,EAAyB,EAAG0I,KAC9F4J,GAAe8oB,EAAqBz4B,GAAe,GACnD+E,GAAU/E,GAAiBk4B,GCc3BU,CAA0BH,EAAqBD,EAAMzyB,OAoBjD8yB,EAA0B1b,EAASP,EAlBnCkc,EAAqB,SAAUC,MAC7BA,IAASL,GAAWM,EAAiB,OAAOA,MAC3Cf,IAA0Bc,KAAQE,EAAmB,OAAOA,EAAkBF,UAC3EA,QACDV,QACAC,QACAvB,UAAgB,kBAA4B,IAAI0B,EAAoBphC,KAAM0hC,WACxE,kBAAqB,IAAIN,EAAoBphC,QAGpD2I,EAAgBw4B,EAAO,YACvBU,GAAwB,EACxBD,EAAoBV,EAAS15B,UAC7Bs6B,EAAiBF,EAAkBp0B,KAClCo0B,EAAkB,eAClBP,GAAWO,EAAkBP,GAC9BM,GAAmBf,IAA0BkB,GAAkBL,EAAmBJ,GAClFU,EAA4B,SAARZ,GAAkBS,EAAkBI,SAA4BF,KAIpFC,IACFP,EAA2BzlB,GAAegmB,EAAkBzgC,KAAK,IAAI4/B,OACpC9gC,OAAOoH,WAAag6B,EAAyB9yB,OAC5DqN,GAAeylB,KAA8B3lB,KACvDhP,GACFA,GAAe20B,EAA0B3lB,IAC/B/Z,EAAW0/B,EAAyBh0B,MAC9CrE,GAASq4B,EAA0Bh0B,GAAUqzB,KAIjDvoB,GAAekpB,EAA0B74B,GAAe,IAMxDupB,IAAwBmP,GAAWJ,IAAUa,GAAkBA,EAAer+B,OAASw9B,KACzEp5B,GACdX,GAA4B06B,EAAmB,OAAQX,KAEvDY,GAAwB,EACxBF,EAAkB,kBAA2BG,EAAexgC,KAAKtB,SAKjEqhC,KACFvb,EAAU,CACRhN,OAAQ2oB,EAAmBR,IAC3B36B,KAAMg7B,EAASK,EAAkBF,EAAmBT,IACpDgB,QAASP,EAAmB/B,KAE1B5pB,EAAQ,IAAKyP,KAAOO,GAClB8a,IAA0BiB,KAA2Btc,KAAOqc,KAC9Dz4B,GAASy4B,EAAmBrc,EAAKO,EAAQP,SAEtC0c,GAAE,CAAE32B,OAAQ61B,EAAMl0B,OAAO,EAAMR,OAAQm0B,IAA0BiB,GAAyB/b,UAIvE8b,EAAkBp0B,MAAcm0B,GAC1Dx4B,GAASy4B,EAAmBp0B,GAAUm0B,EAAiB,CAAEl+B,KAAM49B,IAEjE3zB,GAAUyzB,GAAQQ,EAEX7b,GC/FLxH,GAASxW,GAAyCwW,OAKlD4jB,GAAkB,kBAClBptB,GAAmB9M,GAAoB7B,IACvC4B,GAAmBC,GAAoBZ,UAAU86B,IAIrDC,GAAexgC,OAAQ,UAAU,SAAUygC,GACzCttB,GAAiB9U,KAAM,CACrBsH,KAAM46B,GACNj2B,OAAQrK,GAASwgC,GACjBp4B,MAAO,OAIR,eAIGq4B,EAHA57B,EAAQsB,GAAiB/H,MACzBiM,EAASxF,EAAMwF,OACfjC,EAAQvD,EAAMuD,aAEdA,GAASiC,EAAO/J,OAAe,CAAE/B,WAAOU,EAAWyO,MAAM,IAC7D+yB,EAAQ/jB,GAAOrS,EAAQjC,GACvBvD,EAAMuD,OAASq4B,EAAMngC,OACd,CAAE/B,MAAOkiC,EAAO/yB,MAAM,6BCtB/B3O,mBAJ4BwpB,MACtBnd,MAAM0S,QAAQyK,GAAM,OAAOW,GAAiBX,IAIlDxpB,EAAO2Y,QAAP,QAA4B3Y,EAAO2Y,QAAS3Y,sBAA4B,uBCHxEA,mBAJ0Bsd,MACF,oBAAXnb,QAAmD,MAAzBmb,EAAKnb,OAAOI,WAA2C,MAAtB+a,EAAK,cAAuB,OAAOjR,MAAM0C,KAAKuO,IAItHtd,EAAO2Y,QAAP,QAA4B3Y,EAAO2Y,QAAS3Y,sBAA4B,uBCDxEA,2BAHQ,IAAIM,UAAU,yIAItBN,EAAO2Y,QAAP,QAA4B3Y,EAAO2Y,QAAS3Y,sBAA4B,yBCOxEA,mBAJ4BwpB,UACnBmY,GAAkBnY,IAAQoY,GAAgBpY,IAAQc,GAA2Bd,IAAQqY,MAI9F7hC,EAAO2Y,QAAP,QAA4B3Y,EAAO2Y,QAAS3Y,sBAA4B,ghUCTpE8hC,GAAgB,GAAGvkB,QACnBxa,GAAO,CAAC,EAAG,MAMb,CAAE4H,OAAQ,QAAS2B,OAAO,EAAMR,OAAQ9K,OAAO+B,MAAU/B,OAAO+B,GAAKwa,YAAc,CACnFA,QAAS,kBAEHwB,GAAQ1f,QAAOA,KAAKkC,OAASlC,KAAKkC,QAC/BugC,GAAcnhC,KAAKtB,SCV9B,OAAiB,SAAUuK,EAAOm4B,EAAOC,OACnCC,EAAWC,SAGbh2B,IAEA/K,EAAW8gC,EAAYF,EAAMjyB,cAC7BmyB,IAAcD,GACd5+B,EAAS8+B,EAAqBD,EAAUp7B,YACxCq7B,IAAuBF,EAAQn7B,WAC/BqF,GAAetC,EAAOs4B,GACjBt4B,GChBLrF,GAAU,GAAIA,WAID,SAAU/E,UAClB+E,GAAQ5D,KAAKnB,ICKlB+K,GAAsBpD,GAAsD/B,EAC5E2B,GAA2B2L,GAA2DtN,EACtF1F,GAAiByiC,EAA+C/8B,EAEhE6b,GAAOmhB,GAAoCnhB,KAE3CohB,GAAS,SACTC,GAAeljC,EAAM,OACrBmjC,GAAkBD,GAAaz7B,UAI/B27B,GAAY,SAAUhjC,OACpBijC,EAAYh+B,EAAYjF,EAAO,gBACP,iBAAdijC,EAAyBA,EAAYC,GAASD,IAK1DC,GAAW,SAAUniC,OAEnBqlB,EAAO+c,EAAOC,EAAOC,EAASC,EAAQvhC,EAAQ8H,EAAO05B,EADrDhkC,EAAK0F,EAAYlE,EAAU,aAE3B0D,EAASlF,GAAK,MAAMuB,UAAU,gDACjB,iBAANvB,GAAkBA,EAAGwC,OAAS,KAGzB,MADdqkB,GADA7mB,EAAKkiB,GAAKliB,IACCinB,WAAW,KACQ,KAAVJ,MAEJ,MADd+c,EAAQ5jC,EAAGinB,WAAW,KACQ,MAAV2c,EAAe,OAAOK,SACrC,GAAc,KAAVpd,EAAc,QACf7mB,EAAGinB,WAAW,SACf,QAAS,GAAI4c,EAAQ,EAAGC,EAAU,cAClC,QAAS,IAAKD,EAAQ,EAAGC,EAAU,wBACvB9jC,MAGnBwC,GADAuhC,EAAS/jC,EAAG6I,MAAM,IACFrG,OACX8H,EAAQ,EAAGA,EAAQ9H,EAAQ8H,QAC9B05B,EAAOD,EAAO9c,WAAW3c,IAGd,IAAM05B,EAAOF,EAAS,OAAOG,WACjChI,SAAS8H,EAAQF,UAEpB7jC,GAKZ,GAAIgM,GAASs3B,IAASC,GAAa,UAAYA,GAAa,QAAUA,GAAa,SAAU,SAetE/iC,GAdjB0jC,GAAgB,SAAgBzjC,OAC9BonB,EAAItlB,UAAUC,OAAS,EAAI,EAAI+gC,GAAaE,GAAUhjC,IACtDuiC,EAAQ1iC,YAEL0iC,aAAiBkB,IAAiBhhC,GAAM,WAAcihC,GAAgBnB,MACzEoB,GAAkB1jC,OAAOmnB,GAAImb,EAAOkB,IAAiBrc,GAElDjhB,GAAOrC,EAAciH,GAAoB+3B,IAAgB,oLAOhEzgC,MAAM,KAAMwmB,GAAI,EAAQ1iB,GAAKpE,OAAS8mB,GAAGA,KACrC3nB,EAAO4hC,GAAc/iC,GAAMoG,GAAK0iB,OAAQ3nB,EAAOuiC,GAAe1jC,KAChEG,GAAeujC,GAAe1jC,GAAKwH,GAAyBu7B,GAAc/iC,KAG9E0jC,GAAcp8B,UAAY07B,GAC1BA,GAAgBzyB,YAAcmzB,GAC9Bz6B,GAASpJ,EAAQijC,GAAQY,0BCtE3BjjC,mBATwBkF,EAAQk+B,SACtB3jC,OAAOoH,UAAUpG,eAAeE,KAAKuE,EAAQk+B,IAEpC,QADfl+B,EAASkW,GAAelW,aAInBA,GAITlF,EAAO2Y,QAAP,QAA4B3Y,EAAO2Y,QAAS3Y,sBAA4B,kCCV/DqjC,EAAK14B,EAAQy4B,EAAUE,SACP,oBAAZC,SAA2BA,QAAQtgC,KAC5CjD,UAAiBqjC,EAAOE,QAAQtgC,IAChCjD,EAAO2Y,QAAP,QAA4B3Y,EAAO2Y,QAAS3Y,sBAA4B,IAExEA,UAAiBqjC,EAAO,SAAc14B,EAAQy4B,EAAUE,OAClDE,EAAOC,GAAc94B,EAAQy4B,MAC5BI,OACDE,EAAOjkC,OAAOsH,yBAAyBy8B,EAAMJ,UAE7CM,EAAKzgC,IACAygC,EAAKzgC,IAAItC,KAAK2iC,GAGhBI,EAAKlkC,QAGdQ,EAAO2Y,QAAP,QAA4B3Y,EAAO2Y,QAAS3Y,sBAA4B,GAGnEqjC,EAAK14B,EAAQy4B,EAAUE,GAAY34B,GAG5C3K,UAAiBqjC,EACjBrjC,EAAO2Y,QAAP,QAA4B3Y,EAAO2Y,QAAS3Y,sBAA4B,kgICpBtE,CAAE2K,OAAQ,QAAS2B,OAAO,GAAQ,CAClCq3B,KCAe,SAAcnkC,WACzBmF,EAAI/D,EAASvB,MACbkC,EAASwI,GAAkBpF,GAC3BuM,EAAkB5P,UAAUC,OAC5B8H,EAAQW,GAAgBkH,EAAkB,EAAI5P,UAAU,QAAKpB,EAAWqB,GACxEyf,EAAM9P,EAAkB,EAAI5P,UAAU,QAAKpB,EAC3C0jC,OAAiB1jC,IAAR8gB,EAAoBzf,EAASyI,GAAgBgX,EAAKzf,GACxDqiC,EAASv6B,GAAO1E,EAAE0E,KAAW7J,SAC7BmF,KDJT46B,GAAiB;;;;;;;;;;;;;;;AEKjB,IAAIsE,GAAgB,SAASC,EAAG72B,UAC5B42B,GAAgBpkC,OAAOyM,gBAClB,CAAEM,UAAW,cAAgBH,OAAS,SAAUy3B,EAAG72B,GAAK62B,EAAEt3B,UAAYS,IACvE,SAAU62B,EAAG72B,OAAU,IAAI+f,KAAK/f,EAAOxN,OAAOoH,UAAUpG,eAAeE,KAAKsM,EAAG+f,KAAI8W,EAAE9W,GAAK/f,EAAE+f,MAC3E8W,EAAG72B,IAGrB,SAAS82B,GAAUD,EAAG72B,MACR,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAI3M,UAAU,uBAAyBU,OAAOiM,GAAK,0CAEpD+2B,SAAYl0B,YAAcg0B,EADnCD,GAAcC,EAAG72B,GAEjB62B,EAAEj9B,UAAkB,OAANoG,EAAaxN,OAAOia,OAAOzM,IAAM+2B,EAAGn9B,UAAYoG,EAAEpG,UAAW,IAAIm9B,s6fAAAA,+4HC3B/EzS,GAAuBpqB,GAAsCH,OAO7Di9B,GAAY,WACZtf,GAAkB9D,OAAOha,UACzBq9B,GAAiBvf,GAAe,SAEhCwf,GAAcliC,GAAM,iBAAyE,QAApDiiC,GAAevjC,KAAK,CAAEmH,OAAQ,IAAK0b,MAAO,SAEnF4gB,GAAiB7S,IAAwB2S,GAAephC,MAAQmhC,+aAIhEE,IAAeC,KACjB57B,GAASqY,OAAOha,UAAWo9B,IAAW,eAChC/d,EAAIrhB,EAASxF,MACb2tB,EAAIqX,GAAUne,EAAEpe,QAChBw8B,EAAKpe,EAAE1C,YAEJ,IAAMwJ,EAAI,IADTqX,QAAiBnkC,IAAPokC,GAAoBpe,aAAarF,UAAY,UAAW8D,IAAmBnB,GAAM7iB,KAAKulB,GAAKoe,KAE5G,CAAE78B,QAAQ,u/qCClBX88B,GAAiB,iBACjBpwB,GAAmB9M,GAAoB7B,IACvC4B,GAAmBC,GAAoBZ,UAAU89B,OAYpC/C,GAAen1B,MAAO,SAAS,SAAUo1B,EAAUl0B,GAClE4G,GAAiB9U,KAAM,CACrBsH,KAAM49B,GACN55B,OAAQ7B,GAAgB24B,GACxBp4B,MAAO,EACPkE,KAAMA,OAIP,eACGzH,EAAQsB,GAAiB/H,MACzBsL,EAAS7E,EAAM6E,OACf4C,EAAOzH,EAAMyH,KACblE,EAAQvD,EAAMuD,eACbsB,GAAUtB,GAASsB,EAAOpJ,QAC7BuE,EAAM6E,YAASzK,EACR,CAAEV,WAAOU,EAAWyO,MAAM,IAEvB,QAARpB,EAAuB,CAAE/N,MAAO6J,EAAOsF,MAAM,GACrC,UAARpB,EAAyB,CAAE/N,MAAOmL,EAAOtB,GAAQsF,MAAM,GACpD,CAAEnP,MAAO,CAAC6J,EAAOsB,EAAOtB,IAASsF,MAAM,KAC7C,aAKO61B,UAAYz3B,GAAUV,MAGhCkzB,GAAiB,QACjBA,GAAiB,UACjBA,GAAiB,WC7CjB,IAAI1yB,GAAW7J,EAAgB,YAC3BgF,GAAgBhF,EAAgB,eAChCyhC,GAAcC,GAAqBvsB,OAEnCimB,GAAkB,SAAUC,EAAqBC,MAC/CD,EAAqB,IAEnBA,EAAoBxxB,MAAc43B,GAAa,IACjDl+B,GAA4B83B,EAAqBxxB,GAAU43B,IAC3D,MAAO5kC,GACPw+B,EAAoBxxB,IAAY43B,MAE7BpG,EAAoBr2B,KACvBzB,GAA4B83B,EAAqBr2B,GAAes2B,GAE9DC,GAAaD,GAAkB,IAAK,IAAIne,KAAeukB,MAErDrG,EAAoBle,KAAiBukB,GAAqBvkB,GAAc,IAC1E5Z,GAA4B83B,EAAqBle,EAAaukB,GAAqBvkB,IACnF,MAAOtgB,GACPw+B,EAAoBle,GAAeukB,GAAqBvkB,MAMhE,IAAK,IAAIme,MAAmBC,GAC1BH,GAAgBh/B,EAAOk/B,KAAoBl/B,EAAOk/B,IAAiBz3B,UAAWy3B,+aAGhFF,GAAgBD,GAAuB,ovSCnCnCwG,GAAuBx9B,GAAsD/B,EAE7EnE,GAAW,GAAGA,SAEd2jC,GAA+B,iBAAV1lC,QAAsBA,QAAUO,OAAO8K,oBAC5D9K,OAAO8K,oBAAoBrL,QAAU,SAWtB,SAA6BH,UACvC6lC,IAAoC,mBAArB3jC,GAASN,KAAK5B,GAVjB,SAAUA,cAEpB4lC,GAAqB5lC,GAC5B,MAAOc,UACA+kC,GAAYh9B,SAOjBi9B,CAAe9lC,GACf4lC,GAAqB77B,GAAgB/J,UCnBzBkD,GAAM,kBAEfxC,OAAOqlC,aAAarlC,OAAOslC,kBAAkB,8BCAlDrlC,EAAiByH,EAA+C/B,EAMhE4/B,GAAW,EACXC,EAAWpiC,EAAI,QACfhC,EAAK,EAGLikC,EAAerlC,OAAOqlC,cAAgB,kBACjC,GAGLI,EAAc,SAAUnmC,GAC1BW,EAAeX,EAAIkmC,EAAU,CAAEzlC,MAAO,CACpC2lC,SAAU,IAAMtkC,IAChBukC,SAAU,OA8DVC,EAAOrlC,UAAiB,CAC1BslC,OA3BW,WACXD,EAAKC,OAAS,aACdN,GAAW,MACPz6B,EAAsBE,GAA0BrF,EAChDmgC,EAAS,GAAGA,OACZxiC,EAAO,GACXA,EAAKkiC,GAAY,EAGb16B,EAAoBxH,GAAMxB,SAC5BkJ,GAA0BrF,EAAI,SAAUrG,WAClCmF,EAASqG,EAAoBxL,GACxBqL,EAAI,EAAG7I,EAAS2C,EAAO3C,OAAQ6I,EAAI7I,EAAQ6I,OAC9ClG,EAAOkG,KAAO66B,EAAU,CAC1BM,EAAO5kC,KAAKuD,EAAQkG,EAAG,gBAGlBlG,GAGXo9B,GAAE,CAAE32B,OAAQ,SAAUkB,MAAM,EAAMC,QAAQ,GAAQ,CAChDvB,oBAAqBi7B,GAAkCpgC,MAO3DqgC,QA5DY,SAAU1mC,EAAI2a,OAErBtW,EAASrE,GAAK,MAAoB,iBAANA,EAAiBA,GAAmB,iBAANA,EAAiB,IAAM,KAAOA,MACxF2B,EAAO3B,EAAIkmC,GAAW,KAEpBH,EAAa/lC,GAAK,MAAO,QAEzB2a,EAAQ,MAAO,IAEpBwrB,EAAYnmC,UAELA,EAAGkmC,GAAUE,UAkDtBO,YA/CgB,SAAU3mC,EAAI2a,OACzBhZ,EAAO3B,EAAIkmC,GAAW,KAEpBH,EAAa/lC,GAAK,OAAO,MAEzB2a,EAAQ,OAAO,EAEpBwrB,EAAYnmC,UAELA,EAAGkmC,GAAUG,UAuCtBO,SAnCa,SAAU5mC,UACnB6mC,IAAYZ,GAAYF,EAAa/lC,KAAQ2B,EAAO3B,EAAIkmC,IAAWC,EAAYnmC,GAC5EA,IAoCTuH,GAAW2+B,IAAY,KC1FnBvlC,GAAiByH,EAA+C/B,EAShEqgC,GAAU/yB,GAA0C+yB,QAGpDtxB,GAAmB9M,GAAoB7B,IACvCqgC,GAAyBx+B,GAAoBZ,khECChC,SAAUkG,EAAkBwK,EAAS2uB,OAChD7mB,GAA8C,IAArCtS,EAAiBzC,QAAQ,OAClC67B,GAAgD,IAAtCp5B,EAAiBzC,QAAQ,QACnC87B,EAAQ/mB,EAAS,MAAQ,MACzBgnB,EAAoB7mC,EAAOuN,GAC3Bu5B,EAAkBD,GAAqBA,EAAkBp/B,UACzD+F,EAAcq5B,EACdE,EAAW,GAEXC,EAAY,SAAUxhB,OACpBQ,EAAe8gB,EAAgBthB,GACnCpc,GAAS09B,EAAiBthB,EACjB,OAAPA,EAAe,SAAaplB,UAC1B4lB,EAAazkB,KAAKtB,KAAgB,IAAVG,EAAc,EAAIA,GACnCH,MACE,UAAPulB,EAAkB,SAAUrlB,WACvBwmC,IAAY3iC,EAAS7D,KAAe6lB,EAAazkB,KAAKtB,KAAc,IAARE,EAAY,EAAIA,IAC1E,OAAPqlB,EAAe,SAAarlB,UACvBwmC,IAAY3iC,EAAS7D,QAAOW,EAAYklB,EAAazkB,KAAKtB,KAAc,IAARE,EAAY,EAAIA,IAC9E,OAAPqlB,EAAe,SAAarlB,WACvBwmC,IAAY3iC,EAAS7D,KAAe6lB,EAAazkB,KAAKtB,KAAc,IAARE,EAAY,EAAIA,IACjF,SAAaA,EAAKC,UACpB4lB,EAAazkB,KAAKtB,KAAc,IAARE,EAAY,EAAIA,EAAKC,GACtCH,WAKC0L,GACZ4B,GACCxL,EAAW8kC,MAAwBF,GAAWG,EAAgB1qB,UAAYvZ,GAAM,gBAC3EgkC,GAAoB5E,UAAUtzB,YAMpCnB,EAAck5B,EAAOO,eAAelvB,EAASxK,EAAkBsS,EAAQ+mB,GACvEM,GAAuBhB,cAClB,GAAIv6B,GAAS4B,GAAkB,GAAO,KACvC6d,EAAW,IAAI5d,EAEf25B,EAAiB/b,EAASwb,GAAOD,EAAU,IAAM,EAAG,IAAMvb,EAE1Dgc,EAAuBvkC,GAAM,WAAcuoB,EAAS/kB,IAAI,MAGxDghC,EAAmBhxB,IAA4B,SAAU7H,OAAgBq4B,EAAkBr4B,MAE3F84B,GAAcX,GAAW9jC,GAAM,mBAE7B0kC,EAAY,IAAIV,EAChB58B,EAAQ,EACLA,KAASs9B,EAAUX,GAAO38B,EAAOA,UAChCs9B,EAAUlhC,KAAK,MAGpBghC,KACH75B,EAAcuK,GAAQ,SAAU4qB,EAAOn0B,GACrCyJ,GAAW0qB,EAAOn1B,EAAaD,OAC3BK,EAAOm2B,GAAkB,IAAI8C,EAAqBlE,EAAOn1B,UAC7C1M,MAAZ0N,GAAuByK,GAAQzK,EAAUZ,EAAKg5B,GAAQ,CAAEh5B,KAAMA,EAAMiB,WAAYgR,IAC7EjS,MAEGnG,UAAYq/B,EACxBA,EAAgBp2B,YAAclD,IAG5B45B,GAAwBE,KAC1BN,EAAU,UACVA,EAAU,OACVnnB,GAAUmnB,EAAU,SAGlBM,GAAcH,IAAgBH,EAAUJ,GAGxCD,GAAWG,EAAgBh2B,cAAcg2B,EAAgBh2B,MAG/Di2B,EAASx5B,GAAoBC,EAC7B00B,GAAE,CAAEliC,QAAQ,EAAM0M,OAAQc,GAAeq5B,GAAqBE,GAE9DxuB,GAAe/K,EAAaD,GAEvBo5B,GAASD,EAAOc,UAAUh6B,EAAaD,EAAkBsS,GC9F/C4nB,CAAW,OAAO,SAAUC,UACpC,kBAAwBA,EAAKznC,KAAMiC,UAAUC,OAASD,UAAU,QAAKpB,MFS7D,CACfmmC,eAAgB,SAAUlvB,EAASxK,EAAkBsS,EAAQ+mB,OACvDn2B,EAAIsH,GAAQ,SAAUnK,EAAMY,GAC9ByJ,GAAWrK,EAAM6C,EAAGlD,GACpBwH,GAAiBnH,EAAM,CACrBrG,KAAMgG,EACNtD,MAAOqQ,GAAO,MACdkM,WAAO1lB,EACPgS,UAAMhS,EACN6lB,KAAM,IAEHziB,IAAa0J,EAAK+Y,KAAO,GACd7lB,MAAZ0N,GAAuByK,GAAQzK,EAAUZ,EAAKg5B,GAAQ,CAAEh5B,KAAMA,EAAMiB,WAAYgR,OAGlF7X,EAAmBy+B,GAAuBl5B,GAE1CuM,EAAS,SAAUlM,EAAMzN,EAAKC,OAG5BunC,EAAU19B,EAFVvD,EAAQsB,EAAiB4F,GACzBqP,EAAQ2qB,EAASh6B,EAAMzN,UAGvB8c,EACFA,EAAM7c,MAAQA,GAGdsG,EAAMoM,KAAOmK,EAAQ,CACnBhT,MAAOA,EAAQo8B,GAAQlmC,GAAK,GAC5BA,IAAKA,EACLC,MAAOA,EACPunC,SAAUA,EAAWjhC,EAAMoM,KAC3BnE,UAAM7N,EACN+mC,SAAS,GAENnhC,EAAM8f,QAAO9f,EAAM8f,MAAQvJ,GAC5B0qB,IAAUA,EAASh5B,KAAOsO,GAC1B/Y,EAAawC,EAAMigB,OAClB/Y,EAAK+Y,OAEI,MAAV1c,IAAevD,EAAMuD,MAAMA,GAASgT,IACjCrP,GAGPg6B,EAAW,SAAUh6B,EAAMzN,OAIzB8c,EAHAvW,EAAQsB,EAAiB4F,GAEzB3D,EAAQo8B,GAAQlmC,MAEN,MAAV8J,EAAe,OAAOvD,EAAMuD,MAAMA,OAEjCgT,EAAQvW,EAAM8f,MAAOvJ,EAAOA,EAAQA,EAAMtO,QACzCsO,EAAM9c,KAAOA,EAAK,OAAO8c,UAIjC/E,GAAYzH,EAAEhJ,UAAW,CAIvBqJ,MAAO,mBAEDpK,EAAQsB,EADD/H,MAEP6L,EAAOpF,EAAMuD,MACbgT,EAAQvW,EAAM8f,MACXvJ,GACLA,EAAM4qB,SAAU,EACZ5qB,EAAM0qB,WAAU1qB,EAAM0qB,SAAW1qB,EAAM0qB,SAASh5B,UAAO7N,UACpDgL,EAAKmR,EAAMhT,OAClBgT,EAAQA,EAAMtO,KAEhBjI,EAAM8f,MAAQ9f,EAAMoM,UAAOhS,EACvBoD,EAAawC,EAAMigB,KAAO,EAXnB1mB,KAYD0mB,KAAO,UAKT,SAAUxmB,OACdyN,EAAO3N,KACPyG,EAAQsB,EAAiB4F,GACzBqP,EAAQ2qB,EAASh6B,EAAMzN,MACvB8c,EAAO,KACLtO,EAAOsO,EAAMtO,KACb2P,EAAOrB,EAAM0qB,gBACVjhC,EAAMuD,MAAMgT,EAAMhT,OACzBgT,EAAM4qB,SAAU,EACZvpB,IAAMA,EAAK3P,KAAOA,GAClBA,IAAMA,EAAKg5B,SAAWrpB,GACtB5X,EAAM8f,OAASvJ,IAAOvW,EAAM8f,MAAQ7X,GACpCjI,EAAMoM,MAAQmK,IAAOvW,EAAMoM,KAAOwL,GAClCpa,EAAawC,EAAMigB,OAClB/Y,EAAK+Y,eACD1J,GAKbb,QAAS,SAAiBgE,WAGpBnD,EAFAvW,EAAQsB,EAAiB/H,MACzBqgB,EAAgBtR,GAAKoR,EAAYle,UAAUC,OAAS,EAAID,UAAU,QAAKpB,EAAW,GAE/Emc,EAAQA,EAAQA,EAAMtO,KAAOjI,EAAM8f,WACxClG,EAAcrD,EAAM7c,MAAO6c,EAAM9c,IAAKF,MAE/Bgd,GAASA,EAAM4qB,SAAS5qB,EAAQA,EAAM0qB,UAMjDthC,IAAK,SAAalG,WACPynC,EAAS3nC,KAAME,MAI5B+X,GAAYzH,EAAEhJ,UAAWoY,EAAS,CAGhChc,IAAK,SAAa1D,OACZ8c,EAAQ2qB,EAAS3nC,KAAME,UACpB8c,GAASA,EAAM7c,OAIxBgG,IAAK,SAAajG,EAAKC,UACd0Z,EAAO7Z,KAAc,IAARE,EAAY,EAAIA,EAAKC,KAEzC,CAGF0nC,IAAK,SAAa1nC,UACT0Z,EAAO7Z,KAAMG,EAAkB,IAAVA,EAAc,EAAIA,EAAOA,MAGrD8D,GAAa5D,GAAemQ,EAAEhJ,UAAW,OAAQ,CACnD5D,IAAK,kBACImE,EAAiB/H,MAAM0mB,QAG3BlW,GAET+2B,UAAW,SAAU/2B,EAAGlD,EAAkBsS,OACpCkoB,EAAgBx6B,EAAmB,YACnCy6B,EAA6BvB,GAAuBl5B,GACpD06B,EAA2BxB,GAAuBsB,GAUtD3F,GAAe3xB,EAAGlD,GAAkB,SAAU80B,EAAUl0B,GACtD4G,GAAiB9U,KAAM,CACrBsH,KAAMwgC,EACNx8B,OAAQ82B,EACR37B,MAAOshC,EAA2B3F,GAClCl0B,KAAMA,EACN2E,UAAMhS,OAEP,mBACG4F,EAAQuhC,EAAyBhoC,MACjCkO,EAAOzH,EAAMyH,KACb8O,EAAQvW,EAAMoM,KAEXmK,GAASA,EAAM4qB,SAAS5qB,EAAQA,EAAM0qB,gBAExCjhC,EAAM6E,SAAY7E,EAAMoM,KAAOmK,EAAQA,EAAQA,EAAMtO,KAAOjI,EAAMA,MAAM8f,OAMjE,QAARrY,EAAuB,CAAE/N,MAAO6c,EAAM9c,IAAKoP,MAAM,GACzC,UAARpB,EAAyB,CAAE/N,MAAO6c,EAAM7c,MAAOmP,MAAM,GAClD,CAAEnP,MAAO,CAAC6c,EAAM9c,IAAK8c,EAAM7c,OAAQmP,MAAM,IAN9C7I,EAAM6E,YAASzK,EACR,CAAEV,WAAOU,EAAWyO,MAAM,MAMlCsQ,EAAS,UAAY,UAAWA,GAAQ,GAK3CrH,GAAWjL,0toBGjMf,IAAI26B,GAAc9lC,EAAW,UAAW,SACpC+lC,GAAgBjoC,SAAS6N,MAGzBq6B,IAA2BvlC,GAAM,WACnCqlC,IAAY,gcAKZ,CAAE38B,OAAQ,UAAWkB,MAAM,EAAMC,OAAQ07B,IAA2B,CACpEr6B,MAAO,SAAexC,EAAQ88B,EAAcC,UAC1C7jC,EAAU8G,GACV9F,EAAS6iC,GACFJ,GACHA,GAAY38B,EAAQ88B,EAAcC,GAClCH,GAAc5mC,KAAKgK,EAAQ88B,EAAcC,SCf/C,CAAE/8B,OAAQ,UAAWkB,MAAM,EAAMzJ,MAAO49B,IAA4B,CACpE5kB,eAAgB,SAAwBzQ,UAC/Bg9B,GAAqB9iC,EAAS8F,0rHCTzC,SAASg0B,GAAQn1B,UAIbm1B,GADoB,mBAAXx8B,QAAoD,iBAApBA,OAAOI,SACtC,SAAUiH,iBACJA,GAGN,SAAUA,UACXA,GAAyB,mBAAXrH,QAAyBqH,EAAIsG,cAAgB3N,QAAUqH,IAAQrH,OAAO0E,UAAY,gBAAkB2C,IAI9GA,GAqDjB,IAAIo+B,GAAW,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAClwCC,GAAW,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAwFvgC,SAASC,GAAkBC,EAAQC,EAAMC,EAAMC,EAAOC,EAAQC,QACxDtrB,MAAMsrB,IAAWA,EAAS,IAI9BA,GAAU,MACNC,EAlCN,SAAgCN,EAAQC,EAAMC,EAAMC,EAAOC,MACnC,iBAAXJ,IACTA,EAAS7kC,SAASolC,eAAeP,KAG9BA,GAA8B,WAApBpJ,GAAQoJ,MAA0B,eAAgBA,SACzD,IAAIznC,UAAU,+EAGlBqZ,EAAUouB,EAAOQ,WAAW,iBAGvB5uB,EAAQ6uB,aAAaR,EAAMC,EAAMC,EAAOC,GAC/C,MAAOjb,SACD,IAAIjT,MAAM,gCAAkCiT,IAoBpCub,CAAuBV,EAAQC,EAAMC,EAAMC,EAAOC,GAClEE,EAcF,SAA8BA,EAAWL,EAAMC,EAAMC,EAAOC,EAAQC,WAU9DM,EATAC,EAASN,EAAUn9B,KACnB09B,EAAM,EAAIR,EAAS,EAEnBS,EAAcX,EAAQ,EACtBY,EAAeX,EAAS,EACxBY,EAAcX,EAAS,EACvBY,EAAYD,GAAeA,EAAc,GAAK,EAC9CE,EAAa,IAAIC,GACjBC,EAAQF,EAGH7+B,EAAI,EAAGA,EAAIw+B,EAAKx+B,IACvB++B,EAAQA,EAAMp7B,KAAO,IAAIm7B,GAErB9+B,IAAM2+B,IACRL,EAAWS,GAIfA,EAAMp7B,KAAOk7B,UACTG,EAAU,KACVC,EAAW,KACXC,EAAK,EACLC,EAAK,EACLC,EAAS5B,GAASQ,GAClBqB,EAAS5B,GAASO,GAEbsB,EAAI,EAAGA,EAAIvB,EAAQuB,IAAK,CAC/BP,EAAQF,UACJU,EAAKhB,EAAOY,GACZK,EAAKjB,EAAOY,EAAK,GACjBM,EAAKlB,EAAOY,EAAK,GACjBO,EAAKnB,EAAOY,EAAK,GAEZ9f,EAAK,EAAGA,EAAKsf,EAAatf,IACjC0f,EAAMtxB,EAAI8xB,EACVR,EAAMhO,EAAIyO,EACVT,EAAMl8B,EAAI48B,EACVV,EAAM5lC,EAAIumC,EACVX,EAAQA,EAAMp7B,aAGZg8B,EAAS,EACTC,EAAS,EACTC,EAAS,EACTC,EAAS,EACTC,EAAUpB,EAAcY,EACxBS,EAAUrB,EAAca,EACxBS,EAAUtB,EAAcc,EACxBS,EAAUvB,EAAce,EACxBS,EAAOvB,EAAYW,EACnBa,EAAOxB,EAAYY,EACnBa,EAAOzB,EAAYa,EACnBa,EAAO1B,EAAYc,EAEda,EAAM,EAAGA,EAAM5B,EAAa4B,IAAO,KACtC3d,EAAIuc,IAAOV,EAAc8B,EAAM9B,EAAc8B,IAAQ,GACrD9yB,EAAI8wB,EAAO3b,GACXmO,EAAIwN,EAAO3b,EAAI,GACf/f,EAAI07B,EAAO3b,EAAI,GACfzpB,EAAIolC,EAAO3b,EAAI,GACf4d,EAAM7B,EAAc4B,EACxBJ,IAASpB,EAAMtxB,EAAIA,GAAK+yB,EACxBJ,IAASrB,EAAMhO,EAAIA,GAAKyP,EACxBH,IAAStB,EAAMl8B,EAAIA,GAAK29B,EACxBF,IAASvB,EAAM5lC,EAAIA,GAAKqnC,EACxBb,GAAUlyB,EACVmyB,GAAU7O,EACV8O,GAAUh9B,EACVi9B,GAAU3mC,EACV4lC,EAAQA,EAAMp7B,KAGhBq7B,EAAUH,EACVI,EAAWX,MAEN,IAAI3wB,EAAI,EAAGA,EAAImwB,EAAOnwB,IAAK,KAC1B8yB,EAAYH,EAAOlB,GAAUC,KACjCd,EAAOY,EAAK,GAAKsB,EAEC,IAAdA,EAAiB,KACfC,EAAM,IAAMD,EAEhBlC,EAAOY,IAAOgB,EAAOf,GAAUC,GAAUqB,EACzCnC,EAAOY,EAAK,IAAMiB,EAAOhB,GAAUC,GAAUqB,EAC7CnC,EAAOY,EAAK,IAAMkB,EAAOjB,GAAUC,GAAUqB,OAE7CnC,EAAOY,GAAMZ,EAAOY,EAAK,GAAKZ,EAAOY,EAAK,GAAK,EAGjDgB,GAAQJ,EACRK,GAAQJ,EACRK,GAAQJ,EACRK,GAAQJ,EACRH,GAAWf,EAAQvxB,EACnBuyB,GAAWhB,EAAQjO,EACnBkP,GAAWjB,EAAQn8B,EACnBq9B,GAAWlB,EAAQ7lC,MAEfwnC,EAAKhzB,EAAIqwB,EAAS,EAEtB2C,EAAKzB,GAAMyB,EAAKlC,EAAckC,EAAKlC,IAAgB,EAKnD0B,GAJAR,GAAUX,EAAQvxB,EAAI8wB,EAAOoC,GAK7BP,GAJAR,GAAUZ,EAAQjO,EAAIwN,EAAOoC,EAAK,GAKlCN,GAJAR,GAAUb,EAAQn8B,EAAI07B,EAAOoC,EAAK,GAKlCL,GAJAR,GAAUd,EAAQ7lC,EAAIolC,EAAOoC,EAAK,GAKlC3B,EAAUA,EAAQr7B,SACdi9B,EAAY3B,EACZ4B,EAAKD,EAAUnzB,EACfqzB,EAAKF,EAAU7P,EACfgQ,GAAKH,EAAU/9B,EACfm+B,GAAKJ,EAAUznC,EACnB4mC,GAAWc,EACXb,GAAWc,EACXb,GAAWc,GACXb,GAAWc,GACXrB,GAAUkB,EACVjB,GAAUkB,EACVjB,GAAUkB,GACVjB,GAAUkB,GACV/B,EAAWA,EAASt7B,KACpBw7B,GAAM,EAGRD,GAAMpB,MAGH,IAAImD,GAAK,EAAGA,GAAKnD,EAAOmD,KAAM,KAG7BC,GAAM3C,EAFVY,EAAK8B,IAAM,GAGPE,GAAM5C,EAAOY,EAAK,GAClBiC,GAAM7C,EAAOY,EAAK,GAClBkC,GAAM9C,EAAOY,EAAK,GAClBmC,GAAW3C,EAAcuC,GACzBK,GAAW5C,EAAcwC,GACzBK,GAAW7C,EAAcyC,GACzBK,GAAW9C,EAAc0C,GACzBK,GAAQ9C,EAAYsC,GACpBS,GAAQ/C,EAAYuC,GACpBS,GAAQhD,EAAYwC,GACpBS,GAAQjD,EAAYyC,GAExBtC,EAAQF,MAEH,IAAIiD,GAAM,EAAGA,GAAMnD,EAAamD,KACnC/C,EAAMtxB,EAAIyzB,GACVnC,EAAMhO,EAAIoQ,GACVpC,EAAMl8B,EAAIu+B,GACVrC,EAAM5lC,EAAIkoC,GACVtC,EAAQA,EAAMp7B,aAGZo+B,GAAKjE,EACLkE,GAAU,EACVC,GAAU,EACVC,GAAU,EACVC,GAAU,EAELC,GAAM,EAAGA,IAAOpE,EAAQoE,KAAO,CACtCjD,EAAK4C,GAAKd,IAAM,MAEZoB,GAAO1D,EAAcyD,GAEzBV,KAAU3C,EAAMtxB,EAAIyzB,GAAM3C,EAAOY,IAAOkD,GACxCV,KAAU5C,EAAMhO,EAAIoQ,GAAM5C,EAAOY,EAAK,IAAMkD,GAC5CT,KAAU7C,EAAMl8B,EAAIu+B,GAAM7C,EAAOY,EAAK,IAAMkD,GAC5CR,KAAU9C,EAAM5lC,EAAIkoC,GAAM9C,EAAOY,EAAK,IAAMkD,GAC5CF,IAAWjB,GACXc,IAAWb,GACXc,IAAWb,GACXc,IAAWb,GACXtC,EAAQA,EAAMp7B,KAEVy+B,GAAM1D,IACRqD,IAAMjE,GAIVqB,EAAK8B,GACLjC,EAAUH,EACVI,EAAWX,MAEN,IAAIgE,GAAK,EAAGA,GAAKvE,EAAQuE,KAAM,KAC9BC,GAAMpD,GAAM,EAEhBZ,EAAOgE,GAAM,GAAKlB,GAAMQ,GAAQzC,GAAUC,EAEtCgC,GAAM,GACRA,GAAM,IAAMA,GACZ9C,EAAOgE,KAAQb,GAAQtC,GAAUC,GAAUgC,GAC3C9C,EAAOgE,GAAM,IAAMZ,GAAQvC,GAAUC,GAAUgC,GAC/C9C,EAAOgE,GAAM,IAAMX,GAAQxC,GAAUC,GAAUgC,IAE/C9C,EAAOgE,IAAOhE,EAAOgE,GAAM,GAAKhE,EAAOgE,GAAM,GAAK,EAGpDb,IAASJ,GACTK,IAASJ,GACTK,IAASJ,GACTK,IAASJ,GACTH,IAAYtC,EAAQvxB,EACpB8zB,IAAYvC,EAAQjO,EACpByQ,IAAYxC,EAAQn8B,EACpB4+B,IAAYzC,EAAQ7lC,EACpBopC,GAAMtB,KAAOsB,GAAMD,GAAK3D,GAAeD,EAAe6D,GAAM7D,GAAgBZ,GAAS,EACrF4D,IAASS,IAAWnD,EAAQvxB,EAAI8wB,EAAOgE,IACvCZ,IAASK,IAAWhD,EAAQjO,EAAIwN,EAAOgE,GAAM,GAC7CX,IAASK,IAAWjD,EAAQn8B,EAAI07B,EAAOgE,GAAM,GAC7CV,IAASK,IAAWlD,EAAQ7lC,EAAIolC,EAAOgE,GAAM,GAC7CvD,EAAUA,EAAQr7B,KAClB29B,IAAYJ,GAAMjC,EAASxxB,EAC3B8zB,IAAYJ,GAAMlC,EAASlO,EAC3ByQ,IAAYJ,GAAMnC,EAASp8B,EAC3B4+B,IAAYJ,GAAMpC,EAAS9lC,EAC3BgpC,IAAWjB,GACXc,IAAWb,GACXc,IAAWb,GACXc,IAAWb,GACXpC,EAAWA,EAASt7B,KACpBw7B,GAAMrB,UAIHG,EAnPKuE,CAAqBvE,EAAWL,EAAMC,EAAMC,EAAOC,EAAQC,GACvEL,EAAOQ,WAAW,MAAMsE,aAAaxE,EAAWL,EAAMC,IAocxD,IAAIiB,GAIJ,SAASA,KA3lBT,SAAyB1e,EAAU5d,QAC3B4d,aAAoB5d,SAClB,IAAItM,UAAU,qCA0lBtBwsC,CAAgBztC,KAAM6pC,QAEjBrxB,EAAI,OACJsjB,EAAI,OACJluB,EAAI,OACJ1J,EAAI,OACJwK,KAAO"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/util/debug.d.ts b/node_modules/canvg/lib/util/debug.d.ts
new file mode 100644
index 0000000..8e7c5d8
--- /dev/null
+++ b/node_modules/canvg/lib/util/debug.d.ts
@@ -0,0 +1,33 @@
+import { RenderingContext2D } from '../types';
+/**
+ * Wrap rendering context to log every action.
+ * @param ctx - Rendering context.
+ * @returns Proxy logger.
+ */
+export declare function ctxLogger(ctx: RenderingContext2D): RenderingContext2D;
+/**
+ * Draw point.
+ * @param ctx - Rendering context.
+ * @param x - Point x.
+ * @param y - Point y
+ * @param radius - Point radius.
+ */
+export declare function point(ctx: RenderingContext2D, x?: number, y?: number, radius?: number): void;
+/**
+ * Draw triangle to vizualize angle.
+ * @param ctx - Rendering context.
+ * @param x - Angle x.
+ * @param y - Angle y.
+ * @param size - Triangle size.
+ */
+export declare function angle(ctx: RenderingContext2D, x?: number, y?: number, size?: number): void;
+/**
+ * Draw triangle to vizualize angle.
+ * @param ctx - Rendering context.
+ * @param x - Angle x.
+ * @param y - Angle y.
+ * @param width
+ * @param height
+ */
+export declare function box(ctx: RenderingContext2D, x: number, y: number, width: number, height: number): void;
+//# sourceMappingURL=debug.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/util/debug.d.ts.map b/node_modules/canvg/lib/util/debug.d.ts.map
new file mode 100644
index 0000000..5e45ae9
--- /dev/null
+++ b/node_modules/canvg/lib/util/debug.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../src/util/debug.ts"],"names":[],"mappings":"AAGA,OAAO,EACN,kBAAkB,EAClB,MAAM,UAAU,CAAC;AAElB;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,kBAAkB,sBA6BhD;AAED;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,kBAAkB,EAAE,CAAC,SAAI,EAAE,CAAC,SAAI,EAAE,MAAM,SAAK,QAMvE;AAED;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,kBAAkB,EAAE,CAAC,SAAI,EAAE,CAAC,SAAI,EAAE,IAAI,SAAK,QASrE;AAED;;;;;;;GAOG;AACH,wBAAgB,GAAG,CAAC,GAAG,EAAE,kBAAkB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAU/F"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/util/index.d.ts b/node_modules/canvg/lib/util/index.d.ts
new file mode 100644
index 0000000..2542fdd
--- /dev/null
+++ b/node_modules/canvg/lib/util/index.d.ts
@@ -0,0 +1,4 @@
+export * from './string';
+export * from './styles';
+export * from './math';
+//# sourceMappingURL=index.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/util/index.d.ts.map b/node_modules/canvg/lib/util/index.d.ts.map
new file mode 100644
index 0000000..696ba57
--- /dev/null
+++ b/node_modules/canvg/lib/util/index.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/util/math.d.ts b/node_modules/canvg/lib/util/math.d.ts
new file mode 100644
index 0000000..bf230d0
--- /dev/null
+++ b/node_modules/canvg/lib/util/math.d.ts
@@ -0,0 +1,29 @@
+export declare const PSEUDO_ZERO = 1e-8;
+/**
+ * Vector magnitude.
+ * @param v
+ * @returns Number result.
+ */
+export declare function vectorMagnitude(v: number[]): number;
+/**
+ * Ratio between two vectors.
+ * @param u
+ * @param v
+ * @returns Number result.
+ */
+export declare function vectorsRatio(u: number[], v: number[]): number;
+/**
+ * Angle between two vectors.
+ * @param u
+ * @param v
+ * @returns Number result.
+ */
+export declare function vectorsAngle(u: number[], v: number[]): number;
+export declare function CB1(t: number): number;
+export declare function CB2(t: number): number;
+export declare function CB3(t: number): number;
+export declare function CB4(t: number): number;
+export declare function QB1(t: number): number;
+export declare function QB2(t: number): number;
+export declare function QB3(t: number): number;
+//# sourceMappingURL=math.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/util/math.d.ts.map b/node_modules/canvg/lib/util/math.d.ts.map
new file mode 100644
index 0000000..ff50f26
--- /dev/null
+++ b/node_modules/canvg/lib/util/math.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../src/util/math.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,WAAW,OAAY,CAAC;AAErC;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,UAE1C;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,UAEpD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,UAEpD;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,UAE5B;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,UAE5B;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,UAE5B;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,UAE5B;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,UAE5B;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,UAE5B;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,UAE5B"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/util/string.d.ts b/node_modules/canvg/lib/util/string.d.ts
new file mode 100644
index 0000000..f1adb16
--- /dev/null
+++ b/node_modules/canvg/lib/util/string.d.ts
@@ -0,0 +1,43 @@
+/**
+ * HTML-safe compress white-spaces.
+ * @param str - String to compress.
+ * @returns String.
+ */
+export declare function compressSpaces(str: string): string;
+/**
+ * HTML-safe left trim.
+ * @param str - String to trim.
+ * @returns String.
+ */
+export declare function trimLeft(str: string): string;
+/**
+ * HTML-safe right trim.
+ * @param str - String to trim.
+ * @returns String.
+ */
+export declare function trimRight(str: string): string;
+/**
+ * String to numbers array.
+ * @param str - Numbers string.
+ * @returns Numbers array.
+ */
+export declare function toNumbers(str: string): number[];
+/**
+ * Normalize attribute name.
+ * @param name - Attribute name.
+ * @returns Normalized attribute name.
+ */
+export declare function normalizeAttributeName(name: string): string;
+/**
+ * Parse external URL.
+ * @param url - CSS url string.
+ * @returns Parsed URL.
+ */
+export declare function parseExternalUrl(url: string): string;
+/**
+ * Transform floats to integers in rgb colors.
+ * @param color - Color to normalize.
+ * @returns Normalized color.
+ */
+export declare function normalizeColor(color: string): string;
+//# sourceMappingURL=string.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/util/string.d.ts.map b/node_modules/canvg/lib/util/string.d.ts.map
new file mode 100644
index 0000000..c5f5418
--- /dev/null
+++ b/node_modules/canvg/lib/util/string.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../src/util/string.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,UAEzC;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,UAEnC;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,UAEpC;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,YAIpC;AAKD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,UAMlD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAQpD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,UAc3C"}
\ No newline at end of file
diff --git a/node_modules/canvg/lib/util/styles.d.ts b/node_modules/canvg/lib/util/styles.d.ts
new file mode 100644
index 0000000..01dc045
--- /dev/null
+++ b/node_modules/canvg/lib/util/styles.d.ts
@@ -0,0 +1,7 @@
+/**
+ * Measure selector specificity.
+ * @param selector - Selector to measure.
+ * @returns Specificity.
+ */
+export declare function getSelectorSpecificity(selector: string): string;
+//# sourceMappingURL=styles.d.ts.map
\ No newline at end of file
diff --git a/node_modules/canvg/lib/util/styles.d.ts.map b/node_modules/canvg/lib/util/styles.d.ts.map
new file mode 100644
index 0000000..e3f44be
--- /dev/null
+++ b/node_modules/canvg/lib/util/styles.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/util/styles.ts"],"names":[],"mappings":"AA0BA;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,UAiCtD"}
\ No newline at end of file
diff --git a/node_modules/canvg/node_modules/regenerator-runtime/LICENSE b/node_modules/canvg/node_modules/regenerator-runtime/LICENSE
new file mode 100644
index 0000000..cde61b6
--- /dev/null
+++ b/node_modules/canvg/node_modules/regenerator-runtime/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2014-present, Facebook, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/canvg/node_modules/regenerator-runtime/README.md b/node_modules/canvg/node_modules/regenerator-runtime/README.md
new file mode 100644
index 0000000..e8702ba
--- /dev/null
+++ b/node_modules/canvg/node_modules/regenerator-runtime/README.md
@@ -0,0 +1,31 @@
+# regenerator-runtime
+
+Standalone runtime for
+[Regenerator](https://github.com/facebook/regenerator)-compiled generator
+and `async` functions.
+
+To import the runtime as a module (recommended), either of the following
+import styles will work:
+```js
+// CommonJS
+const regeneratorRuntime = require("regenerator-runtime");
+
+// ECMAScript 2015
+import regeneratorRuntime from "regenerator-runtime";
+```
+
+To ensure that `regeneratorRuntime` is defined globally, either of the
+following styles will work:
+```js
+// CommonJS
+require("regenerator-runtime/runtime");
+
+// ECMAScript 2015
+import "regenerator-runtime/runtime.js";
+```
+
+To get the absolute file system path of `runtime.js`, evaluate the
+following expression:
+```js
+require("regenerator-runtime/path").path
+```
diff --git a/node_modules/canvg/node_modules/regenerator-runtime/package.json b/node_modules/canvg/node_modules/regenerator-runtime/package.json
new file mode 100644
index 0000000..5f70491
--- /dev/null
+++ b/node_modules/canvg/node_modules/regenerator-runtime/package.json
@@ -0,0 +1,19 @@
+{
+  "name": "regenerator-runtime",
+  "author": "Ben Newman <bn@cs.stanford.edu>",
+  "description": "Runtime for Regenerator-compiled generator and async functions.",
+  "version": "0.13.11",
+  "main": "runtime.js",
+  "keywords": [
+    "regenerator",
+    "runtime",
+    "generator",
+    "async"
+  ],
+  "sideEffects": true,
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/facebook/regenerator/tree/main/packages/runtime"
+  },
+  "license": "MIT"
+}
diff --git a/node_modules/canvg/node_modules/regenerator-runtime/path.js b/node_modules/canvg/node_modules/regenerator-runtime/path.js
new file mode 100644
index 0000000..ced878b
--- /dev/null
+++ b/node_modules/canvg/node_modules/regenerator-runtime/path.js
@@ -0,0 +1,11 @@
+/**
+ * Copyright (c) 2014-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+exports.path = require("path").join(
+  __dirname,
+  "runtime.js"
+);
diff --git a/node_modules/canvg/node_modules/regenerator-runtime/runtime.js b/node_modules/canvg/node_modules/regenerator-runtime/runtime.js
new file mode 100644
index 0000000..1ea704e
--- /dev/null
+++ b/node_modules/canvg/node_modules/regenerator-runtime/runtime.js
@@ -0,0 +1,761 @@
+/**
+ * Copyright (c) 2014-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+var runtime = (function (exports) {
+  "use strict";
+
+  var Op = Object.prototype;
+  var hasOwn = Op.hasOwnProperty;
+  var defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; };
+  var undefined; // More compressible than void 0.
+  var $Symbol = typeof Symbol === "function" ? Symbol : {};
+  var iteratorSymbol = $Symbol.iterator || "@@iterator";
+  var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
+  var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
+
+  function define(obj, key, value) {
+    Object.defineProperty(obj, key, {
+      value: value,
+      enumerable: true,
+      configurable: true,
+      writable: true
+    });
+    return obj[key];
+  }
+  try {
+    // IE 8 has a broken Object.defineProperty that only works on DOM objects.
+    define({}, "");
+  } catch (err) {
+    define = function(obj, key, value) {
+      return obj[key] = value;
+    };
+  }
+
+  function wrap(innerFn, outerFn, self, tryLocsList) {
+    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.
+    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
+    var generator = Object.create(protoGenerator.prototype);
+    var context = new Context(tryLocsList || []);
+
+    // The ._invoke method unifies the implementations of the .next,
+    // .throw, and .return methods.
+    defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) });
+
+    return generator;
+  }
+  exports.wrap = wrap;
+
+  // Try/catch helper to minimize deoptimizations. Returns a completion
+  // record like context.tryEntries[i].completion. This interface could
+  // have been (and was previously) designed to take a closure to be
+  // invoked without arguments, but in all the cases we care about we
+  // already have an existing method we want to call, so there's no need
+  // to create a new function object. We can even get away with assuming
+  // the method takes exactly one argument, since that happens to be true
+  // in every case, so we don't have to touch the arguments object. The
+  // only additional allocation required is the completion record, which
+  // has a stable shape and so hopefully should be cheap to allocate.
+  function tryCatch(fn, obj, arg) {
+    try {
+      return { type: "normal", arg: fn.call(obj, arg) };
+    } catch (err) {
+      return { type: "throw", arg: err };
+    }
+  }
+
+  var GenStateSuspendedStart = "suspendedStart";
+  var GenStateSuspendedYield = "suspendedYield";
+  var GenStateExecuting = "executing";
+  var GenStateCompleted = "completed";
+
+  // Returning this object from the innerFn has the same effect as
+  // breaking out of the dispatch switch statement.
+  var ContinueSentinel = {};
+
+  // Dummy constructor functions that we use as the .constructor and
+  // .constructor.prototype properties for functions that return Generator
+  // objects. For full spec compliance, you may wish to configure your
+  // minifier not to mangle the names of these two functions.
+  function Generator() {}
+  function GeneratorFunction() {}
+  function GeneratorFunctionPrototype() {}
+
+  // This is a polyfill for %IteratorPrototype% for environments that
+  // don't natively support it.
+  var IteratorPrototype = {};
+  define(IteratorPrototype, iteratorSymbol, function () {
+    return this;
+  });
+
+  var getProto = Object.getPrototypeOf;
+  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
+  if (NativeIteratorPrototype &&
+      NativeIteratorPrototype !== Op &&
+      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
+    // This environment has a native %IteratorPrototype%; use it instead
+    // of the polyfill.
+    IteratorPrototype = NativeIteratorPrototype;
+  }
+
+  var Gp = GeneratorFunctionPrototype.prototype =
+    Generator.prototype = Object.create(IteratorPrototype);
+  GeneratorFunction.prototype = GeneratorFunctionPrototype;
+  defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: true });
+  defineProperty(
+    GeneratorFunctionPrototype,
+    "constructor",
+    { value: GeneratorFunction, configurable: true }
+  );
+  GeneratorFunction.displayName = define(
+    GeneratorFunctionPrototype,
+    toStringTagSymbol,
+    "GeneratorFunction"
+  );
+
+  // Helper for defining the .next, .throw, and .return methods of the
+  // Iterator interface in terms of a single ._invoke method.
+  function defineIteratorMethods(prototype) {
+    ["next", "throw", "return"].forEach(function(method) {
+      define(prototype, method, function(arg) {
+        return this._invoke(method, arg);
+      });
+    });
+  }
+
+  exports.isGeneratorFunction = function(genFun) {
+    var ctor = typeof genFun === "function" && genFun.constructor;
+    return ctor
+      ? ctor === GeneratorFunction ||
+        // For the native GeneratorFunction constructor, the best we can
+        // do is to check its .name property.
+        (ctor.displayName || ctor.name) === "GeneratorFunction"
+      : false;
+  };
+
+  exports.mark = function(genFun) {
+    if (Object.setPrototypeOf) {
+      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
+    } else {
+      genFun.__proto__ = GeneratorFunctionPrototype;
+      define(genFun, toStringTagSymbol, "GeneratorFunction");
+    }
+    genFun.prototype = Object.create(Gp);
+    return genFun;
+  };
+
+  // Within the body of any async function, `await x` is transformed to
+  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test
+  // `hasOwn.call(value, "__await")` to determine if the yielded value is
+  // meant to be awaited.
+  exports.awrap = function(arg) {
+    return { __await: arg };
+  };
+
+  function AsyncIterator(generator, PromiseImpl) {
+    function invoke(method, arg, resolve, reject) {
+      var record = tryCatch(generator[method], generator, arg);
+      if (record.type === "throw") {
+        reject(record.arg);
+      } else {
+        var result = record.arg;
+        var value = result.value;
+        if (value &&
+            typeof value === "object" &&
+            hasOwn.call(value, "__await")) {
+          return PromiseImpl.resolve(value.__await).then(function(value) {
+            invoke("next", value, resolve, reject);
+          }, function(err) {
+            invoke("throw", err, resolve, reject);
+          });
+        }
+
+        return PromiseImpl.resolve(value).then(function(unwrapped) {
+          // When a yielded Promise is resolved, its final value becomes
+          // the .value of the Promise<{value,done}> result for the
+          // current iteration.
+          result.value = unwrapped;
+          resolve(result);
+        }, function(error) {
+          // If a rejected Promise was yielded, throw the rejection back
+          // into the async generator function so it can be handled there.
+          return invoke("throw", error, resolve, reject);
+        });
+      }
+    }
+
+    var previousPromise;
+
+    function enqueue(method, arg) {
+      function callInvokeWithMethodAndArg() {
+        return new PromiseImpl(function(resolve, reject) {
+          invoke(method, arg, resolve, reject);
+        });
+      }
+
+      return previousPromise =
+        // If enqueue has been called before, then we want to wait until
+        // all previous Promises have been resolved before calling invoke,
+        // so that results are always delivered in the correct order. If
+        // enqueue has not been called before, then it is important to
+        // call invoke immediately, without waiting on a callback to fire,
+        // so that the async generator function has the opportunity to do
+        // any necessary setup in a predictable way. This predictability
+        // is why the Promise constructor synchronously invokes its
+        // executor callback, and why async functions synchronously
+        // execute code before the first await. Since we implement simple
+        // async functions in terms of async generators, it is especially
+        // important to get this right, even though it requires care.
+        previousPromise ? previousPromise.then(
+          callInvokeWithMethodAndArg,
+          // Avoid propagating failures to Promises returned by later
+          // invocations of the iterator.
+          callInvokeWithMethodAndArg
+        ) : callInvokeWithMethodAndArg();
+    }
+
+    // Define the unified helper method that is used to implement .next,
+    // .throw, and .return (see defineIteratorMethods).
+    defineProperty(this, "_invoke", { value: enqueue });
+  }
+
+  defineIteratorMethods(AsyncIterator.prototype);
+  define(AsyncIterator.prototype, asyncIteratorSymbol, function () {
+    return this;
+  });
+  exports.AsyncIterator = AsyncIterator;
+
+  // Note that simple async functions are implemented on top of
+  // AsyncIterator objects; they just return a Promise for the value of
+  // the final result produced by the iterator.
+  exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {
+    if (PromiseImpl === void 0) PromiseImpl = Promise;
+
+    var iter = new AsyncIterator(
+      wrap(innerFn, outerFn, self, tryLocsList),
+      PromiseImpl
+    );
+
+    return exports.isGeneratorFunction(outerFn)
+      ? iter // If outerFn is a generator, return the full iterator.
+      : iter.next().then(function(result) {
+          return result.done ? result.value : iter.next();
+        });
+  };
+
+  function makeInvokeMethod(innerFn, self, context) {
+    var state = GenStateSuspendedStart;
+
+    return function invoke(method, arg) {
+      if (state === GenStateExecuting) {
+        throw new Error("Generator is already running");
+      }
+
+      if (state === GenStateCompleted) {
+        if (method === "throw") {
+          throw arg;
+        }
+
+        // Be forgiving, per 25.3.3.3.3 of the spec:
+        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume
+        return doneResult();
+      }
+
+      context.method = method;
+      context.arg = arg;
+
+      while (true) {
+        var delegate = context.delegate;
+        if (delegate) {
+          var delegateResult = maybeInvokeDelegate(delegate, context);
+          if (delegateResult) {
+            if (delegateResult === ContinueSentinel) continue;
+            return delegateResult;
+          }
+        }
+
+        if (context.method === "next") {
+          // Setting context._sent for legacy support of Babel's
+          // function.sent implementation.
+          context.sent = context._sent = context.arg;
+
+        } else if (context.method === "throw") {
+          if (state === GenStateSuspendedStart) {
+            state = GenStateCompleted;
+            throw context.arg;
+          }
+
+          context.dispatchException(context.arg);
+
+        } else if (context.method === "return") {
+          context.abrupt("return", context.arg);
+        }
+
+        state = GenStateExecuting;
+
+        var record = tryCatch(innerFn, self, context);
+        if (record.type === "normal") {
+          // If an exception is thrown from innerFn, we leave state ===
+          // GenStateExecuting and loop back for another invocation.
+          state = context.done
+            ? GenStateCompleted
+            : GenStateSuspendedYield;
+
+          if (record.arg === ContinueSentinel) {
+            continue;
+          }
+
+          return {
+            value: record.arg,
+            done: context.done
+          };
+
+        } else if (record.type === "throw") {
+          state = GenStateCompleted;
+          // Dispatch the exception by looping back around to the
+          // context.dispatchException(context.arg) call above.
+          context.method = "throw";
+          context.arg = record.arg;
+        }
+      }
+    };
+  }
+
+  // Call delegate.iterator[context.method](context.arg) and handle the
+  // result, either by returning a { value, done } result from the
+  // delegate iterator, or by modifying context.method and context.arg,
+  // setting context.delegate to null, and returning the ContinueSentinel.
+  function maybeInvokeDelegate(delegate, context) {
+    var methodName = context.method;
+    var method = delegate.iterator[methodName];
+    if (method === undefined) {
+      // A .throw or .return when the delegate iterator has no .throw
+      // method, or a missing .next mehtod, always terminate the
+      // yield* loop.
+      context.delegate = null;
+
+      // Note: ["return"] must be used for ES3 parsing compatibility.
+      if (methodName === "throw" && delegate.iterator["return"]) {
+        // If the delegate iterator has a return method, give it a
+        // chance to clean up.
+        context.method = "return";
+        context.arg = undefined;
+        maybeInvokeDelegate(delegate, context);
+
+        if (context.method === "throw") {
+          // If maybeInvokeDelegate(context) changed context.method from
+          // "return" to "throw", let that override the TypeError below.
+          return ContinueSentinel;
+        }
+      }
+      if (methodName !== "return") {
+        context.method = "throw";
+        context.arg = new TypeError(
+          "The iterator does not provide a '" + methodName + "' method");
+      }
+
+      return ContinueSentinel;
+    }
+
+    var record = tryCatch(method, delegate.iterator, context.arg);
+
+    if (record.type === "throw") {
+      context.method = "throw";
+      context.arg = record.arg;
+      context.delegate = null;
+      return ContinueSentinel;
+    }
+
+    var info = record.arg;
+
+    if (! info) {
+      context.method = "throw";
+      context.arg = new TypeError("iterator result is not an object");
+      context.delegate = null;
+      return ContinueSentinel;
+    }
+
+    if (info.done) {
+      // Assign the result of the finished delegate to the temporary
+      // variable specified by delegate.resultName (see delegateYield).
+      context[delegate.resultName] = info.value;
+
+      // Resume execution at the desired location (see delegateYield).
+      context.next = delegate.nextLoc;
+
+      // If context.method was "throw" but the delegate handled the
+      // exception, let the outer generator proceed normally. If
+      // context.method was "next", forget context.arg since it has been
+      // "consumed" by the delegate iterator. If context.method was
+      // "return", allow the original .return call to continue in the
+      // outer generator.
+      if (context.method !== "return") {
+        context.method = "next";
+        context.arg = undefined;
+      }
+
+    } else {
+      // Re-yield the result returned by the delegate method.
+      return info;
+    }
+
+    // The delegate iterator is finished, so forget it and continue with
+    // the outer generator.
+    context.delegate = null;
+    return ContinueSentinel;
+  }
+
+  // Define Generator.prototype.{next,throw,return} in terms of the
+  // unified ._invoke helper method.
+  defineIteratorMethods(Gp);
+
+  define(Gp, toStringTagSymbol, "Generator");
+
+  // A Generator should always return itself as the iterator object when the
+  // @@iterator function is called on it. Some browsers' implementations of the
+  // iterator prototype chain incorrectly implement this, causing the Generator
+  // object to not be returned from this call. This ensures that doesn't happen.
+  // See https://github.com/facebook/regenerator/issues/274 for more details.
+  define(Gp, iteratorSymbol, function() {
+    return this;
+  });
+
+  define(Gp, "toString", function() {
+    return "[object Generator]";
+  });
+
+  function pushTryEntry(locs) {
+    var entry = { tryLoc: locs[0] };
+
+    if (1 in locs) {
+      entry.catchLoc = locs[1];
+    }
+
+    if (2 in locs) {
+      entry.finallyLoc = locs[2];
+      entry.afterLoc = locs[3];
+    }
+
+    this.tryEntries.push(entry);
+  }
+
+  function resetTryEntry(entry) {
+    var record = entry.completion || {};
+    record.type = "normal";
+    delete record.arg;
+    entry.completion = record;
+  }
+
+  function Context(tryLocsList) {
+    // The root entry object (effectively a try statement without a catch
+    // or a finally block) gives us a place to store values thrown from
+    // locations where there is no enclosing try statement.
+    this.tryEntries = [{ tryLoc: "root" }];
+    tryLocsList.forEach(pushTryEntry, this);
+    this.reset(true);
+  }
+
+  exports.keys = function(val) {
+    var object = Object(val);
+    var keys = [];
+    for (var key in object) {
+      keys.push(key);
+    }
+    keys.reverse();
+
+    // Rather than returning an object with a next method, we keep
+    // things simple and return the next function itself.
+    return function next() {
+      while (keys.length) {
+        var key = keys.pop();
+        if (key in object) {
+          next.value = key;
+          next.done = false;
+          return next;
+        }
+      }
+
+      // To avoid creating an additional object, we just hang the .value
+      // and .done properties off the next function object itself. This
+      // also ensures that the minifier will not anonymize the function.
+      next.done = true;
+      return next;
+    };
+  };
+
+  function values(iterable) {
+    if (iterable) {
+      var iteratorMethod = iterable[iteratorSymbol];
+      if (iteratorMethod) {
+        return iteratorMethod.call(iterable);
+      }
+
+      if (typeof iterable.next === "function") {
+        return iterable;
+      }
+
+      if (!isNaN(iterable.length)) {
+        var i = -1, next = function next() {
+          while (++i < iterable.length) {
+            if (hasOwn.call(iterable, i)) {
+              next.value = iterable[i];
+              next.done = false;
+              return next;
+            }
+          }
+
+          next.value = undefined;
+          next.done = true;
+
+          return next;
+        };
+
+        return next.next = next;
+      }
+    }
+
+    // Return an iterator with no values.
+    return { next: doneResult };
+  }
+  exports.values = values;
+
+  function doneResult() {
+    return { value: undefined, done: true };
+  }
+
+  Context.prototype = {
+    constructor: Context,
+
+    reset: function(skipTempReset) {
+      this.prev = 0;
+      this.next = 0;
+      // Resetting context._sent for legacy support of Babel's
+      // function.sent implementation.
+      this.sent = this._sent = undefined;
+      this.done = false;
+      this.delegate = null;
+
+      this.method = "next";
+      this.arg = undefined;
+
+      this.tryEntries.forEach(resetTryEntry);
+
+      if (!skipTempReset) {
+        for (var name in this) {
+          // Not sure about the optimal order of these conditions:
+          if (name.charAt(0) === "t" &&
+              hasOwn.call(this, name) &&
+              !isNaN(+name.slice(1))) {
+            this[name] = undefined;
+          }
+        }
+      }
+    },
+
+    stop: function() {
+      this.done = true;
+
+      var rootEntry = this.tryEntries[0];
+      var rootRecord = rootEntry.completion;
+      if (rootRecord.type === "throw") {
+        throw rootRecord.arg;
+      }
+
+      return this.rval;
+    },
+
+    dispatchException: function(exception) {
+      if (this.done) {
+        throw exception;
+      }
+
+      var context = this;
+      function handle(loc, caught) {
+        record.type = "throw";
+        record.arg = exception;
+        context.next = loc;
+
+        if (caught) {
+          // If the dispatched exception was caught by a catch block,
+          // then let that catch block handle the exception normally.
+          context.method = "next";
+          context.arg = undefined;
+        }
+
+        return !! caught;
+      }
+
+      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+        var entry = this.tryEntries[i];
+        var record = entry.completion;
+
+        if (entry.tryLoc === "root") {
+          // Exception thrown outside of any try block that could handle
+          // it, so set the completion value of the entire function to
+          // throw the exception.
+          return handle("end");
+        }
+
+        if (entry.tryLoc <= this.prev) {
+          var hasCatch = hasOwn.call(entry, "catchLoc");
+          var hasFinally = hasOwn.call(entry, "finallyLoc");
+
+          if (hasCatch && hasFinally) {
+            if (this.prev < entry.catchLoc) {
+              return handle(entry.catchLoc, true);
+            } else if (this.prev < entry.finallyLoc) {
+              return handle(entry.finallyLoc);
+            }
+
+          } else if (hasCatch) {
+            if (this.prev < entry.catchLoc) {
+              return handle(entry.catchLoc, true);
+            }
+
+          } else if (hasFinally) {
+            if (this.prev < entry.finallyLoc) {
+              return handle(entry.finallyLoc);
+            }
+
+          } else {
+            throw new Error("try statement without catch or finally");
+          }
+        }
+      }
+    },
+
+    abrupt: function(type, arg) {
+      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+        var entry = this.tryEntries[i];
+        if (entry.tryLoc <= this.prev &&
+            hasOwn.call(entry, "finallyLoc") &&
+            this.prev < entry.finallyLoc) {
+          var finallyEntry = entry;
+          break;
+        }
+      }
+
+      if (finallyEntry &&
+          (type === "break" ||
+           type === "continue") &&
+          finallyEntry.tryLoc <= arg &&
+          arg <= finallyEntry.finallyLoc) {
+        // Ignore the finally entry if control is not jumping to a
+        // location outside the try/catch block.
+        finallyEntry = null;
+      }
+
+      var record = finallyEntry ? finallyEntry.completion : {};
+      record.type = type;
+      record.arg = arg;
+
+      if (finallyEntry) {
+        this.method = "next";
+        this.next = finallyEntry.finallyLoc;
+        return ContinueSentinel;
+      }
+
+      return this.complete(record);
+    },
+
+    complete: function(record, afterLoc) {
+      if (record.type === "throw") {
+        throw record.arg;
+      }
+
+      if (record.type === "break" ||
+          record.type === "continue") {
+        this.next = record.arg;
+      } else if (record.type === "return") {
+        this.rval = this.arg = record.arg;
+        this.method = "return";
+        this.next = "end";
+      } else if (record.type === "normal" && afterLoc) {
+        this.next = afterLoc;
+      }
+
+      return ContinueSentinel;
+    },
+
+    finish: function(finallyLoc) {
+      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+        var entry = this.tryEntries[i];
+        if (entry.finallyLoc === finallyLoc) {
+          this.complete(entry.completion, entry.afterLoc);
+          resetTryEntry(entry);
+          return ContinueSentinel;
+        }
+      }
+    },
+
+    "catch": function(tryLoc) {
+      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+        var entry = this.tryEntries[i];
+        if (entry.tryLoc === tryLoc) {
+          var record = entry.completion;
+          if (record.type === "throw") {
+            var thrown = record.arg;
+            resetTryEntry(entry);
+          }
+          return thrown;
+        }
+      }
+
+      // The context.catch method must only be called with a location
+      // argument that corresponds to a known catch block.
+      throw new Error("illegal catch attempt");
+    },
+
+    delegateYield: function(iterable, resultName, nextLoc) {
+      this.delegate = {
+        iterator: values(iterable),
+        resultName: resultName,
+        nextLoc: nextLoc
+      };
+
+      if (this.method === "next") {
+        // Deliberately forget the last sent value so that we don't
+        // accidentally pass it on to the delegate.
+        this.arg = undefined;
+      }
+
+      return ContinueSentinel;
+    }
+  };
+
+  // Regardless of whether this script is executing as a CommonJS module
+  // or not, return the runtime object so that we can declare the variable
+  // regeneratorRuntime in the outer scope, which allows this module to be
+  // injected easily by `bin/regenerator --include-runtime script.js`.
+  return exports;
+
+}(
+  // If this script is executing as a CommonJS module, use module.exports
+  // as the regeneratorRuntime namespace. Otherwise create a new empty
+  // object. Either way, the resulting object will be used to initialize
+  // the regeneratorRuntime variable at the top of this file.
+  typeof module === "object" ? module.exports : {}
+));
+
+try {
+  regeneratorRuntime = runtime;
+} catch (accidentalStrictMode) {
+  // This module should not be running in strict mode, so the above
+  // assignment should always work unless something is misconfigured. Just
+  // in case runtime.js accidentally runs in strict mode, in modern engines
+  // we can explicitly access globalThis. In older engines we can escape
+  // strict mode using a global Function call. This could conceivably fail
+  // if a Content Security Policy forbids using Function, but in that case
+  // the proper solution is to fix the accidental strict mode problem. If
+  // you've misconfigured your bundler to force strict mode and applied a
+  // CSP to forbid Function, and you're not willing to fix either of those
+  // problems, please detail your unique predicament in a GitHub issue.
+  if (typeof globalThis === "object") {
+    globalThis.regeneratorRuntime = runtime;
+  } else {
+    Function("r", "regeneratorRuntime = r")(runtime);
+  }
+}
diff --git a/node_modules/canvg/package.json b/node_modules/canvg/package.json
new file mode 100644
index 0000000..35c51da
--- /dev/null
+++ b/node_modules/canvg/package.json
@@ -0,0 +1,60 @@
+{
+  "name": "canvg",
+  "version": "3.0.10",
+  "description": "JavaScript SVG parser and renderer on Canvas.",
+  "authors": [
+    {
+      "name": "Gabe Lerner",
+      "email": "gabelerner@gmail.com"
+    },
+    {
+      "name": "Brett Zamir"
+    },
+    {
+      "name": "Dan Green",
+      "url": "https://twitter.com/dangreen58"
+    }
+  ],
+  "license": "MIT",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/canvg/canvg"
+  },
+  "bugs": {
+    "url": "https://github.com/canvg/canvg/issues"
+  },
+  "type": "module",
+  "sideEffects": false,
+  "main": "lib/index.cjs",
+  "module": "lib/index.es.js",
+  "raw": "lib/index.babel.js",
+  "umd": "lib/umd.js",
+  "types": "lib/index.d.ts",
+  "exports": {
+    "require": "./lib/index.cjs",
+    "import": "./lib/index.es.js"
+  },
+  "engines": {
+    "node": ">=10.0.0"
+  },
+  "keywords": [
+    "javascript",
+    "client",
+    "browser",
+    "svg",
+    "canvas"
+  ],
+  "dependencies": {
+    "@babel/runtime": "^7.12.5",
+    "@types/raf": "^3.4.0",
+    "core-js": "^3.8.3",
+    "raf": "^3.4.1",
+    "regenerator-runtime": "^0.13.7",
+    "rgbcolor": "^1.0.1",
+    "stackblur-canvas": "^2.0.0",
+    "svg-pathdata": "^6.0.3"
+  },
+  "files": [
+    "lib"
+  ]
+}
diff --git a/node_modules/core-js/LICENSE b/node_modules/core-js/LICENSE
new file mode 100644
index 0000000..a18fea2
--- /dev/null
+++ b/node_modules/core-js/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2014-2025 Denis Pushkarev
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/core-js/README.md b/node_modules/core-js/README.md
new file mode 100644
index 0000000..9d57a67
--- /dev/null
+++ b/node_modules/core-js/README.md
@@ -0,0 +1,95 @@
+![logo](https://user-images.githubusercontent.com/2213682/146607186-8e13ddef-26a4-4ebf-befd-5aac9d77c090.png)
+
+<div align="center">
+
+[![fundraising](https://opencollective.com/core-js/all/badge.svg?label=fundraising)](https://opencollective.com/core-js) [![PRs welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/zloirock/core-js/blob/master/CONTRIBUTING.md) [![version](https://img.shields.io/npm/v/core-js.svg)](https://www.npmjs.com/package/core-js) [![core-js downloads](https://img.shields.io/npm/dm/core-js.svg?label=npm%20i%20core-js)](https://npm-stat.com/charts.html?package=core-js&package=core-js-pure&package=core-js-compat&from=2014-11-18)
+
+</div>
+
+**I highly recommend reading this: [So, what's next?](https://github.com/zloirock/core-js/blob/master/docs/2023-02-14-so-whats-next.md)**
+---
+
+> Modular standard library for JavaScript. Includes polyfills for [ECMAScript up to 2023](https://github.com/zloirock/core-js#ecmascript): [promises](https://github.com/zloirock/core-js#ecmascript-promise), [symbols](https://github.com/zloirock/core-js#ecmascript-symbol), [collections](https://github.com/zloirock/core-js#ecmascript-collections), iterators, [typed arrays](https://github.com/zloirock/core-js#ecmascript-typed-arrays), many other features, [ECMAScript proposals](https://github.com/zloirock/core-js#ecmascript-proposals), [some cross-platform WHATWG / W3C features and proposals](#web-standards) like [`URL`](https://github.com/zloirock/core-js#url-and-urlsearchparams). You can load only required features or use it without global namespace pollution.
+
+## Raising funds
+
+`core-js` isn't backed by a company, so the future of this project depends on you. Become a sponsor or a backer if you are interested in `core-js`: [**Open Collective**](https://opencollective.com/core-js), [**Patreon**](https://patreon.com/zloirock), [**Boosty**](https://boosty.to/zloirock), **Bitcoin ( bc1qlea7544qtsmj2rayg0lthvza9fau63ux0fstcz )**, [**Alipay**](https://user-images.githubusercontent.com/2213682/219464783-c17ad329-17ce-4795-82a7-f609493345ed.png).
+
+---
+
+<a href="https://opencollective.com/core-js/sponsor/0/website" target="_blank"><img src="https://opencollective.com/core-js/sponsor/0/avatar.svg"></a><a href="https://opencollective.com/core-js/sponsor/1/website" target="_blank"><img src="https://opencollective.com/core-js/sponsor/1/avatar.svg"></a><a href="https://opencollective.com/core-js/sponsor/2/website" target="_blank"><img src="https://opencollective.com/core-js/sponsor/2/avatar.svg"></a><a href="https://opencollective.com/core-js/sponsor/3/website" target="_blank"><img src="https://opencollective.com/core-js/sponsor/3/avatar.svg"></a><a href="https://opencollective.com/core-js/sponsor/4/website" target="_blank"><img src="https://opencollective.com/core-js/sponsor/4/avatar.svg"></a><a href="https://opencollective.com/core-js/sponsor/5/website" target="_blank"><img src="https://opencollective.com/core-js/sponsor/5/avatar.svg"></a><a href="https://opencollective.com/core-js/sponsor/6/website" target="_blank"><img src="https://opencollective.com/core-js/sponsor/6/avatar.svg"></a><a href="https://opencollective.com/core-js/sponsor/7/website" target="_blank"><img src="https://opencollective.com/core-js/sponsor/7/avatar.svg"></a><a href="https://opencollective.com/core-js/sponsor/8/website" target="_blank"><img src="https://opencollective.com/core-js/sponsor/8/avatar.svg"></a><a href="https://opencollective.com/core-js/sponsor/9/website" target="_blank"><img src="https://opencollective.com/core-js/sponsor/9/avatar.svg"></a><a href="https://opencollective.com/core-js/sponsor/10/website" target="_blank"><img src="https://opencollective.com/core-js/sponsor/10/avatar.svg"></a><a href="https://opencollective.com/core-js/sponsor/11/website" target="_blank"><img src="https://opencollective.com/core-js/sponsor/11/avatar.svg"></a>
+
+---
+
+<a href="https://opencollective.com/core-js#backers" target="_blank"><img src="https://opencollective.com/core-js/backers.svg?width=890"></a>
+
+---
+
+[*Example of usage*](https://tinyurl.com/2mknex43):
+```js
+import 'core-js/actual';
+
+Promise.resolve(42).then(it => console.log(it)); // => 42
+
+Array.from(new Set([1, 2, 3]).union(new Set([3, 4, 5]))); // => [1, 2, 3, 4, 5]
+
+[1, 2].flatMap(it => [it, it]); // => [1, 1, 2, 2]
+
+(function * (i) { while (true) yield i++; })(1)
+  .drop(1).take(5)
+  .filter(it => it % 2)
+  .map(it => it ** 2)
+  .toArray(); // => [9, 25]
+
+structuredClone(new Set([1, 2, 3])); // => new Set([1, 2, 3])
+```
+
+*You can load only required features*:
+```js
+import 'core-js/actual/promise';
+import 'core-js/actual/set';
+import 'core-js/actual/iterator';
+import 'core-js/actual/array/from';
+import 'core-js/actual/array/flat-map';
+import 'core-js/actual/structured-clone';
+
+Promise.resolve(42).then(it => console.log(it)); // => 42
+
+Array.from(new Set([1, 2, 3]).union(new Set([3, 4, 5]))); // => [1, 2, 3, 4, 5]
+
+[1, 2].flatMap(it => [it, it]); // => [1, 1, 2, 2]
+
+(function * (i) { while (true) yield i++; })(1)
+  .drop(1).take(5)
+  .filter(it => it % 2)
+  .map(it => it ** 2)
+  .toArray(); // => [9, 25]
+
+structuredClone(new Set([1, 2, 3])); // => new Set([1, 2, 3])
+```
+
+*Or use it without global namespace pollution*:
+```js
+import Promise from 'core-js-pure/actual/promise';
+import Set from 'core-js-pure/actual/set';
+import Iterator from 'core-js-pure/actual/iterator';
+import from from 'core-js-pure/actual/array/from';
+import flatMap from 'core-js-pure/actual/array/flat-map';
+import structuredClone from 'core-js-pure/actual/structured-clone';
+
+Promise.resolve(42).then(it => console.log(it)); // => 42
+
+from(new Set([1, 2, 3]).union(new Set([3, 4, 5]))); // => [1, 2, 3, 4, 5]
+
+flatMap([1, 2], it => [it, it]); // => [1, 1, 2, 2]
+
+Iterator.from(function * (i) { while (true) yield i++; }(1))
+  .drop(1).take(5)
+  .filter(it => it % 2)
+  .map(it => it ** 2)
+  .toArray(); // => [9, 25]
+
+structuredClone(new Set([1, 2, 3])); // => new Set([1, 2, 3])
+```
+
+**It's a global version (first 2 examples), for more info see [`core-js` documentation](https://github.com/zloirock/core-js/blob/master/README.md).**
diff --git a/node_modules/core-js/actual/README.md b/node_modules/core-js/actual/README.md
new file mode 100644
index 0000000..62c88a0
--- /dev/null
+++ b/node_modules/core-js/actual/README.md
@@ -0,0 +1 @@
+This folder contains entry points for all `core-js` features with dependencies. It's the recommended way for usage only required features.
diff --git a/node_modules/core-js/actual/aggregate-error.js b/node_modules/core-js/actual/aggregate-error.js
new file mode 100644
index 0000000..78ab986
--- /dev/null
+++ b/node_modules/core-js/actual/aggregate-error.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../stable/aggregate-error');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array-buffer/constructor.js b/node_modules/core-js/actual/array-buffer/constructor.js
new file mode 100644
index 0000000..f6e214d
--- /dev/null
+++ b/node_modules/core-js/actual/array-buffer/constructor.js
@@ -0,0 +1,7 @@
+'use strict';
+var parent = require('../../stable/array-buffer/constructor');
+require('../../modules/esnext.array-buffer.detached');
+require('../../modules/esnext.array-buffer.transfer');
+require('../../modules/esnext.array-buffer.transfer-to-fixed-length');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array-buffer/detached.js b/node_modules/core-js/actual/array-buffer/detached.js
new file mode 100644
index 0000000..8861010
--- /dev/null
+++ b/node_modules/core-js/actual/array-buffer/detached.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../stable/array-buffer/detached');
+require('../../modules/esnext.array-buffer.detached');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array-buffer/index.js b/node_modules/core-js/actual/array-buffer/index.js
new file mode 100644
index 0000000..47e89f4
--- /dev/null
+++ b/node_modules/core-js/actual/array-buffer/index.js
@@ -0,0 +1,7 @@
+'use strict';
+var parent = require('../../stable/array-buffer');
+require('../../modules/esnext.array-buffer.detached');
+require('../../modules/esnext.array-buffer.transfer');
+require('../../modules/esnext.array-buffer.transfer-to-fixed-length');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array-buffer/is-view.js b/node_modules/core-js/actual/array-buffer/is-view.js
new file mode 100644
index 0000000..e84330c
--- /dev/null
+++ b/node_modules/core-js/actual/array-buffer/is-view.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/array-buffer/is-view');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array-buffer/slice.js b/node_modules/core-js/actual/array-buffer/slice.js
new file mode 100644
index 0000000..750d712
--- /dev/null
+++ b/node_modules/core-js/actual/array-buffer/slice.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/array-buffer/slice');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array-buffer/transfer-to-fixed-length.js b/node_modules/core-js/actual/array-buffer/transfer-to-fixed-length.js
new file mode 100644
index 0000000..2d5e4c8
--- /dev/null
+++ b/node_modules/core-js/actual/array-buffer/transfer-to-fixed-length.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../stable/array-buffer/transfer-to-fixed-length');
+require('../../modules/esnext.array-buffer.transfer-to-fixed-length');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array-buffer/transfer.js b/node_modules/core-js/actual/array-buffer/transfer.js
new file mode 100644
index 0000000..9f1700a
--- /dev/null
+++ b/node_modules/core-js/actual/array-buffer/transfer.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../stable/array-buffer/transfer');
+require('../../modules/esnext.array-buffer.transfer');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/at.js b/node_modules/core-js/actual/array/at.js
new file mode 100644
index 0000000..4a39536
--- /dev/null
+++ b/node_modules/core-js/actual/array/at.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/array/at');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/concat.js b/node_modules/core-js/actual/array/concat.js
new file mode 100644
index 0000000..76ba9be
--- /dev/null
+++ b/node_modules/core-js/actual/array/concat.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/array/concat');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/copy-within.js b/node_modules/core-js/actual/array/copy-within.js
new file mode 100644
index 0000000..1719cc8
--- /dev/null
+++ b/node_modules/core-js/actual/array/copy-within.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/array/copy-within');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/entries.js b/node_modules/core-js/actual/array/entries.js
new file mode 100644
index 0000000..014c288
--- /dev/null
+++ b/node_modules/core-js/actual/array/entries.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/array/entries');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/every.js b/node_modules/core-js/actual/array/every.js
new file mode 100644
index 0000000..5c67c69
--- /dev/null
+++ b/node_modules/core-js/actual/array/every.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/array/every');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/fill.js b/node_modules/core-js/actual/array/fill.js
new file mode 100644
index 0000000..cd3a527
--- /dev/null
+++ b/node_modules/core-js/actual/array/fill.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/array/fill');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/filter.js b/node_modules/core-js/actual/array/filter.js
new file mode 100644
index 0000000..e975a05
--- /dev/null
+++ b/node_modules/core-js/actual/array/filter.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/array/filter');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/find-index.js b/node_modules/core-js/actual/array/find-index.js
new file mode 100644
index 0000000..a90bcfd
--- /dev/null
+++ b/node_modules/core-js/actual/array/find-index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/array/find-index');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/find-last-index.js b/node_modules/core-js/actual/array/find-last-index.js
new file mode 100644
index 0000000..1c29cfc
--- /dev/null
+++ b/node_modules/core-js/actual/array/find-last-index.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.array.find-last-index');
+var parent = require('../../stable/array/find-last-index');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/find-last.js b/node_modules/core-js/actual/array/find-last.js
new file mode 100644
index 0000000..c215b31
--- /dev/null
+++ b/node_modules/core-js/actual/array/find-last.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.array.find-last');
+var parent = require('../../stable/array/find-last');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/find.js b/node_modules/core-js/actual/array/find.js
new file mode 100644
index 0000000..2a4b74f
--- /dev/null
+++ b/node_modules/core-js/actual/array/find.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/array/find');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/flat-map.js b/node_modules/core-js/actual/array/flat-map.js
new file mode 100644
index 0000000..e27b6d3
--- /dev/null
+++ b/node_modules/core-js/actual/array/flat-map.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/array/flat-map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/flat.js b/node_modules/core-js/actual/array/flat.js
new file mode 100644
index 0000000..7a7779b
--- /dev/null
+++ b/node_modules/core-js/actual/array/flat.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/array/flat');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/for-each.js b/node_modules/core-js/actual/array/for-each.js
new file mode 100644
index 0000000..8f7370e
--- /dev/null
+++ b/node_modules/core-js/actual/array/for-each.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/array/for-each');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/from-async.js b/node_modules/core-js/actual/array/from-async.js
new file mode 100644
index 0000000..875bc68
--- /dev/null
+++ b/node_modules/core-js/actual/array/from-async.js
@@ -0,0 +1,9 @@
+'use strict';
+require('../../modules/es.array.iterator');
+require('../../modules/es.object.to-string');
+require('../../modules/es.promise');
+require('../../modules/es.string.iterator');
+require('../../modules/esnext.array.from-async');
+var path = require('../../internals/path');
+
+module.exports = path.Array.fromAsync;
diff --git a/node_modules/core-js/actual/array/from.js b/node_modules/core-js/actual/array/from.js
new file mode 100644
index 0000000..ee3ee01
--- /dev/null
+++ b/node_modules/core-js/actual/array/from.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/array/from');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/group-by-to-map.js b/node_modules/core-js/actual/array/group-by-to-map.js
new file mode 100644
index 0000000..d29af87
--- /dev/null
+++ b/node_modules/core-js/actual/array/group-by-to-map.js
@@ -0,0 +1,7 @@
+'use strict';
+require('../../modules/es.map');
+require('../../modules/es.object.to-string');
+require('../../modules/esnext.array.group-by-to-map');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'groupByToMap');
diff --git a/node_modules/core-js/actual/array/group-by.js b/node_modules/core-js/actual/array/group-by.js
new file mode 100644
index 0000000..0044399
--- /dev/null
+++ b/node_modules/core-js/actual/array/group-by.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.array.group-by');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'groupBy');
diff --git a/node_modules/core-js/actual/array/group-to-map.js b/node_modules/core-js/actual/array/group-to-map.js
new file mode 100644
index 0000000..67d3e71
--- /dev/null
+++ b/node_modules/core-js/actual/array/group-to-map.js
@@ -0,0 +1,7 @@
+'use strict';
+require('../../modules/es.map');
+require('../../modules/es.object.to-string');
+require('../../modules/esnext.array.group-to-map');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'groupToMap');
diff --git a/node_modules/core-js/actual/array/group.js b/node_modules/core-js/actual/array/group.js
new file mode 100644
index 0000000..0e3ac69
--- /dev/null
+++ b/node_modules/core-js/actual/array/group.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.array.group');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'group');
diff --git a/node_modules/core-js/actual/array/includes.js b/node_modules/core-js/actual/array/includes.js
new file mode 100644
index 0000000..2bf0fdb
--- /dev/null
+++ b/node_modules/core-js/actual/array/includes.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/array/includes');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/index-of.js b/node_modules/core-js/actual/array/index-of.js
new file mode 100644
index 0000000..efe592b
--- /dev/null
+++ b/node_modules/core-js/actual/array/index-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/array/index-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/index.js b/node_modules/core-js/actual/array/index.js
new file mode 100644
index 0000000..4ffabf5
--- /dev/null
+++ b/node_modules/core-js/actual/array/index.js
@@ -0,0 +1,18 @@
+'use strict';
+var parent = require('../../stable/array');
+require('../../modules/es.promise');
+require('../../modules/es.object.to-string');
+require('../../modules/esnext.array.from-async');
+require('../../modules/esnext.array.group');
+require('../../modules/esnext.array.group-to-map');
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.array.find-last');
+require('../../modules/esnext.array.find-last-index');
+require('../../modules/esnext.array.group-by');
+require('../../modules/esnext.array.group-by-to-map');
+require('../../modules/esnext.array.to-reversed');
+require('../../modules/esnext.array.to-sorted');
+require('../../modules/esnext.array.to-spliced');
+require('../../modules/esnext.array.with');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/is-array.js b/node_modules/core-js/actual/array/is-array.js
new file mode 100644
index 0000000..95c9b86
--- /dev/null
+++ b/node_modules/core-js/actual/array/is-array.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/array/is-array');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/iterator.js b/node_modules/core-js/actual/array/iterator.js
new file mode 100644
index 0000000..d61e2e0
--- /dev/null
+++ b/node_modules/core-js/actual/array/iterator.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/array/iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/join.js b/node_modules/core-js/actual/array/join.js
new file mode 100644
index 0000000..3bdb90e
--- /dev/null
+++ b/node_modules/core-js/actual/array/join.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/array/join');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/keys.js b/node_modules/core-js/actual/array/keys.js
new file mode 100644
index 0000000..117fffc
--- /dev/null
+++ b/node_modules/core-js/actual/array/keys.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/array/keys');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/last-index-of.js b/node_modules/core-js/actual/array/last-index-of.js
new file mode 100644
index 0000000..af35831
--- /dev/null
+++ b/node_modules/core-js/actual/array/last-index-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/array/last-index-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/map.js b/node_modules/core-js/actual/array/map.js
new file mode 100644
index 0000000..575c07b
--- /dev/null
+++ b/node_modules/core-js/actual/array/map.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/array/map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/of.js b/node_modules/core-js/actual/array/of.js
new file mode 100644
index 0000000..45b8aef
--- /dev/null
+++ b/node_modules/core-js/actual/array/of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/array/of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/push.js b/node_modules/core-js/actual/array/push.js
new file mode 100644
index 0000000..d4d5d6f
--- /dev/null
+++ b/node_modules/core-js/actual/array/push.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/array/push');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/reduce-right.js b/node_modules/core-js/actual/array/reduce-right.js
new file mode 100644
index 0000000..355656b
--- /dev/null
+++ b/node_modules/core-js/actual/array/reduce-right.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/array/reduce-right');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/reduce.js b/node_modules/core-js/actual/array/reduce.js
new file mode 100644
index 0000000..f4ad08c
--- /dev/null
+++ b/node_modules/core-js/actual/array/reduce.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/array/reduce');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/reverse.js b/node_modules/core-js/actual/array/reverse.js
new file mode 100644
index 0000000..9104318
--- /dev/null
+++ b/node_modules/core-js/actual/array/reverse.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/array/reverse');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/slice.js b/node_modules/core-js/actual/array/slice.js
new file mode 100644
index 0000000..e19733b
--- /dev/null
+++ b/node_modules/core-js/actual/array/slice.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/array/slice');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/some.js b/node_modules/core-js/actual/array/some.js
new file mode 100644
index 0000000..451975b
--- /dev/null
+++ b/node_modules/core-js/actual/array/some.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/array/some');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/sort.js b/node_modules/core-js/actual/array/sort.js
new file mode 100644
index 0000000..2425dfa
--- /dev/null
+++ b/node_modules/core-js/actual/array/sort.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/array/sort');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/splice.js b/node_modules/core-js/actual/array/splice.js
new file mode 100644
index 0000000..71dbb51
--- /dev/null
+++ b/node_modules/core-js/actual/array/splice.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/array/splice');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/to-reversed.js b/node_modules/core-js/actual/array/to-reversed.js
new file mode 100644
index 0000000..459dc5d
--- /dev/null
+++ b/node_modules/core-js/actual/array/to-reversed.js
@@ -0,0 +1,6 @@
+'use strict';
+var parent = require('../../stable/array/to-reversed');
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.array.to-reversed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/to-sorted.js b/node_modules/core-js/actual/array/to-sorted.js
new file mode 100644
index 0000000..00444f0
--- /dev/null
+++ b/node_modules/core-js/actual/array/to-sorted.js
@@ -0,0 +1,6 @@
+'use strict';
+var parent = require('../../stable/array/to-sorted');
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.array.to-sorted');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/to-spliced.js b/node_modules/core-js/actual/array/to-spliced.js
new file mode 100644
index 0000000..18fea69
--- /dev/null
+++ b/node_modules/core-js/actual/array/to-spliced.js
@@ -0,0 +1,6 @@
+'use strict';
+var parent = require('../../stable/array/to-spliced');
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.array.to-spliced');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/unshift.js b/node_modules/core-js/actual/array/unshift.js
new file mode 100644
index 0000000..8401263
--- /dev/null
+++ b/node_modules/core-js/actual/array/unshift.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/array/unshift');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/values.js b/node_modules/core-js/actual/array/values.js
new file mode 100644
index 0000000..ae813ae
--- /dev/null
+++ b/node_modules/core-js/actual/array/values.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/array/values');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/at.js b/node_modules/core-js/actual/array/virtual/at.js
new file mode 100644
index 0000000..578d5ad
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/at.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/array/virtual/at');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/concat.js b/node_modules/core-js/actual/array/virtual/concat.js
new file mode 100644
index 0000000..f4b1589
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/concat.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/array/virtual/concat');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/copy-within.js b/node_modules/core-js/actual/array/virtual/copy-within.js
new file mode 100644
index 0000000..45039b7
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/copy-within.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/array/virtual/copy-within');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/entries.js b/node_modules/core-js/actual/array/virtual/entries.js
new file mode 100644
index 0000000..68ac70a
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/entries.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/array/virtual/entries');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/every.js b/node_modules/core-js/actual/array/virtual/every.js
new file mode 100644
index 0000000..b49636f
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/every.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/array/virtual/every');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/fill.js b/node_modules/core-js/actual/array/virtual/fill.js
new file mode 100644
index 0000000..1ab5b05
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/fill.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/array/virtual/fill');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/filter.js b/node_modules/core-js/actual/array/virtual/filter.js
new file mode 100644
index 0000000..7b7dfbb
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/filter.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/array/virtual/filter');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/find-index.js b/node_modules/core-js/actual/array/virtual/find-index.js
new file mode 100644
index 0000000..c924f63
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/find-index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/array/virtual/find-index');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/find-last-index.js b/node_modules/core-js/actual/array/virtual/find-last-index.js
new file mode 100644
index 0000000..3c0397f
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/find-last-index.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/esnext.array.find-last-index');
+var parent = require('../../../stable/array/virtual/find-last-index');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/find-last.js b/node_modules/core-js/actual/array/virtual/find-last.js
new file mode 100644
index 0000000..ab53b1c
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/find-last.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/esnext.array.find-last');
+var parent = require('../../../stable/array/virtual/find-last');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/find.js b/node_modules/core-js/actual/array/virtual/find.js
new file mode 100644
index 0000000..0cf8df6
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/find.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/array/virtual/find');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/flat-map.js b/node_modules/core-js/actual/array/virtual/flat-map.js
new file mode 100644
index 0000000..ae16b20
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/flat-map.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/array/virtual/flat-map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/flat.js b/node_modules/core-js/actual/array/virtual/flat.js
new file mode 100644
index 0000000..a02b569
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/flat.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/array/virtual/flat');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/for-each.js b/node_modules/core-js/actual/array/virtual/for-each.js
new file mode 100644
index 0000000..a5e179d
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/for-each.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/array/virtual/for-each');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/group-by-to-map.js b/node_modules/core-js/actual/array/virtual/group-by-to-map.js
new file mode 100644
index 0000000..617aaa3
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/group-by-to-map.js
@@ -0,0 +1,7 @@
+'use strict';
+require('../../../modules/es.map');
+require('../../../modules/es.object.to-string');
+require('../../../modules/esnext.array.group-by-to-map');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'groupByToMap');
diff --git a/node_modules/core-js/actual/array/virtual/group-by.js b/node_modules/core-js/actual/array/virtual/group-by.js
new file mode 100644
index 0000000..af7eb76
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/group-by.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/esnext.array.group-by');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'groupBy');
diff --git a/node_modules/core-js/actual/array/virtual/group-to-map.js b/node_modules/core-js/actual/array/virtual/group-to-map.js
new file mode 100644
index 0000000..6cfad20
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/group-to-map.js
@@ -0,0 +1,7 @@
+'use strict';
+require('../../../modules/es.map');
+require('../../../modules/es.object.to-string');
+require('../../../modules/esnext.array.group-to-map');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'groupToMap');
diff --git a/node_modules/core-js/actual/array/virtual/group.js b/node_modules/core-js/actual/array/virtual/group.js
new file mode 100644
index 0000000..ab3beac
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/group.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/esnext.array.group');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'group');
diff --git a/node_modules/core-js/actual/array/virtual/includes.js b/node_modules/core-js/actual/array/virtual/includes.js
new file mode 100644
index 0000000..dafeb0a
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/includes.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/array/virtual/includes');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/index-of.js b/node_modules/core-js/actual/array/virtual/index-of.js
new file mode 100644
index 0000000..1cc47c0
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/index-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/array/virtual/index-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/index.js b/node_modules/core-js/actual/array/virtual/index.js
new file mode 100644
index 0000000..5c73843
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/index.js
@@ -0,0 +1,17 @@
+'use strict';
+var parent = require('../../../stable/array/virtual');
+require('../../../modules/es.map');
+require('../../../modules/es.object.to-string');
+require('../../../modules/esnext.array.group');
+require('../../../modules/esnext.array.group-to-map');
+// TODO: Remove from `core-js@4`
+require('../../../modules/esnext.array.find-last');
+require('../../../modules/esnext.array.find-last-index');
+require('../../../modules/esnext.array.group-by');
+require('../../../modules/esnext.array.group-by-to-map');
+require('../../../modules/esnext.array.to-reversed');
+require('../../../modules/esnext.array.to-sorted');
+require('../../../modules/esnext.array.to-spliced');
+require('../../../modules/esnext.array.with');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/iterator.js b/node_modules/core-js/actual/array/virtual/iterator.js
new file mode 100644
index 0000000..78515f8
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/iterator.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/array/virtual/iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/join.js b/node_modules/core-js/actual/array/virtual/join.js
new file mode 100644
index 0000000..58e7a1e
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/join.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/array/virtual/join');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/keys.js b/node_modules/core-js/actual/array/virtual/keys.js
new file mode 100644
index 0000000..d60d648
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/keys.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/array/virtual/keys');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/last-index-of.js b/node_modules/core-js/actual/array/virtual/last-index-of.js
new file mode 100644
index 0000000..b512303
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/last-index-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/array/virtual/last-index-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/map.js b/node_modules/core-js/actual/array/virtual/map.js
new file mode 100644
index 0000000..33c53e0
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/map.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/array/virtual/map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/push.js b/node_modules/core-js/actual/array/virtual/push.js
new file mode 100644
index 0000000..b33a19b
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/push.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/array/virtual/push');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/reduce-right.js b/node_modules/core-js/actual/array/virtual/reduce-right.js
new file mode 100644
index 0000000..8c87c1a
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/reduce-right.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/array/virtual/reduce-right');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/reduce.js b/node_modules/core-js/actual/array/virtual/reduce.js
new file mode 100644
index 0000000..8efc567
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/reduce.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/array/virtual/reduce');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/reverse.js b/node_modules/core-js/actual/array/virtual/reverse.js
new file mode 100644
index 0000000..e1c69f3
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/reverse.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/array/virtual/reverse');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/slice.js b/node_modules/core-js/actual/array/virtual/slice.js
new file mode 100644
index 0000000..992e9ee
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/slice.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/array/virtual/slice');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/some.js b/node_modules/core-js/actual/array/virtual/some.js
new file mode 100644
index 0000000..1bc1105
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/some.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/array/virtual/some');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/sort.js b/node_modules/core-js/actual/array/virtual/sort.js
new file mode 100644
index 0000000..92b2017
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/sort.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/array/virtual/sort');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/splice.js b/node_modules/core-js/actual/array/virtual/splice.js
new file mode 100644
index 0000000..a281196
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/splice.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/array/virtual/splice');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/to-reversed.js b/node_modules/core-js/actual/array/virtual/to-reversed.js
new file mode 100644
index 0000000..025a3c5
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/to-reversed.js
@@ -0,0 +1,6 @@
+'use strict';
+var parent = require('../../../stable/array/virtual/to-reversed');
+// TODO: Remove from `core-js@4`
+require('../../../modules/esnext.array.to-reversed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/to-sorted.js b/node_modules/core-js/actual/array/virtual/to-sorted.js
new file mode 100644
index 0000000..27c5c96
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/to-sorted.js
@@ -0,0 +1,6 @@
+'use strict';
+var parent = require('../../../stable/array/virtual/to-sorted');
+// TODO: Remove from `core-js@4`
+require('../../../modules/esnext.array.to-sorted');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/to-spliced.js b/node_modules/core-js/actual/array/virtual/to-spliced.js
new file mode 100644
index 0000000..a6da4da
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/to-spliced.js
@@ -0,0 +1,6 @@
+'use strict';
+var parent = require('../../../stable/array/virtual/to-spliced');
+// TODO: Remove from `core-js@4`
+require('../../../modules/esnext.array.to-spliced');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/unshift.js b/node_modules/core-js/actual/array/virtual/unshift.js
new file mode 100644
index 0000000..7cf8b80
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/unshift.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/array/virtual/unshift');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/values.js b/node_modules/core-js/actual/array/virtual/values.js
new file mode 100644
index 0000000..d3dac45
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/values.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/array/virtual/values');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/virtual/with.js b/node_modules/core-js/actual/array/virtual/with.js
new file mode 100644
index 0000000..ab70a39
--- /dev/null
+++ b/node_modules/core-js/actual/array/virtual/with.js
@@ -0,0 +1,6 @@
+'use strict';
+var parent = require('../../../stable/array/virtual/with');
+// TODO: Remove from `core-js@4`
+require('../../../modules/esnext.array.with');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/array/with.js b/node_modules/core-js/actual/array/with.js
new file mode 100644
index 0000000..324e998
--- /dev/null
+++ b/node_modules/core-js/actual/array/with.js
@@ -0,0 +1,6 @@
+'use strict';
+var parent = require('../../stable/array/with');
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.array.with');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/async-disposable-stack/constructor.js b/node_modules/core-js/actual/async-disposable-stack/constructor.js
new file mode 100644
index 0000000..b8b56dd
--- /dev/null
+++ b/node_modules/core-js/actual/async-disposable-stack/constructor.js
@@ -0,0 +1,12 @@
+'use strict';
+require('../../modules/es.error.cause');
+require('../../modules/es.error.to-string');
+require('../../modules/es.object.to-string');
+require('../../modules/es.promise');
+require('../../modules/esnext.suppressed-error.constructor');
+require('../../modules/esnext.async-disposable-stack.constructor');
+require('../../modules/esnext.async-iterator.async-dispose');
+require('../../modules/esnext.iterator.dispose');
+var path = require('../../internals/path');
+
+module.exports = path.AsyncDisposableStack;
diff --git a/node_modules/core-js/actual/async-disposable-stack/index.js b/node_modules/core-js/actual/async-disposable-stack/index.js
new file mode 100644
index 0000000..b8b56dd
--- /dev/null
+++ b/node_modules/core-js/actual/async-disposable-stack/index.js
@@ -0,0 +1,12 @@
+'use strict';
+require('../../modules/es.error.cause');
+require('../../modules/es.error.to-string');
+require('../../modules/es.object.to-string');
+require('../../modules/es.promise');
+require('../../modules/esnext.suppressed-error.constructor');
+require('../../modules/esnext.async-disposable-stack.constructor');
+require('../../modules/esnext.async-iterator.async-dispose');
+require('../../modules/esnext.iterator.dispose');
+var path = require('../../internals/path');
+
+module.exports = path.AsyncDisposableStack;
diff --git a/node_modules/core-js/actual/async-iterator/async-dispose.js b/node_modules/core-js/actual/async-iterator/async-dispose.js
new file mode 100644
index 0000000..8513ef3
--- /dev/null
+++ b/node_modules/core-js/actual/async-iterator/async-dispose.js
@@ -0,0 +1,4 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.promise');
+require('../../modules/esnext.async-iterator.async-dispose');
diff --git a/node_modules/core-js/actual/async-iterator/drop.js b/node_modules/core-js/actual/async-iterator/drop.js
new file mode 100644
index 0000000..e38788f
--- /dev/null
+++ b/node_modules/core-js/actual/async-iterator/drop.js
@@ -0,0 +1,9 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.promise');
+require('../../modules/esnext.async-iterator.constructor');
+require('../../modules/esnext.async-iterator.drop');
+
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('AsyncIterator', 'drop');
diff --git a/node_modules/core-js/actual/async-iterator/every.js b/node_modules/core-js/actual/async-iterator/every.js
new file mode 100644
index 0000000..57ef76e
--- /dev/null
+++ b/node_modules/core-js/actual/async-iterator/every.js
@@ -0,0 +1,9 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.promise');
+require('../../modules/esnext.async-iterator.constructor');
+require('../../modules/esnext.async-iterator.every');
+
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('AsyncIterator', 'every');
diff --git a/node_modules/core-js/actual/async-iterator/filter.js b/node_modules/core-js/actual/async-iterator/filter.js
new file mode 100644
index 0000000..6ca50b1
--- /dev/null
+++ b/node_modules/core-js/actual/async-iterator/filter.js
@@ -0,0 +1,9 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.promise');
+require('../../modules/esnext.async-iterator.constructor');
+require('../../modules/esnext.async-iterator.filter');
+
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('AsyncIterator', 'filter');
diff --git a/node_modules/core-js/actual/async-iterator/find.js b/node_modules/core-js/actual/async-iterator/find.js
new file mode 100644
index 0000000..ed47bae
--- /dev/null
+++ b/node_modules/core-js/actual/async-iterator/find.js
@@ -0,0 +1,9 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.promise');
+require('../../modules/esnext.async-iterator.constructor');
+require('../../modules/esnext.async-iterator.find');
+
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('AsyncIterator', 'find');
diff --git a/node_modules/core-js/actual/async-iterator/flat-map.js b/node_modules/core-js/actual/async-iterator/flat-map.js
new file mode 100644
index 0000000..97c2d18
--- /dev/null
+++ b/node_modules/core-js/actual/async-iterator/flat-map.js
@@ -0,0 +1,9 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.promise');
+require('../../modules/esnext.async-iterator.constructor');
+require('../../modules/esnext.async-iterator.flat-map');
+
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('AsyncIterator', 'flatMap');
diff --git a/node_modules/core-js/actual/async-iterator/for-each.js b/node_modules/core-js/actual/async-iterator/for-each.js
new file mode 100644
index 0000000..9f2be34
--- /dev/null
+++ b/node_modules/core-js/actual/async-iterator/for-each.js
@@ -0,0 +1,9 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.promise');
+require('../../modules/esnext.async-iterator.constructor');
+require('../../modules/esnext.async-iterator.for-each');
+
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('AsyncIterator', 'forEach');
diff --git a/node_modules/core-js/actual/async-iterator/from.js b/node_modules/core-js/actual/async-iterator/from.js
new file mode 100644
index 0000000..e8471c1
--- /dev/null
+++ b/node_modules/core-js/actual/async-iterator/from.js
@@ -0,0 +1,23 @@
+'use strict';
+require('../../modules/es.array.iterator');
+require('../../modules/es.object.to-string');
+require('../../modules/es.promise');
+require('../../modules/es.string.iterator');
+require('../../modules/esnext.async-iterator.constructor');
+require('../../modules/esnext.async-iterator.drop');
+require('../../modules/esnext.async-iterator.every');
+require('../../modules/esnext.async-iterator.filter');
+require('../../modules/esnext.async-iterator.find');
+require('../../modules/esnext.async-iterator.flat-map');
+require('../../modules/esnext.async-iterator.for-each');
+require('../../modules/esnext.async-iterator.from');
+require('../../modules/esnext.async-iterator.map');
+require('../../modules/esnext.async-iterator.reduce');
+require('../../modules/esnext.async-iterator.some');
+require('../../modules/esnext.async-iterator.take');
+require('../../modules/esnext.async-iterator.to-array');
+require('../../modules/web.dom-collections.iterator');
+
+var path = require('../../internals/path');
+
+module.exports = path.AsyncIterator.from;
diff --git a/node_modules/core-js/actual/async-iterator/index.js b/node_modules/core-js/actual/async-iterator/index.js
new file mode 100644
index 0000000..2c85f87
--- /dev/null
+++ b/node_modules/core-js/actual/async-iterator/index.js
@@ -0,0 +1,24 @@
+'use strict';
+require('../../modules/es.array.iterator');
+require('../../modules/es.object.to-string');
+require('../../modules/es.promise');
+require('../../modules/es.string.iterator');
+require('../../modules/esnext.async-iterator.constructor');
+require('../../modules/esnext.async-iterator.async-dispose');
+require('../../modules/esnext.async-iterator.drop');
+require('../../modules/esnext.async-iterator.every');
+require('../../modules/esnext.async-iterator.filter');
+require('../../modules/esnext.async-iterator.find');
+require('../../modules/esnext.async-iterator.flat-map');
+require('../../modules/esnext.async-iterator.for-each');
+require('../../modules/esnext.async-iterator.from');
+require('../../modules/esnext.async-iterator.map');
+require('../../modules/esnext.async-iterator.reduce');
+require('../../modules/esnext.async-iterator.some');
+require('../../modules/esnext.async-iterator.take');
+require('../../modules/esnext.async-iterator.to-array');
+require('../../modules/web.dom-collections.iterator');
+
+var path = require('../../internals/path');
+
+module.exports = path.AsyncIterator;
diff --git a/node_modules/core-js/actual/async-iterator/map.js b/node_modules/core-js/actual/async-iterator/map.js
new file mode 100644
index 0000000..503762d
--- /dev/null
+++ b/node_modules/core-js/actual/async-iterator/map.js
@@ -0,0 +1,9 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.promise');
+require('../../modules/esnext.async-iterator.constructor');
+require('../../modules/esnext.async-iterator.map');
+
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('AsyncIterator', 'map');
diff --git a/node_modules/core-js/actual/async-iterator/reduce.js b/node_modules/core-js/actual/async-iterator/reduce.js
new file mode 100644
index 0000000..07d122c
--- /dev/null
+++ b/node_modules/core-js/actual/async-iterator/reduce.js
@@ -0,0 +1,9 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.promise');
+require('../../modules/esnext.async-iterator.constructor');
+require('../../modules/esnext.async-iterator.reduce');
+
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('AsyncIterator', 'reduce');
diff --git a/node_modules/core-js/actual/async-iterator/some.js b/node_modules/core-js/actual/async-iterator/some.js
new file mode 100644
index 0000000..cb0612a
--- /dev/null
+++ b/node_modules/core-js/actual/async-iterator/some.js
@@ -0,0 +1,9 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.promise');
+require('../../modules/esnext.async-iterator.constructor');
+require('../../modules/esnext.async-iterator.some');
+
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('AsyncIterator', 'some');
diff --git a/node_modules/core-js/actual/async-iterator/take.js b/node_modules/core-js/actual/async-iterator/take.js
new file mode 100644
index 0000000..318528a
--- /dev/null
+++ b/node_modules/core-js/actual/async-iterator/take.js
@@ -0,0 +1,9 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.promise');
+require('../../modules/esnext.async-iterator.constructor');
+require('../../modules/esnext.async-iterator.take');
+
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('AsyncIterator', 'take');
diff --git a/node_modules/core-js/actual/async-iterator/to-array.js b/node_modules/core-js/actual/async-iterator/to-array.js
new file mode 100644
index 0000000..90abd70
--- /dev/null
+++ b/node_modules/core-js/actual/async-iterator/to-array.js
@@ -0,0 +1,9 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.promise');
+require('../../modules/esnext.async-iterator.constructor');
+require('../../modules/esnext.async-iterator.to-array');
+
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('AsyncIterator', 'toArray');
diff --git a/node_modules/core-js/actual/atob.js b/node_modules/core-js/actual/atob.js
new file mode 100644
index 0000000..ec90d10
--- /dev/null
+++ b/node_modules/core-js/actual/atob.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../stable/atob');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/btoa.js b/node_modules/core-js/actual/btoa.js
new file mode 100644
index 0000000..681dcee
--- /dev/null
+++ b/node_modules/core-js/actual/btoa.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../stable/btoa');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/clear-immediate.js b/node_modules/core-js/actual/clear-immediate.js
new file mode 100644
index 0000000..c9445e0
--- /dev/null
+++ b/node_modules/core-js/actual/clear-immediate.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../stable/clear-immediate');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/data-view/get-float16.js b/node_modules/core-js/actual/data-view/get-float16.js
new file mode 100644
index 0000000..4952e3d
--- /dev/null
+++ b/node_modules/core-js/actual/data-view/get-float16.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../stable/data-view/get-float16');
+require('../../modules/esnext.data-view.get-float16');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/data-view/index.js b/node_modules/core-js/actual/data-view/index.js
new file mode 100644
index 0000000..732555e
--- /dev/null
+++ b/node_modules/core-js/actual/data-view/index.js
@@ -0,0 +1,6 @@
+'use strict';
+var parent = require('../../stable/data-view');
+require('../../modules/esnext.data-view.get-float16');
+require('../../modules/esnext.data-view.set-float16');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/data-view/set-float16.js b/node_modules/core-js/actual/data-view/set-float16.js
new file mode 100644
index 0000000..45a0d4f
--- /dev/null
+++ b/node_modules/core-js/actual/data-view/set-float16.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../stable/data-view/set-float16');
+require('../../modules/esnext.data-view.set-float16');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/date/get-year.js b/node_modules/core-js/actual/date/get-year.js
new file mode 100644
index 0000000..b4eff1f
--- /dev/null
+++ b/node_modules/core-js/actual/date/get-year.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/date/get-year');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/date/index.js b/node_modules/core-js/actual/date/index.js
new file mode 100644
index 0000000..270b6e8
--- /dev/null
+++ b/node_modules/core-js/actual/date/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/date');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/date/now.js b/node_modules/core-js/actual/date/now.js
new file mode 100644
index 0000000..f0ca2b6
--- /dev/null
+++ b/node_modules/core-js/actual/date/now.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/date/now');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/date/set-year.js b/node_modules/core-js/actual/date/set-year.js
new file mode 100644
index 0000000..d35ee3f
--- /dev/null
+++ b/node_modules/core-js/actual/date/set-year.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/date/set-year');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/date/to-gmt-string.js b/node_modules/core-js/actual/date/to-gmt-string.js
new file mode 100644
index 0000000..cabf92e
--- /dev/null
+++ b/node_modules/core-js/actual/date/to-gmt-string.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/date/to-gmt-string');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/date/to-iso-string.js b/node_modules/core-js/actual/date/to-iso-string.js
new file mode 100644
index 0000000..027ecdd
--- /dev/null
+++ b/node_modules/core-js/actual/date/to-iso-string.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/date/to-iso-string');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/date/to-json.js b/node_modules/core-js/actual/date/to-json.js
new file mode 100644
index 0000000..72ce900
--- /dev/null
+++ b/node_modules/core-js/actual/date/to-json.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/date/to-json');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/date/to-primitive.js b/node_modules/core-js/actual/date/to-primitive.js
new file mode 100644
index 0000000..d85a5d2
--- /dev/null
+++ b/node_modules/core-js/actual/date/to-primitive.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/date/to-primitive');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/date/to-string.js b/node_modules/core-js/actual/date/to-string.js
new file mode 100644
index 0000000..e07e11a
--- /dev/null
+++ b/node_modules/core-js/actual/date/to-string.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/date/to-string');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/disposable-stack/constructor.js b/node_modules/core-js/actual/disposable-stack/constructor.js
new file mode 100644
index 0000000..f9b8d38
--- /dev/null
+++ b/node_modules/core-js/actual/disposable-stack/constructor.js
@@ -0,0 +1,10 @@
+'use strict';
+require('../../modules/es.error.cause');
+require('../../modules/es.error.to-string');
+require('../../modules/es.object.to-string');
+require('../../modules/esnext.suppressed-error.constructor');
+require('../../modules/esnext.disposable-stack.constructor');
+require('../../modules/esnext.iterator.dispose');
+var path = require('../../internals/path');
+
+module.exports = path.DisposableStack;
diff --git a/node_modules/core-js/actual/disposable-stack/index.js b/node_modules/core-js/actual/disposable-stack/index.js
new file mode 100644
index 0000000..f9b8d38
--- /dev/null
+++ b/node_modules/core-js/actual/disposable-stack/index.js
@@ -0,0 +1,10 @@
+'use strict';
+require('../../modules/es.error.cause');
+require('../../modules/es.error.to-string');
+require('../../modules/es.object.to-string');
+require('../../modules/esnext.suppressed-error.constructor');
+require('../../modules/esnext.disposable-stack.constructor');
+require('../../modules/esnext.iterator.dispose');
+var path = require('../../internals/path');
+
+module.exports = path.DisposableStack;
diff --git a/node_modules/core-js/actual/dom-collections/for-each.js b/node_modules/core-js/actual/dom-collections/for-each.js
new file mode 100644
index 0000000..379a13c
--- /dev/null
+++ b/node_modules/core-js/actual/dom-collections/for-each.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/dom-collections/for-each');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/dom-collections/index.js b/node_modules/core-js/actual/dom-collections/index.js
new file mode 100644
index 0000000..535ba24
--- /dev/null
+++ b/node_modules/core-js/actual/dom-collections/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/dom-collections');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/dom-collections/iterator.js b/node_modules/core-js/actual/dom-collections/iterator.js
new file mode 100644
index 0000000..659a6f2
--- /dev/null
+++ b/node_modules/core-js/actual/dom-collections/iterator.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/dom-collections/iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/dom-exception/constructor.js b/node_modules/core-js/actual/dom-exception/constructor.js
new file mode 100644
index 0000000..0efde7c
--- /dev/null
+++ b/node_modules/core-js/actual/dom-exception/constructor.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/dom-exception/constructor');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/dom-exception/index.js b/node_modules/core-js/actual/dom-exception/index.js
new file mode 100644
index 0000000..a5a30fb
--- /dev/null
+++ b/node_modules/core-js/actual/dom-exception/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/dom-exception');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/dom-exception/to-string-tag.js b/node_modules/core-js/actual/dom-exception/to-string-tag.js
new file mode 100644
index 0000000..7230555
--- /dev/null
+++ b/node_modules/core-js/actual/dom-exception/to-string-tag.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/dom-exception/to-string-tag');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/error/constructor.js b/node_modules/core-js/actual/error/constructor.js
new file mode 100644
index 0000000..6fe4e88
--- /dev/null
+++ b/node_modules/core-js/actual/error/constructor.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/error/constructor');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/error/index.js b/node_modules/core-js/actual/error/index.js
new file mode 100644
index 0000000..2c0da9f
--- /dev/null
+++ b/node_modules/core-js/actual/error/index.js
@@ -0,0 +1,6 @@
+'use strict';
+var parent = require('../../stable/error');
+require('../../modules/es.object.create');
+require('../../modules/esnext.error.is-error');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/error/is-error.js b/node_modules/core-js/actual/error/is-error.js
new file mode 100644
index 0000000..623bca1
--- /dev/null
+++ b/node_modules/core-js/actual/error/is-error.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.object.create');
+require('../../modules/esnext.error.is-error');
+var path = require('../../internals/path');
+
+module.exports = path.Error.isError;
diff --git a/node_modules/core-js/actual/error/to-string.js b/node_modules/core-js/actual/error/to-string.js
new file mode 100644
index 0000000..8a8032f
--- /dev/null
+++ b/node_modules/core-js/actual/error/to-string.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/error/to-string');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/escape.js b/node_modules/core-js/actual/escape.js
new file mode 100644
index 0000000..2d03968
--- /dev/null
+++ b/node_modules/core-js/actual/escape.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../stable/escape');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/function/bind.js b/node_modules/core-js/actual/function/bind.js
new file mode 100644
index 0000000..510ca61
--- /dev/null
+++ b/node_modules/core-js/actual/function/bind.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/function/bind');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/function/has-instance.js b/node_modules/core-js/actual/function/has-instance.js
new file mode 100644
index 0000000..b2a802d
--- /dev/null
+++ b/node_modules/core-js/actual/function/has-instance.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/function/has-instance');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/function/index.js b/node_modules/core-js/actual/function/index.js
new file mode 100644
index 0000000..d3f8885
--- /dev/null
+++ b/node_modules/core-js/actual/function/index.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../stable/function');
+require('../../modules/esnext.function.metadata');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/function/metadata.js b/node_modules/core-js/actual/function/metadata.js
new file mode 100644
index 0000000..63c5bba
--- /dev/null
+++ b/node_modules/core-js/actual/function/metadata.js
@@ -0,0 +1,4 @@
+'use strict';
+require('../../modules/esnext.function.metadata');
+
+module.exports = null;
diff --git a/node_modules/core-js/actual/function/name.js b/node_modules/core-js/actual/function/name.js
new file mode 100644
index 0000000..8ca1657
--- /dev/null
+++ b/node_modules/core-js/actual/function/name.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/function/name');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/function/virtual/bind.js b/node_modules/core-js/actual/function/virtual/bind.js
new file mode 100644
index 0000000..03e8ccc
--- /dev/null
+++ b/node_modules/core-js/actual/function/virtual/bind.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/function/virtual/bind');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/function/virtual/index.js b/node_modules/core-js/actual/function/virtual/index.js
new file mode 100644
index 0000000..b190d98
--- /dev/null
+++ b/node_modules/core-js/actual/function/virtual/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/function/virtual');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/get-iterator-method.js b/node_modules/core-js/actual/get-iterator-method.js
new file mode 100644
index 0000000..bef996b
--- /dev/null
+++ b/node_modules/core-js/actual/get-iterator-method.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../stable/get-iterator-method');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/get-iterator.js b/node_modules/core-js/actual/get-iterator.js
new file mode 100644
index 0000000..34665e8
--- /dev/null
+++ b/node_modules/core-js/actual/get-iterator.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../stable/get-iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/global-this.js b/node_modules/core-js/actual/global-this.js
new file mode 100644
index 0000000..b7a5fd9
--- /dev/null
+++ b/node_modules/core-js/actual/global-this.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../stable/global-this');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/index.js b/node_modules/core-js/actual/index.js
new file mode 100644
index 0000000..6c80f2b
--- /dev/null
+++ b/node_modules/core-js/actual/index.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../stable');
+require('../stage/3');
+
+module.exports = require('../internals/path');
diff --git a/node_modules/core-js/actual/instance/at.js b/node_modules/core-js/actual/instance/at.js
new file mode 100644
index 0000000..3a26078
--- /dev/null
+++ b/node_modules/core-js/actual/instance/at.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/at');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/bind.js b/node_modules/core-js/actual/instance/bind.js
new file mode 100644
index 0000000..dbc4848
--- /dev/null
+++ b/node_modules/core-js/actual/instance/bind.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/bind');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/code-point-at.js b/node_modules/core-js/actual/instance/code-point-at.js
new file mode 100644
index 0000000..b4fc699
--- /dev/null
+++ b/node_modules/core-js/actual/instance/code-point-at.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/code-point-at');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/concat.js b/node_modules/core-js/actual/instance/concat.js
new file mode 100644
index 0000000..c6f4020
--- /dev/null
+++ b/node_modules/core-js/actual/instance/concat.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/concat');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/copy-within.js b/node_modules/core-js/actual/instance/copy-within.js
new file mode 100644
index 0000000..4029b41
--- /dev/null
+++ b/node_modules/core-js/actual/instance/copy-within.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/copy-within');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/ends-with.js b/node_modules/core-js/actual/instance/ends-with.js
new file mode 100644
index 0000000..ea42c98
--- /dev/null
+++ b/node_modules/core-js/actual/instance/ends-with.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/ends-with');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/entries.js b/node_modules/core-js/actual/instance/entries.js
new file mode 100644
index 0000000..e5fc8bc
--- /dev/null
+++ b/node_modules/core-js/actual/instance/entries.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/entries');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/every.js b/node_modules/core-js/actual/instance/every.js
new file mode 100644
index 0000000..78de3ed
--- /dev/null
+++ b/node_modules/core-js/actual/instance/every.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/every');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/fill.js b/node_modules/core-js/actual/instance/fill.js
new file mode 100644
index 0000000..20c30b6
--- /dev/null
+++ b/node_modules/core-js/actual/instance/fill.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/fill');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/filter.js b/node_modules/core-js/actual/instance/filter.js
new file mode 100644
index 0000000..986aebe
--- /dev/null
+++ b/node_modules/core-js/actual/instance/filter.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/filter');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/find-index.js b/node_modules/core-js/actual/instance/find-index.js
new file mode 100644
index 0000000..a395e93
--- /dev/null
+++ b/node_modules/core-js/actual/instance/find-index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/find-index');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/find-last-index.js b/node_modules/core-js/actual/instance/find-last-index.js
new file mode 100644
index 0000000..4c7cfcb
--- /dev/null
+++ b/node_modules/core-js/actual/instance/find-last-index.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/find-last-index');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.findLastIndex;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.findLastIndex) ? method : own;
+};
diff --git a/node_modules/core-js/actual/instance/find-last.js b/node_modules/core-js/actual/instance/find-last.js
new file mode 100644
index 0000000..7d30e0b
--- /dev/null
+++ b/node_modules/core-js/actual/instance/find-last.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/find-last');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.findLast;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.findLast) ? method : own;
+};
diff --git a/node_modules/core-js/actual/instance/find.js b/node_modules/core-js/actual/instance/find.js
new file mode 100644
index 0000000..1b6457a
--- /dev/null
+++ b/node_modules/core-js/actual/instance/find.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/find');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/flags.js b/node_modules/core-js/actual/instance/flags.js
new file mode 100644
index 0000000..b932b41
--- /dev/null
+++ b/node_modules/core-js/actual/instance/flags.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/flags');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/flat-map.js b/node_modules/core-js/actual/instance/flat-map.js
new file mode 100644
index 0000000..9d1187e
--- /dev/null
+++ b/node_modules/core-js/actual/instance/flat-map.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/flat-map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/flat.js b/node_modules/core-js/actual/instance/flat.js
new file mode 100644
index 0000000..46ca8d6
--- /dev/null
+++ b/node_modules/core-js/actual/instance/flat.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/flat');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/for-each.js b/node_modules/core-js/actual/instance/for-each.js
new file mode 100644
index 0000000..5dd1750
--- /dev/null
+++ b/node_modules/core-js/actual/instance/for-each.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/for-each');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/group-by-to-map.js b/node_modules/core-js/actual/instance/group-by-to-map.js
new file mode 100644
index 0000000..3786d42
--- /dev/null
+++ b/node_modules/core-js/actual/instance/group-by-to-map.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/group-by-to-map');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.groupByToMap;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.groupByToMap) ? method : own;
+};
diff --git a/node_modules/core-js/actual/instance/group-by.js b/node_modules/core-js/actual/instance/group-by.js
new file mode 100644
index 0000000..2d52f6e
--- /dev/null
+++ b/node_modules/core-js/actual/instance/group-by.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/group-by');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.groupBy;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.groupBy) ? method : own;
+};
diff --git a/node_modules/core-js/actual/instance/group-to-map.js b/node_modules/core-js/actual/instance/group-to-map.js
new file mode 100644
index 0000000..627a20e
--- /dev/null
+++ b/node_modules/core-js/actual/instance/group-to-map.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/group-to-map');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.groupToMap;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.groupToMap) ? method : own;
+};
diff --git a/node_modules/core-js/actual/instance/group.js b/node_modules/core-js/actual/instance/group.js
new file mode 100644
index 0000000..e2ec5d4
--- /dev/null
+++ b/node_modules/core-js/actual/instance/group.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/group');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.group;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.group) ? method : own;
+};
diff --git a/node_modules/core-js/actual/instance/includes.js b/node_modules/core-js/actual/instance/includes.js
new file mode 100644
index 0000000..1a098ba
--- /dev/null
+++ b/node_modules/core-js/actual/instance/includes.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/includes');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/index-of.js b/node_modules/core-js/actual/instance/index-of.js
new file mode 100644
index 0000000..b124eac
--- /dev/null
+++ b/node_modules/core-js/actual/instance/index-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/index-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/is-well-formed.js b/node_modules/core-js/actual/instance/is-well-formed.js
new file mode 100644
index 0000000..6735165
--- /dev/null
+++ b/node_modules/core-js/actual/instance/is-well-formed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/is-well-formed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/keys.js b/node_modules/core-js/actual/instance/keys.js
new file mode 100644
index 0000000..e7815a4
--- /dev/null
+++ b/node_modules/core-js/actual/instance/keys.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/keys');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/last-index-of.js b/node_modules/core-js/actual/instance/last-index-of.js
new file mode 100644
index 0000000..b7af419
--- /dev/null
+++ b/node_modules/core-js/actual/instance/last-index-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/last-index-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/map.js b/node_modules/core-js/actual/instance/map.js
new file mode 100644
index 0000000..47412e4
--- /dev/null
+++ b/node_modules/core-js/actual/instance/map.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/match-all.js b/node_modules/core-js/actual/instance/match-all.js
new file mode 100644
index 0000000..7e5dc8f
--- /dev/null
+++ b/node_modules/core-js/actual/instance/match-all.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/match-all');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/pad-end.js b/node_modules/core-js/actual/instance/pad-end.js
new file mode 100644
index 0000000..cdd5282
--- /dev/null
+++ b/node_modules/core-js/actual/instance/pad-end.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/pad-end');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/pad-start.js b/node_modules/core-js/actual/instance/pad-start.js
new file mode 100644
index 0000000..2ffcc71
--- /dev/null
+++ b/node_modules/core-js/actual/instance/pad-start.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/pad-start');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/push.js b/node_modules/core-js/actual/instance/push.js
new file mode 100644
index 0000000..643d7e5
--- /dev/null
+++ b/node_modules/core-js/actual/instance/push.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/push');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/reduce-right.js b/node_modules/core-js/actual/instance/reduce-right.js
new file mode 100644
index 0000000..f1094f2
--- /dev/null
+++ b/node_modules/core-js/actual/instance/reduce-right.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/reduce-right');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/reduce.js b/node_modules/core-js/actual/instance/reduce.js
new file mode 100644
index 0000000..c82bac0
--- /dev/null
+++ b/node_modules/core-js/actual/instance/reduce.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/reduce');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/repeat.js b/node_modules/core-js/actual/instance/repeat.js
new file mode 100644
index 0000000..08618ba
--- /dev/null
+++ b/node_modules/core-js/actual/instance/repeat.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/repeat');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/replace-all.js b/node_modules/core-js/actual/instance/replace-all.js
new file mode 100644
index 0000000..8343a9e
--- /dev/null
+++ b/node_modules/core-js/actual/instance/replace-all.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/replace-all');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/reverse.js b/node_modules/core-js/actual/instance/reverse.js
new file mode 100644
index 0000000..d1e55bc
--- /dev/null
+++ b/node_modules/core-js/actual/instance/reverse.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/reverse');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/slice.js b/node_modules/core-js/actual/instance/slice.js
new file mode 100644
index 0000000..8573bc3
--- /dev/null
+++ b/node_modules/core-js/actual/instance/slice.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/slice');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/some.js b/node_modules/core-js/actual/instance/some.js
new file mode 100644
index 0000000..372f248
--- /dev/null
+++ b/node_modules/core-js/actual/instance/some.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/some');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/sort.js b/node_modules/core-js/actual/instance/sort.js
new file mode 100644
index 0000000..d99506e
--- /dev/null
+++ b/node_modules/core-js/actual/instance/sort.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/sort');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/splice.js b/node_modules/core-js/actual/instance/splice.js
new file mode 100644
index 0000000..95c4841
--- /dev/null
+++ b/node_modules/core-js/actual/instance/splice.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/splice');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/starts-with.js b/node_modules/core-js/actual/instance/starts-with.js
new file mode 100644
index 0000000..91b4142
--- /dev/null
+++ b/node_modules/core-js/actual/instance/starts-with.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/starts-with');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/to-reversed.js b/node_modules/core-js/actual/instance/to-reversed.js
new file mode 100644
index 0000000..5cfb459
--- /dev/null
+++ b/node_modules/core-js/actual/instance/to-reversed.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/to-reversed');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.toReversed;
+  return (it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.toReversed)) ? method : own;
+};
diff --git a/node_modules/core-js/actual/instance/to-sorted.js b/node_modules/core-js/actual/instance/to-sorted.js
new file mode 100644
index 0000000..a059c6f
--- /dev/null
+++ b/node_modules/core-js/actual/instance/to-sorted.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/to-sorted');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.toSorted;
+  return (it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.toSorted)) ? method : own;
+};
diff --git a/node_modules/core-js/actual/instance/to-spliced.js b/node_modules/core-js/actual/instance/to-spliced.js
new file mode 100644
index 0000000..9e67474
--- /dev/null
+++ b/node_modules/core-js/actual/instance/to-spliced.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/to-spliced');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.toSpliced;
+  return (it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.toSpliced)) ? method : own;
+};
diff --git a/node_modules/core-js/actual/instance/to-well-formed.js b/node_modules/core-js/actual/instance/to-well-formed.js
new file mode 100644
index 0000000..3139f67
--- /dev/null
+++ b/node_modules/core-js/actual/instance/to-well-formed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/to-well-formed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/trim-end.js b/node_modules/core-js/actual/instance/trim-end.js
new file mode 100644
index 0000000..44d66a0
--- /dev/null
+++ b/node_modules/core-js/actual/instance/trim-end.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/trim-end');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/trim-left.js b/node_modules/core-js/actual/instance/trim-left.js
new file mode 100644
index 0000000..fc7e89a
--- /dev/null
+++ b/node_modules/core-js/actual/instance/trim-left.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/trim-left');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/trim-right.js b/node_modules/core-js/actual/instance/trim-right.js
new file mode 100644
index 0000000..4d6ac08
--- /dev/null
+++ b/node_modules/core-js/actual/instance/trim-right.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/trim-right');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/trim-start.js b/node_modules/core-js/actual/instance/trim-start.js
new file mode 100644
index 0000000..9599f65
--- /dev/null
+++ b/node_modules/core-js/actual/instance/trim-start.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/trim-start');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/trim.js b/node_modules/core-js/actual/instance/trim.js
new file mode 100644
index 0000000..be937f3
--- /dev/null
+++ b/node_modules/core-js/actual/instance/trim.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/trim');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/unshift.js b/node_modules/core-js/actual/instance/unshift.js
new file mode 100644
index 0000000..99598d6
--- /dev/null
+++ b/node_modules/core-js/actual/instance/unshift.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/unshift');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/values.js b/node_modules/core-js/actual/instance/values.js
new file mode 100644
index 0000000..10d5e97
--- /dev/null
+++ b/node_modules/core-js/actual/instance/values.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/instance/values');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/instance/with.js b/node_modules/core-js/actual/instance/with.js
new file mode 100644
index 0000000..f3db9f4
--- /dev/null
+++ b/node_modules/core-js/actual/instance/with.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/with');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it['with'];
+  return (it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype['with'])) ? method : own;
+};
diff --git a/node_modules/core-js/actual/is-iterable.js b/node_modules/core-js/actual/is-iterable.js
new file mode 100644
index 0000000..aaaee55
--- /dev/null
+++ b/node_modules/core-js/actual/is-iterable.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../stable/is-iterable');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/iterator/dispose.js b/node_modules/core-js/actual/iterator/dispose.js
new file mode 100644
index 0000000..4fbee00
--- /dev/null
+++ b/node_modules/core-js/actual/iterator/dispose.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/esnext.iterator.dispose');
diff --git a/node_modules/core-js/actual/iterator/drop.js b/node_modules/core-js/actual/iterator/drop.js
new file mode 100644
index 0000000..4a9613b
--- /dev/null
+++ b/node_modules/core-js/actual/iterator/drop.js
@@ -0,0 +1,6 @@
+'use strict';
+var parent = require('../../stable/iterator/drop');
+require('../../modules/esnext.iterator.constructor');
+require('../../modules/esnext.iterator.drop');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/iterator/every.js b/node_modules/core-js/actual/iterator/every.js
new file mode 100644
index 0000000..458c211
--- /dev/null
+++ b/node_modules/core-js/actual/iterator/every.js
@@ -0,0 +1,6 @@
+'use strict';
+var parent = require('../../stable/iterator/every');
+require('../../modules/esnext.iterator.constructor');
+require('../../modules/esnext.iterator.every');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/iterator/filter.js b/node_modules/core-js/actual/iterator/filter.js
new file mode 100644
index 0000000..8919ddf
--- /dev/null
+++ b/node_modules/core-js/actual/iterator/filter.js
@@ -0,0 +1,6 @@
+'use strict';
+var parent = require('../../stable/iterator/filter');
+require('../../modules/esnext.iterator.constructor');
+require('../../modules/esnext.iterator.filter');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/iterator/find.js b/node_modules/core-js/actual/iterator/find.js
new file mode 100644
index 0000000..bd1e394
--- /dev/null
+++ b/node_modules/core-js/actual/iterator/find.js
@@ -0,0 +1,6 @@
+'use strict';
+var parent = require('../../stable/iterator/find');
+require('../../modules/esnext.iterator.constructor');
+require('../../modules/esnext.iterator.find');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/iterator/flat-map.js b/node_modules/core-js/actual/iterator/flat-map.js
new file mode 100644
index 0000000..b620081
--- /dev/null
+++ b/node_modules/core-js/actual/iterator/flat-map.js
@@ -0,0 +1,6 @@
+'use strict';
+var parent = require('../../stable/iterator/flat-map');
+require('../../modules/esnext.iterator.constructor');
+require('../../modules/esnext.iterator.flat-map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/iterator/for-each.js b/node_modules/core-js/actual/iterator/for-each.js
new file mode 100644
index 0000000..4b5e8bd
--- /dev/null
+++ b/node_modules/core-js/actual/iterator/for-each.js
@@ -0,0 +1,6 @@
+'use strict';
+var parent = require('../../stable/iterator/for-each');
+require('../../modules/esnext.iterator.constructor');
+require('../../modules/esnext.iterator.for-each');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/iterator/from.js b/node_modules/core-js/actual/iterator/from.js
new file mode 100644
index 0000000..4a3513f
--- /dev/null
+++ b/node_modules/core-js/actual/iterator/from.js
@@ -0,0 +1,20 @@
+'use strict';
+var parent = require('../../stable/iterator/from');
+require('../../modules/es.promise');
+require('../../modules/esnext.iterator.constructor');
+require('../../modules/esnext.iterator.dispose');
+require('../../modules/esnext.iterator.drop');
+require('../../modules/esnext.iterator.every');
+require('../../modules/esnext.iterator.filter');
+require('../../modules/esnext.iterator.find');
+require('../../modules/esnext.iterator.flat-map');
+require('../../modules/esnext.iterator.for-each');
+require('../../modules/esnext.iterator.from');
+require('../../modules/esnext.iterator.map');
+require('../../modules/esnext.iterator.reduce');
+require('../../modules/esnext.iterator.some');
+require('../../modules/esnext.iterator.take');
+require('../../modules/esnext.iterator.to-array');
+require('../../modules/esnext.iterator.to-async');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/iterator/index.js b/node_modules/core-js/actual/iterator/index.js
new file mode 100644
index 0000000..87c9bd7
--- /dev/null
+++ b/node_modules/core-js/actual/iterator/index.js
@@ -0,0 +1,20 @@
+'use strict';
+var parent = require('../../stable/iterator');
+require('../../modules/es.promise');
+require('../../modules/esnext.iterator.constructor');
+require('../../modules/esnext.iterator.dispose');
+require('../../modules/esnext.iterator.drop');
+require('../../modules/esnext.iterator.every');
+require('../../modules/esnext.iterator.filter');
+require('../../modules/esnext.iterator.find');
+require('../../modules/esnext.iterator.flat-map');
+require('../../modules/esnext.iterator.for-each');
+require('../../modules/esnext.iterator.from');
+require('../../modules/esnext.iterator.map');
+require('../../modules/esnext.iterator.reduce');
+require('../../modules/esnext.iterator.some');
+require('../../modules/esnext.iterator.take');
+require('../../modules/esnext.iterator.to-array');
+require('../../modules/esnext.iterator.to-async');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/iterator/map.js b/node_modules/core-js/actual/iterator/map.js
new file mode 100644
index 0000000..b2d7d8e
--- /dev/null
+++ b/node_modules/core-js/actual/iterator/map.js
@@ -0,0 +1,6 @@
+'use strict';
+var parent = require('../../stable/iterator/map');
+require('../../modules/esnext.iterator.constructor');
+require('../../modules/esnext.iterator.map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/iterator/reduce.js b/node_modules/core-js/actual/iterator/reduce.js
new file mode 100644
index 0000000..593d351
--- /dev/null
+++ b/node_modules/core-js/actual/iterator/reduce.js
@@ -0,0 +1,6 @@
+'use strict';
+var parent = require('../../stable/iterator/reduce');
+require('../../modules/esnext.iterator.constructor');
+require('../../modules/esnext.iterator.reduce');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/iterator/some.js b/node_modules/core-js/actual/iterator/some.js
new file mode 100644
index 0000000..36cfb25
--- /dev/null
+++ b/node_modules/core-js/actual/iterator/some.js
@@ -0,0 +1,6 @@
+'use strict';
+var parent = require('../../stable/iterator/some');
+require('../../modules/esnext.iterator.constructor');
+require('../../modules/esnext.iterator.some');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/iterator/take.js b/node_modules/core-js/actual/iterator/take.js
new file mode 100644
index 0000000..294d026
--- /dev/null
+++ b/node_modules/core-js/actual/iterator/take.js
@@ -0,0 +1,6 @@
+'use strict';
+var parent = require('../../stable/iterator/take');
+require('../../modules/esnext.iterator.constructor');
+require('../../modules/esnext.iterator.take');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/iterator/to-array.js b/node_modules/core-js/actual/iterator/to-array.js
new file mode 100644
index 0000000..22ef7a5
--- /dev/null
+++ b/node_modules/core-js/actual/iterator/to-array.js
@@ -0,0 +1,6 @@
+'use strict';
+var parent = require('../../stable/iterator/to-array');
+require('../../modules/esnext.iterator.constructor');
+require('../../modules/esnext.iterator.to-array');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/iterator/to-async.js b/node_modules/core-js/actual/iterator/to-async.js
new file mode 100644
index 0000000..84484f3
--- /dev/null
+++ b/node_modules/core-js/actual/iterator/to-async.js
@@ -0,0 +1,11 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.promise');
+require('../../modules/es.iterator.constructor');
+// TODO: Drop from `core-js@4`
+require('../../modules/esnext.iterator.constructor');
+require('../../modules/esnext.iterator.to-async');
+
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Iterator', 'toAsync');
diff --git a/node_modules/core-js/actual/json/index.js b/node_modules/core-js/actual/json/index.js
new file mode 100644
index 0000000..6061c65
--- /dev/null
+++ b/node_modules/core-js/actual/json/index.js
@@ -0,0 +1,10 @@
+'use strict';
+var parent = require('../../stable/json');
+require('../../modules/es.object.create');
+require('../../modules/es.object.freeze');
+require('../../modules/es.object.keys');
+require('../../modules/esnext.json.is-raw-json');
+require('../../modules/esnext.json.parse');
+require('../../modules/esnext.json.raw-json');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/json/is-raw-json.js b/node_modules/core-js/actual/json/is-raw-json.js
new file mode 100644
index 0000000..a0d5a44
--- /dev/null
+++ b/node_modules/core-js/actual/json/is-raw-json.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.json.is-raw-json');
+var path = require('../../internals/path');
+
+module.exports = path.JSON.isRawJSON;
diff --git a/node_modules/core-js/actual/json/parse.js b/node_modules/core-js/actual/json/parse.js
new file mode 100644
index 0000000..b2ae469
--- /dev/null
+++ b/node_modules/core-js/actual/json/parse.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.object.keys');
+require('../../modules/esnext.json.parse');
+var path = require('../../internals/path');
+
+module.exports = path.JSON.parse;
diff --git a/node_modules/core-js/actual/json/raw-json.js b/node_modules/core-js/actual/json/raw-json.js
new file mode 100644
index 0000000..5a28569
--- /dev/null
+++ b/node_modules/core-js/actual/json/raw-json.js
@@ -0,0 +1,7 @@
+'use strict';
+require('../../modules/es.object.create');
+require('../../modules/es.object.freeze');
+require('../../modules/esnext.json.raw-json');
+var path = require('../../internals/path');
+
+module.exports = path.JSON.rawJSON;
diff --git a/node_modules/core-js/actual/json/stringify.js b/node_modules/core-js/actual/json/stringify.js
new file mode 100644
index 0000000..a28b682
--- /dev/null
+++ b/node_modules/core-js/actual/json/stringify.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/json/stringify');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/json/to-string-tag.js b/node_modules/core-js/actual/json/to-string-tag.js
new file mode 100644
index 0000000..50ae57a
--- /dev/null
+++ b/node_modules/core-js/actual/json/to-string-tag.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/json/to-string-tag');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/map/group-by.js b/node_modules/core-js/actual/map/group-by.js
new file mode 100644
index 0000000..fdc4be8
--- /dev/null
+++ b/node_modules/core-js/actual/map/group-by.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../stable/map/group-by');
+require('../../modules/esnext.map.group-by');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/map/index.js b/node_modules/core-js/actual/map/index.js
new file mode 100644
index 0000000..3663acf
--- /dev/null
+++ b/node_modules/core-js/actual/map/index.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../stable/map');
+require('../../modules/esnext.map.group-by');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/math/acosh.js b/node_modules/core-js/actual/math/acosh.js
new file mode 100644
index 0000000..77c94ab
--- /dev/null
+++ b/node_modules/core-js/actual/math/acosh.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/math/acosh');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/math/asinh.js b/node_modules/core-js/actual/math/asinh.js
new file mode 100644
index 0000000..eb45ca4
--- /dev/null
+++ b/node_modules/core-js/actual/math/asinh.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/math/asinh');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/math/atanh.js b/node_modules/core-js/actual/math/atanh.js
new file mode 100644
index 0000000..257d042
--- /dev/null
+++ b/node_modules/core-js/actual/math/atanh.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/math/atanh');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/math/cbrt.js b/node_modules/core-js/actual/math/cbrt.js
new file mode 100644
index 0000000..b2997fb
--- /dev/null
+++ b/node_modules/core-js/actual/math/cbrt.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/math/cbrt');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/math/clz32.js b/node_modules/core-js/actual/math/clz32.js
new file mode 100644
index 0000000..47e999e
--- /dev/null
+++ b/node_modules/core-js/actual/math/clz32.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/math/clz32');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/math/cosh.js b/node_modules/core-js/actual/math/cosh.js
new file mode 100644
index 0000000..fdb381e
--- /dev/null
+++ b/node_modules/core-js/actual/math/cosh.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/math/cosh');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/math/expm1.js b/node_modules/core-js/actual/math/expm1.js
new file mode 100644
index 0000000..9ffc0c1
--- /dev/null
+++ b/node_modules/core-js/actual/math/expm1.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/math/expm1');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/math/f16round.js b/node_modules/core-js/actual/math/f16round.js
new file mode 100644
index 0000000..b728a8b
--- /dev/null
+++ b/node_modules/core-js/actual/math/f16round.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../stable/math/f16round');
+require('../../modules/esnext.math.f16round');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/math/fround.js b/node_modules/core-js/actual/math/fround.js
new file mode 100644
index 0000000..6775a3c
--- /dev/null
+++ b/node_modules/core-js/actual/math/fround.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/math/fround');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/math/hypot.js b/node_modules/core-js/actual/math/hypot.js
new file mode 100644
index 0000000..e89c885
--- /dev/null
+++ b/node_modules/core-js/actual/math/hypot.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/math/hypot');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/math/imul.js b/node_modules/core-js/actual/math/imul.js
new file mode 100644
index 0000000..aa22b08
--- /dev/null
+++ b/node_modules/core-js/actual/math/imul.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/math/imul');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/math/index.js b/node_modules/core-js/actual/math/index.js
new file mode 100644
index 0000000..8a5ac67
--- /dev/null
+++ b/node_modules/core-js/actual/math/index.js
@@ -0,0 +1,7 @@
+'use strict';
+var parent = require('../../stable/math');
+require('../../modules/es.array.iterator');
+require('../../modules/esnext.math.f16round');
+require('../../modules/esnext.math.sum-precise');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/math/log10.js b/node_modules/core-js/actual/math/log10.js
new file mode 100644
index 0000000..d0522a6
--- /dev/null
+++ b/node_modules/core-js/actual/math/log10.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/math/log10');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/math/log1p.js b/node_modules/core-js/actual/math/log1p.js
new file mode 100644
index 0000000..f8b6a71
--- /dev/null
+++ b/node_modules/core-js/actual/math/log1p.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/math/log1p');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/math/log2.js b/node_modules/core-js/actual/math/log2.js
new file mode 100644
index 0000000..960932a
--- /dev/null
+++ b/node_modules/core-js/actual/math/log2.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/math/log2');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/math/sign.js b/node_modules/core-js/actual/math/sign.js
new file mode 100644
index 0000000..1ec5634
--- /dev/null
+++ b/node_modules/core-js/actual/math/sign.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/math/sign');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/math/sinh.js b/node_modules/core-js/actual/math/sinh.js
new file mode 100644
index 0000000..73db2e7
--- /dev/null
+++ b/node_modules/core-js/actual/math/sinh.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/math/sinh');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/math/sum-precise.js b/node_modules/core-js/actual/math/sum-precise.js
new file mode 100644
index 0000000..fda5a72
--- /dev/null
+++ b/node_modules/core-js/actual/math/sum-precise.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.array.iterator');
+require('../../modules/esnext.math.sum-precise');
+var path = require('../../internals/path');
+
+module.exports = path.Math.sumPrecise;
diff --git a/node_modules/core-js/actual/math/tanh.js b/node_modules/core-js/actual/math/tanh.js
new file mode 100644
index 0000000..ca38467
--- /dev/null
+++ b/node_modules/core-js/actual/math/tanh.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/math/tanh');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/math/to-string-tag.js b/node_modules/core-js/actual/math/to-string-tag.js
new file mode 100644
index 0000000..a8788f8
--- /dev/null
+++ b/node_modules/core-js/actual/math/to-string-tag.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/math/to-string-tag');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/math/trunc.js b/node_modules/core-js/actual/math/trunc.js
new file mode 100644
index 0000000..3396343
--- /dev/null
+++ b/node_modules/core-js/actual/math/trunc.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/math/trunc');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/number/constructor.js b/node_modules/core-js/actual/number/constructor.js
new file mode 100644
index 0000000..c6050e6
--- /dev/null
+++ b/node_modules/core-js/actual/number/constructor.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/number/constructor');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/number/epsilon.js b/node_modules/core-js/actual/number/epsilon.js
new file mode 100644
index 0000000..caa8083
--- /dev/null
+++ b/node_modules/core-js/actual/number/epsilon.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/number/epsilon');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/number/index.js b/node_modules/core-js/actual/number/index.js
new file mode 100644
index 0000000..7166da0
--- /dev/null
+++ b/node_modules/core-js/actual/number/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/number');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/number/is-finite.js b/node_modules/core-js/actual/number/is-finite.js
new file mode 100644
index 0000000..4d07a04
--- /dev/null
+++ b/node_modules/core-js/actual/number/is-finite.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/number/is-finite');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/number/is-integer.js b/node_modules/core-js/actual/number/is-integer.js
new file mode 100644
index 0000000..7b39d4a
--- /dev/null
+++ b/node_modules/core-js/actual/number/is-integer.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/number/is-integer');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/number/is-nan.js b/node_modules/core-js/actual/number/is-nan.js
new file mode 100644
index 0000000..669bcdc
--- /dev/null
+++ b/node_modules/core-js/actual/number/is-nan.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/number/is-nan');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/number/is-safe-integer.js b/node_modules/core-js/actual/number/is-safe-integer.js
new file mode 100644
index 0000000..6c569dc
--- /dev/null
+++ b/node_modules/core-js/actual/number/is-safe-integer.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/number/is-safe-integer');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/number/max-safe-integer.js b/node_modules/core-js/actual/number/max-safe-integer.js
new file mode 100644
index 0000000..2c3a264
--- /dev/null
+++ b/node_modules/core-js/actual/number/max-safe-integer.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/number/max-safe-integer');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/number/min-safe-integer.js b/node_modules/core-js/actual/number/min-safe-integer.js
new file mode 100644
index 0000000..378c27c
--- /dev/null
+++ b/node_modules/core-js/actual/number/min-safe-integer.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/number/min-safe-integer');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/number/parse-float.js b/node_modules/core-js/actual/number/parse-float.js
new file mode 100644
index 0000000..5164e3c
--- /dev/null
+++ b/node_modules/core-js/actual/number/parse-float.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/number/parse-float');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/number/parse-int.js b/node_modules/core-js/actual/number/parse-int.js
new file mode 100644
index 0000000..88c334a
--- /dev/null
+++ b/node_modules/core-js/actual/number/parse-int.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/number/parse-int');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/number/to-exponential.js b/node_modules/core-js/actual/number/to-exponential.js
new file mode 100644
index 0000000..31f3362
--- /dev/null
+++ b/node_modules/core-js/actual/number/to-exponential.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/number/to-exponential');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/number/to-fixed.js b/node_modules/core-js/actual/number/to-fixed.js
new file mode 100644
index 0000000..918a91a
--- /dev/null
+++ b/node_modules/core-js/actual/number/to-fixed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/number/to-fixed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/number/to-precision.js b/node_modules/core-js/actual/number/to-precision.js
new file mode 100644
index 0000000..5d6f7bc
--- /dev/null
+++ b/node_modules/core-js/actual/number/to-precision.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/number/to-precision');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/number/virtual/index.js b/node_modules/core-js/actual/number/virtual/index.js
new file mode 100644
index 0000000..02e5b8f
--- /dev/null
+++ b/node_modules/core-js/actual/number/virtual/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/number/virtual');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/number/virtual/to-exponential.js b/node_modules/core-js/actual/number/virtual/to-exponential.js
new file mode 100644
index 0000000..0b782d9
--- /dev/null
+++ b/node_modules/core-js/actual/number/virtual/to-exponential.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/number/virtual/to-exponential');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/number/virtual/to-fixed.js b/node_modules/core-js/actual/number/virtual/to-fixed.js
new file mode 100644
index 0000000..8be480b
--- /dev/null
+++ b/node_modules/core-js/actual/number/virtual/to-fixed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/number/virtual/to-fixed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/number/virtual/to-precision.js b/node_modules/core-js/actual/number/virtual/to-precision.js
new file mode 100644
index 0000000..ae96726
--- /dev/null
+++ b/node_modules/core-js/actual/number/virtual/to-precision.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/number/virtual/to-precision');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/object/assign.js b/node_modules/core-js/actual/object/assign.js
new file mode 100644
index 0000000..714d1d8
--- /dev/null
+++ b/node_modules/core-js/actual/object/assign.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/object/assign');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/object/create.js b/node_modules/core-js/actual/object/create.js
new file mode 100644
index 0000000..4ae79ab
--- /dev/null
+++ b/node_modules/core-js/actual/object/create.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/object/create');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/object/define-getter.js b/node_modules/core-js/actual/object/define-getter.js
new file mode 100644
index 0000000..5dee6d0
--- /dev/null
+++ b/node_modules/core-js/actual/object/define-getter.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/object/define-getter');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/object/define-properties.js b/node_modules/core-js/actual/object/define-properties.js
new file mode 100644
index 0000000..7f78475
--- /dev/null
+++ b/node_modules/core-js/actual/object/define-properties.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/object/define-properties');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/object/define-property.js b/node_modules/core-js/actual/object/define-property.js
new file mode 100644
index 0000000..8f84eae
--- /dev/null
+++ b/node_modules/core-js/actual/object/define-property.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/object/define-property');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/object/define-setter.js b/node_modules/core-js/actual/object/define-setter.js
new file mode 100644
index 0000000..d4e258e
--- /dev/null
+++ b/node_modules/core-js/actual/object/define-setter.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/object/define-setter');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/object/entries.js b/node_modules/core-js/actual/object/entries.js
new file mode 100644
index 0000000..15857c9
--- /dev/null
+++ b/node_modules/core-js/actual/object/entries.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/object/entries');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/object/freeze.js b/node_modules/core-js/actual/object/freeze.js
new file mode 100644
index 0000000..896dccb
--- /dev/null
+++ b/node_modules/core-js/actual/object/freeze.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/object/freeze');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/object/from-entries.js b/node_modules/core-js/actual/object/from-entries.js
new file mode 100644
index 0000000..0ef1d53
--- /dev/null
+++ b/node_modules/core-js/actual/object/from-entries.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/object/from-entries');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/object/get-own-property-descriptor.js b/node_modules/core-js/actual/object/get-own-property-descriptor.js
new file mode 100644
index 0000000..7062506
--- /dev/null
+++ b/node_modules/core-js/actual/object/get-own-property-descriptor.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/object/get-own-property-descriptor');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/object/get-own-property-descriptors.js b/node_modules/core-js/actual/object/get-own-property-descriptors.js
new file mode 100644
index 0000000..8a95172
--- /dev/null
+++ b/node_modules/core-js/actual/object/get-own-property-descriptors.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/object/get-own-property-descriptors');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/object/get-own-property-names.js b/node_modules/core-js/actual/object/get-own-property-names.js
new file mode 100644
index 0000000..990e5dc
--- /dev/null
+++ b/node_modules/core-js/actual/object/get-own-property-names.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/object/get-own-property-names');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/object/get-own-property-symbols.js b/node_modules/core-js/actual/object/get-own-property-symbols.js
new file mode 100644
index 0000000..6c468cb
--- /dev/null
+++ b/node_modules/core-js/actual/object/get-own-property-symbols.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/object/get-own-property-symbols');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/object/get-prototype-of.js b/node_modules/core-js/actual/object/get-prototype-of.js
new file mode 100644
index 0000000..37d72fd
--- /dev/null
+++ b/node_modules/core-js/actual/object/get-prototype-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/object/get-prototype-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/object/group-by.js b/node_modules/core-js/actual/object/group-by.js
new file mode 100644
index 0000000..71b1245
--- /dev/null
+++ b/node_modules/core-js/actual/object/group-by.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../stable/object/group-by');
+require('../../modules/esnext.object.group-by');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/object/has-own.js b/node_modules/core-js/actual/object/has-own.js
new file mode 100644
index 0000000..c2c8615
--- /dev/null
+++ b/node_modules/core-js/actual/object/has-own.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/object/has-own');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/object/index.js b/node_modules/core-js/actual/object/index.js
new file mode 100644
index 0000000..4123d83
--- /dev/null
+++ b/node_modules/core-js/actual/object/index.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../stable/object');
+require('../../modules/esnext.object.group-by');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/object/is-extensible.js b/node_modules/core-js/actual/object/is-extensible.js
new file mode 100644
index 0000000..bd9fd8e
--- /dev/null
+++ b/node_modules/core-js/actual/object/is-extensible.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/object/is-extensible');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/object/is-frozen.js b/node_modules/core-js/actual/object/is-frozen.js
new file mode 100644
index 0000000..1f84fe6
--- /dev/null
+++ b/node_modules/core-js/actual/object/is-frozen.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/object/is-frozen');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/object/is-sealed.js b/node_modules/core-js/actual/object/is-sealed.js
new file mode 100644
index 0000000..67bdd67
--- /dev/null
+++ b/node_modules/core-js/actual/object/is-sealed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/object/is-sealed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/object/is.js b/node_modules/core-js/actual/object/is.js
new file mode 100644
index 0000000..06ac44b
--- /dev/null
+++ b/node_modules/core-js/actual/object/is.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/object/is');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/object/keys.js b/node_modules/core-js/actual/object/keys.js
new file mode 100644
index 0000000..8ee488e
--- /dev/null
+++ b/node_modules/core-js/actual/object/keys.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/object/keys');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/object/lookup-getter.js b/node_modules/core-js/actual/object/lookup-getter.js
new file mode 100644
index 0000000..3b7753b
--- /dev/null
+++ b/node_modules/core-js/actual/object/lookup-getter.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/object/lookup-getter');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/object/lookup-setter.js b/node_modules/core-js/actual/object/lookup-setter.js
new file mode 100644
index 0000000..b00be37
--- /dev/null
+++ b/node_modules/core-js/actual/object/lookup-setter.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/object/lookup-setter');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/object/prevent-extensions.js b/node_modules/core-js/actual/object/prevent-extensions.js
new file mode 100644
index 0000000..a85d829
--- /dev/null
+++ b/node_modules/core-js/actual/object/prevent-extensions.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/object/prevent-extensions');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/object/proto.js b/node_modules/core-js/actual/object/proto.js
new file mode 100644
index 0000000..a35edc5
--- /dev/null
+++ b/node_modules/core-js/actual/object/proto.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/object/proto');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/object/seal.js b/node_modules/core-js/actual/object/seal.js
new file mode 100644
index 0000000..7464ccd
--- /dev/null
+++ b/node_modules/core-js/actual/object/seal.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/object/seal');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/object/set-prototype-of.js b/node_modules/core-js/actual/object/set-prototype-of.js
new file mode 100644
index 0000000..17dabe8
--- /dev/null
+++ b/node_modules/core-js/actual/object/set-prototype-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/object/set-prototype-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/object/to-string.js b/node_modules/core-js/actual/object/to-string.js
new file mode 100644
index 0000000..caaec01
--- /dev/null
+++ b/node_modules/core-js/actual/object/to-string.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/object/to-string');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/object/values.js b/node_modules/core-js/actual/object/values.js
new file mode 100644
index 0000000..36e8028
--- /dev/null
+++ b/node_modules/core-js/actual/object/values.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/object/values');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/parse-float.js b/node_modules/core-js/actual/parse-float.js
new file mode 100644
index 0000000..2733e70
--- /dev/null
+++ b/node_modules/core-js/actual/parse-float.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../stable/parse-float');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/parse-int.js b/node_modules/core-js/actual/parse-int.js
new file mode 100644
index 0000000..0aefd41
--- /dev/null
+++ b/node_modules/core-js/actual/parse-int.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../stable/parse-int');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/promise/all-settled.js b/node_modules/core-js/actual/promise/all-settled.js
new file mode 100644
index 0000000..e19dfcf
--- /dev/null
+++ b/node_modules/core-js/actual/promise/all-settled.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/promise/all-settled');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/promise/any.js b/node_modules/core-js/actual/promise/any.js
new file mode 100644
index 0000000..1568a8f
--- /dev/null
+++ b/node_modules/core-js/actual/promise/any.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/promise/any');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/promise/finally.js b/node_modules/core-js/actual/promise/finally.js
new file mode 100644
index 0000000..d6ec566
--- /dev/null
+++ b/node_modules/core-js/actual/promise/finally.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/promise/finally');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/promise/index.js b/node_modules/core-js/actual/promise/index.js
new file mode 100644
index 0000000..4f66885
--- /dev/null
+++ b/node_modules/core-js/actual/promise/index.js
@@ -0,0 +1,7 @@
+'use strict';
+var parent = require('../../stable/promise');
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.promise.try');
+require('../../modules/esnext.promise.with-resolvers');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/promise/try.js b/node_modules/core-js/actual/promise/try.js
new file mode 100644
index 0000000..ff15c67
--- /dev/null
+++ b/node_modules/core-js/actual/promise/try.js
@@ -0,0 +1,6 @@
+'use strict';
+var parent = require('../../stable/promise/try');
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.promise.try');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/promise/with-resolvers.js b/node_modules/core-js/actual/promise/with-resolvers.js
new file mode 100644
index 0000000..92bf3c5
--- /dev/null
+++ b/node_modules/core-js/actual/promise/with-resolvers.js
@@ -0,0 +1,6 @@
+'use strict';
+var parent = require('../../stable/promise/with-resolvers');
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.promise.with-resolvers');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/queue-microtask.js b/node_modules/core-js/actual/queue-microtask.js
new file mode 100644
index 0000000..0f10b0d
--- /dev/null
+++ b/node_modules/core-js/actual/queue-microtask.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../stable/queue-microtask');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/reflect/apply.js b/node_modules/core-js/actual/reflect/apply.js
new file mode 100644
index 0000000..62d9eb7
--- /dev/null
+++ b/node_modules/core-js/actual/reflect/apply.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/reflect/apply');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/reflect/construct.js b/node_modules/core-js/actual/reflect/construct.js
new file mode 100644
index 0000000..f87a36e
--- /dev/null
+++ b/node_modules/core-js/actual/reflect/construct.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/reflect/construct');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/reflect/define-property.js b/node_modules/core-js/actual/reflect/define-property.js
new file mode 100644
index 0000000..bbc2016
--- /dev/null
+++ b/node_modules/core-js/actual/reflect/define-property.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/reflect/define-property');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/reflect/delete-property.js b/node_modules/core-js/actual/reflect/delete-property.js
new file mode 100644
index 0000000..039d837
--- /dev/null
+++ b/node_modules/core-js/actual/reflect/delete-property.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/reflect/delete-property');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/reflect/get-own-property-descriptor.js b/node_modules/core-js/actual/reflect/get-own-property-descriptor.js
new file mode 100644
index 0000000..3bd76f6
--- /dev/null
+++ b/node_modules/core-js/actual/reflect/get-own-property-descriptor.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/reflect/get-own-property-descriptor');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/reflect/get-prototype-of.js b/node_modules/core-js/actual/reflect/get-prototype-of.js
new file mode 100644
index 0000000..4fa6cc0
--- /dev/null
+++ b/node_modules/core-js/actual/reflect/get-prototype-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/reflect/get-prototype-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/reflect/get.js b/node_modules/core-js/actual/reflect/get.js
new file mode 100644
index 0000000..6181621
--- /dev/null
+++ b/node_modules/core-js/actual/reflect/get.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/reflect/get');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/reflect/has.js b/node_modules/core-js/actual/reflect/has.js
new file mode 100644
index 0000000..758ac93
--- /dev/null
+++ b/node_modules/core-js/actual/reflect/has.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/reflect/has');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/reflect/index.js b/node_modules/core-js/actual/reflect/index.js
new file mode 100644
index 0000000..60ed697
--- /dev/null
+++ b/node_modules/core-js/actual/reflect/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/reflect');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/reflect/is-extensible.js b/node_modules/core-js/actual/reflect/is-extensible.js
new file mode 100644
index 0000000..9be837a
--- /dev/null
+++ b/node_modules/core-js/actual/reflect/is-extensible.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/reflect/is-extensible');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/reflect/own-keys.js b/node_modules/core-js/actual/reflect/own-keys.js
new file mode 100644
index 0000000..03e8025
--- /dev/null
+++ b/node_modules/core-js/actual/reflect/own-keys.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/reflect/own-keys');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/reflect/prevent-extensions.js b/node_modules/core-js/actual/reflect/prevent-extensions.js
new file mode 100644
index 0000000..63575dc
--- /dev/null
+++ b/node_modules/core-js/actual/reflect/prevent-extensions.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/reflect/prevent-extensions');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/reflect/set-prototype-of.js b/node_modules/core-js/actual/reflect/set-prototype-of.js
new file mode 100644
index 0000000..e67ce79
--- /dev/null
+++ b/node_modules/core-js/actual/reflect/set-prototype-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/reflect/set-prototype-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/reflect/set.js b/node_modules/core-js/actual/reflect/set.js
new file mode 100644
index 0000000..07d1cf8
--- /dev/null
+++ b/node_modules/core-js/actual/reflect/set.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/reflect/set');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/reflect/to-string-tag.js b/node_modules/core-js/actual/reflect/to-string-tag.js
new file mode 100644
index 0000000..3908aff
--- /dev/null
+++ b/node_modules/core-js/actual/reflect/to-string-tag.js
@@ -0,0 +1,4 @@
+'use strict';
+require('../../modules/es.reflect.to-string-tag');
+
+module.exports = 'Reflect';
diff --git a/node_modules/core-js/actual/regexp/constructor.js b/node_modules/core-js/actual/regexp/constructor.js
new file mode 100644
index 0000000..3bbfdb0
--- /dev/null
+++ b/node_modules/core-js/actual/regexp/constructor.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/regexp/constructor');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/regexp/dot-all.js b/node_modules/core-js/actual/regexp/dot-all.js
new file mode 100644
index 0000000..f087e21
--- /dev/null
+++ b/node_modules/core-js/actual/regexp/dot-all.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/regexp/dot-all');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/regexp/escape.js b/node_modules/core-js/actual/regexp/escape.js
new file mode 100644
index 0000000..bc251a3
--- /dev/null
+++ b/node_modules/core-js/actual/regexp/escape.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../stable/regexp/escape');
+require('../../modules/esnext.regexp.escape');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/regexp/flags.js b/node_modules/core-js/actual/regexp/flags.js
new file mode 100644
index 0000000..a15eb25
--- /dev/null
+++ b/node_modules/core-js/actual/regexp/flags.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/regexp/flags');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/regexp/index.js b/node_modules/core-js/actual/regexp/index.js
new file mode 100644
index 0000000..ba369e0
--- /dev/null
+++ b/node_modules/core-js/actual/regexp/index.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../stable/regexp');
+require('../../modules/esnext.regexp.escape');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/regexp/match.js b/node_modules/core-js/actual/regexp/match.js
new file mode 100644
index 0000000..b07f8a8
--- /dev/null
+++ b/node_modules/core-js/actual/regexp/match.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/regexp/match');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/regexp/replace.js b/node_modules/core-js/actual/regexp/replace.js
new file mode 100644
index 0000000..ba055ef
--- /dev/null
+++ b/node_modules/core-js/actual/regexp/replace.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/regexp/replace');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/regexp/search.js b/node_modules/core-js/actual/regexp/search.js
new file mode 100644
index 0000000..291d14b
--- /dev/null
+++ b/node_modules/core-js/actual/regexp/search.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/regexp/search');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/regexp/split.js b/node_modules/core-js/actual/regexp/split.js
new file mode 100644
index 0000000..08f81b3
--- /dev/null
+++ b/node_modules/core-js/actual/regexp/split.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/regexp/split');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/regexp/sticky.js b/node_modules/core-js/actual/regexp/sticky.js
new file mode 100644
index 0000000..5897934
--- /dev/null
+++ b/node_modules/core-js/actual/regexp/sticky.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/regexp/sticky');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/regexp/test.js b/node_modules/core-js/actual/regexp/test.js
new file mode 100644
index 0000000..68ea66f
--- /dev/null
+++ b/node_modules/core-js/actual/regexp/test.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/regexp/test');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/regexp/to-string.js b/node_modules/core-js/actual/regexp/to-string.js
new file mode 100644
index 0000000..93d6a29
--- /dev/null
+++ b/node_modules/core-js/actual/regexp/to-string.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/regexp/to-string');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/self.js b/node_modules/core-js/actual/self.js
new file mode 100644
index 0000000..42d78cd
--- /dev/null
+++ b/node_modules/core-js/actual/self.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../stable/self');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/set-immediate.js b/node_modules/core-js/actual/set-immediate.js
new file mode 100644
index 0000000..70365b3
--- /dev/null
+++ b/node_modules/core-js/actual/set-immediate.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../stable/set-immediate');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/set-interval.js b/node_modules/core-js/actual/set-interval.js
new file mode 100644
index 0000000..67d300c
--- /dev/null
+++ b/node_modules/core-js/actual/set-interval.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../stable/set-interval');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/set-timeout.js b/node_modules/core-js/actual/set-timeout.js
new file mode 100644
index 0000000..7203eb2
--- /dev/null
+++ b/node_modules/core-js/actual/set-timeout.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../stable/set-timeout');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/set/difference.js b/node_modules/core-js/actual/set/difference.js
new file mode 100644
index 0000000..594bd7a
--- /dev/null
+++ b/node_modules/core-js/actual/set/difference.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../stable/set/difference');
+require('../../modules/esnext.set.difference.v2');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/set/index.js b/node_modules/core-js/actual/set/index.js
new file mode 100644
index 0000000..2ea9cf0
--- /dev/null
+++ b/node_modules/core-js/actual/set/index.js
@@ -0,0 +1,11 @@
+'use strict';
+var parent = require('../../stable/set');
+require('../../modules/esnext.set.difference.v2');
+require('../../modules/esnext.set.intersection.v2');
+require('../../modules/esnext.set.is-disjoint-from.v2');
+require('../../modules/esnext.set.is-subset-of.v2');
+require('../../modules/esnext.set.is-superset-of.v2');
+require('../../modules/esnext.set.symmetric-difference.v2');
+require('../../modules/esnext.set.union.v2');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/set/intersection.js b/node_modules/core-js/actual/set/intersection.js
new file mode 100644
index 0000000..d245fec
--- /dev/null
+++ b/node_modules/core-js/actual/set/intersection.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../stable/set/intersection');
+require('../../modules/esnext.set.intersection.v2');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/set/is-disjoint-from.js b/node_modules/core-js/actual/set/is-disjoint-from.js
new file mode 100644
index 0000000..6781d79
--- /dev/null
+++ b/node_modules/core-js/actual/set/is-disjoint-from.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../stable/set/is-disjoint-from');
+require('../../modules/esnext.set.is-disjoint-from.v2');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/set/is-subset-of.js b/node_modules/core-js/actual/set/is-subset-of.js
new file mode 100644
index 0000000..96a48be
--- /dev/null
+++ b/node_modules/core-js/actual/set/is-subset-of.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../stable/set/is-subset-of');
+require('../../modules/esnext.set.is-subset-of.v2');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/set/is-superset-of.js b/node_modules/core-js/actual/set/is-superset-of.js
new file mode 100644
index 0000000..3c67563
--- /dev/null
+++ b/node_modules/core-js/actual/set/is-superset-of.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../stable/set/is-superset-of');
+require('../../modules/esnext.set.is-superset-of.v2');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/set/symmetric-difference.js b/node_modules/core-js/actual/set/symmetric-difference.js
new file mode 100644
index 0000000..4efeeb3
--- /dev/null
+++ b/node_modules/core-js/actual/set/symmetric-difference.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../stable/set/symmetric-difference');
+require('../../modules/esnext.set.symmetric-difference.v2');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/set/union.js b/node_modules/core-js/actual/set/union.js
new file mode 100644
index 0000000..50d0a01
--- /dev/null
+++ b/node_modules/core-js/actual/set/union.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../stable/set/union');
+require('../../modules/esnext.set.union.v2');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/anchor.js b/node_modules/core-js/actual/string/anchor.js
new file mode 100644
index 0000000..9efc89d
--- /dev/null
+++ b/node_modules/core-js/actual/string/anchor.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/anchor');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/at.js b/node_modules/core-js/actual/string/at.js
new file mode 100644
index 0000000..f9a9c7c
--- /dev/null
+++ b/node_modules/core-js/actual/string/at.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/at');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/big.js b/node_modules/core-js/actual/string/big.js
new file mode 100644
index 0000000..0ecd01d
--- /dev/null
+++ b/node_modules/core-js/actual/string/big.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/big');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/blink.js b/node_modules/core-js/actual/string/blink.js
new file mode 100644
index 0000000..3162b48
--- /dev/null
+++ b/node_modules/core-js/actual/string/blink.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/blink');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/bold.js b/node_modules/core-js/actual/string/bold.js
new file mode 100644
index 0000000..6a25ad7
--- /dev/null
+++ b/node_modules/core-js/actual/string/bold.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/bold');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/code-point-at.js b/node_modules/core-js/actual/string/code-point-at.js
new file mode 100644
index 0000000..e537d17
--- /dev/null
+++ b/node_modules/core-js/actual/string/code-point-at.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/code-point-at');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/ends-with.js b/node_modules/core-js/actual/string/ends-with.js
new file mode 100644
index 0000000..2ca9ed2
--- /dev/null
+++ b/node_modules/core-js/actual/string/ends-with.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/ends-with');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/fixed.js b/node_modules/core-js/actual/string/fixed.js
new file mode 100644
index 0000000..2ac56e2
--- /dev/null
+++ b/node_modules/core-js/actual/string/fixed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/fixed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/fontcolor.js b/node_modules/core-js/actual/string/fontcolor.js
new file mode 100644
index 0000000..d60137b
--- /dev/null
+++ b/node_modules/core-js/actual/string/fontcolor.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/fontcolor');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/fontsize.js b/node_modules/core-js/actual/string/fontsize.js
new file mode 100644
index 0000000..edfcbc4
--- /dev/null
+++ b/node_modules/core-js/actual/string/fontsize.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/fontsize');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/from-code-point.js b/node_modules/core-js/actual/string/from-code-point.js
new file mode 100644
index 0000000..b86cdae
--- /dev/null
+++ b/node_modules/core-js/actual/string/from-code-point.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/from-code-point');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/includes.js b/node_modules/core-js/actual/string/includes.js
new file mode 100644
index 0000000..c221c3d
--- /dev/null
+++ b/node_modules/core-js/actual/string/includes.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/includes');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/index.js b/node_modules/core-js/actual/string/index.js
new file mode 100644
index 0000000..d1357b5
--- /dev/null
+++ b/node_modules/core-js/actual/string/index.js
@@ -0,0 +1,8 @@
+'use strict';
+var parent = require('../../stable/string');
+
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.string.is-well-formed');
+require('../../modules/esnext.string.to-well-formed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/is-well-formed.js b/node_modules/core-js/actual/string/is-well-formed.js
new file mode 100644
index 0000000..9e91f47
--- /dev/null
+++ b/node_modules/core-js/actual/string/is-well-formed.js
@@ -0,0 +1,7 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.string.is-well-formed');
+
+var parent = require('../../stable/string/is-well-formed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/italics.js b/node_modules/core-js/actual/string/italics.js
new file mode 100644
index 0000000..eb3d62e
--- /dev/null
+++ b/node_modules/core-js/actual/string/italics.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/italics');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/iterator.js b/node_modules/core-js/actual/string/iterator.js
new file mode 100644
index 0000000..02ebb13
--- /dev/null
+++ b/node_modules/core-js/actual/string/iterator.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/link.js b/node_modules/core-js/actual/string/link.js
new file mode 100644
index 0000000..f9d0255
--- /dev/null
+++ b/node_modules/core-js/actual/string/link.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/link');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/match-all.js b/node_modules/core-js/actual/string/match-all.js
new file mode 100644
index 0000000..06d157d
--- /dev/null
+++ b/node_modules/core-js/actual/string/match-all.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/match-all');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/match.js b/node_modules/core-js/actual/string/match.js
new file mode 100644
index 0000000..2395bcc
--- /dev/null
+++ b/node_modules/core-js/actual/string/match.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/match');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/pad-end.js b/node_modules/core-js/actual/string/pad-end.js
new file mode 100644
index 0000000..877ba29
--- /dev/null
+++ b/node_modules/core-js/actual/string/pad-end.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/pad-end');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/pad-start.js b/node_modules/core-js/actual/string/pad-start.js
new file mode 100644
index 0000000..d4e4a7e
--- /dev/null
+++ b/node_modules/core-js/actual/string/pad-start.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/pad-start');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/raw.js b/node_modules/core-js/actual/string/raw.js
new file mode 100644
index 0000000..39202ab
--- /dev/null
+++ b/node_modules/core-js/actual/string/raw.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/raw');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/repeat.js b/node_modules/core-js/actual/string/repeat.js
new file mode 100644
index 0000000..0d2945c
--- /dev/null
+++ b/node_modules/core-js/actual/string/repeat.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/repeat');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/replace-all.js b/node_modules/core-js/actual/string/replace-all.js
new file mode 100644
index 0000000..ba6985a
--- /dev/null
+++ b/node_modules/core-js/actual/string/replace-all.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/replace-all');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/replace.js b/node_modules/core-js/actual/string/replace.js
new file mode 100644
index 0000000..075d819
--- /dev/null
+++ b/node_modules/core-js/actual/string/replace.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/replace');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/search.js b/node_modules/core-js/actual/string/search.js
new file mode 100644
index 0000000..d66b106
--- /dev/null
+++ b/node_modules/core-js/actual/string/search.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/search');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/small.js b/node_modules/core-js/actual/string/small.js
new file mode 100644
index 0000000..430e083
--- /dev/null
+++ b/node_modules/core-js/actual/string/small.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/small');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/split.js b/node_modules/core-js/actual/string/split.js
new file mode 100644
index 0000000..d71e627
--- /dev/null
+++ b/node_modules/core-js/actual/string/split.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/split');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/starts-with.js b/node_modules/core-js/actual/string/starts-with.js
new file mode 100644
index 0000000..818cdff
--- /dev/null
+++ b/node_modules/core-js/actual/string/starts-with.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/starts-with');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/strike.js b/node_modules/core-js/actual/string/strike.js
new file mode 100644
index 0000000..ca20cd3
--- /dev/null
+++ b/node_modules/core-js/actual/string/strike.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/strike');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/sub.js b/node_modules/core-js/actual/string/sub.js
new file mode 100644
index 0000000..58163d2
--- /dev/null
+++ b/node_modules/core-js/actual/string/sub.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/sub');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/substr.js b/node_modules/core-js/actual/string/substr.js
new file mode 100644
index 0000000..f71c01b
--- /dev/null
+++ b/node_modules/core-js/actual/string/substr.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/substr');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/sup.js b/node_modules/core-js/actual/string/sup.js
new file mode 100644
index 0000000..04fa80d
--- /dev/null
+++ b/node_modules/core-js/actual/string/sup.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/sup');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/to-well-formed.js b/node_modules/core-js/actual/string/to-well-formed.js
new file mode 100644
index 0000000..67ad9e4
--- /dev/null
+++ b/node_modules/core-js/actual/string/to-well-formed.js
@@ -0,0 +1,7 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.string.to-well-formed');
+
+var parent = require('../../stable/string/to-well-formed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/trim-end.js b/node_modules/core-js/actual/string/trim-end.js
new file mode 100644
index 0000000..92c2c38
--- /dev/null
+++ b/node_modules/core-js/actual/string/trim-end.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/trim-end');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/trim-left.js b/node_modules/core-js/actual/string/trim-left.js
new file mode 100644
index 0000000..d9b2f3f
--- /dev/null
+++ b/node_modules/core-js/actual/string/trim-left.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/trim-left');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/trim-right.js b/node_modules/core-js/actual/string/trim-right.js
new file mode 100644
index 0000000..68bb582
--- /dev/null
+++ b/node_modules/core-js/actual/string/trim-right.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/trim-right');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/trim-start.js b/node_modules/core-js/actual/string/trim-start.js
new file mode 100644
index 0000000..17611e6
--- /dev/null
+++ b/node_modules/core-js/actual/string/trim-start.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/trim-start');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/trim.js b/node_modules/core-js/actual/string/trim.js
new file mode 100644
index 0000000..0539355
--- /dev/null
+++ b/node_modules/core-js/actual/string/trim.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/string/trim');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/virtual/anchor.js b/node_modules/core-js/actual/string/virtual/anchor.js
new file mode 100644
index 0000000..66c2c91
--- /dev/null
+++ b/node_modules/core-js/actual/string/virtual/anchor.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/string/virtual/anchor');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/virtual/at.js b/node_modules/core-js/actual/string/virtual/at.js
new file mode 100644
index 0000000..b87d421
--- /dev/null
+++ b/node_modules/core-js/actual/string/virtual/at.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/string/virtual/at');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/virtual/big.js b/node_modules/core-js/actual/string/virtual/big.js
new file mode 100644
index 0000000..5c89910
--- /dev/null
+++ b/node_modules/core-js/actual/string/virtual/big.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/string/virtual/big');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/virtual/blink.js b/node_modules/core-js/actual/string/virtual/blink.js
new file mode 100644
index 0000000..a4a0f12
--- /dev/null
+++ b/node_modules/core-js/actual/string/virtual/blink.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/string/virtual/blink');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/virtual/bold.js b/node_modules/core-js/actual/string/virtual/bold.js
new file mode 100644
index 0000000..b2384d9
--- /dev/null
+++ b/node_modules/core-js/actual/string/virtual/bold.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/string/virtual/bold');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/virtual/code-point-at.js b/node_modules/core-js/actual/string/virtual/code-point-at.js
new file mode 100644
index 0000000..0620b08
--- /dev/null
+++ b/node_modules/core-js/actual/string/virtual/code-point-at.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/string/virtual/code-point-at');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/virtual/ends-with.js b/node_modules/core-js/actual/string/virtual/ends-with.js
new file mode 100644
index 0000000..d874e7d
--- /dev/null
+++ b/node_modules/core-js/actual/string/virtual/ends-with.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/string/virtual/ends-with');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/virtual/fixed.js b/node_modules/core-js/actual/string/virtual/fixed.js
new file mode 100644
index 0000000..fd54719
--- /dev/null
+++ b/node_modules/core-js/actual/string/virtual/fixed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/string/virtual/fixed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/virtual/fontcolor.js b/node_modules/core-js/actual/string/virtual/fontcolor.js
new file mode 100644
index 0000000..cb5c63a
--- /dev/null
+++ b/node_modules/core-js/actual/string/virtual/fontcolor.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/string/virtual/fontcolor');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/virtual/fontsize.js b/node_modules/core-js/actual/string/virtual/fontsize.js
new file mode 100644
index 0000000..2175b3f
--- /dev/null
+++ b/node_modules/core-js/actual/string/virtual/fontsize.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/string/virtual/fontsize');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/virtual/includes.js b/node_modules/core-js/actual/string/virtual/includes.js
new file mode 100644
index 0000000..2175260
--- /dev/null
+++ b/node_modules/core-js/actual/string/virtual/includes.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/string/virtual/includes');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/virtual/index.js b/node_modules/core-js/actual/string/virtual/index.js
new file mode 100644
index 0000000..19afd93
--- /dev/null
+++ b/node_modules/core-js/actual/string/virtual/index.js
@@ -0,0 +1,8 @@
+'use strict';
+var parent = require('../../../stable/string/virtual');
+
+// TODO: Remove from `core-js@4`
+require('../../../modules/esnext.string.is-well-formed');
+require('../../../modules/esnext.string.to-well-formed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/virtual/is-well-formed.js b/node_modules/core-js/actual/string/virtual/is-well-formed.js
new file mode 100644
index 0000000..e3702f4
--- /dev/null
+++ b/node_modules/core-js/actual/string/virtual/is-well-formed.js
@@ -0,0 +1,7 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../../../modules/esnext.string.is-well-formed');
+
+var parent = require('../../../stable/string/virtual/is-well-formed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/virtual/italics.js b/node_modules/core-js/actual/string/virtual/italics.js
new file mode 100644
index 0000000..921158a
--- /dev/null
+++ b/node_modules/core-js/actual/string/virtual/italics.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/string/virtual/italics');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/virtual/iterator.js b/node_modules/core-js/actual/string/virtual/iterator.js
new file mode 100644
index 0000000..c6a45cd
--- /dev/null
+++ b/node_modules/core-js/actual/string/virtual/iterator.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/string/virtual/iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/virtual/link.js b/node_modules/core-js/actual/string/virtual/link.js
new file mode 100644
index 0000000..464611c
--- /dev/null
+++ b/node_modules/core-js/actual/string/virtual/link.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/string/virtual/link');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/virtual/match-all.js b/node_modules/core-js/actual/string/virtual/match-all.js
new file mode 100644
index 0000000..8703b82
--- /dev/null
+++ b/node_modules/core-js/actual/string/virtual/match-all.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/string/virtual/match-all');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/virtual/pad-end.js b/node_modules/core-js/actual/string/virtual/pad-end.js
new file mode 100644
index 0000000..43d1d1c
--- /dev/null
+++ b/node_modules/core-js/actual/string/virtual/pad-end.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/string/virtual/pad-end');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/virtual/pad-start.js b/node_modules/core-js/actual/string/virtual/pad-start.js
new file mode 100644
index 0000000..e4e7e1a
--- /dev/null
+++ b/node_modules/core-js/actual/string/virtual/pad-start.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/string/virtual/pad-start');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/virtual/repeat.js b/node_modules/core-js/actual/string/virtual/repeat.js
new file mode 100644
index 0000000..14962cf
--- /dev/null
+++ b/node_modules/core-js/actual/string/virtual/repeat.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/string/virtual/repeat');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/virtual/replace-all.js b/node_modules/core-js/actual/string/virtual/replace-all.js
new file mode 100644
index 0000000..d3604ff
--- /dev/null
+++ b/node_modules/core-js/actual/string/virtual/replace-all.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/string/virtual/replace-all');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/virtual/small.js b/node_modules/core-js/actual/string/virtual/small.js
new file mode 100644
index 0000000..8c4de6a
--- /dev/null
+++ b/node_modules/core-js/actual/string/virtual/small.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/string/virtual/small');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/virtual/starts-with.js b/node_modules/core-js/actual/string/virtual/starts-with.js
new file mode 100644
index 0000000..d887a04
--- /dev/null
+++ b/node_modules/core-js/actual/string/virtual/starts-with.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/string/virtual/starts-with');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/virtual/strike.js b/node_modules/core-js/actual/string/virtual/strike.js
new file mode 100644
index 0000000..2aea074
--- /dev/null
+++ b/node_modules/core-js/actual/string/virtual/strike.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/string/virtual/strike');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/virtual/sub.js b/node_modules/core-js/actual/string/virtual/sub.js
new file mode 100644
index 0000000..cd3327b
--- /dev/null
+++ b/node_modules/core-js/actual/string/virtual/sub.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/string/virtual/sub');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/virtual/substr.js b/node_modules/core-js/actual/string/virtual/substr.js
new file mode 100644
index 0000000..a02e33c
--- /dev/null
+++ b/node_modules/core-js/actual/string/virtual/substr.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/string/virtual/substr');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/virtual/sup.js b/node_modules/core-js/actual/string/virtual/sup.js
new file mode 100644
index 0000000..33036f7
--- /dev/null
+++ b/node_modules/core-js/actual/string/virtual/sup.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/string/virtual/sup');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/virtual/to-well-formed.js b/node_modules/core-js/actual/string/virtual/to-well-formed.js
new file mode 100644
index 0000000..86db8e6
--- /dev/null
+++ b/node_modules/core-js/actual/string/virtual/to-well-formed.js
@@ -0,0 +1,7 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../../../modules/esnext.string.to-well-formed');
+
+var parent = require('../../../stable/string/virtual/to-well-formed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/virtual/trim-end.js b/node_modules/core-js/actual/string/virtual/trim-end.js
new file mode 100644
index 0000000..3065012
--- /dev/null
+++ b/node_modules/core-js/actual/string/virtual/trim-end.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/string/virtual/trim-end');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/virtual/trim-left.js b/node_modules/core-js/actual/string/virtual/trim-left.js
new file mode 100644
index 0000000..dadf770
--- /dev/null
+++ b/node_modules/core-js/actual/string/virtual/trim-left.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/string/virtual/trim-left');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/virtual/trim-right.js b/node_modules/core-js/actual/string/virtual/trim-right.js
new file mode 100644
index 0000000..fba0dfd
--- /dev/null
+++ b/node_modules/core-js/actual/string/virtual/trim-right.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/string/virtual/trim-right');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/virtual/trim-start.js b/node_modules/core-js/actual/string/virtual/trim-start.js
new file mode 100644
index 0000000..c0679cc
--- /dev/null
+++ b/node_modules/core-js/actual/string/virtual/trim-start.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/string/virtual/trim-start');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/string/virtual/trim.js b/node_modules/core-js/actual/string/virtual/trim.js
new file mode 100644
index 0000000..59673b5
--- /dev/null
+++ b/node_modules/core-js/actual/string/virtual/trim.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../stable/string/virtual/trim');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/structured-clone.js b/node_modules/core-js/actual/structured-clone.js
new file mode 100644
index 0000000..2dc60a1
--- /dev/null
+++ b/node_modules/core-js/actual/structured-clone.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../stable/structured-clone');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/suppressed-error.js b/node_modules/core-js/actual/suppressed-error.js
new file mode 100644
index 0000000..d550baa
--- /dev/null
+++ b/node_modules/core-js/actual/suppressed-error.js
@@ -0,0 +1,7 @@
+'use strict';
+require('../modules/es.error.cause');
+require('../modules/es.error.to-string');
+require('../modules/esnext.suppressed-error.constructor');
+var path = require('../internals/path');
+
+module.exports = path.SuppressedError;
diff --git a/node_modules/core-js/actual/symbol/async-dispose.js b/node_modules/core-js/actual/symbol/async-dispose.js
new file mode 100644
index 0000000..712e3be
--- /dev/null
+++ b/node_modules/core-js/actual/symbol/async-dispose.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.symbol.async-dispose');
+var WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');
+
+module.exports = WrappedWellKnownSymbolModule.f('asyncDispose');
diff --git a/node_modules/core-js/actual/symbol/async-iterator.js b/node_modules/core-js/actual/symbol/async-iterator.js
new file mode 100644
index 0000000..9ed1f74
--- /dev/null
+++ b/node_modules/core-js/actual/symbol/async-iterator.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/symbol/async-iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/symbol/description.js b/node_modules/core-js/actual/symbol/description.js
new file mode 100644
index 0000000..d2a5731
--- /dev/null
+++ b/node_modules/core-js/actual/symbol/description.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/symbol/description');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/symbol/dispose.js b/node_modules/core-js/actual/symbol/dispose.js
new file mode 100644
index 0000000..17c74c3
--- /dev/null
+++ b/node_modules/core-js/actual/symbol/dispose.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.symbol.dispose');
+var WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');
+
+module.exports = WrappedWellKnownSymbolModule.f('dispose');
diff --git a/node_modules/core-js/actual/symbol/for.js b/node_modules/core-js/actual/symbol/for.js
new file mode 100644
index 0000000..2349323
--- /dev/null
+++ b/node_modules/core-js/actual/symbol/for.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/symbol/for');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/symbol/has-instance.js b/node_modules/core-js/actual/symbol/has-instance.js
new file mode 100644
index 0000000..4ffe725
--- /dev/null
+++ b/node_modules/core-js/actual/symbol/has-instance.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/symbol/has-instance');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/symbol/index.js b/node_modules/core-js/actual/symbol/index.js
new file mode 100644
index 0000000..5905a78
--- /dev/null
+++ b/node_modules/core-js/actual/symbol/index.js
@@ -0,0 +1,9 @@
+'use strict';
+var parent = require('../../stable/symbol');
+
+require('../../modules/esnext.function.metadata');
+require('../../modules/esnext.symbol.async-dispose');
+require('../../modules/esnext.symbol.dispose');
+require('../../modules/esnext.symbol.metadata');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/symbol/is-concat-spreadable.js b/node_modules/core-js/actual/symbol/is-concat-spreadable.js
new file mode 100644
index 0000000..0c86b41
--- /dev/null
+++ b/node_modules/core-js/actual/symbol/is-concat-spreadable.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/symbol/is-concat-spreadable');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/symbol/iterator.js b/node_modules/core-js/actual/symbol/iterator.js
new file mode 100644
index 0000000..0804df8
--- /dev/null
+++ b/node_modules/core-js/actual/symbol/iterator.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/symbol/iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/symbol/key-for.js b/node_modules/core-js/actual/symbol/key-for.js
new file mode 100644
index 0000000..c515ed3
--- /dev/null
+++ b/node_modules/core-js/actual/symbol/key-for.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/symbol/key-for');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/symbol/match-all.js b/node_modules/core-js/actual/symbol/match-all.js
new file mode 100644
index 0000000..23c97e0
--- /dev/null
+++ b/node_modules/core-js/actual/symbol/match-all.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/symbol/match-all');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/symbol/match.js b/node_modules/core-js/actual/symbol/match.js
new file mode 100644
index 0000000..68061fd
--- /dev/null
+++ b/node_modules/core-js/actual/symbol/match.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/symbol/match');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/symbol/metadata.js b/node_modules/core-js/actual/symbol/metadata.js
new file mode 100644
index 0000000..768cbae
--- /dev/null
+++ b/node_modules/core-js/actual/symbol/metadata.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/esnext.function.metadata');
+require('../../modules/esnext.symbol.metadata');
+var WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');
+
+module.exports = WrappedWellKnownSymbolModule.f('metadata');
diff --git a/node_modules/core-js/actual/symbol/replace.js b/node_modules/core-js/actual/symbol/replace.js
new file mode 100644
index 0000000..59ea3ad
--- /dev/null
+++ b/node_modules/core-js/actual/symbol/replace.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/symbol/replace');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/symbol/search.js b/node_modules/core-js/actual/symbol/search.js
new file mode 100644
index 0000000..68f6233
--- /dev/null
+++ b/node_modules/core-js/actual/symbol/search.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/symbol/search');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/symbol/species.js b/node_modules/core-js/actual/symbol/species.js
new file mode 100644
index 0000000..25dfd51
--- /dev/null
+++ b/node_modules/core-js/actual/symbol/species.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/symbol/species');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/symbol/split.js b/node_modules/core-js/actual/symbol/split.js
new file mode 100644
index 0000000..c4af55f
--- /dev/null
+++ b/node_modules/core-js/actual/symbol/split.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/symbol/split');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/symbol/to-primitive.js b/node_modules/core-js/actual/symbol/to-primitive.js
new file mode 100644
index 0000000..ceab28f
--- /dev/null
+++ b/node_modules/core-js/actual/symbol/to-primitive.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/symbol/to-primitive');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/symbol/to-string-tag.js b/node_modules/core-js/actual/symbol/to-string-tag.js
new file mode 100644
index 0000000..6fe360c
--- /dev/null
+++ b/node_modules/core-js/actual/symbol/to-string-tag.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/symbol/to-string-tag');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/symbol/unscopables.js b/node_modules/core-js/actual/symbol/unscopables.js
new file mode 100644
index 0000000..1d05b70
--- /dev/null
+++ b/node_modules/core-js/actual/symbol/unscopables.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/symbol/unscopables');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/at.js b/node_modules/core-js/actual/typed-array/at.js
new file mode 100644
index 0000000..59e18b8
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/at.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/typed-array/at');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/copy-within.js b/node_modules/core-js/actual/typed-array/copy-within.js
new file mode 100644
index 0000000..015fea1
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/copy-within.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/typed-array/copy-within');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/entries.js b/node_modules/core-js/actual/typed-array/entries.js
new file mode 100644
index 0000000..f187e0d
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/entries.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/typed-array/entries');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/every.js b/node_modules/core-js/actual/typed-array/every.js
new file mode 100644
index 0000000..a34625d
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/every.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/typed-array/every');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/fill.js b/node_modules/core-js/actual/typed-array/fill.js
new file mode 100644
index 0000000..3236a10
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/fill.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/typed-array/fill');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/filter.js b/node_modules/core-js/actual/typed-array/filter.js
new file mode 100644
index 0000000..8ac9e89
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/filter.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/typed-array/filter');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/find-index.js b/node_modules/core-js/actual/typed-array/find-index.js
new file mode 100644
index 0000000..da18404
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/find-index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/typed-array/find-index');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/find-last-index.js b/node_modules/core-js/actual/typed-array/find-last-index.js
new file mode 100644
index 0000000..eb7cd48
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/find-last-index.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.typed-array.find-last-index');
+var parent = require('../../stable/typed-array/find-last-index');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/find-last.js b/node_modules/core-js/actual/typed-array/find-last.js
new file mode 100644
index 0000000..f7608b1
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/find-last.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.typed-array.find-last');
+var parent = require('../../stable/typed-array/find-last');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/find.js b/node_modules/core-js/actual/typed-array/find.js
new file mode 100644
index 0000000..af39eac
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/find.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/typed-array/find');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/float32-array.js b/node_modules/core-js/actual/typed-array/float32-array.js
new file mode 100644
index 0000000..1bfbb23
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/float32-array.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../stable/typed-array/float32-array');
+require('../../actual/typed-array/methods');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/float64-array.js b/node_modules/core-js/actual/typed-array/float64-array.js
new file mode 100644
index 0000000..85a9b73
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/float64-array.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../stable/typed-array/float64-array');
+require('../../actual/typed-array/methods');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/for-each.js b/node_modules/core-js/actual/typed-array/for-each.js
new file mode 100644
index 0000000..56f4c26
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/for-each.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/typed-array/for-each');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/from-base64.js b/node_modules/core-js/actual/typed-array/from-base64.js
new file mode 100644
index 0000000..68a6e94
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/from-base64.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/esnext.uint8-array.from-base64');
diff --git a/node_modules/core-js/actual/typed-array/from-hex.js b/node_modules/core-js/actual/typed-array/from-hex.js
new file mode 100644
index 0000000..984225b
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/from-hex.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/esnext.uint8-array.from-hex');
diff --git a/node_modules/core-js/actual/typed-array/from.js b/node_modules/core-js/actual/typed-array/from.js
new file mode 100644
index 0000000..2027a7a
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/from.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/typed-array/from');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/includes.js b/node_modules/core-js/actual/typed-array/includes.js
new file mode 100644
index 0000000..c87ecab
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/includes.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/typed-array/includes');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/index-of.js b/node_modules/core-js/actual/typed-array/index-of.js
new file mode 100644
index 0000000..e2096ed
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/index-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/typed-array/index-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/index.js b/node_modules/core-js/actual/typed-array/index.js
new file mode 100644
index 0000000..c495f5a
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/index.js
@@ -0,0 +1,17 @@
+'use strict';
+var parent = require('../../stable/typed-array');
+require('../../modules/esnext.uint8-array.from-base64');
+require('../../modules/esnext.uint8-array.from-hex');
+require('../../modules/esnext.uint8-array.set-from-base64');
+require('../../modules/esnext.uint8-array.set-from-hex');
+require('../../modules/esnext.uint8-array.to-base64');
+require('../../modules/esnext.uint8-array.to-hex');
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.typed-array.find-last');
+require('../../modules/esnext.typed-array.find-last-index');
+require('../../modules/esnext.typed-array.to-reversed');
+require('../../modules/esnext.typed-array.to-sorted');
+require('../../modules/esnext.typed-array.to-spliced');
+require('../../modules/esnext.typed-array.with');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/int16-array.js b/node_modules/core-js/actual/typed-array/int16-array.js
new file mode 100644
index 0000000..ee00a14
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/int16-array.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../stable/typed-array/int16-array');
+require('../../actual/typed-array/methods');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/int32-array.js b/node_modules/core-js/actual/typed-array/int32-array.js
new file mode 100644
index 0000000..b20c128
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/int32-array.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../stable/typed-array/int32-array');
+require('../../actual/typed-array/methods');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/int8-array.js b/node_modules/core-js/actual/typed-array/int8-array.js
new file mode 100644
index 0000000..4837662
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/int8-array.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../stable/typed-array/int8-array');
+require('../../actual/typed-array/methods');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/iterator.js b/node_modules/core-js/actual/typed-array/iterator.js
new file mode 100644
index 0000000..98b9665
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/iterator.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/typed-array/iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/join.js b/node_modules/core-js/actual/typed-array/join.js
new file mode 100644
index 0000000..d18a936
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/join.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/typed-array/join');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/keys.js b/node_modules/core-js/actual/typed-array/keys.js
new file mode 100644
index 0000000..4976bfe
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/keys.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/typed-array/keys');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/last-index-of.js b/node_modules/core-js/actual/typed-array/last-index-of.js
new file mode 100644
index 0000000..abfa69e
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/last-index-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/typed-array/last-index-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/map.js b/node_modules/core-js/actual/typed-array/map.js
new file mode 100644
index 0000000..8b70aeb
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/map.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/typed-array/map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/methods.js b/node_modules/core-js/actual/typed-array/methods.js
new file mode 100644
index 0000000..c9f680c
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/methods.js
@@ -0,0 +1,17 @@
+'use strict';
+var parent = require('../../stable/typed-array/methods');
+require('../../modules/esnext.uint8-array.from-base64');
+require('../../modules/esnext.uint8-array.from-hex');
+require('../../modules/esnext.uint8-array.set-from-base64');
+require('../../modules/esnext.uint8-array.set-from-hex');
+require('../../modules/esnext.uint8-array.to-base64');
+require('../../modules/esnext.uint8-array.to-hex');
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.typed-array.find-last');
+require('../../modules/esnext.typed-array.find-last-index');
+require('../../modules/esnext.typed-array.to-reversed');
+require('../../modules/esnext.typed-array.to-sorted');
+require('../../modules/esnext.typed-array.to-spliced');
+require('../../modules/esnext.typed-array.with');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/of.js b/node_modules/core-js/actual/typed-array/of.js
new file mode 100644
index 0000000..720fad2
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/typed-array/of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/reduce-right.js b/node_modules/core-js/actual/typed-array/reduce-right.js
new file mode 100644
index 0000000..3b61cca
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/reduce-right.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/typed-array/reduce-right');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/reduce.js b/node_modules/core-js/actual/typed-array/reduce.js
new file mode 100644
index 0000000..fc0cce0
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/reduce.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/typed-array/reduce');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/reverse.js b/node_modules/core-js/actual/typed-array/reverse.js
new file mode 100644
index 0000000..ad56277
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/reverse.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/typed-array/reverse');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/set-from-base64.js b/node_modules/core-js/actual/typed-array/set-from-base64.js
new file mode 100644
index 0000000..4bdfeb8
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/set-from-base64.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/esnext.uint8-array.set-from-base64');
diff --git a/node_modules/core-js/actual/typed-array/set-from-hex.js b/node_modules/core-js/actual/typed-array/set-from-hex.js
new file mode 100644
index 0000000..50ad2b1
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/set-from-hex.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/esnext.uint8-array.set-from-hex');
diff --git a/node_modules/core-js/actual/typed-array/set.js b/node_modules/core-js/actual/typed-array/set.js
new file mode 100644
index 0000000..3ccf650
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/set.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/typed-array/set');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/slice.js b/node_modules/core-js/actual/typed-array/slice.js
new file mode 100644
index 0000000..0a6cddb
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/slice.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/typed-array/slice');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/some.js b/node_modules/core-js/actual/typed-array/some.js
new file mode 100644
index 0000000..6bd5b42
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/some.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/typed-array/some');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/sort.js b/node_modules/core-js/actual/typed-array/sort.js
new file mode 100644
index 0000000..611064b
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/sort.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/typed-array/sort');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/subarray.js b/node_modules/core-js/actual/typed-array/subarray.js
new file mode 100644
index 0000000..864d041
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/subarray.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/typed-array/subarray');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/to-base64.js b/node_modules/core-js/actual/typed-array/to-base64.js
new file mode 100644
index 0000000..2ad689d
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/to-base64.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/esnext.uint8-array.to-base64');
diff --git a/node_modules/core-js/actual/typed-array/to-hex.js b/node_modules/core-js/actual/typed-array/to-hex.js
new file mode 100644
index 0000000..2ea18d1
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/to-hex.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/esnext.uint8-array.to-hex');
diff --git a/node_modules/core-js/actual/typed-array/to-locale-string.js b/node_modules/core-js/actual/typed-array/to-locale-string.js
new file mode 100644
index 0000000..a9b0e49
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/to-locale-string.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/typed-array/to-locale-string');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/to-reversed.js b/node_modules/core-js/actual/typed-array/to-reversed.js
new file mode 100644
index 0000000..81a473b
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/to-reversed.js
@@ -0,0 +1,6 @@
+'use strict';
+var parent = require('../../stable/typed-array/to-reversed');
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.typed-array.to-reversed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/to-sorted.js b/node_modules/core-js/actual/typed-array/to-sorted.js
new file mode 100644
index 0000000..fd51ddf
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/to-sorted.js
@@ -0,0 +1,6 @@
+'use strict';
+var parent = require('../../stable/typed-array/to-sorted');
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.typed-array.to-sorted');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/to-spliced.js b/node_modules/core-js/actual/typed-array/to-spliced.js
new file mode 100644
index 0000000..ab4bf35
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/to-spliced.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.typed-array.to-spliced');
diff --git a/node_modules/core-js/actual/typed-array/to-string.js b/node_modules/core-js/actual/typed-array/to-string.js
new file mode 100644
index 0000000..3d30acb
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/to-string.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/typed-array/to-string');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/uint16-array.js b/node_modules/core-js/actual/typed-array/uint16-array.js
new file mode 100644
index 0000000..7bf175f
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/uint16-array.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../stable/typed-array/uint16-array');
+require('../../actual/typed-array/methods');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/uint32-array.js b/node_modules/core-js/actual/typed-array/uint32-array.js
new file mode 100644
index 0000000..a4a9db8
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/uint32-array.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../stable/typed-array/uint32-array');
+require('../../actual/typed-array/methods');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/uint8-array.js b/node_modules/core-js/actual/typed-array/uint8-array.js
new file mode 100644
index 0000000..f34cc91
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/uint8-array.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../stable/typed-array/uint8-array');
+require('../../actual/typed-array/methods');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/uint8-clamped-array.js b/node_modules/core-js/actual/typed-array/uint8-clamped-array.js
new file mode 100644
index 0000000..77f7950
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/uint8-clamped-array.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../stable/typed-array/uint8-clamped-array');
+require('../../actual/typed-array/methods');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/values.js b/node_modules/core-js/actual/typed-array/values.js
new file mode 100644
index 0000000..36b171f
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/values.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/typed-array/values');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/typed-array/with.js b/node_modules/core-js/actual/typed-array/with.js
new file mode 100644
index 0000000..080d19d
--- /dev/null
+++ b/node_modules/core-js/actual/typed-array/with.js
@@ -0,0 +1,6 @@
+'use strict';
+var parent = require('../../stable/typed-array/with');
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.typed-array.with');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/unescape.js b/node_modules/core-js/actual/unescape.js
new file mode 100644
index 0000000..6aadaa0
--- /dev/null
+++ b/node_modules/core-js/actual/unescape.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../stable/unescape');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/url-search-params/index.js b/node_modules/core-js/actual/url-search-params/index.js
new file mode 100644
index 0000000..612b82e
--- /dev/null
+++ b/node_modules/core-js/actual/url-search-params/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/url-search-params');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/url/can-parse.js b/node_modules/core-js/actual/url/can-parse.js
new file mode 100644
index 0000000..356c417
--- /dev/null
+++ b/node_modules/core-js/actual/url/can-parse.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/url/can-parse');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/url/index.js b/node_modules/core-js/actual/url/index.js
new file mode 100644
index 0000000..59968cf
--- /dev/null
+++ b/node_modules/core-js/actual/url/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/url');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/url/parse.js b/node_modules/core-js/actual/url/parse.js
new file mode 100644
index 0000000..5c0c9fb
--- /dev/null
+++ b/node_modules/core-js/actual/url/parse.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/url/parse');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/url/to-json.js b/node_modules/core-js/actual/url/to-json.js
new file mode 100644
index 0000000..917718a
--- /dev/null
+++ b/node_modules/core-js/actual/url/to-json.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/url/to-json');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/weak-map/index.js b/node_modules/core-js/actual/weak-map/index.js
new file mode 100644
index 0000000..2216ded
--- /dev/null
+++ b/node_modules/core-js/actual/weak-map/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/weak-map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/actual/weak-set/index.js b/node_modules/core-js/actual/weak-set/index.js
new file mode 100644
index 0000000..926088a
--- /dev/null
+++ b/node_modules/core-js/actual/weak-set/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../stable/weak-set');
+
+module.exports = parent;
diff --git a/node_modules/core-js/configurator.js b/node_modules/core-js/configurator.js
new file mode 100644
index 0000000..b8cac18
--- /dev/null
+++ b/node_modules/core-js/configurator.js
@@ -0,0 +1,28 @@
+'use strict';
+var hasOwn = require('./internals/has-own-property');
+var isArray = require('./internals/is-array');
+var isForced = require('./internals/is-forced');
+var shared = require('./internals/shared-store');
+
+var data = isForced.data;
+var normalize = isForced.normalize;
+var USE_FUNCTION_CONSTRUCTOR = 'USE_FUNCTION_CONSTRUCTOR';
+var ASYNC_ITERATOR_PROTOTYPE = 'AsyncIteratorPrototype';
+
+var setAggressivenessLevel = function (object, constant) {
+  if (isArray(object)) for (var i = 0; i < object.length; i++) data[normalize(object[i])] = constant;
+};
+
+module.exports = function (options) {
+  if (typeof options == 'object') {
+    setAggressivenessLevel(options.useNative, isForced.NATIVE);
+    setAggressivenessLevel(options.usePolyfill, isForced.POLYFILL);
+    setAggressivenessLevel(options.useFeatureDetection, null);
+    if (hasOwn(options, USE_FUNCTION_CONSTRUCTOR)) {
+      shared[USE_FUNCTION_CONSTRUCTOR] = !!options[USE_FUNCTION_CONSTRUCTOR];
+    }
+    if (hasOwn(options, ASYNC_ITERATOR_PROTOTYPE)) {
+      shared[ASYNC_ITERATOR_PROTOTYPE] = options[ASYNC_ITERATOR_PROTOTYPE];
+    }
+  }
+};
diff --git a/node_modules/core-js/es/README.md b/node_modules/core-js/es/README.md
new file mode 100644
index 0000000..d497f29
--- /dev/null
+++ b/node_modules/core-js/es/README.md
@@ -0,0 +1 @@
+This folder contains entry points for [stable ECMAScript features](https://github.com/zloirock/core-js/#ecmascript) with dependencies.
diff --git a/node_modules/core-js/es/aggregate-error.js b/node_modules/core-js/es/aggregate-error.js
new file mode 100644
index 0000000..2a0c810
--- /dev/null
+++ b/node_modules/core-js/es/aggregate-error.js
@@ -0,0 +1,9 @@
+'use strict';
+require('../modules/es.error.cause');
+require('../modules/es.aggregate-error');
+require('../modules/es.aggregate-error.cause');
+require('../modules/es.array.iterator');
+require('../modules/es.string.iterator');
+var path = require('../internals/path');
+
+module.exports = path.AggregateError;
diff --git a/node_modules/core-js/es/array-buffer/constructor.js b/node_modules/core-js/es/array-buffer/constructor.js
new file mode 100644
index 0000000..3a375e0
--- /dev/null
+++ b/node_modules/core-js/es/array-buffer/constructor.js
@@ -0,0 +1,10 @@
+'use strict';
+require('../../modules/es.array-buffer.constructor');
+require('../../modules/es.array-buffer.slice');
+require('../../modules/es.array-buffer.detached');
+require('../../modules/es.array-buffer.transfer');
+require('../../modules/es.array-buffer.transfer-to-fixed-length');
+require('../../modules/es.object.to-string');
+var path = require('../../internals/path');
+
+module.exports = path.ArrayBuffer;
diff --git a/node_modules/core-js/es/array-buffer/detached.js b/node_modules/core-js/es/array-buffer/detached.js
new file mode 100644
index 0000000..2c0ec73
--- /dev/null
+++ b/node_modules/core-js/es/array-buffer/detached.js
@@ -0,0 +1,4 @@
+'use strict';
+require('../../modules/es.array-buffer.constructor');
+require('../../modules/es.array-buffer.slice');
+require('../../modules/es.array-buffer.detached');
diff --git a/node_modules/core-js/es/array-buffer/index.js b/node_modules/core-js/es/array-buffer/index.js
new file mode 100644
index 0000000..f66c7f7
--- /dev/null
+++ b/node_modules/core-js/es/array-buffer/index.js
@@ -0,0 +1,12 @@
+'use strict';
+require('../../modules/es.array-buffer.constructor');
+require('../../modules/es.array-buffer.is-view');
+require('../../modules/es.array-buffer.slice');
+require('../../modules/es.data-view');
+require('../../modules/es.array-buffer.detached');
+require('../../modules/es.array-buffer.transfer');
+require('../../modules/es.array-buffer.transfer-to-fixed-length');
+require('../../modules/es.object.to-string');
+var path = require('../../internals/path');
+
+module.exports = path.ArrayBuffer;
diff --git a/node_modules/core-js/es/array-buffer/is-view.js b/node_modules/core-js/es/array-buffer/is-view.js
new file mode 100644
index 0000000..7580dd0
--- /dev/null
+++ b/node_modules/core-js/es/array-buffer/is-view.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.array-buffer.is-view');
+var path = require('../../internals/path');
+
+module.exports = path.ArrayBuffer.isView;
diff --git a/node_modules/core-js/es/array-buffer/slice.js b/node_modules/core-js/es/array-buffer/slice.js
new file mode 100644
index 0000000..df38220
--- /dev/null
+++ b/node_modules/core-js/es/array-buffer/slice.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.array-buffer.slice');
diff --git a/node_modules/core-js/es/array-buffer/transfer-to-fixed-length.js b/node_modules/core-js/es/array-buffer/transfer-to-fixed-length.js
new file mode 100644
index 0000000..21d4340
--- /dev/null
+++ b/node_modules/core-js/es/array-buffer/transfer-to-fixed-length.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.array-buffer.constructor');
+require('../../modules/es.array-buffer.slice');
+require('../../modules/es.data-view');
+require('../../modules/es.array-buffer.transfer-to-fixed-length');
diff --git a/node_modules/core-js/es/array-buffer/transfer.js b/node_modules/core-js/es/array-buffer/transfer.js
new file mode 100644
index 0000000..f7198e0
--- /dev/null
+++ b/node_modules/core-js/es/array-buffer/transfer.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.array-buffer.constructor');
+require('../../modules/es.array-buffer.slice');
+require('../../modules/es.data-view');
+require('../../modules/es.array-buffer.transfer');
diff --git a/node_modules/core-js/es/array/at.js b/node_modules/core-js/es/array/at.js
new file mode 100644
index 0000000..045588c
--- /dev/null
+++ b/node_modules/core-js/es/array/at.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.array.at');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'at');
diff --git a/node_modules/core-js/es/array/concat.js b/node_modules/core-js/es/array/concat.js
new file mode 100644
index 0000000..f9868cb
--- /dev/null
+++ b/node_modules/core-js/es/array/concat.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.array.concat');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'concat');
diff --git a/node_modules/core-js/es/array/copy-within.js b/node_modules/core-js/es/array/copy-within.js
new file mode 100644
index 0000000..ec74929
--- /dev/null
+++ b/node_modules/core-js/es/array/copy-within.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.array.copy-within');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'copyWithin');
diff --git a/node_modules/core-js/es/array/entries.js b/node_modules/core-js/es/array/entries.js
new file mode 100644
index 0000000..191cea2
--- /dev/null
+++ b/node_modules/core-js/es/array/entries.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.array.iterator');
+require('../../modules/es.object.to-string');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'entries');
diff --git a/node_modules/core-js/es/array/every.js b/node_modules/core-js/es/array/every.js
new file mode 100644
index 0000000..02a5973
--- /dev/null
+++ b/node_modules/core-js/es/array/every.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.array.every');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'every');
diff --git a/node_modules/core-js/es/array/fill.js b/node_modules/core-js/es/array/fill.js
new file mode 100644
index 0000000..5510882
--- /dev/null
+++ b/node_modules/core-js/es/array/fill.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.array.fill');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'fill');
diff --git a/node_modules/core-js/es/array/filter.js b/node_modules/core-js/es/array/filter.js
new file mode 100644
index 0000000..22c6fb2
--- /dev/null
+++ b/node_modules/core-js/es/array/filter.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.array.filter');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'filter');
diff --git a/node_modules/core-js/es/array/find-index.js b/node_modules/core-js/es/array/find-index.js
new file mode 100644
index 0000000..e4f753b
--- /dev/null
+++ b/node_modules/core-js/es/array/find-index.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.array.find-index');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'findIndex');
diff --git a/node_modules/core-js/es/array/find-last-index.js b/node_modules/core-js/es/array/find-last-index.js
new file mode 100644
index 0000000..8495550
--- /dev/null
+++ b/node_modules/core-js/es/array/find-last-index.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.array.find-last-index');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'findLastIndex');
diff --git a/node_modules/core-js/es/array/find-last.js b/node_modules/core-js/es/array/find-last.js
new file mode 100644
index 0000000..ce0b9ae
--- /dev/null
+++ b/node_modules/core-js/es/array/find-last.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.array.find-last');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'findLast');
diff --git a/node_modules/core-js/es/array/find.js b/node_modules/core-js/es/array/find.js
new file mode 100644
index 0000000..18c71f7
--- /dev/null
+++ b/node_modules/core-js/es/array/find.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.array.find');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'find');
diff --git a/node_modules/core-js/es/array/flat-map.js b/node_modules/core-js/es/array/flat-map.js
new file mode 100644
index 0000000..f64d5a4
--- /dev/null
+++ b/node_modules/core-js/es/array/flat-map.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.array.flat-map');
+require('../../modules/es.array.unscopables.flat-map');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'flatMap');
diff --git a/node_modules/core-js/es/array/flat.js b/node_modules/core-js/es/array/flat.js
new file mode 100644
index 0000000..f5ee4cd
--- /dev/null
+++ b/node_modules/core-js/es/array/flat.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.array.flat');
+require('../../modules/es.array.unscopables.flat');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'flat');
diff --git a/node_modules/core-js/es/array/for-each.js b/node_modules/core-js/es/array/for-each.js
new file mode 100644
index 0000000..e28bb51
--- /dev/null
+++ b/node_modules/core-js/es/array/for-each.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.array.for-each');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'forEach');
diff --git a/node_modules/core-js/es/array/from.js b/node_modules/core-js/es/array/from.js
new file mode 100644
index 0000000..9d7c5af
--- /dev/null
+++ b/node_modules/core-js/es/array/from.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.string.iterator');
+require('../../modules/es.array.from');
+var path = require('../../internals/path');
+
+module.exports = path.Array.from;
diff --git a/node_modules/core-js/es/array/includes.js b/node_modules/core-js/es/array/includes.js
new file mode 100644
index 0000000..cb2ca43
--- /dev/null
+++ b/node_modules/core-js/es/array/includes.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.array.includes');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'includes');
diff --git a/node_modules/core-js/es/array/index-of.js b/node_modules/core-js/es/array/index-of.js
new file mode 100644
index 0000000..f330bd4
--- /dev/null
+++ b/node_modules/core-js/es/array/index-of.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.array.index-of');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'indexOf');
diff --git a/node_modules/core-js/es/array/index.js b/node_modules/core-js/es/array/index.js
new file mode 100644
index 0000000..abae289
--- /dev/null
+++ b/node_modules/core-js/es/array/index.js
@@ -0,0 +1,44 @@
+'use strict';
+require('../../modules/es.array.from');
+require('../../modules/es.array.is-array');
+require('../../modules/es.array.of');
+require('../../modules/es.array.at');
+require('../../modules/es.array.concat');
+require('../../modules/es.array.copy-within');
+require('../../modules/es.array.every');
+require('../../modules/es.array.fill');
+require('../../modules/es.array.filter');
+require('../../modules/es.array.find');
+require('../../modules/es.array.find-index');
+require('../../modules/es.array.find-last');
+require('../../modules/es.array.find-last-index');
+require('../../modules/es.array.flat');
+require('../../modules/es.array.flat-map');
+require('../../modules/es.array.for-each');
+require('../../modules/es.array.includes');
+require('../../modules/es.array.index-of');
+require('../../modules/es.array.iterator');
+require('../../modules/es.array.join');
+require('../../modules/es.array.last-index-of');
+require('../../modules/es.array.map');
+require('../../modules/es.array.push');
+require('../../modules/es.array.reduce');
+require('../../modules/es.array.reduce-right');
+require('../../modules/es.array.reverse');
+require('../../modules/es.array.slice');
+require('../../modules/es.array.some');
+require('../../modules/es.array.sort');
+require('../../modules/es.array.species');
+require('../../modules/es.array.splice');
+require('../../modules/es.array.to-reversed');
+require('../../modules/es.array.to-sorted');
+require('../../modules/es.array.to-spliced');
+require('../../modules/es.array.unscopables.flat');
+require('../../modules/es.array.unscopables.flat-map');
+require('../../modules/es.array.unshift');
+require('../../modules/es.array.with');
+require('../../modules/es.object.to-string');
+require('../../modules/es.string.iterator');
+var path = require('../../internals/path');
+
+module.exports = path.Array;
diff --git a/node_modules/core-js/es/array/is-array.js b/node_modules/core-js/es/array/is-array.js
new file mode 100644
index 0000000..3db4bce
--- /dev/null
+++ b/node_modules/core-js/es/array/is-array.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.array.is-array');
+var path = require('../../internals/path');
+
+module.exports = path.Array.isArray;
diff --git a/node_modules/core-js/es/array/iterator.js b/node_modules/core-js/es/array/iterator.js
new file mode 100644
index 0000000..05f32e7
--- /dev/null
+++ b/node_modules/core-js/es/array/iterator.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.array.iterator');
+require('../../modules/es.object.to-string');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'values');
diff --git a/node_modules/core-js/es/array/join.js b/node_modules/core-js/es/array/join.js
new file mode 100644
index 0000000..ae4ea90
--- /dev/null
+++ b/node_modules/core-js/es/array/join.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.array.join');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'join');
diff --git a/node_modules/core-js/es/array/keys.js b/node_modules/core-js/es/array/keys.js
new file mode 100644
index 0000000..0a49fd3
--- /dev/null
+++ b/node_modules/core-js/es/array/keys.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.array.iterator');
+require('../../modules/es.object.to-string');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'keys');
diff --git a/node_modules/core-js/es/array/last-index-of.js b/node_modules/core-js/es/array/last-index-of.js
new file mode 100644
index 0000000..52d9682
--- /dev/null
+++ b/node_modules/core-js/es/array/last-index-of.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.array.last-index-of');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'lastIndexOf');
diff --git a/node_modules/core-js/es/array/map.js b/node_modules/core-js/es/array/map.js
new file mode 100644
index 0000000..8de03a6
--- /dev/null
+++ b/node_modules/core-js/es/array/map.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.array.map');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'map');
diff --git a/node_modules/core-js/es/array/of.js b/node_modules/core-js/es/array/of.js
new file mode 100644
index 0000000..dc88b02
--- /dev/null
+++ b/node_modules/core-js/es/array/of.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.array.of');
+var path = require('../../internals/path');
+
+module.exports = path.Array.of;
diff --git a/node_modules/core-js/es/array/push.js b/node_modules/core-js/es/array/push.js
new file mode 100644
index 0000000..d3d2fed
--- /dev/null
+++ b/node_modules/core-js/es/array/push.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.array.push');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'push');
diff --git a/node_modules/core-js/es/array/reduce-right.js b/node_modules/core-js/es/array/reduce-right.js
new file mode 100644
index 0000000..da1c0bc
--- /dev/null
+++ b/node_modules/core-js/es/array/reduce-right.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.array.reduce-right');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'reduceRight');
diff --git a/node_modules/core-js/es/array/reduce.js b/node_modules/core-js/es/array/reduce.js
new file mode 100644
index 0000000..4a2ab82
--- /dev/null
+++ b/node_modules/core-js/es/array/reduce.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.array.reduce');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'reduce');
diff --git a/node_modules/core-js/es/array/reverse.js b/node_modules/core-js/es/array/reverse.js
new file mode 100644
index 0000000..d81b997
--- /dev/null
+++ b/node_modules/core-js/es/array/reverse.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.array.reverse');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'reverse');
diff --git a/node_modules/core-js/es/array/slice.js b/node_modules/core-js/es/array/slice.js
new file mode 100644
index 0000000..3a93806
--- /dev/null
+++ b/node_modules/core-js/es/array/slice.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.array.slice');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'slice');
diff --git a/node_modules/core-js/es/array/some.js b/node_modules/core-js/es/array/some.js
new file mode 100644
index 0000000..0c16abc
--- /dev/null
+++ b/node_modules/core-js/es/array/some.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.array.some');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'some');
diff --git a/node_modules/core-js/es/array/sort.js b/node_modules/core-js/es/array/sort.js
new file mode 100644
index 0000000..a603b2c
--- /dev/null
+++ b/node_modules/core-js/es/array/sort.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.array.sort');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'sort');
diff --git a/node_modules/core-js/es/array/splice.js b/node_modules/core-js/es/array/splice.js
new file mode 100644
index 0000000..310381b
--- /dev/null
+++ b/node_modules/core-js/es/array/splice.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.array.splice');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'splice');
diff --git a/node_modules/core-js/es/array/to-reversed.js b/node_modules/core-js/es/array/to-reversed.js
new file mode 100644
index 0000000..d05807e
--- /dev/null
+++ b/node_modules/core-js/es/array/to-reversed.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.array.to-reversed');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'toReversed');
diff --git a/node_modules/core-js/es/array/to-sorted.js b/node_modules/core-js/es/array/to-sorted.js
new file mode 100644
index 0000000..acffea2
--- /dev/null
+++ b/node_modules/core-js/es/array/to-sorted.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.array.sort');
+require('../../modules/es.array.to-sorted');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'toSorted');
diff --git a/node_modules/core-js/es/array/to-spliced.js b/node_modules/core-js/es/array/to-spliced.js
new file mode 100644
index 0000000..f0a9993
--- /dev/null
+++ b/node_modules/core-js/es/array/to-spliced.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.array.to-spliced');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'toSpliced');
diff --git a/node_modules/core-js/es/array/unshift.js b/node_modules/core-js/es/array/unshift.js
new file mode 100644
index 0000000..63e33a8
--- /dev/null
+++ b/node_modules/core-js/es/array/unshift.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.array.unshift');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'unshift');
diff --git a/node_modules/core-js/es/array/values.js b/node_modules/core-js/es/array/values.js
new file mode 100644
index 0000000..05f32e7
--- /dev/null
+++ b/node_modules/core-js/es/array/values.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.array.iterator');
+require('../../modules/es.object.to-string');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'values');
diff --git a/node_modules/core-js/es/array/virtual/at.js b/node_modules/core-js/es/array/virtual/at.js
new file mode 100644
index 0000000..20d5030
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/at.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.array.at');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'at');
diff --git a/node_modules/core-js/es/array/virtual/concat.js b/node_modules/core-js/es/array/virtual/concat.js
new file mode 100644
index 0000000..17763b4
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/concat.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.array.concat');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'concat');
diff --git a/node_modules/core-js/es/array/virtual/copy-within.js b/node_modules/core-js/es/array/virtual/copy-within.js
new file mode 100644
index 0000000..1540c35
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/copy-within.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.array.copy-within');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'copyWithin');
diff --git a/node_modules/core-js/es/array/virtual/entries.js b/node_modules/core-js/es/array/virtual/entries.js
new file mode 100644
index 0000000..c38f703
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/entries.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../../modules/es.array.iterator');
+require('../../../modules/es.object.to-string');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'entries');
diff --git a/node_modules/core-js/es/array/virtual/every.js b/node_modules/core-js/es/array/virtual/every.js
new file mode 100644
index 0000000..d362028
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/every.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.array.every');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'every');
diff --git a/node_modules/core-js/es/array/virtual/fill.js b/node_modules/core-js/es/array/virtual/fill.js
new file mode 100644
index 0000000..0799890
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/fill.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.array.fill');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'fill');
diff --git a/node_modules/core-js/es/array/virtual/filter.js b/node_modules/core-js/es/array/virtual/filter.js
new file mode 100644
index 0000000..e30806a
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/filter.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.array.filter');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'filter');
diff --git a/node_modules/core-js/es/array/virtual/find-index.js b/node_modules/core-js/es/array/virtual/find-index.js
new file mode 100644
index 0000000..797c3a8
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/find-index.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.array.find-index');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'findIndex');
diff --git a/node_modules/core-js/es/array/virtual/find-last-index.js b/node_modules/core-js/es/array/virtual/find-last-index.js
new file mode 100644
index 0000000..b0a1cc7
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/find-last-index.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.array.find-last-index');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'findLastIndex');
diff --git a/node_modules/core-js/es/array/virtual/find-last.js b/node_modules/core-js/es/array/virtual/find-last.js
new file mode 100644
index 0000000..7c55df6
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/find-last.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.array.find-last');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'findLast');
diff --git a/node_modules/core-js/es/array/virtual/find.js b/node_modules/core-js/es/array/virtual/find.js
new file mode 100644
index 0000000..9b91c0a
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/find.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.array.find');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'find');
diff --git a/node_modules/core-js/es/array/virtual/flat-map.js b/node_modules/core-js/es/array/virtual/flat-map.js
new file mode 100644
index 0000000..505a05a
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/flat-map.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../../modules/es.array.flat-map');
+require('../../../modules/es.array.unscopables.flat-map');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'flatMap');
diff --git a/node_modules/core-js/es/array/virtual/flat.js b/node_modules/core-js/es/array/virtual/flat.js
new file mode 100644
index 0000000..8e327b6
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/flat.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../../modules/es.array.flat');
+require('../../../modules/es.array.unscopables.flat');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'flat');
diff --git a/node_modules/core-js/es/array/virtual/for-each.js b/node_modules/core-js/es/array/virtual/for-each.js
new file mode 100644
index 0000000..adb777b
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/for-each.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.array.for-each');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'forEach');
diff --git a/node_modules/core-js/es/array/virtual/includes.js b/node_modules/core-js/es/array/virtual/includes.js
new file mode 100644
index 0000000..f4ec86f
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/includes.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.array.includes');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'includes');
diff --git a/node_modules/core-js/es/array/virtual/index-of.js b/node_modules/core-js/es/array/virtual/index-of.js
new file mode 100644
index 0000000..f30a3f2
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/index-of.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.array.index-of');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'indexOf');
diff --git a/node_modules/core-js/es/array/virtual/index.js b/node_modules/core-js/es/array/virtual/index.js
new file mode 100644
index 0000000..03a8182
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/index.js
@@ -0,0 +1,40 @@
+'use strict';
+require('../../../modules/es.array.at');
+require('../../../modules/es.array.concat');
+require('../../../modules/es.array.copy-within');
+require('../../../modules/es.array.every');
+require('../../../modules/es.array.fill');
+require('../../../modules/es.array.filter');
+require('../../../modules/es.array.find');
+require('../../../modules/es.array.find-index');
+require('../../../modules/es.array.find-last');
+require('../../../modules/es.array.find-last-index');
+require('../../../modules/es.array.flat');
+require('../../../modules/es.array.flat-map');
+require('../../../modules/es.array.for-each');
+require('../../../modules/es.array.includes');
+require('../../../modules/es.array.index-of');
+require('../../../modules/es.array.iterator');
+require('../../../modules/es.array.join');
+require('../../../modules/es.array.last-index-of');
+require('../../../modules/es.array.map');
+require('../../../modules/es.array.push');
+require('../../../modules/es.array.reduce');
+require('../../../modules/es.array.reduce-right');
+require('../../../modules/es.array.reverse');
+require('../../../modules/es.array.slice');
+require('../../../modules/es.array.some');
+require('../../../modules/es.array.sort');
+require('../../../modules/es.array.species');
+require('../../../modules/es.array.splice');
+require('../../../modules/es.array.to-reversed');
+require('../../../modules/es.array.to-sorted');
+require('../../../modules/es.array.to-spliced');
+require('../../../modules/es.array.unscopables.flat');
+require('../../../modules/es.array.unscopables.flat-map');
+require('../../../modules/es.array.unshift');
+require('../../../modules/es.array.with');
+require('../../../modules/es.object.to-string');
+var entryVirtual = require('../../../internals/entry-virtual');
+
+module.exports = entryVirtual('Array');
diff --git a/node_modules/core-js/es/array/virtual/iterator.js b/node_modules/core-js/es/array/virtual/iterator.js
new file mode 100644
index 0000000..5a8b3d4
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/iterator.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../../modules/es.array.iterator');
+require('../../../modules/es.object.to-string');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'values');
diff --git a/node_modules/core-js/es/array/virtual/join.js b/node_modules/core-js/es/array/virtual/join.js
new file mode 100644
index 0000000..a60ddd8
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/join.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.array.join');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'join');
diff --git a/node_modules/core-js/es/array/virtual/keys.js b/node_modules/core-js/es/array/virtual/keys.js
new file mode 100644
index 0000000..f4f40de
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/keys.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../../modules/es.array.iterator');
+require('../../../modules/es.object.to-string');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'keys');
diff --git a/node_modules/core-js/es/array/virtual/last-index-of.js b/node_modules/core-js/es/array/virtual/last-index-of.js
new file mode 100644
index 0000000..3bbe2ec
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/last-index-of.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.array.last-index-of');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'lastIndexOf');
diff --git a/node_modules/core-js/es/array/virtual/map.js b/node_modules/core-js/es/array/virtual/map.js
new file mode 100644
index 0000000..4596b98
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/map.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.array.map');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'map');
diff --git a/node_modules/core-js/es/array/virtual/push.js b/node_modules/core-js/es/array/virtual/push.js
new file mode 100644
index 0000000..f28af7d
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/push.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.array.push');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'push');
diff --git a/node_modules/core-js/es/array/virtual/reduce-right.js b/node_modules/core-js/es/array/virtual/reduce-right.js
new file mode 100644
index 0000000..2560648
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/reduce-right.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.array.reduce-right');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'reduceRight');
diff --git a/node_modules/core-js/es/array/virtual/reduce.js b/node_modules/core-js/es/array/virtual/reduce.js
new file mode 100644
index 0000000..7d89021
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/reduce.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.array.reduce');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'reduce');
diff --git a/node_modules/core-js/es/array/virtual/reverse.js b/node_modules/core-js/es/array/virtual/reverse.js
new file mode 100644
index 0000000..c747650
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/reverse.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.array.reverse');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'reverse');
diff --git a/node_modules/core-js/es/array/virtual/slice.js b/node_modules/core-js/es/array/virtual/slice.js
new file mode 100644
index 0000000..8650e1d
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/slice.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.array.slice');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'slice');
diff --git a/node_modules/core-js/es/array/virtual/some.js b/node_modules/core-js/es/array/virtual/some.js
new file mode 100644
index 0000000..e8d3327
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/some.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.array.some');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'some');
diff --git a/node_modules/core-js/es/array/virtual/sort.js b/node_modules/core-js/es/array/virtual/sort.js
new file mode 100644
index 0000000..c09054c
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/sort.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.array.sort');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'sort');
diff --git a/node_modules/core-js/es/array/virtual/splice.js b/node_modules/core-js/es/array/virtual/splice.js
new file mode 100644
index 0000000..60e2f3a
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/splice.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.array.splice');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'splice');
diff --git a/node_modules/core-js/es/array/virtual/to-reversed.js b/node_modules/core-js/es/array/virtual/to-reversed.js
new file mode 100644
index 0000000..fd98212
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/to-reversed.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.array.to-reversed');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'toReversed');
diff --git a/node_modules/core-js/es/array/virtual/to-sorted.js b/node_modules/core-js/es/array/virtual/to-sorted.js
new file mode 100644
index 0000000..5cb7fa2
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/to-sorted.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../../modules/es.array.sort');
+require('../../../modules/es.array.to-sorted');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'toSorted');
diff --git a/node_modules/core-js/es/array/virtual/to-spliced.js b/node_modules/core-js/es/array/virtual/to-spliced.js
new file mode 100644
index 0000000..0ab0baf
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/to-spliced.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.array.to-spliced');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'toSpliced');
diff --git a/node_modules/core-js/es/array/virtual/unshift.js b/node_modules/core-js/es/array/virtual/unshift.js
new file mode 100644
index 0000000..8f1038d
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/unshift.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.array.unshift');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'unshift');
diff --git a/node_modules/core-js/es/array/virtual/values.js b/node_modules/core-js/es/array/virtual/values.js
new file mode 100644
index 0000000..5a8b3d4
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/values.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../../modules/es.array.iterator');
+require('../../../modules/es.object.to-string');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'values');
diff --git a/node_modules/core-js/es/array/virtual/with.js b/node_modules/core-js/es/array/virtual/with.js
new file mode 100644
index 0000000..c5da88a
--- /dev/null
+++ b/node_modules/core-js/es/array/virtual/with.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.array.with');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'with');
diff --git a/node_modules/core-js/es/array/with.js b/node_modules/core-js/es/array/with.js
new file mode 100644
index 0000000..ed0527e
--- /dev/null
+++ b/node_modules/core-js/es/array/with.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.array.with');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'with');
diff --git a/node_modules/core-js/es/data-view/get-float16.js b/node_modules/core-js/es/data-view/get-float16.js
new file mode 100644
index 0000000..0e17635
--- /dev/null
+++ b/node_modules/core-js/es/data-view/get-float16.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.data-view.get-float16');
diff --git a/node_modules/core-js/es/data-view/index.js b/node_modules/core-js/es/data-view/index.js
new file mode 100644
index 0000000..726c68b
--- /dev/null
+++ b/node_modules/core-js/es/data-view/index.js
@@ -0,0 +1,10 @@
+'use strict';
+require('../../modules/es.array-buffer.constructor');
+require('../../modules/es.array-buffer.slice');
+require('../../modules/es.data-view');
+require('../../modules/es.data-view.get-float16');
+require('../../modules/es.data-view.set-float16');
+require('../../modules/es.object.to-string');
+var path = require('../../internals/path');
+
+module.exports = path.DataView;
diff --git a/node_modules/core-js/es/data-view/set-float16.js b/node_modules/core-js/es/data-view/set-float16.js
new file mode 100644
index 0000000..80beae7
--- /dev/null
+++ b/node_modules/core-js/es/data-view/set-float16.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.data-view.set-float16');
diff --git a/node_modules/core-js/es/date/get-year.js b/node_modules/core-js/es/date/get-year.js
new file mode 100644
index 0000000..8364fa1
--- /dev/null
+++ b/node_modules/core-js/es/date/get-year.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.date.get-year');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Date', 'getYear');
diff --git a/node_modules/core-js/es/date/index.js b/node_modules/core-js/es/date/index.js
new file mode 100644
index 0000000..ec1d224
--- /dev/null
+++ b/node_modules/core-js/es/date/index.js
@@ -0,0 +1,12 @@
+'use strict';
+require('../../modules/es.date.get-year');
+require('../../modules/es.date.now');
+require('../../modules/es.date.set-year');
+require('../../modules/es.date.to-gmt-string');
+require('../../modules/es.date.to-iso-string');
+require('../../modules/es.date.to-json');
+require('../../modules/es.date.to-string');
+require('../../modules/es.date.to-primitive');
+var path = require('../../internals/path');
+
+module.exports = path.Date;
diff --git a/node_modules/core-js/es/date/now.js b/node_modules/core-js/es/date/now.js
new file mode 100644
index 0000000..0e395ae
--- /dev/null
+++ b/node_modules/core-js/es/date/now.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.date.now');
+var path = require('../../internals/path');
+
+module.exports = path.Date.now;
diff --git a/node_modules/core-js/es/date/set-year.js b/node_modules/core-js/es/date/set-year.js
new file mode 100644
index 0000000..b12aa4e
--- /dev/null
+++ b/node_modules/core-js/es/date/set-year.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.date.set-year');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Date', 'setYear');
diff --git a/node_modules/core-js/es/date/to-gmt-string.js b/node_modules/core-js/es/date/to-gmt-string.js
new file mode 100644
index 0000000..eb5fe4b
--- /dev/null
+++ b/node_modules/core-js/es/date/to-gmt-string.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.date.to-gmt-string');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Date', 'toGMTString');
diff --git a/node_modules/core-js/es/date/to-iso-string.js b/node_modules/core-js/es/date/to-iso-string.js
new file mode 100644
index 0000000..1099ff1
--- /dev/null
+++ b/node_modules/core-js/es/date/to-iso-string.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.date.to-iso-string');
+require('../../modules/es.date.to-json');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Date', 'toISOString');
diff --git a/node_modules/core-js/es/date/to-json.js b/node_modules/core-js/es/date/to-json.js
new file mode 100644
index 0000000..891ee53
--- /dev/null
+++ b/node_modules/core-js/es/date/to-json.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.date.to-json');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Date', 'toJSON');
diff --git a/node_modules/core-js/es/date/to-primitive.js b/node_modules/core-js/es/date/to-primitive.js
new file mode 100644
index 0000000..bccade6
--- /dev/null
+++ b/node_modules/core-js/es/date/to-primitive.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.date.to-primitive');
+var uncurryThis = require('../../internals/function-uncurry-this');
+var toPrimitive = require('../../internals/date-to-primitive');
+
+module.exports = uncurryThis(toPrimitive);
diff --git a/node_modules/core-js/es/date/to-string.js b/node_modules/core-js/es/date/to-string.js
new file mode 100644
index 0000000..4dc3ee2
--- /dev/null
+++ b/node_modules/core-js/es/date/to-string.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.date.to-string');
+var uncurryThis = require('../../internals/function-uncurry-this');
+
+module.exports = uncurryThis(Date.prototype.toString);
diff --git a/node_modules/core-js/es/error/constructor.js b/node_modules/core-js/es/error/constructor.js
new file mode 100644
index 0000000..a14c352
--- /dev/null
+++ b/node_modules/core-js/es/error/constructor.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.error.cause');
+var path = require('../../internals/path');
+
+module.exports = path;
diff --git a/node_modules/core-js/es/error/index.js b/node_modules/core-js/es/error/index.js
new file mode 100644
index 0000000..10f873f
--- /dev/null
+++ b/node_modules/core-js/es/error/index.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.error.cause');
+require('../../modules/es.error.to-string');
+var path = require('../../internals/path');
+
+module.exports = path;
diff --git a/node_modules/core-js/es/error/to-string.js b/node_modules/core-js/es/error/to-string.js
new file mode 100644
index 0000000..fe82bf2
--- /dev/null
+++ b/node_modules/core-js/es/error/to-string.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.error.to-string');
+var toString = require('../../internals/error-to-string');
+
+module.exports = toString;
diff --git a/node_modules/core-js/es/escape.js b/node_modules/core-js/es/escape.js
new file mode 100644
index 0000000..71775b5
--- /dev/null
+++ b/node_modules/core-js/es/escape.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../modules/es.escape');
+var path = require('../internals/path');
+
+module.exports = path.escape;
diff --git a/node_modules/core-js/es/function/bind.js b/node_modules/core-js/es/function/bind.js
new file mode 100644
index 0000000..4b35a80
--- /dev/null
+++ b/node_modules/core-js/es/function/bind.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.function.bind');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Function', 'bind');
diff --git a/node_modules/core-js/es/function/has-instance.js b/node_modules/core-js/es/function/has-instance.js
new file mode 100644
index 0000000..d50062d
--- /dev/null
+++ b/node_modules/core-js/es/function/has-instance.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.function.has-instance');
+var wellKnownSymbol = require('../../internals/well-known-symbol');
+
+module.exports = Function[wellKnownSymbol('hasInstance')];
diff --git a/node_modules/core-js/es/function/index.js b/node_modules/core-js/es/function/index.js
new file mode 100644
index 0000000..c58835f
--- /dev/null
+++ b/node_modules/core-js/es/function/index.js
@@ -0,0 +1,7 @@
+'use strict';
+require('../../modules/es.function.bind');
+require('../../modules/es.function.name');
+require('../../modules/es.function.has-instance');
+var path = require('../../internals/path');
+
+module.exports = path.Function;
diff --git a/node_modules/core-js/es/function/name.js b/node_modules/core-js/es/function/name.js
new file mode 100644
index 0000000..588269a
--- /dev/null
+++ b/node_modules/core-js/es/function/name.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.function.name');
diff --git a/node_modules/core-js/es/function/virtual/bind.js b/node_modules/core-js/es/function/virtual/bind.js
new file mode 100644
index 0000000..46bf502
--- /dev/null
+++ b/node_modules/core-js/es/function/virtual/bind.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.function.bind');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Function', 'bind');
diff --git a/node_modules/core-js/es/function/virtual/index.js b/node_modules/core-js/es/function/virtual/index.js
new file mode 100644
index 0000000..ccda880
--- /dev/null
+++ b/node_modules/core-js/es/function/virtual/index.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.function.bind');
+var entryVirtual = require('../../../internals/entry-virtual');
+
+module.exports = entryVirtual('Function');
diff --git a/node_modules/core-js/es/get-iterator-method.js b/node_modules/core-js/es/get-iterator-method.js
new file mode 100644
index 0000000..8ea9df4
--- /dev/null
+++ b/node_modules/core-js/es/get-iterator-method.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../modules/es.array.iterator');
+require('../modules/es.string.iterator');
+var getIteratorMethod = require('../internals/get-iterator-method');
+
+module.exports = getIteratorMethod;
diff --git a/node_modules/core-js/es/get-iterator.js b/node_modules/core-js/es/get-iterator.js
new file mode 100644
index 0000000..372774e
--- /dev/null
+++ b/node_modules/core-js/es/get-iterator.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../modules/es.array.iterator');
+require('../modules/es.string.iterator');
+var getIterator = require('../internals/get-iterator');
+
+module.exports = getIterator;
diff --git a/node_modules/core-js/es/global-this.js b/node_modules/core-js/es/global-this.js
new file mode 100644
index 0000000..4b10fec
--- /dev/null
+++ b/node_modules/core-js/es/global-this.js
@@ -0,0 +1,4 @@
+'use strict';
+require('../modules/es.global-this');
+
+module.exports = require('../internals/global-this');
diff --git a/node_modules/core-js/es/index.js b/node_modules/core-js/es/index.js
new file mode 100644
index 0000000..3ed64fe
--- /dev/null
+++ b/node_modules/core-js/es/index.js
@@ -0,0 +1,276 @@
+'use strict';
+require('../modules/es.symbol');
+require('../modules/es.symbol.description');
+require('../modules/es.symbol.async-iterator');
+require('../modules/es.symbol.has-instance');
+require('../modules/es.symbol.is-concat-spreadable');
+require('../modules/es.symbol.iterator');
+require('../modules/es.symbol.match');
+require('../modules/es.symbol.match-all');
+require('../modules/es.symbol.replace');
+require('../modules/es.symbol.search');
+require('../modules/es.symbol.species');
+require('../modules/es.symbol.split');
+require('../modules/es.symbol.to-primitive');
+require('../modules/es.symbol.to-string-tag');
+require('../modules/es.symbol.unscopables');
+require('../modules/es.error.cause');
+require('../modules/es.error.to-string');
+require('../modules/es.aggregate-error');
+require('../modules/es.aggregate-error.cause');
+require('../modules/es.array.at');
+require('../modules/es.array.concat');
+require('../modules/es.array.copy-within');
+require('../modules/es.array.every');
+require('../modules/es.array.fill');
+require('../modules/es.array.filter');
+require('../modules/es.array.find');
+require('../modules/es.array.find-index');
+require('../modules/es.array.find-last');
+require('../modules/es.array.find-last-index');
+require('../modules/es.array.flat');
+require('../modules/es.array.flat-map');
+require('../modules/es.array.for-each');
+require('../modules/es.array.from');
+require('../modules/es.array.includes');
+require('../modules/es.array.index-of');
+require('../modules/es.array.is-array');
+require('../modules/es.array.iterator');
+require('../modules/es.array.join');
+require('../modules/es.array.last-index-of');
+require('../modules/es.array.map');
+require('../modules/es.array.of');
+require('../modules/es.array.push');
+require('../modules/es.array.reduce');
+require('../modules/es.array.reduce-right');
+require('../modules/es.array.reverse');
+require('../modules/es.array.slice');
+require('../modules/es.array.some');
+require('../modules/es.array.sort');
+require('../modules/es.array.species');
+require('../modules/es.array.splice');
+require('../modules/es.array.to-reversed');
+require('../modules/es.array.to-sorted');
+require('../modules/es.array.to-spliced');
+require('../modules/es.array.unscopables.flat');
+require('../modules/es.array.unscopables.flat-map');
+require('../modules/es.array.unshift');
+require('../modules/es.array.with');
+require('../modules/es.array-buffer.constructor');
+require('../modules/es.array-buffer.is-view');
+require('../modules/es.array-buffer.slice');
+require('../modules/es.data-view');
+require('../modules/es.data-view.get-float16');
+require('../modules/es.data-view.set-float16');
+require('../modules/es.array-buffer.detached');
+require('../modules/es.array-buffer.transfer');
+require('../modules/es.array-buffer.transfer-to-fixed-length');
+require('../modules/es.date.get-year');
+require('../modules/es.date.now');
+require('../modules/es.date.set-year');
+require('../modules/es.date.to-gmt-string');
+require('../modules/es.date.to-iso-string');
+require('../modules/es.date.to-json');
+require('../modules/es.date.to-primitive');
+require('../modules/es.date.to-string');
+require('../modules/es.escape');
+require('../modules/es.function.bind');
+require('../modules/es.function.has-instance');
+require('../modules/es.function.name');
+require('../modules/es.global-this');
+require('../modules/es.iterator.constructor');
+require('../modules/es.iterator.drop');
+require('../modules/es.iterator.every');
+require('../modules/es.iterator.filter');
+require('../modules/es.iterator.find');
+require('../modules/es.iterator.flat-map');
+require('../modules/es.iterator.for-each');
+require('../modules/es.iterator.from');
+require('../modules/es.iterator.map');
+require('../modules/es.iterator.reduce');
+require('../modules/es.iterator.some');
+require('../modules/es.iterator.take');
+require('../modules/es.iterator.to-array');
+require('../modules/es.json.stringify');
+require('../modules/es.json.to-string-tag');
+require('../modules/es.map');
+require('../modules/es.map.group-by');
+require('../modules/es.math.acosh');
+require('../modules/es.math.asinh');
+require('../modules/es.math.atanh');
+require('../modules/es.math.cbrt');
+require('../modules/es.math.clz32');
+require('../modules/es.math.cosh');
+require('../modules/es.math.expm1');
+require('../modules/es.math.fround');
+require('../modules/es.math.f16round');
+require('../modules/es.math.hypot');
+require('../modules/es.math.imul');
+require('../modules/es.math.log10');
+require('../modules/es.math.log1p');
+require('../modules/es.math.log2');
+require('../modules/es.math.sign');
+require('../modules/es.math.sinh');
+require('../modules/es.math.tanh');
+require('../modules/es.math.to-string-tag');
+require('../modules/es.math.trunc');
+require('../modules/es.number.constructor');
+require('../modules/es.number.epsilon');
+require('../modules/es.number.is-finite');
+require('../modules/es.number.is-integer');
+require('../modules/es.number.is-nan');
+require('../modules/es.number.is-safe-integer');
+require('../modules/es.number.max-safe-integer');
+require('../modules/es.number.min-safe-integer');
+require('../modules/es.number.parse-float');
+require('../modules/es.number.parse-int');
+require('../modules/es.number.to-exponential');
+require('../modules/es.number.to-fixed');
+require('../modules/es.number.to-precision');
+require('../modules/es.object.assign');
+require('../modules/es.object.create');
+require('../modules/es.object.define-getter');
+require('../modules/es.object.define-properties');
+require('../modules/es.object.define-property');
+require('../modules/es.object.define-setter');
+require('../modules/es.object.entries');
+require('../modules/es.object.freeze');
+require('../modules/es.object.from-entries');
+require('../modules/es.object.get-own-property-descriptor');
+require('../modules/es.object.get-own-property-descriptors');
+require('../modules/es.object.get-own-property-names');
+require('../modules/es.object.get-prototype-of');
+require('../modules/es.object.group-by');
+require('../modules/es.object.has-own');
+require('../modules/es.object.is');
+require('../modules/es.object.is-extensible');
+require('../modules/es.object.is-frozen');
+require('../modules/es.object.is-sealed');
+require('../modules/es.object.keys');
+require('../modules/es.object.lookup-getter');
+require('../modules/es.object.lookup-setter');
+require('../modules/es.object.prevent-extensions');
+require('../modules/es.object.proto');
+require('../modules/es.object.seal');
+require('../modules/es.object.set-prototype-of');
+require('../modules/es.object.to-string');
+require('../modules/es.object.values');
+require('../modules/es.parse-float');
+require('../modules/es.parse-int');
+require('../modules/es.promise');
+require('../modules/es.promise.all-settled');
+require('../modules/es.promise.any');
+require('../modules/es.promise.finally');
+require('../modules/es.promise.try');
+require('../modules/es.promise.with-resolvers');
+require('../modules/es.reflect.apply');
+require('../modules/es.reflect.construct');
+require('../modules/es.reflect.define-property');
+require('../modules/es.reflect.delete-property');
+require('../modules/es.reflect.get');
+require('../modules/es.reflect.get-own-property-descriptor');
+require('../modules/es.reflect.get-prototype-of');
+require('../modules/es.reflect.has');
+require('../modules/es.reflect.is-extensible');
+require('../modules/es.reflect.own-keys');
+require('../modules/es.reflect.prevent-extensions');
+require('../modules/es.reflect.set');
+require('../modules/es.reflect.set-prototype-of');
+require('../modules/es.reflect.to-string-tag');
+require('../modules/es.regexp.constructor');
+require('../modules/es.regexp.escape');
+require('../modules/es.regexp.dot-all');
+require('../modules/es.regexp.exec');
+require('../modules/es.regexp.flags');
+require('../modules/es.regexp.sticky');
+require('../modules/es.regexp.test');
+require('../modules/es.regexp.to-string');
+require('../modules/es.set');
+require('../modules/es.set.difference.v2');
+require('../modules/es.set.intersection.v2');
+require('../modules/es.set.is-disjoint-from.v2');
+require('../modules/es.set.is-subset-of.v2');
+require('../modules/es.set.is-superset-of.v2');
+require('../modules/es.set.symmetric-difference.v2');
+require('../modules/es.set.union.v2');
+require('../modules/es.string.at-alternative');
+require('../modules/es.string.code-point-at');
+require('../modules/es.string.ends-with');
+require('../modules/es.string.from-code-point');
+require('../modules/es.string.includes');
+require('../modules/es.string.is-well-formed');
+require('../modules/es.string.iterator');
+require('../modules/es.string.match');
+require('../modules/es.string.match-all');
+require('../modules/es.string.pad-end');
+require('../modules/es.string.pad-start');
+require('../modules/es.string.raw');
+require('../modules/es.string.repeat');
+require('../modules/es.string.replace');
+require('../modules/es.string.replace-all');
+require('../modules/es.string.search');
+require('../modules/es.string.split');
+require('../modules/es.string.starts-with');
+require('../modules/es.string.substr');
+require('../modules/es.string.to-well-formed');
+require('../modules/es.string.trim');
+require('../modules/es.string.trim-end');
+require('../modules/es.string.trim-start');
+require('../modules/es.string.anchor');
+require('../modules/es.string.big');
+require('../modules/es.string.blink');
+require('../modules/es.string.bold');
+require('../modules/es.string.fixed');
+require('../modules/es.string.fontcolor');
+require('../modules/es.string.fontsize');
+require('../modules/es.string.italics');
+require('../modules/es.string.link');
+require('../modules/es.string.small');
+require('../modules/es.string.strike');
+require('../modules/es.string.sub');
+require('../modules/es.string.sup');
+require('../modules/es.typed-array.float32-array');
+require('../modules/es.typed-array.float64-array');
+require('../modules/es.typed-array.int8-array');
+require('../modules/es.typed-array.int16-array');
+require('../modules/es.typed-array.int32-array');
+require('../modules/es.typed-array.uint8-array');
+require('../modules/es.typed-array.uint8-clamped-array');
+require('../modules/es.typed-array.uint16-array');
+require('../modules/es.typed-array.uint32-array');
+require('../modules/es.typed-array.at');
+require('../modules/es.typed-array.copy-within');
+require('../modules/es.typed-array.every');
+require('../modules/es.typed-array.fill');
+require('../modules/es.typed-array.filter');
+require('../modules/es.typed-array.find');
+require('../modules/es.typed-array.find-index');
+require('../modules/es.typed-array.find-last');
+require('../modules/es.typed-array.find-last-index');
+require('../modules/es.typed-array.for-each');
+require('../modules/es.typed-array.from');
+require('../modules/es.typed-array.includes');
+require('../modules/es.typed-array.index-of');
+require('../modules/es.typed-array.iterator');
+require('../modules/es.typed-array.join');
+require('../modules/es.typed-array.last-index-of');
+require('../modules/es.typed-array.map');
+require('../modules/es.typed-array.of');
+require('../modules/es.typed-array.reduce');
+require('../modules/es.typed-array.reduce-right');
+require('../modules/es.typed-array.reverse');
+require('../modules/es.typed-array.set');
+require('../modules/es.typed-array.slice');
+require('../modules/es.typed-array.some');
+require('../modules/es.typed-array.sort');
+require('../modules/es.typed-array.subarray');
+require('../modules/es.typed-array.to-locale-string');
+require('../modules/es.typed-array.to-reversed');
+require('../modules/es.typed-array.to-sorted');
+require('../modules/es.typed-array.to-string');
+require('../modules/es.typed-array.with');
+require('../modules/es.unescape');
+require('../modules/es.weak-map');
+require('../modules/es.weak-set');
+
+module.exports = require('../internals/path');
diff --git a/node_modules/core-js/es/instance/at.js b/node_modules/core-js/es/instance/at.js
new file mode 100644
index 0000000..75de4fc
--- /dev/null
+++ b/node_modules/core-js/es/instance/at.js
@@ -0,0 +1,15 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var arrayMethod = require('../array/virtual/at');
+var stringMethod = require('../string/virtual/at');
+
+var ArrayPrototype = Array.prototype;
+var StringPrototype = String.prototype;
+
+module.exports = function (it) {
+  var own = it.at;
+  if (it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.at)) return arrayMethod;
+  if (typeof it == 'string' || it === StringPrototype || (isPrototypeOf(StringPrototype, it) && own === StringPrototype.at)) {
+    return stringMethod;
+  } return own;
+};
diff --git a/node_modules/core-js/es/instance/bind.js b/node_modules/core-js/es/instance/bind.js
new file mode 100644
index 0000000..e8fb66f
--- /dev/null
+++ b/node_modules/core-js/es/instance/bind.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../function/virtual/bind');
+
+var FunctionPrototype = Function.prototype;
+
+module.exports = function (it) {
+  var own = it.bind;
+  return it === FunctionPrototype || (isPrototypeOf(FunctionPrototype, it) && own === FunctionPrototype.bind) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/code-point-at.js b/node_modules/core-js/es/instance/code-point-at.js
new file mode 100644
index 0000000..5be3cd3
--- /dev/null
+++ b/node_modules/core-js/es/instance/code-point-at.js
@@ -0,0 +1,11 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../string/virtual/code-point-at');
+
+var StringPrototype = String.prototype;
+
+module.exports = function (it) {
+  var own = it.codePointAt;
+  return typeof it == 'string' || it === StringPrototype
+    || (isPrototypeOf(StringPrototype, it) && own === StringPrototype.codePointAt) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/concat.js b/node_modules/core-js/es/instance/concat.js
new file mode 100644
index 0000000..6474041
--- /dev/null
+++ b/node_modules/core-js/es/instance/concat.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/concat');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.concat;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.concat) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/copy-within.js b/node_modules/core-js/es/instance/copy-within.js
new file mode 100644
index 0000000..9b16fe0
--- /dev/null
+++ b/node_modules/core-js/es/instance/copy-within.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/copy-within');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.copyWithin;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.copyWithin) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/ends-with.js b/node_modules/core-js/es/instance/ends-with.js
new file mode 100644
index 0000000..ca2af50
--- /dev/null
+++ b/node_modules/core-js/es/instance/ends-with.js
@@ -0,0 +1,11 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../string/virtual/ends-with');
+
+var StringPrototype = String.prototype;
+
+module.exports = function (it) {
+  var own = it.endsWith;
+  return typeof it == 'string' || it === StringPrototype
+    || (isPrototypeOf(StringPrototype, it) && own === StringPrototype.endsWith) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/entries.js b/node_modules/core-js/es/instance/entries.js
new file mode 100644
index 0000000..e900c67
--- /dev/null
+++ b/node_modules/core-js/es/instance/entries.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/entries');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.entries;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.entries) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/every.js b/node_modules/core-js/es/instance/every.js
new file mode 100644
index 0000000..0e3bc52
--- /dev/null
+++ b/node_modules/core-js/es/instance/every.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/every');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.every;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.every) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/fill.js b/node_modules/core-js/es/instance/fill.js
new file mode 100644
index 0000000..5bf862c
--- /dev/null
+++ b/node_modules/core-js/es/instance/fill.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/fill');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.fill;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.fill) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/filter.js b/node_modules/core-js/es/instance/filter.js
new file mode 100644
index 0000000..7e0a348
--- /dev/null
+++ b/node_modules/core-js/es/instance/filter.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/filter');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.filter;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.filter) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/find-index.js b/node_modules/core-js/es/instance/find-index.js
new file mode 100644
index 0000000..862344f
--- /dev/null
+++ b/node_modules/core-js/es/instance/find-index.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/find-index');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.findIndex;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.findIndex) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/find-last-index.js b/node_modules/core-js/es/instance/find-last-index.js
new file mode 100644
index 0000000..4c7cfcb
--- /dev/null
+++ b/node_modules/core-js/es/instance/find-last-index.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/find-last-index');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.findLastIndex;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.findLastIndex) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/find-last.js b/node_modules/core-js/es/instance/find-last.js
new file mode 100644
index 0000000..7d30e0b
--- /dev/null
+++ b/node_modules/core-js/es/instance/find-last.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/find-last');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.findLast;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.findLast) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/find.js b/node_modules/core-js/es/instance/find.js
new file mode 100644
index 0000000..2511c3b
--- /dev/null
+++ b/node_modules/core-js/es/instance/find.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/find');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.find;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.find) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/flags.js b/node_modules/core-js/es/instance/flags.js
new file mode 100644
index 0000000..66b08c4
--- /dev/null
+++ b/node_modules/core-js/es/instance/flags.js
@@ -0,0 +1,9 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var flags = require('../regexp/flags');
+
+var RegExpPrototype = RegExp.prototype;
+
+module.exports = function (it) {
+  return (it === RegExpPrototype || isPrototypeOf(RegExpPrototype, it)) ? flags(it) : it.flags;
+};
diff --git a/node_modules/core-js/es/instance/flat-map.js b/node_modules/core-js/es/instance/flat-map.js
new file mode 100644
index 0000000..d406dd9
--- /dev/null
+++ b/node_modules/core-js/es/instance/flat-map.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/flat-map');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.flatMap;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.flatMap) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/flat.js b/node_modules/core-js/es/instance/flat.js
new file mode 100644
index 0000000..5b16864
--- /dev/null
+++ b/node_modules/core-js/es/instance/flat.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/flat');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.flat;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.flat) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/for-each.js b/node_modules/core-js/es/instance/for-each.js
new file mode 100644
index 0000000..58566e6
--- /dev/null
+++ b/node_modules/core-js/es/instance/for-each.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/for-each');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.forEach;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.forEach) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/includes.js b/node_modules/core-js/es/instance/includes.js
new file mode 100644
index 0000000..d2daf8c
--- /dev/null
+++ b/node_modules/core-js/es/instance/includes.js
@@ -0,0 +1,15 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var arrayMethod = require('../array/virtual/includes');
+var stringMethod = require('../string/virtual/includes');
+
+var ArrayPrototype = Array.prototype;
+var StringPrototype = String.prototype;
+
+module.exports = function (it) {
+  var own = it.includes;
+  if (it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.includes)) return arrayMethod;
+  if (typeof it == 'string' || it === StringPrototype || (isPrototypeOf(StringPrototype, it) && own === StringPrototype.includes)) {
+    return stringMethod;
+  } return own;
+};
diff --git a/node_modules/core-js/es/instance/index-of.js b/node_modules/core-js/es/instance/index-of.js
new file mode 100644
index 0000000..bcd0898
--- /dev/null
+++ b/node_modules/core-js/es/instance/index-of.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/index-of');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.indexOf;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.indexOf) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/is-well-formed.js b/node_modules/core-js/es/instance/is-well-formed.js
new file mode 100644
index 0000000..728fdc5
--- /dev/null
+++ b/node_modules/core-js/es/instance/is-well-formed.js
@@ -0,0 +1,11 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../string/virtual/is-well-formed');
+
+var StringPrototype = String.prototype;
+
+module.exports = function (it) {
+  var own = it.isWellFormed;
+  return typeof it == 'string' || it === StringPrototype
+    || (isPrototypeOf(StringPrototype, it) && own === StringPrototype.isWellFormed) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/keys.js b/node_modules/core-js/es/instance/keys.js
new file mode 100644
index 0000000..b535ac2
--- /dev/null
+++ b/node_modules/core-js/es/instance/keys.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/keys');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.keys;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.keys) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/last-index-of.js b/node_modules/core-js/es/instance/last-index-of.js
new file mode 100644
index 0000000..633d120
--- /dev/null
+++ b/node_modules/core-js/es/instance/last-index-of.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/last-index-of');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.lastIndexOf;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.lastIndexOf) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/map.js b/node_modules/core-js/es/instance/map.js
new file mode 100644
index 0000000..43b9fca
--- /dev/null
+++ b/node_modules/core-js/es/instance/map.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/map');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.map;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.map) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/match-all.js b/node_modules/core-js/es/instance/match-all.js
new file mode 100644
index 0000000..251a5be
--- /dev/null
+++ b/node_modules/core-js/es/instance/match-all.js
@@ -0,0 +1,11 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../string/virtual/match-all');
+
+var StringPrototype = String.prototype;
+
+module.exports = function (it) {
+  var own = it.matchAll;
+  return typeof it == 'string' || it === StringPrototype
+    || (isPrototypeOf(StringPrototype, it) && own === StringPrototype.matchAll) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/pad-end.js b/node_modules/core-js/es/instance/pad-end.js
new file mode 100644
index 0000000..bb5dd80
--- /dev/null
+++ b/node_modules/core-js/es/instance/pad-end.js
@@ -0,0 +1,11 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../string/virtual/pad-end');
+
+var StringPrototype = String.prototype;
+
+module.exports = function (it) {
+  var own = it.padEnd;
+  return typeof it == 'string' || it === StringPrototype
+    || (isPrototypeOf(StringPrototype, it) && own === StringPrototype.padEnd) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/pad-start.js b/node_modules/core-js/es/instance/pad-start.js
new file mode 100644
index 0000000..94a73a9
--- /dev/null
+++ b/node_modules/core-js/es/instance/pad-start.js
@@ -0,0 +1,11 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../string/virtual/pad-start');
+
+var StringPrototype = String.prototype;
+
+module.exports = function (it) {
+  var own = it.padStart;
+  return typeof it == 'string' || it === StringPrototype
+    || (isPrototypeOf(StringPrototype, it) && own === StringPrototype.padStart) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/push.js b/node_modules/core-js/es/instance/push.js
new file mode 100644
index 0000000..1796ff0
--- /dev/null
+++ b/node_modules/core-js/es/instance/push.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/push');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.push;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.push) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/reduce-right.js b/node_modules/core-js/es/instance/reduce-right.js
new file mode 100644
index 0000000..25c6118
--- /dev/null
+++ b/node_modules/core-js/es/instance/reduce-right.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/reduce-right');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.reduceRight;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.reduceRight) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/reduce.js b/node_modules/core-js/es/instance/reduce.js
new file mode 100644
index 0000000..0f8f414
--- /dev/null
+++ b/node_modules/core-js/es/instance/reduce.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/reduce');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.reduce;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.reduce) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/repeat.js b/node_modules/core-js/es/instance/repeat.js
new file mode 100644
index 0000000..ab7e497
--- /dev/null
+++ b/node_modules/core-js/es/instance/repeat.js
@@ -0,0 +1,11 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../string/virtual/repeat');
+
+var StringPrototype = String.prototype;
+
+module.exports = function (it) {
+  var own = it.repeat;
+  return typeof it == 'string' || it === StringPrototype
+    || (isPrototypeOf(StringPrototype, it) && own === StringPrototype.repeat) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/replace-all.js b/node_modules/core-js/es/instance/replace-all.js
new file mode 100644
index 0000000..f5b2146
--- /dev/null
+++ b/node_modules/core-js/es/instance/replace-all.js
@@ -0,0 +1,11 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../string/virtual/replace-all');
+
+var StringPrototype = String.prototype;
+
+module.exports = function (it) {
+  var own = it.replaceAll;
+  return typeof it == 'string' || it === StringPrototype
+    || (isPrototypeOf(StringPrototype, it) && own === StringPrototype.replaceAll) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/reverse.js b/node_modules/core-js/es/instance/reverse.js
new file mode 100644
index 0000000..bf00f66
--- /dev/null
+++ b/node_modules/core-js/es/instance/reverse.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/reverse');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.reverse;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.reverse) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/slice.js b/node_modules/core-js/es/instance/slice.js
new file mode 100644
index 0000000..369ea0a
--- /dev/null
+++ b/node_modules/core-js/es/instance/slice.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/slice');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.slice;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.slice) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/some.js b/node_modules/core-js/es/instance/some.js
new file mode 100644
index 0000000..3eddc1b
--- /dev/null
+++ b/node_modules/core-js/es/instance/some.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/some');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.some;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.some) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/sort.js b/node_modules/core-js/es/instance/sort.js
new file mode 100644
index 0000000..a6c21f6
--- /dev/null
+++ b/node_modules/core-js/es/instance/sort.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/sort');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.sort;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.sort) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/splice.js b/node_modules/core-js/es/instance/splice.js
new file mode 100644
index 0000000..e7e715f
--- /dev/null
+++ b/node_modules/core-js/es/instance/splice.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/splice');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.splice;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.splice) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/starts-with.js b/node_modules/core-js/es/instance/starts-with.js
new file mode 100644
index 0000000..2185de7
--- /dev/null
+++ b/node_modules/core-js/es/instance/starts-with.js
@@ -0,0 +1,11 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../string/virtual/starts-with');
+
+var StringPrototype = String.prototype;
+
+module.exports = function (it) {
+  var own = it.startsWith;
+  return typeof it == 'string' || it === StringPrototype
+    || (isPrototypeOf(StringPrototype, it) && own === StringPrototype.startsWith) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/to-reversed.js b/node_modules/core-js/es/instance/to-reversed.js
new file mode 100644
index 0000000..5cfb459
--- /dev/null
+++ b/node_modules/core-js/es/instance/to-reversed.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/to-reversed');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.toReversed;
+  return (it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.toReversed)) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/to-sorted.js b/node_modules/core-js/es/instance/to-sorted.js
new file mode 100644
index 0000000..a059c6f
--- /dev/null
+++ b/node_modules/core-js/es/instance/to-sorted.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/to-sorted');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.toSorted;
+  return (it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.toSorted)) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/to-spliced.js b/node_modules/core-js/es/instance/to-spliced.js
new file mode 100644
index 0000000..9e67474
--- /dev/null
+++ b/node_modules/core-js/es/instance/to-spliced.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/to-spliced');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.toSpliced;
+  return (it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.toSpliced)) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/to-well-formed.js b/node_modules/core-js/es/instance/to-well-formed.js
new file mode 100644
index 0000000..29701d8
--- /dev/null
+++ b/node_modules/core-js/es/instance/to-well-formed.js
@@ -0,0 +1,11 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../string/virtual/to-well-formed');
+
+var StringPrototype = String.prototype;
+
+module.exports = function (it) {
+  var own = it.toWellFormed;
+  return typeof it == 'string' || it === StringPrototype
+    || (isPrototypeOf(StringPrototype, it) && own === StringPrototype.toWellFormed) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/trim-end.js b/node_modules/core-js/es/instance/trim-end.js
new file mode 100644
index 0000000..4688be6
--- /dev/null
+++ b/node_modules/core-js/es/instance/trim-end.js
@@ -0,0 +1,11 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../string/virtual/trim-end');
+
+var StringPrototype = String.prototype;
+
+module.exports = function (it) {
+  var own = it.trimEnd;
+  return typeof it == 'string' || it === StringPrototype
+    || (isPrototypeOf(StringPrototype, it) && own === StringPrototype.trimEnd) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/trim-left.js b/node_modules/core-js/es/instance/trim-left.js
new file mode 100644
index 0000000..9657ceb
--- /dev/null
+++ b/node_modules/core-js/es/instance/trim-left.js
@@ -0,0 +1,11 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../string/virtual/trim-left');
+
+var StringPrototype = String.prototype;
+
+module.exports = function (it) {
+  var own = it.trimLeft;
+  return typeof it == 'string' || it === StringPrototype
+    || (isPrototypeOf(StringPrototype, it) && own === StringPrototype.trimLeft) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/trim-right.js b/node_modules/core-js/es/instance/trim-right.js
new file mode 100644
index 0000000..16eb9e3
--- /dev/null
+++ b/node_modules/core-js/es/instance/trim-right.js
@@ -0,0 +1,11 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../string/virtual/trim-right');
+
+var StringPrototype = String.prototype;
+
+module.exports = function (it) {
+  var own = it.trimRight;
+  return typeof it == 'string' || it === StringPrototype
+    || (isPrototypeOf(StringPrototype, it) && own === StringPrototype.trimRight) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/trim-start.js b/node_modules/core-js/es/instance/trim-start.js
new file mode 100644
index 0000000..baf1599
--- /dev/null
+++ b/node_modules/core-js/es/instance/trim-start.js
@@ -0,0 +1,11 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../string/virtual/trim-start');
+
+var StringPrototype = String.prototype;
+
+module.exports = function (it) {
+  var own = it.trimStart;
+  return typeof it == 'string' || it === StringPrototype
+    || (isPrototypeOf(StringPrototype, it) && own === StringPrototype.trimStart) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/trim.js b/node_modules/core-js/es/instance/trim.js
new file mode 100644
index 0000000..6983995
--- /dev/null
+++ b/node_modules/core-js/es/instance/trim.js
@@ -0,0 +1,11 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../string/virtual/trim');
+
+var StringPrototype = String.prototype;
+
+module.exports = function (it) {
+  var own = it.trim;
+  return typeof it == 'string' || it === StringPrototype
+    || (isPrototypeOf(StringPrototype, it) && own === StringPrototype.trim) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/unshift.js b/node_modules/core-js/es/instance/unshift.js
new file mode 100644
index 0000000..e30c714
--- /dev/null
+++ b/node_modules/core-js/es/instance/unshift.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/unshift');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.unshift;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.unshift) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/values.js b/node_modules/core-js/es/instance/values.js
new file mode 100644
index 0000000..0573ad4
--- /dev/null
+++ b/node_modules/core-js/es/instance/values.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/values');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.values;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.values) ? method : own;
+};
diff --git a/node_modules/core-js/es/instance/with.js b/node_modules/core-js/es/instance/with.js
new file mode 100644
index 0000000..f3db9f4
--- /dev/null
+++ b/node_modules/core-js/es/instance/with.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/with');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it['with'];
+  return (it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype['with'])) ? method : own;
+};
diff --git a/node_modules/core-js/es/is-iterable.js b/node_modules/core-js/es/is-iterable.js
new file mode 100644
index 0000000..7a53114
--- /dev/null
+++ b/node_modules/core-js/es/is-iterable.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../modules/es.array.iterator');
+require('../modules/es.string.iterator');
+var isIterable = require('../internals/is-iterable');
+
+module.exports = isIterable;
diff --git a/node_modules/core-js/es/iterator/drop.js b/node_modules/core-js/es/iterator/drop.js
new file mode 100644
index 0000000..f97b326
--- /dev/null
+++ b/node_modules/core-js/es/iterator/drop.js
@@ -0,0 +1,8 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.iterator.constructor');
+require('../../modules/es.iterator.drop');
+
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Iterator', 'drop');
diff --git a/node_modules/core-js/es/iterator/every.js b/node_modules/core-js/es/iterator/every.js
new file mode 100644
index 0000000..99c4606
--- /dev/null
+++ b/node_modules/core-js/es/iterator/every.js
@@ -0,0 +1,8 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.iterator.constructor');
+require('../../modules/es.iterator.every');
+
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Iterator', 'every');
diff --git a/node_modules/core-js/es/iterator/filter.js b/node_modules/core-js/es/iterator/filter.js
new file mode 100644
index 0000000..9d19be8
--- /dev/null
+++ b/node_modules/core-js/es/iterator/filter.js
@@ -0,0 +1,8 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.iterator.constructor');
+require('../../modules/es.iterator.filter');
+
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Iterator', 'filter');
diff --git a/node_modules/core-js/es/iterator/find.js b/node_modules/core-js/es/iterator/find.js
new file mode 100644
index 0000000..0c38778
--- /dev/null
+++ b/node_modules/core-js/es/iterator/find.js
@@ -0,0 +1,8 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.iterator.constructor');
+require('../../modules/es.iterator.find');
+
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Iterator', 'find');
diff --git a/node_modules/core-js/es/iterator/flat-map.js b/node_modules/core-js/es/iterator/flat-map.js
new file mode 100644
index 0000000..296d29c
--- /dev/null
+++ b/node_modules/core-js/es/iterator/flat-map.js
@@ -0,0 +1,8 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.iterator.constructor');
+require('../../modules/es.iterator.flat-map');
+
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Iterator', 'flatMap');
diff --git a/node_modules/core-js/es/iterator/for-each.js b/node_modules/core-js/es/iterator/for-each.js
new file mode 100644
index 0000000..31e93ed
--- /dev/null
+++ b/node_modules/core-js/es/iterator/for-each.js
@@ -0,0 +1,8 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.iterator.constructor');
+require('../../modules/es.iterator.for-each');
+
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Iterator', 'forEach');
diff --git a/node_modules/core-js/es/iterator/from.js b/node_modules/core-js/es/iterator/from.js
new file mode 100644
index 0000000..f5c2183
--- /dev/null
+++ b/node_modules/core-js/es/iterator/from.js
@@ -0,0 +1,21 @@
+'use strict';
+require('../../modules/es.array.iterator');
+require('../../modules/es.object.to-string');
+require('../../modules/es.string.iterator');
+require('../../modules/es.iterator.constructor');
+require('../../modules/es.iterator.drop');
+require('../../modules/es.iterator.every');
+require('../../modules/es.iterator.filter');
+require('../../modules/es.iterator.find');
+require('../../modules/es.iterator.flat-map');
+require('../../modules/es.iterator.for-each');
+require('../../modules/es.iterator.from');
+require('../../modules/es.iterator.map');
+require('../../modules/es.iterator.reduce');
+require('../../modules/es.iterator.some');
+require('../../modules/es.iterator.take');
+require('../../modules/es.iterator.to-array');
+
+var path = require('../../internals/path');
+
+module.exports = path.Iterator.from;
diff --git a/node_modules/core-js/es/iterator/index.js b/node_modules/core-js/es/iterator/index.js
new file mode 100644
index 0000000..265f044
--- /dev/null
+++ b/node_modules/core-js/es/iterator/index.js
@@ -0,0 +1,21 @@
+'use strict';
+require('../../modules/es.array.iterator');
+require('../../modules/es.object.to-string');
+require('../../modules/es.string.iterator');
+require('../../modules/es.iterator.constructor');
+require('../../modules/es.iterator.drop');
+require('../../modules/es.iterator.every');
+require('../../modules/es.iterator.filter');
+require('../../modules/es.iterator.find');
+require('../../modules/es.iterator.flat-map');
+require('../../modules/es.iterator.for-each');
+require('../../modules/es.iterator.from');
+require('../../modules/es.iterator.map');
+require('../../modules/es.iterator.reduce');
+require('../../modules/es.iterator.some');
+require('../../modules/es.iterator.take');
+require('../../modules/es.iterator.to-array');
+
+var path = require('../../internals/path');
+
+module.exports = path.Iterator;
diff --git a/node_modules/core-js/es/iterator/map.js b/node_modules/core-js/es/iterator/map.js
new file mode 100644
index 0000000..1843478
--- /dev/null
+++ b/node_modules/core-js/es/iterator/map.js
@@ -0,0 +1,8 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.iterator.constructor');
+require('../../modules/es.iterator.map');
+
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Iterator', 'map');
diff --git a/node_modules/core-js/es/iterator/reduce.js b/node_modules/core-js/es/iterator/reduce.js
new file mode 100644
index 0000000..80ef615
--- /dev/null
+++ b/node_modules/core-js/es/iterator/reduce.js
@@ -0,0 +1,8 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.iterator.constructor');
+require('../../modules/es.iterator.reduce');
+
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Iterator', 'reduce');
diff --git a/node_modules/core-js/es/iterator/some.js b/node_modules/core-js/es/iterator/some.js
new file mode 100644
index 0000000..d688f03
--- /dev/null
+++ b/node_modules/core-js/es/iterator/some.js
@@ -0,0 +1,8 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.iterator.constructor');
+require('../../modules/es.iterator.some');
+
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Iterator', 'some');
diff --git a/node_modules/core-js/es/iterator/take.js b/node_modules/core-js/es/iterator/take.js
new file mode 100644
index 0000000..3d8841d
--- /dev/null
+++ b/node_modules/core-js/es/iterator/take.js
@@ -0,0 +1,8 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.iterator.constructor');
+require('../../modules/es.iterator.take');
+
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Iterator', 'take');
diff --git a/node_modules/core-js/es/iterator/to-array.js b/node_modules/core-js/es/iterator/to-array.js
new file mode 100644
index 0000000..92c55e2
--- /dev/null
+++ b/node_modules/core-js/es/iterator/to-array.js
@@ -0,0 +1,8 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.iterator.constructor');
+require('../../modules/es.iterator.to-array');
+
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Iterator', 'toArray');
diff --git a/node_modules/core-js/es/json/index.js b/node_modules/core-js/es/json/index.js
new file mode 100644
index 0000000..ea69c7f
--- /dev/null
+++ b/node_modules/core-js/es/json/index.js
@@ -0,0 +1,8 @@
+'use strict';
+require('../../modules/es.date.to-json');
+require('../../modules/es.json.stringify');
+require('../../modules/es.json.to-string-tag');
+var path = require('../../internals/path');
+
+// eslint-disable-next-line es/no-json -- safe
+module.exports = path.JSON || (path.JSON = { stringify: JSON.stringify });
diff --git a/node_modules/core-js/es/json/stringify.js b/node_modules/core-js/es/json/stringify.js
new file mode 100644
index 0000000..068f1ea
--- /dev/null
+++ b/node_modules/core-js/es/json/stringify.js
@@ -0,0 +1,13 @@
+'use strict';
+require('../../modules/es.date.to-json');
+require('../../modules/es.json.stringify');
+var path = require('../../internals/path');
+var apply = require('../../internals/function-apply');
+
+// eslint-disable-next-line es/no-json -- safe
+if (!path.JSON) path.JSON = { stringify: JSON.stringify };
+
+// eslint-disable-next-line no-unused-vars -- required for `.length`
+module.exports = function stringify(it, replacer, space) {
+  return apply(path.JSON.stringify, null, arguments);
+};
diff --git a/node_modules/core-js/es/json/to-string-tag.js b/node_modules/core-js/es/json/to-string-tag.js
new file mode 100644
index 0000000..8a8fbcd
--- /dev/null
+++ b/node_modules/core-js/es/json/to-string-tag.js
@@ -0,0 +1,4 @@
+'use strict';
+require('../../modules/es.json.to-string-tag');
+
+module.exports = 'JSON';
diff --git a/node_modules/core-js/es/map/group-by.js b/node_modules/core-js/es/map/group-by.js
new file mode 100644
index 0000000..3228c05
--- /dev/null
+++ b/node_modules/core-js/es/map/group-by.js
@@ -0,0 +1,7 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.map');
+require('../../modules/es.map.group-by');
+var path = require('../../internals/path');
+
+module.exports = path.Map.groupBy;
diff --git a/node_modules/core-js/es/map/index.js b/node_modules/core-js/es/map/index.js
new file mode 100644
index 0000000..9dea507
--- /dev/null
+++ b/node_modules/core-js/es/map/index.js
@@ -0,0 +1,9 @@
+'use strict';
+require('../../modules/es.array.iterator');
+require('../../modules/es.map');
+require('../../modules/es.map.group-by');
+require('../../modules/es.object.to-string');
+require('../../modules/es.string.iterator');
+var path = require('../../internals/path');
+
+module.exports = path.Map;
diff --git a/node_modules/core-js/es/math/acosh.js b/node_modules/core-js/es/math/acosh.js
new file mode 100644
index 0000000..f9f7797
--- /dev/null
+++ b/node_modules/core-js/es/math/acosh.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.math.acosh');
+var path = require('../../internals/path');
+
+module.exports = path.Math.acosh;
diff --git a/node_modules/core-js/es/math/asinh.js b/node_modules/core-js/es/math/asinh.js
new file mode 100644
index 0000000..fcbc193
--- /dev/null
+++ b/node_modules/core-js/es/math/asinh.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.math.asinh');
+var path = require('../../internals/path');
+
+module.exports = path.Math.asinh;
diff --git a/node_modules/core-js/es/math/atanh.js b/node_modules/core-js/es/math/atanh.js
new file mode 100644
index 0000000..cab7848
--- /dev/null
+++ b/node_modules/core-js/es/math/atanh.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.math.atanh');
+var path = require('../../internals/path');
+
+module.exports = path.Math.atanh;
diff --git a/node_modules/core-js/es/math/cbrt.js b/node_modules/core-js/es/math/cbrt.js
new file mode 100644
index 0000000..2760a52
--- /dev/null
+++ b/node_modules/core-js/es/math/cbrt.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.math.cbrt');
+var path = require('../../internals/path');
+
+module.exports = path.Math.cbrt;
diff --git a/node_modules/core-js/es/math/clz32.js b/node_modules/core-js/es/math/clz32.js
new file mode 100644
index 0000000..ba550ae
--- /dev/null
+++ b/node_modules/core-js/es/math/clz32.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.math.clz32');
+var path = require('../../internals/path');
+
+module.exports = path.Math.clz32;
diff --git a/node_modules/core-js/es/math/cosh.js b/node_modules/core-js/es/math/cosh.js
new file mode 100644
index 0000000..73f9ada
--- /dev/null
+++ b/node_modules/core-js/es/math/cosh.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.math.cosh');
+var path = require('../../internals/path');
+
+module.exports = path.Math.cosh;
diff --git a/node_modules/core-js/es/math/expm1.js b/node_modules/core-js/es/math/expm1.js
new file mode 100644
index 0000000..909cb45
--- /dev/null
+++ b/node_modules/core-js/es/math/expm1.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.math.expm1');
+var path = require('../../internals/path');
+
+module.exports = path.Math.expm1;
diff --git a/node_modules/core-js/es/math/f16round.js b/node_modules/core-js/es/math/f16round.js
new file mode 100644
index 0000000..57b718f
--- /dev/null
+++ b/node_modules/core-js/es/math/f16round.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.math.f16round');
+var path = require('../../internals/path');
+
+module.exports = path.Math.f16round;
diff --git a/node_modules/core-js/es/math/fround.js b/node_modules/core-js/es/math/fround.js
new file mode 100644
index 0000000..25e17ca
--- /dev/null
+++ b/node_modules/core-js/es/math/fround.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.math.fround');
+var path = require('../../internals/path');
+
+module.exports = path.Math.fround;
diff --git a/node_modules/core-js/es/math/hypot.js b/node_modules/core-js/es/math/hypot.js
new file mode 100644
index 0000000..9d476c8
--- /dev/null
+++ b/node_modules/core-js/es/math/hypot.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.math.hypot');
+var path = require('../../internals/path');
+
+module.exports = path.Math.hypot;
diff --git a/node_modules/core-js/es/math/imul.js b/node_modules/core-js/es/math/imul.js
new file mode 100644
index 0000000..4962f30
--- /dev/null
+++ b/node_modules/core-js/es/math/imul.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.math.imul');
+var path = require('../../internals/path');
+
+module.exports = path.Math.imul;
diff --git a/node_modules/core-js/es/math/index.js b/node_modules/core-js/es/math/index.js
new file mode 100644
index 0000000..6c5d68c
--- /dev/null
+++ b/node_modules/core-js/es/math/index.js
@@ -0,0 +1,23 @@
+'use strict';
+require('../../modules/es.math.acosh');
+require('../../modules/es.math.asinh');
+require('../../modules/es.math.atanh');
+require('../../modules/es.math.cbrt');
+require('../../modules/es.math.clz32');
+require('../../modules/es.math.cosh');
+require('../../modules/es.math.expm1');
+require('../../modules/es.math.fround');
+require('../../modules/es.math.f16round');
+require('../../modules/es.math.hypot');
+require('../../modules/es.math.imul');
+require('../../modules/es.math.log10');
+require('../../modules/es.math.log1p');
+require('../../modules/es.math.log2');
+require('../../modules/es.math.sign');
+require('../../modules/es.math.sinh');
+require('../../modules/es.math.tanh');
+require('../../modules/es.math.to-string-tag');
+require('../../modules/es.math.trunc');
+var path = require('../../internals/path');
+
+module.exports = path.Math;
diff --git a/node_modules/core-js/es/math/log10.js b/node_modules/core-js/es/math/log10.js
new file mode 100644
index 0000000..abe3615
--- /dev/null
+++ b/node_modules/core-js/es/math/log10.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.math.log10');
+var path = require('../../internals/path');
+
+module.exports = path.Math.log10;
diff --git a/node_modules/core-js/es/math/log1p.js b/node_modules/core-js/es/math/log1p.js
new file mode 100644
index 0000000..ea24c24
--- /dev/null
+++ b/node_modules/core-js/es/math/log1p.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.math.log1p');
+var path = require('../../internals/path');
+
+module.exports = path.Math.log1p;
diff --git a/node_modules/core-js/es/math/log2.js b/node_modules/core-js/es/math/log2.js
new file mode 100644
index 0000000..39aca14
--- /dev/null
+++ b/node_modules/core-js/es/math/log2.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.math.log2');
+var path = require('../../internals/path');
+
+module.exports = path.Math.log2;
diff --git a/node_modules/core-js/es/math/sign.js b/node_modules/core-js/es/math/sign.js
new file mode 100644
index 0000000..7d3c835
--- /dev/null
+++ b/node_modules/core-js/es/math/sign.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.math.sign');
+var path = require('../../internals/path');
+
+module.exports = path.Math.sign;
diff --git a/node_modules/core-js/es/math/sinh.js b/node_modules/core-js/es/math/sinh.js
new file mode 100644
index 0000000..07412d6
--- /dev/null
+++ b/node_modules/core-js/es/math/sinh.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.math.sinh');
+var path = require('../../internals/path');
+
+module.exports = path.Math.sinh;
diff --git a/node_modules/core-js/es/math/tanh.js b/node_modules/core-js/es/math/tanh.js
new file mode 100644
index 0000000..906be86
--- /dev/null
+++ b/node_modules/core-js/es/math/tanh.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.math.tanh');
+var path = require('../../internals/path');
+
+module.exports = path.Math.tanh;
diff --git a/node_modules/core-js/es/math/to-string-tag.js b/node_modules/core-js/es/math/to-string-tag.js
new file mode 100644
index 0000000..f59580a
--- /dev/null
+++ b/node_modules/core-js/es/math/to-string-tag.js
@@ -0,0 +1,4 @@
+'use strict';
+require('../../modules/es.math.to-string-tag');
+
+module.exports = 'Math';
diff --git a/node_modules/core-js/es/math/trunc.js b/node_modules/core-js/es/math/trunc.js
new file mode 100644
index 0000000..491a41a
--- /dev/null
+++ b/node_modules/core-js/es/math/trunc.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.math.trunc');
+var path = require('../../internals/path');
+
+module.exports = path.Math.trunc;
diff --git a/node_modules/core-js/es/number/constructor.js b/node_modules/core-js/es/number/constructor.js
new file mode 100644
index 0000000..77d9d6d
--- /dev/null
+++ b/node_modules/core-js/es/number/constructor.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.number.constructor');
+var path = require('../../internals/path');
+
+module.exports = path.Number;
diff --git a/node_modules/core-js/es/number/epsilon.js b/node_modules/core-js/es/number/epsilon.js
new file mode 100644
index 0000000..a0405ff
--- /dev/null
+++ b/node_modules/core-js/es/number/epsilon.js
@@ -0,0 +1,4 @@
+'use strict';
+require('../../modules/es.number.epsilon');
+
+module.exports = Math.pow(2, -52);
diff --git a/node_modules/core-js/es/number/index.js b/node_modules/core-js/es/number/index.js
new file mode 100644
index 0000000..f1eaa61
--- /dev/null
+++ b/node_modules/core-js/es/number/index.js
@@ -0,0 +1,17 @@
+'use strict';
+require('../../modules/es.number.constructor');
+require('../../modules/es.number.epsilon');
+require('../../modules/es.number.is-finite');
+require('../../modules/es.number.is-integer');
+require('../../modules/es.number.is-nan');
+require('../../modules/es.number.is-safe-integer');
+require('../../modules/es.number.max-safe-integer');
+require('../../modules/es.number.min-safe-integer');
+require('../../modules/es.number.parse-float');
+require('../../modules/es.number.parse-int');
+require('../../modules/es.number.to-exponential');
+require('../../modules/es.number.to-fixed');
+require('../../modules/es.number.to-precision');
+var path = require('../../internals/path');
+
+module.exports = path.Number;
diff --git a/node_modules/core-js/es/number/is-finite.js b/node_modules/core-js/es/number/is-finite.js
new file mode 100644
index 0000000..c57cd98
--- /dev/null
+++ b/node_modules/core-js/es/number/is-finite.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.number.is-finite');
+var path = require('../../internals/path');
+
+module.exports = path.Number.isFinite;
diff --git a/node_modules/core-js/es/number/is-integer.js b/node_modules/core-js/es/number/is-integer.js
new file mode 100644
index 0000000..9c1e3ce
--- /dev/null
+++ b/node_modules/core-js/es/number/is-integer.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.number.is-integer');
+var path = require('../../internals/path');
+
+module.exports = path.Number.isInteger;
diff --git a/node_modules/core-js/es/number/is-nan.js b/node_modules/core-js/es/number/is-nan.js
new file mode 100644
index 0000000..e55780f
--- /dev/null
+++ b/node_modules/core-js/es/number/is-nan.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.number.is-nan');
+var path = require('../../internals/path');
+
+module.exports = path.Number.isNaN;
diff --git a/node_modules/core-js/es/number/is-safe-integer.js b/node_modules/core-js/es/number/is-safe-integer.js
new file mode 100644
index 0000000..a83cb0f
--- /dev/null
+++ b/node_modules/core-js/es/number/is-safe-integer.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.number.is-safe-integer');
+var path = require('../../internals/path');
+
+module.exports = path.Number.isSafeInteger;
diff --git a/node_modules/core-js/es/number/max-safe-integer.js b/node_modules/core-js/es/number/max-safe-integer.js
new file mode 100644
index 0000000..68c978c
--- /dev/null
+++ b/node_modules/core-js/es/number/max-safe-integer.js
@@ -0,0 +1,4 @@
+'use strict';
+require('../../modules/es.number.max-safe-integer');
+
+module.exports = 0x1FFFFFFFFFFFFF;
diff --git a/node_modules/core-js/es/number/min-safe-integer.js b/node_modules/core-js/es/number/min-safe-integer.js
new file mode 100644
index 0000000..0354566
--- /dev/null
+++ b/node_modules/core-js/es/number/min-safe-integer.js
@@ -0,0 +1,4 @@
+'use strict';
+require('../../modules/es.number.min-safe-integer');
+
+module.exports = -0x1FFFFFFFFFFFFF;
diff --git a/node_modules/core-js/es/number/parse-float.js b/node_modules/core-js/es/number/parse-float.js
new file mode 100644
index 0000000..43015af
--- /dev/null
+++ b/node_modules/core-js/es/number/parse-float.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.number.parse-float');
+var path = require('../../internals/path');
+
+module.exports = path.Number.parseFloat;
diff --git a/node_modules/core-js/es/number/parse-int.js b/node_modules/core-js/es/number/parse-int.js
new file mode 100644
index 0000000..90660fc
--- /dev/null
+++ b/node_modules/core-js/es/number/parse-int.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.number.parse-int');
+var path = require('../../internals/path');
+
+module.exports = path.Number.parseInt;
diff --git a/node_modules/core-js/es/number/to-exponential.js b/node_modules/core-js/es/number/to-exponential.js
new file mode 100644
index 0000000..cb5f64e
--- /dev/null
+++ b/node_modules/core-js/es/number/to-exponential.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.number.to-exponential');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Number', 'toExponential');
diff --git a/node_modules/core-js/es/number/to-fixed.js b/node_modules/core-js/es/number/to-fixed.js
new file mode 100644
index 0000000..f96050d
--- /dev/null
+++ b/node_modules/core-js/es/number/to-fixed.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.number.to-fixed');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Number', 'toFixed');
diff --git a/node_modules/core-js/es/number/to-precision.js b/node_modules/core-js/es/number/to-precision.js
new file mode 100644
index 0000000..395353d
--- /dev/null
+++ b/node_modules/core-js/es/number/to-precision.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.number.to-precision');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Number', 'toPrecision');
diff --git a/node_modules/core-js/es/number/virtual/index.js b/node_modules/core-js/es/number/virtual/index.js
new file mode 100644
index 0000000..1414039
--- /dev/null
+++ b/node_modules/core-js/es/number/virtual/index.js
@@ -0,0 +1,7 @@
+'use strict';
+require('../../../modules/es.number.to-exponential');
+require('../../../modules/es.number.to-fixed');
+require('../../../modules/es.number.to-precision');
+var entryVirtual = require('../../../internals/entry-virtual');
+
+module.exports = entryVirtual('Number');
diff --git a/node_modules/core-js/es/number/virtual/to-exponential.js b/node_modules/core-js/es/number/virtual/to-exponential.js
new file mode 100644
index 0000000..16c701a
--- /dev/null
+++ b/node_modules/core-js/es/number/virtual/to-exponential.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.number.to-exponential');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Number', 'toExponential');
diff --git a/node_modules/core-js/es/number/virtual/to-fixed.js b/node_modules/core-js/es/number/virtual/to-fixed.js
new file mode 100644
index 0000000..13f923c
--- /dev/null
+++ b/node_modules/core-js/es/number/virtual/to-fixed.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.number.to-fixed');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Number', 'toFixed');
diff --git a/node_modules/core-js/es/number/virtual/to-precision.js b/node_modules/core-js/es/number/virtual/to-precision.js
new file mode 100644
index 0000000..3f14005
--- /dev/null
+++ b/node_modules/core-js/es/number/virtual/to-precision.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.number.to-precision');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Number', 'toPrecision');
diff --git a/node_modules/core-js/es/object/assign.js b/node_modules/core-js/es/object/assign.js
new file mode 100644
index 0000000..a65486b
--- /dev/null
+++ b/node_modules/core-js/es/object/assign.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.object.assign');
+var path = require('../../internals/path');
+
+module.exports = path.Object.assign;
diff --git a/node_modules/core-js/es/object/create.js b/node_modules/core-js/es/object/create.js
new file mode 100644
index 0000000..4c8ed6d
--- /dev/null
+++ b/node_modules/core-js/es/object/create.js
@@ -0,0 +1,9 @@
+'use strict';
+require('../../modules/es.object.create');
+var path = require('../../internals/path');
+
+var Object = path.Object;
+
+module.exports = function create(P, D) {
+  return Object.create(P, D);
+};
diff --git a/node_modules/core-js/es/object/define-getter.js b/node_modules/core-js/es/object/define-getter.js
new file mode 100644
index 0000000..a7073b9
--- /dev/null
+++ b/node_modules/core-js/es/object/define-getter.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.object.define-getter');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Object', '__defineGetter__');
diff --git a/node_modules/core-js/es/object/define-properties.js b/node_modules/core-js/es/object/define-properties.js
new file mode 100644
index 0000000..6b3959e
--- /dev/null
+++ b/node_modules/core-js/es/object/define-properties.js
@@ -0,0 +1,11 @@
+'use strict';
+require('../../modules/es.object.define-properties');
+var path = require('../../internals/path');
+
+var Object = path.Object;
+
+var defineProperties = module.exports = function defineProperties(T, D) {
+  return Object.defineProperties(T, D);
+};
+
+if (Object.defineProperties.sham) defineProperties.sham = true;
diff --git a/node_modules/core-js/es/object/define-property.js b/node_modules/core-js/es/object/define-property.js
new file mode 100644
index 0000000..26b927b
--- /dev/null
+++ b/node_modules/core-js/es/object/define-property.js
@@ -0,0 +1,11 @@
+'use strict';
+require('../../modules/es.object.define-property');
+var path = require('../../internals/path');
+
+var Object = path.Object;
+
+var defineProperty = module.exports = function defineProperty(it, key, desc) {
+  return Object.defineProperty(it, key, desc);
+};
+
+if (Object.defineProperty.sham) defineProperty.sham = true;
diff --git a/node_modules/core-js/es/object/define-setter.js b/node_modules/core-js/es/object/define-setter.js
new file mode 100644
index 0000000..0b35dec
--- /dev/null
+++ b/node_modules/core-js/es/object/define-setter.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.object.define-setter');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Object', '__defineSetter__');
diff --git a/node_modules/core-js/es/object/entries.js b/node_modules/core-js/es/object/entries.js
new file mode 100644
index 0000000..5670fe3
--- /dev/null
+++ b/node_modules/core-js/es/object/entries.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.object.entries');
+var path = require('../../internals/path');
+
+module.exports = path.Object.entries;
diff --git a/node_modules/core-js/es/object/freeze.js b/node_modules/core-js/es/object/freeze.js
new file mode 100644
index 0000000..f0bc19a
--- /dev/null
+++ b/node_modules/core-js/es/object/freeze.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.object.freeze');
+var path = require('../../internals/path');
+
+module.exports = path.Object.freeze;
diff --git a/node_modules/core-js/es/object/from-entries.js b/node_modules/core-js/es/object/from-entries.js
new file mode 100644
index 0000000..9177fec
--- /dev/null
+++ b/node_modules/core-js/es/object/from-entries.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.array.iterator');
+require('../../modules/es.object.from-entries');
+var path = require('../../internals/path');
+
+module.exports = path.Object.fromEntries;
diff --git a/node_modules/core-js/es/object/get-own-property-descriptor.js b/node_modules/core-js/es/object/get-own-property-descriptor.js
new file mode 100644
index 0000000..069b151
--- /dev/null
+++ b/node_modules/core-js/es/object/get-own-property-descriptor.js
@@ -0,0 +1,11 @@
+'use strict';
+require('../../modules/es.object.get-own-property-descriptor');
+var path = require('../../internals/path');
+
+var Object = path.Object;
+
+var getOwnPropertyDescriptor = module.exports = function getOwnPropertyDescriptor(it, key) {
+  return Object.getOwnPropertyDescriptor(it, key);
+};
+
+if (Object.getOwnPropertyDescriptor.sham) getOwnPropertyDescriptor.sham = true;
diff --git a/node_modules/core-js/es/object/get-own-property-descriptors.js b/node_modules/core-js/es/object/get-own-property-descriptors.js
new file mode 100644
index 0000000..7155192
--- /dev/null
+++ b/node_modules/core-js/es/object/get-own-property-descriptors.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.object.get-own-property-descriptors');
+var path = require('../../internals/path');
+
+module.exports = path.Object.getOwnPropertyDescriptors;
diff --git a/node_modules/core-js/es/object/get-own-property-names.js b/node_modules/core-js/es/object/get-own-property-names.js
new file mode 100644
index 0000000..fe438dd
--- /dev/null
+++ b/node_modules/core-js/es/object/get-own-property-names.js
@@ -0,0 +1,9 @@
+'use strict';
+require('../../modules/es.object.get-own-property-names');
+var path = require('../../internals/path');
+
+var Object = path.Object;
+
+module.exports = function getOwnPropertyNames(it) {
+  return Object.getOwnPropertyNames(it);
+};
diff --git a/node_modules/core-js/es/object/get-own-property-symbols.js b/node_modules/core-js/es/object/get-own-property-symbols.js
new file mode 100644
index 0000000..5238c78
--- /dev/null
+++ b/node_modules/core-js/es/object/get-own-property-symbols.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.symbol');
+var path = require('../../internals/path');
+
+module.exports = path.Object.getOwnPropertySymbols;
diff --git a/node_modules/core-js/es/object/get-prototype-of.js b/node_modules/core-js/es/object/get-prototype-of.js
new file mode 100644
index 0000000..a0af9c6
--- /dev/null
+++ b/node_modules/core-js/es/object/get-prototype-of.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.object.get-prototype-of');
+var path = require('../../internals/path');
+
+module.exports = path.Object.getPrototypeOf;
diff --git a/node_modules/core-js/es/object/group-by.js b/node_modules/core-js/es/object/group-by.js
new file mode 100644
index 0000000..52a006c
--- /dev/null
+++ b/node_modules/core-js/es/object/group-by.js
@@ -0,0 +1,7 @@
+'use strict';
+require('../../modules/es.object.create');
+require('../../modules/es.object.group-by');
+
+var path = require('../../internals/path');
+
+module.exports = path.Object.groupBy;
diff --git a/node_modules/core-js/es/object/has-own.js b/node_modules/core-js/es/object/has-own.js
new file mode 100644
index 0000000..bf8685c
--- /dev/null
+++ b/node_modules/core-js/es/object/has-own.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.object.has-own');
+var path = require('../../internals/path');
+
+module.exports = path.Object.hasOwn;
diff --git a/node_modules/core-js/es/object/index.js b/node_modules/core-js/es/object/index.js
new file mode 100644
index 0000000..266bb6e
--- /dev/null
+++ b/node_modules/core-js/es/object/index.js
@@ -0,0 +1,36 @@
+'use strict';
+require('../../modules/es.symbol');
+require('../../modules/es.object.assign');
+require('../../modules/es.object.create');
+require('../../modules/es.object.define-property');
+require('../../modules/es.object.define-properties');
+require('../../modules/es.object.entries');
+require('../../modules/es.object.freeze');
+require('../../modules/es.object.from-entries');
+require('../../modules/es.object.get-own-property-descriptor');
+require('../../modules/es.object.get-own-property-descriptors');
+require('../../modules/es.object.get-own-property-names');
+require('../../modules/es.object.get-prototype-of');
+require('../../modules/es.object.group-by');
+require('../../modules/es.object.has-own');
+require('../../modules/es.object.is');
+require('../../modules/es.object.is-extensible');
+require('../../modules/es.object.is-frozen');
+require('../../modules/es.object.is-sealed');
+require('../../modules/es.object.keys');
+require('../../modules/es.object.prevent-extensions');
+require('../../modules/es.object.proto');
+require('../../modules/es.object.seal');
+require('../../modules/es.object.set-prototype-of');
+require('../../modules/es.object.values');
+require('../../modules/es.object.to-string');
+require('../../modules/es.object.define-getter');
+require('../../modules/es.object.define-setter');
+require('../../modules/es.object.lookup-getter');
+require('../../modules/es.object.lookup-setter');
+require('../../modules/es.json.to-string-tag');
+require('../../modules/es.math.to-string-tag');
+require('../../modules/es.reflect.to-string-tag');
+var path = require('../../internals/path');
+
+module.exports = path.Object;
diff --git a/node_modules/core-js/es/object/is-extensible.js b/node_modules/core-js/es/object/is-extensible.js
new file mode 100644
index 0000000..8472a83
--- /dev/null
+++ b/node_modules/core-js/es/object/is-extensible.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.object.is-extensible');
+var path = require('../../internals/path');
+
+module.exports = path.Object.isExtensible;
diff --git a/node_modules/core-js/es/object/is-frozen.js b/node_modules/core-js/es/object/is-frozen.js
new file mode 100644
index 0000000..7ce7848
--- /dev/null
+++ b/node_modules/core-js/es/object/is-frozen.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.object.is-frozen');
+var path = require('../../internals/path');
+
+module.exports = path.Object.isFrozen;
diff --git a/node_modules/core-js/es/object/is-sealed.js b/node_modules/core-js/es/object/is-sealed.js
new file mode 100644
index 0000000..d7f4b3d
--- /dev/null
+++ b/node_modules/core-js/es/object/is-sealed.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.object.is-sealed');
+var path = require('../../internals/path');
+
+module.exports = path.Object.isSealed;
diff --git a/node_modules/core-js/es/object/is.js b/node_modules/core-js/es/object/is.js
new file mode 100644
index 0000000..9b0dbc3
--- /dev/null
+++ b/node_modules/core-js/es/object/is.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.object.is');
+var path = require('../../internals/path');
+
+module.exports = path.Object.is;
diff --git a/node_modules/core-js/es/object/keys.js b/node_modules/core-js/es/object/keys.js
new file mode 100644
index 0000000..e0c0143
--- /dev/null
+++ b/node_modules/core-js/es/object/keys.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.object.keys');
+var path = require('../../internals/path');
+
+module.exports = path.Object.keys;
diff --git a/node_modules/core-js/es/object/lookup-getter.js b/node_modules/core-js/es/object/lookup-getter.js
new file mode 100644
index 0000000..cadd1f3
--- /dev/null
+++ b/node_modules/core-js/es/object/lookup-getter.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.object.lookup-getter');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Object', '__lookupGetter__');
diff --git a/node_modules/core-js/es/object/lookup-setter.js b/node_modules/core-js/es/object/lookup-setter.js
new file mode 100644
index 0000000..6afc30f
--- /dev/null
+++ b/node_modules/core-js/es/object/lookup-setter.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.object.lookup-setter');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Object', '__lookupSetter__');
diff --git a/node_modules/core-js/es/object/prevent-extensions.js b/node_modules/core-js/es/object/prevent-extensions.js
new file mode 100644
index 0000000..4c0a44a
--- /dev/null
+++ b/node_modules/core-js/es/object/prevent-extensions.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.object.prevent-extensions');
+var path = require('../../internals/path');
+
+module.exports = path.Object.preventExtensions;
diff --git a/node_modules/core-js/es/object/proto.js b/node_modules/core-js/es/object/proto.js
new file mode 100644
index 0000000..611f168
--- /dev/null
+++ b/node_modules/core-js/es/object/proto.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.object.proto');
diff --git a/node_modules/core-js/es/object/seal.js b/node_modules/core-js/es/object/seal.js
new file mode 100644
index 0000000..4da8ba8
--- /dev/null
+++ b/node_modules/core-js/es/object/seal.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.object.seal');
+var path = require('../../internals/path');
+
+module.exports = path.Object.seal;
diff --git a/node_modules/core-js/es/object/set-prototype-of.js b/node_modules/core-js/es/object/set-prototype-of.js
new file mode 100644
index 0000000..2920089
--- /dev/null
+++ b/node_modules/core-js/es/object/set-prototype-of.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.object.set-prototype-of');
+var path = require('../../internals/path');
+
+module.exports = path.Object.setPrototypeOf;
diff --git a/node_modules/core-js/es/object/to-string.js b/node_modules/core-js/es/object/to-string.js
new file mode 100644
index 0000000..76f65f6
--- /dev/null
+++ b/node_modules/core-js/es/object/to-string.js
@@ -0,0 +1,10 @@
+'use strict';
+require('../../modules/es.json.to-string-tag');
+require('../../modules/es.math.to-string-tag');
+require('../../modules/es.object.to-string');
+require('../../modules/es.reflect.to-string-tag');
+var classof = require('../../internals/classof');
+
+module.exports = function (it) {
+  return '[object ' + classof(it) + ']';
+};
diff --git a/node_modules/core-js/es/object/values.js b/node_modules/core-js/es/object/values.js
new file mode 100644
index 0000000..6c4f188
--- /dev/null
+++ b/node_modules/core-js/es/object/values.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.object.values');
+var path = require('../../internals/path');
+
+module.exports = path.Object.values;
diff --git a/node_modules/core-js/es/parse-float.js b/node_modules/core-js/es/parse-float.js
new file mode 100644
index 0000000..38fcad1
--- /dev/null
+++ b/node_modules/core-js/es/parse-float.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../modules/es.parse-float');
+var path = require('../internals/path');
+
+module.exports = path.parseFloat;
diff --git a/node_modules/core-js/es/parse-int.js b/node_modules/core-js/es/parse-int.js
new file mode 100644
index 0000000..9859572
--- /dev/null
+++ b/node_modules/core-js/es/parse-int.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../modules/es.parse-int');
+var path = require('../internals/path');
+
+module.exports = path.parseInt;
diff --git a/node_modules/core-js/es/promise/all-settled.js b/node_modules/core-js/es/promise/all-settled.js
new file mode 100644
index 0000000..9f9875e
--- /dev/null
+++ b/node_modules/core-js/es/promise/all-settled.js
@@ -0,0 +1,16 @@
+'use strict';
+require('../../modules/es.array.iterator');
+require('../../modules/es.object.to-string');
+require('../../modules/es.promise');
+require('../../modules/es.promise.all-settled');
+require('../../modules/es.string.iterator');
+var call = require('../../internals/function-call');
+var isCallable = require('../../internals/is-callable');
+var path = require('../../internals/path');
+
+var Promise = path.Promise;
+var $allSettled = Promise.allSettled;
+
+module.exports = function allSettled(iterable) {
+  return call($allSettled, isCallable(this) ? this : Promise, iterable);
+};
diff --git a/node_modules/core-js/es/promise/any.js b/node_modules/core-js/es/promise/any.js
new file mode 100644
index 0000000..8e49250
--- /dev/null
+++ b/node_modules/core-js/es/promise/any.js
@@ -0,0 +1,17 @@
+'use strict';
+require('../../modules/es.aggregate-error');
+require('../../modules/es.array.iterator');
+require('../../modules/es.object.to-string');
+require('../../modules/es.promise');
+require('../../modules/es.promise.any');
+require('../../modules/es.string.iterator');
+var call = require('../../internals/function-call');
+var isCallable = require('../../internals/is-callable');
+var path = require('../../internals/path');
+
+var Promise = path.Promise;
+var $any = Promise.any;
+
+module.exports = function any(iterable) {
+  return call($any, isCallable(this) ? this : Promise, iterable);
+};
diff --git a/node_modules/core-js/es/promise/finally.js b/node_modules/core-js/es/promise/finally.js
new file mode 100644
index 0000000..6a07c1a
--- /dev/null
+++ b/node_modules/core-js/es/promise/finally.js
@@ -0,0 +1,7 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.promise');
+require('../../modules/es.promise.finally');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Promise', 'finally');
diff --git a/node_modules/core-js/es/promise/index.js b/node_modules/core-js/es/promise/index.js
new file mode 100644
index 0000000..5c758b4
--- /dev/null
+++ b/node_modules/core-js/es/promise/index.js
@@ -0,0 +1,14 @@
+'use strict';
+require('../../modules/es.aggregate-error');
+require('../../modules/es.array.iterator');
+require('../../modules/es.object.to-string');
+require('../../modules/es.promise');
+require('../../modules/es.promise.all-settled');
+require('../../modules/es.promise.any');
+require('../../modules/es.promise.try');
+require('../../modules/es.promise.with-resolvers');
+require('../../modules/es.promise.finally');
+require('../../modules/es.string.iterator');
+var path = require('../../internals/path');
+
+module.exports = path.Promise;
diff --git a/node_modules/core-js/es/promise/try.js b/node_modules/core-js/es/promise/try.js
new file mode 100644
index 0000000..c3e9959
--- /dev/null
+++ b/node_modules/core-js/es/promise/try.js
@@ -0,0 +1,15 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.promise');
+require('../../modules/es.promise.try');
+var apply = require('../../internals/function-apply');
+var isCallable = require('../../internals/is-callable');
+var path = require('../../internals/path');
+
+var Promise = path.Promise;
+var $try = Promise['try'];
+
+// eslint-disable-next-line no-unused-vars -- required for arity
+module.exports = ({ 'try': function (callbackfn /* , ...args */) {
+  return apply($try, isCallable(this) ? this : Promise, arguments);
+} })['try'];
diff --git a/node_modules/core-js/es/promise/with-resolvers.js b/node_modules/core-js/es/promise/with-resolvers.js
new file mode 100644
index 0000000..0e2f6a0
--- /dev/null
+++ b/node_modules/core-js/es/promise/with-resolvers.js
@@ -0,0 +1,13 @@
+'use strict';
+require('../../modules/es.promise');
+require('../../modules/es.promise.with-resolvers');
+var call = require('../../internals/function-call');
+var isCallable = require('../../internals/is-callable');
+var path = require('../../internals/path');
+
+var Promise = path.Promise;
+var promiseWithResolvers = Promise.withResolvers;
+
+module.exports = function withResolvers() {
+  return call(promiseWithResolvers, isCallable(this) ? this : Promise);
+};
diff --git a/node_modules/core-js/es/reflect/apply.js b/node_modules/core-js/es/reflect/apply.js
new file mode 100644
index 0000000..3e20a2d
--- /dev/null
+++ b/node_modules/core-js/es/reflect/apply.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.reflect.apply');
+var path = require('../../internals/path');
+
+module.exports = path.Reflect.apply;
diff --git a/node_modules/core-js/es/reflect/construct.js b/node_modules/core-js/es/reflect/construct.js
new file mode 100644
index 0000000..c2118b2
--- /dev/null
+++ b/node_modules/core-js/es/reflect/construct.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.reflect.construct');
+var path = require('../../internals/path');
+
+module.exports = path.Reflect.construct;
diff --git a/node_modules/core-js/es/reflect/define-property.js b/node_modules/core-js/es/reflect/define-property.js
new file mode 100644
index 0000000..b2366a7
--- /dev/null
+++ b/node_modules/core-js/es/reflect/define-property.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.reflect.define-property');
+var path = require('../../internals/path');
+
+module.exports = path.Reflect.defineProperty;
diff --git a/node_modules/core-js/es/reflect/delete-property.js b/node_modules/core-js/es/reflect/delete-property.js
new file mode 100644
index 0000000..43f7cc3
--- /dev/null
+++ b/node_modules/core-js/es/reflect/delete-property.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.reflect.delete-property');
+var path = require('../../internals/path');
+
+module.exports = path.Reflect.deleteProperty;
diff --git a/node_modules/core-js/es/reflect/get-own-property-descriptor.js b/node_modules/core-js/es/reflect/get-own-property-descriptor.js
new file mode 100644
index 0000000..2426052
--- /dev/null
+++ b/node_modules/core-js/es/reflect/get-own-property-descriptor.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.reflect.get-own-property-descriptor');
+var path = require('../../internals/path');
+
+module.exports = path.Reflect.getOwnPropertyDescriptor;
diff --git a/node_modules/core-js/es/reflect/get-prototype-of.js b/node_modules/core-js/es/reflect/get-prototype-of.js
new file mode 100644
index 0000000..a53ab73
--- /dev/null
+++ b/node_modules/core-js/es/reflect/get-prototype-of.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.reflect.get-prototype-of');
+var path = require('../../internals/path');
+
+module.exports = path.Reflect.getPrototypeOf;
diff --git a/node_modules/core-js/es/reflect/get.js b/node_modules/core-js/es/reflect/get.js
new file mode 100644
index 0000000..ec57c08
--- /dev/null
+++ b/node_modules/core-js/es/reflect/get.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.reflect.get');
+var path = require('../../internals/path');
+
+module.exports = path.Reflect.get;
diff --git a/node_modules/core-js/es/reflect/has.js b/node_modules/core-js/es/reflect/has.js
new file mode 100644
index 0000000..70f721b
--- /dev/null
+++ b/node_modules/core-js/es/reflect/has.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.reflect.has');
+var path = require('../../internals/path');
+
+module.exports = path.Reflect.has;
diff --git a/node_modules/core-js/es/reflect/index.js b/node_modules/core-js/es/reflect/index.js
new file mode 100644
index 0000000..0916f6a
--- /dev/null
+++ b/node_modules/core-js/es/reflect/index.js
@@ -0,0 +1,19 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.reflect.apply');
+require('../../modules/es.reflect.construct');
+require('../../modules/es.reflect.define-property');
+require('../../modules/es.reflect.delete-property');
+require('../../modules/es.reflect.get');
+require('../../modules/es.reflect.get-own-property-descriptor');
+require('../../modules/es.reflect.get-prototype-of');
+require('../../modules/es.reflect.has');
+require('../../modules/es.reflect.is-extensible');
+require('../../modules/es.reflect.own-keys');
+require('../../modules/es.reflect.prevent-extensions');
+require('../../modules/es.reflect.set');
+require('../../modules/es.reflect.set-prototype-of');
+require('../../modules/es.reflect.to-string-tag');
+var path = require('../../internals/path');
+
+module.exports = path.Reflect;
diff --git a/node_modules/core-js/es/reflect/is-extensible.js b/node_modules/core-js/es/reflect/is-extensible.js
new file mode 100644
index 0000000..c234774
--- /dev/null
+++ b/node_modules/core-js/es/reflect/is-extensible.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.reflect.is-extensible');
+var path = require('../../internals/path');
+
+module.exports = path.Reflect.isExtensible;
diff --git a/node_modules/core-js/es/reflect/own-keys.js b/node_modules/core-js/es/reflect/own-keys.js
new file mode 100644
index 0000000..15a75b2
--- /dev/null
+++ b/node_modules/core-js/es/reflect/own-keys.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.reflect.own-keys');
+var path = require('../../internals/path');
+
+module.exports = path.Reflect.ownKeys;
diff --git a/node_modules/core-js/es/reflect/prevent-extensions.js b/node_modules/core-js/es/reflect/prevent-extensions.js
new file mode 100644
index 0000000..e5a758e
--- /dev/null
+++ b/node_modules/core-js/es/reflect/prevent-extensions.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.reflect.prevent-extensions');
+var path = require('../../internals/path');
+
+module.exports = path.Reflect.preventExtensions;
diff --git a/node_modules/core-js/es/reflect/set-prototype-of.js b/node_modules/core-js/es/reflect/set-prototype-of.js
new file mode 100644
index 0000000..7fa3db9
--- /dev/null
+++ b/node_modules/core-js/es/reflect/set-prototype-of.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.reflect.set-prototype-of');
+var path = require('../../internals/path');
+
+module.exports = path.Reflect.setPrototypeOf;
diff --git a/node_modules/core-js/es/reflect/set.js b/node_modules/core-js/es/reflect/set.js
new file mode 100644
index 0000000..ffaaef7
--- /dev/null
+++ b/node_modules/core-js/es/reflect/set.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.reflect.set');
+var path = require('../../internals/path');
+
+module.exports = path.Reflect.set;
diff --git a/node_modules/core-js/es/reflect/to-string-tag.js b/node_modules/core-js/es/reflect/to-string-tag.js
new file mode 100644
index 0000000..be533d0
--- /dev/null
+++ b/node_modules/core-js/es/reflect/to-string-tag.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.reflect.to-string-tag');
+
+module.exports = 'Reflect';
diff --git a/node_modules/core-js/es/regexp/constructor.js b/node_modules/core-js/es/regexp/constructor.js
new file mode 100644
index 0000000..6c5d1e1
--- /dev/null
+++ b/node_modules/core-js/es/regexp/constructor.js
@@ -0,0 +1,7 @@
+'use strict';
+require('../../modules/es.regexp.constructor');
+require('../../modules/es.regexp.dot-all');
+require('../../modules/es.regexp.exec');
+require('../../modules/es.regexp.sticky');
+
+module.exports = RegExp;
diff --git a/node_modules/core-js/es/regexp/dot-all.js b/node_modules/core-js/es/regexp/dot-all.js
new file mode 100644
index 0000000..10f2571
--- /dev/null
+++ b/node_modules/core-js/es/regexp/dot-all.js
@@ -0,0 +1,8 @@
+'use strict';
+require('../../modules/es.regexp.constructor');
+require('../../modules/es.regexp.dot-all');
+require('../../modules/es.regexp.exec');
+
+module.exports = function (it) {
+  return it.dotAll;
+};
diff --git a/node_modules/core-js/es/regexp/escape.js b/node_modules/core-js/es/regexp/escape.js
new file mode 100644
index 0000000..1ade93c
--- /dev/null
+++ b/node_modules/core-js/es/regexp/escape.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.regexp.escape');
+var path = require('../../internals/path');
+
+module.exports = path.RegExp.escape;
diff --git a/node_modules/core-js/es/regexp/flags.js b/node_modules/core-js/es/regexp/flags.js
new file mode 100644
index 0000000..cda54e4
--- /dev/null
+++ b/node_modules/core-js/es/regexp/flags.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.regexp.flags');
+var getRegExpFlags = require('../../internals/regexp-get-flags');
+
+module.exports = getRegExpFlags;
diff --git a/node_modules/core-js/es/regexp/index.js b/node_modules/core-js/es/regexp/index.js
new file mode 100644
index 0000000..d2a5e64
--- /dev/null
+++ b/node_modules/core-js/es/regexp/index.js
@@ -0,0 +1,13 @@
+'use strict';
+require('../../modules/es.regexp.constructor');
+require('../../modules/es.regexp.escape');
+require('../../modules/es.regexp.to-string');
+require('../../modules/es.regexp.dot-all');
+require('../../modules/es.regexp.exec');
+require('../../modules/es.regexp.flags');
+require('../../modules/es.regexp.sticky');
+require('../../modules/es.regexp.test');
+require('../../modules/es.string.match');
+require('../../modules/es.string.replace');
+require('../../modules/es.string.search');
+require('../../modules/es.string.split');
diff --git a/node_modules/core-js/es/regexp/match.js b/node_modules/core-js/es/regexp/match.js
new file mode 100644
index 0000000..48803ce
--- /dev/null
+++ b/node_modules/core-js/es/regexp/match.js
@@ -0,0 +1,11 @@
+'use strict';
+require('../../modules/es.regexp.exec');
+require('../../modules/es.string.match');
+var call = require('../../internals/function-call');
+var wellKnownSymbol = require('../../internals/well-known-symbol');
+
+var MATCH = wellKnownSymbol('match');
+
+module.exports = function (it, str) {
+  return call(RegExp.prototype[MATCH], it, str);
+};
diff --git a/node_modules/core-js/es/regexp/replace.js b/node_modules/core-js/es/regexp/replace.js
new file mode 100644
index 0000000..f118204
--- /dev/null
+++ b/node_modules/core-js/es/regexp/replace.js
@@ -0,0 +1,11 @@
+'use strict';
+require('../../modules/es.regexp.exec');
+require('../../modules/es.string.replace');
+var call = require('../../internals/function-call');
+var wellKnownSymbol = require('../../internals/well-known-symbol');
+
+var REPLACE = wellKnownSymbol('replace');
+
+module.exports = function (it, str, replacer) {
+  return call(RegExp.prototype[REPLACE], it, str, replacer);
+};
diff --git a/node_modules/core-js/es/regexp/search.js b/node_modules/core-js/es/regexp/search.js
new file mode 100644
index 0000000..ef3edf0
--- /dev/null
+++ b/node_modules/core-js/es/regexp/search.js
@@ -0,0 +1,11 @@
+'use strict';
+require('../../modules/es.regexp.exec');
+require('../../modules/es.string.search');
+var call = require('../../internals/function-call');
+var wellKnownSymbol = require('../../internals/well-known-symbol');
+
+var SEARCH = wellKnownSymbol('search');
+
+module.exports = function (it, str) {
+  return call(RegExp.prototype[SEARCH], it, str);
+};
diff --git a/node_modules/core-js/es/regexp/split.js b/node_modules/core-js/es/regexp/split.js
new file mode 100644
index 0000000..91cbd2c
--- /dev/null
+++ b/node_modules/core-js/es/regexp/split.js
@@ -0,0 +1,11 @@
+'use strict';
+require('../../modules/es.regexp.exec');
+require('../../modules/es.string.split');
+var call = require('../../internals/function-call');
+var wellKnownSymbol = require('../../internals/well-known-symbol');
+
+var SPLIT = wellKnownSymbol('split');
+
+module.exports = function (it, str, limit) {
+  return call(RegExp.prototype[SPLIT], it, str, limit);
+};
diff --git a/node_modules/core-js/es/regexp/sticky.js b/node_modules/core-js/es/regexp/sticky.js
new file mode 100644
index 0000000..9726f3d
--- /dev/null
+++ b/node_modules/core-js/es/regexp/sticky.js
@@ -0,0 +1,8 @@
+'use strict';
+require('../../modules/es.regexp.constructor');
+require('../../modules/es.regexp.exec');
+require('../../modules/es.regexp.sticky');
+
+module.exports = function (it) {
+  return it.sticky;
+};
diff --git a/node_modules/core-js/es/regexp/test.js b/node_modules/core-js/es/regexp/test.js
new file mode 100644
index 0000000..cc779f4
--- /dev/null
+++ b/node_modules/core-js/es/regexp/test.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.regexp.exec');
+require('../../modules/es.regexp.test');
+var uncurryThis = require('../../internals/function-uncurry-this');
+
+module.exports = uncurryThis(/./.test);
diff --git a/node_modules/core-js/es/regexp/to-string.js b/node_modules/core-js/es/regexp/to-string.js
new file mode 100644
index 0000000..c42ce3e
--- /dev/null
+++ b/node_modules/core-js/es/regexp/to-string.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.regexp.to-string');
+var uncurryThis = require('../../internals/function-uncurry-this');
+
+module.exports = uncurryThis(/./.toString);
diff --git a/node_modules/core-js/es/set/difference.js b/node_modules/core-js/es/set/difference.js
new file mode 100644
index 0000000..cc5a1d6
--- /dev/null
+++ b/node_modules/core-js/es/set/difference.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.set');
+require('../../modules/es.set.difference.v2');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Set', 'difference');
diff --git a/node_modules/core-js/es/set/index.js b/node_modules/core-js/es/set/index.js
new file mode 100644
index 0000000..9a300f8
--- /dev/null
+++ b/node_modules/core-js/es/set/index.js
@@ -0,0 +1,15 @@
+'use strict';
+require('../../modules/es.array.iterator');
+require('../../modules/es.object.to-string');
+require('../../modules/es.set');
+require('../../modules/es.set.difference.v2');
+require('../../modules/es.set.intersection.v2');
+require('../../modules/es.set.is-disjoint-from.v2');
+require('../../modules/es.set.is-subset-of.v2');
+require('../../modules/es.set.is-superset-of.v2');
+require('../../modules/es.set.symmetric-difference.v2');
+require('../../modules/es.set.union.v2');
+require('../../modules/es.string.iterator');
+var path = require('../../internals/path');
+
+module.exports = path.Set;
diff --git a/node_modules/core-js/es/set/intersection.js b/node_modules/core-js/es/set/intersection.js
new file mode 100644
index 0000000..8c2b7a1
--- /dev/null
+++ b/node_modules/core-js/es/set/intersection.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.set');
+require('../../modules/es.set.intersection.v2');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Set', 'intersection');
diff --git a/node_modules/core-js/es/set/is-disjoint-from.js b/node_modules/core-js/es/set/is-disjoint-from.js
new file mode 100644
index 0000000..1888869
--- /dev/null
+++ b/node_modules/core-js/es/set/is-disjoint-from.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.set');
+require('../../modules/es.set.is-disjoint-from.v2');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Set', 'isDisjointFrom');
diff --git a/node_modules/core-js/es/set/is-subset-of.js b/node_modules/core-js/es/set/is-subset-of.js
new file mode 100644
index 0000000..242f717
--- /dev/null
+++ b/node_modules/core-js/es/set/is-subset-of.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.set');
+require('../../modules/es.set.is-subset-of.v2');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Set', 'isSubsetOf');
diff --git a/node_modules/core-js/es/set/is-superset-of.js b/node_modules/core-js/es/set/is-superset-of.js
new file mode 100644
index 0000000..ee81cfb
--- /dev/null
+++ b/node_modules/core-js/es/set/is-superset-of.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.set');
+require('../../modules/es.set.is-superset-of.v2');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Set', 'isSupersetOf');
diff --git a/node_modules/core-js/es/set/symmetric-difference.js b/node_modules/core-js/es/set/symmetric-difference.js
new file mode 100644
index 0000000..60fbf7b
--- /dev/null
+++ b/node_modules/core-js/es/set/symmetric-difference.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.set');
+require('../../modules/es.set.symmetric-difference.v2');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Set', 'symmetricDifference');
diff --git a/node_modules/core-js/es/set/union.js b/node_modules/core-js/es/set/union.js
new file mode 100644
index 0000000..d5d7516
--- /dev/null
+++ b/node_modules/core-js/es/set/union.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.set');
+require('../../modules/es.set.union.v2');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Set', 'union');
diff --git a/node_modules/core-js/es/string/anchor.js b/node_modules/core-js/es/string/anchor.js
new file mode 100644
index 0000000..627f397
--- /dev/null
+++ b/node_modules/core-js/es/string/anchor.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.string.anchor');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('String', 'anchor');
diff --git a/node_modules/core-js/es/string/at.js b/node_modules/core-js/es/string/at.js
new file mode 100644
index 0000000..1183270
--- /dev/null
+++ b/node_modules/core-js/es/string/at.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.string.at-alternative');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('String', 'at');
diff --git a/node_modules/core-js/es/string/big.js b/node_modules/core-js/es/string/big.js
new file mode 100644
index 0000000..08cc112
--- /dev/null
+++ b/node_modules/core-js/es/string/big.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.string.big');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('String', 'big');
diff --git a/node_modules/core-js/es/string/blink.js b/node_modules/core-js/es/string/blink.js
new file mode 100644
index 0000000..2741fb4
--- /dev/null
+++ b/node_modules/core-js/es/string/blink.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.string.blink');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('String', 'blink');
diff --git a/node_modules/core-js/es/string/bold.js b/node_modules/core-js/es/string/bold.js
new file mode 100644
index 0000000..24065f7
--- /dev/null
+++ b/node_modules/core-js/es/string/bold.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.string.bold');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('String', 'bold');
diff --git a/node_modules/core-js/es/string/code-point-at.js b/node_modules/core-js/es/string/code-point-at.js
new file mode 100644
index 0000000..7a6bc5c
--- /dev/null
+++ b/node_modules/core-js/es/string/code-point-at.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.string.code-point-at');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('String', 'codePointAt');
diff --git a/node_modules/core-js/es/string/ends-with.js b/node_modules/core-js/es/string/ends-with.js
new file mode 100644
index 0000000..d598020
--- /dev/null
+++ b/node_modules/core-js/es/string/ends-with.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.string.ends-with');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('String', 'endsWith');
diff --git a/node_modules/core-js/es/string/fixed.js b/node_modules/core-js/es/string/fixed.js
new file mode 100644
index 0000000..9d70348
--- /dev/null
+++ b/node_modules/core-js/es/string/fixed.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.string.fixed');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('String', 'fixed');
diff --git a/node_modules/core-js/es/string/fontcolor.js b/node_modules/core-js/es/string/fontcolor.js
new file mode 100644
index 0000000..056c07d
--- /dev/null
+++ b/node_modules/core-js/es/string/fontcolor.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.string.fontcolor');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('String', 'fontcolor');
diff --git a/node_modules/core-js/es/string/fontsize.js b/node_modules/core-js/es/string/fontsize.js
new file mode 100644
index 0000000..8784d06
--- /dev/null
+++ b/node_modules/core-js/es/string/fontsize.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.string.fontsize');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('String', 'fontsize');
diff --git a/node_modules/core-js/es/string/from-code-point.js b/node_modules/core-js/es/string/from-code-point.js
new file mode 100644
index 0000000..93ba4ce
--- /dev/null
+++ b/node_modules/core-js/es/string/from-code-point.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.string.from-code-point');
+var path = require('../../internals/path');
+
+module.exports = path.String.fromCodePoint;
diff --git a/node_modules/core-js/es/string/includes.js b/node_modules/core-js/es/string/includes.js
new file mode 100644
index 0000000..0b6f480
--- /dev/null
+++ b/node_modules/core-js/es/string/includes.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.string.includes');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('String', 'includes');
diff --git a/node_modules/core-js/es/string/index.js b/node_modules/core-js/es/string/index.js
new file mode 100644
index 0000000..6529e2d
--- /dev/null
+++ b/node_modules/core-js/es/string/index.js
@@ -0,0 +1,42 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.regexp.exec');
+require('../../modules/es.string.from-code-point');
+require('../../modules/es.string.raw');
+require('../../modules/es.string.code-point-at');
+require('../../modules/es.string.at-alternative');
+require('../../modules/es.string.ends-with');
+require('../../modules/es.string.includes');
+require('../../modules/es.string.is-well-formed');
+require('../../modules/es.string.match');
+require('../../modules/es.string.match-all');
+require('../../modules/es.string.pad-end');
+require('../../modules/es.string.pad-start');
+require('../../modules/es.string.repeat');
+require('../../modules/es.string.replace');
+require('../../modules/es.string.replace-all');
+require('../../modules/es.string.search');
+require('../../modules/es.string.split');
+require('../../modules/es.string.starts-with');
+require('../../modules/es.string.substr');
+require('../../modules/es.string.to-well-formed');
+require('../../modules/es.string.trim');
+require('../../modules/es.string.trim-start');
+require('../../modules/es.string.trim-end');
+require('../../modules/es.string.iterator');
+require('../../modules/es.string.anchor');
+require('../../modules/es.string.big');
+require('../../modules/es.string.blink');
+require('../../modules/es.string.bold');
+require('../../modules/es.string.fixed');
+require('../../modules/es.string.fontcolor');
+require('../../modules/es.string.fontsize');
+require('../../modules/es.string.italics');
+require('../../modules/es.string.link');
+require('../../modules/es.string.small');
+require('../../modules/es.string.strike');
+require('../../modules/es.string.sub');
+require('../../modules/es.string.sup');
+var path = require('../../internals/path');
+
+module.exports = path.String;
diff --git a/node_modules/core-js/es/string/is-well-formed.js b/node_modules/core-js/es/string/is-well-formed.js
new file mode 100644
index 0000000..6504ed0
--- /dev/null
+++ b/node_modules/core-js/es/string/is-well-formed.js
@@ -0,0 +1,4 @@
+'use strict';
+require('../../modules/es.string.is-well-formed');
+
+module.exports = require('../../internals/entry-unbind')('String', 'isWellFormed');
diff --git a/node_modules/core-js/es/string/italics.js b/node_modules/core-js/es/string/italics.js
new file mode 100644
index 0000000..0d5b42c
--- /dev/null
+++ b/node_modules/core-js/es/string/italics.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.string.italics');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('String', 'italics');
diff --git a/node_modules/core-js/es/string/iterator.js b/node_modules/core-js/es/string/iterator.js
new file mode 100644
index 0000000..3b1e83b
--- /dev/null
+++ b/node_modules/core-js/es/string/iterator.js
@@ -0,0 +1,7 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.string.iterator');
+var uncurryThis = require('../../internals/function-uncurry-this');
+var Iterators = require('../../internals/iterators');
+
+module.exports = uncurryThis(Iterators.String);
diff --git a/node_modules/core-js/es/string/link.js b/node_modules/core-js/es/string/link.js
new file mode 100644
index 0000000..d40cc6d
--- /dev/null
+++ b/node_modules/core-js/es/string/link.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.string.link');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('String', 'link');
diff --git a/node_modules/core-js/es/string/match-all.js b/node_modules/core-js/es/string/match-all.js
new file mode 100644
index 0000000..d51c037
--- /dev/null
+++ b/node_modules/core-js/es/string/match-all.js
@@ -0,0 +1,7 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.regexp.exec');
+require('../../modules/es.string.match-all');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('String', 'matchAll');
diff --git a/node_modules/core-js/es/string/match.js b/node_modules/core-js/es/string/match.js
new file mode 100644
index 0000000..2aeded5
--- /dev/null
+++ b/node_modules/core-js/es/string/match.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.regexp.exec');
+require('../../modules/es.string.match');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('String', 'match');
diff --git a/node_modules/core-js/es/string/pad-end.js b/node_modules/core-js/es/string/pad-end.js
new file mode 100644
index 0000000..f631635
--- /dev/null
+++ b/node_modules/core-js/es/string/pad-end.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.string.pad-end');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('String', 'padEnd');
diff --git a/node_modules/core-js/es/string/pad-start.js b/node_modules/core-js/es/string/pad-start.js
new file mode 100644
index 0000000..e4e2e4d
--- /dev/null
+++ b/node_modules/core-js/es/string/pad-start.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.string.pad-start');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('String', 'padStart');
diff --git a/node_modules/core-js/es/string/raw.js b/node_modules/core-js/es/string/raw.js
new file mode 100644
index 0000000..3da9761
--- /dev/null
+++ b/node_modules/core-js/es/string/raw.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.string.raw');
+var path = require('../../internals/path');
+
+module.exports = path.String.raw;
diff --git a/node_modules/core-js/es/string/repeat.js b/node_modules/core-js/es/string/repeat.js
new file mode 100644
index 0000000..dd725d2
--- /dev/null
+++ b/node_modules/core-js/es/string/repeat.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.string.repeat');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('String', 'repeat');
diff --git a/node_modules/core-js/es/string/replace-all.js b/node_modules/core-js/es/string/replace-all.js
new file mode 100644
index 0000000..36ff09f
--- /dev/null
+++ b/node_modules/core-js/es/string/replace-all.js
@@ -0,0 +1,7 @@
+'use strict';
+require('../../modules/es.regexp.exec');
+require('../../modules/es.string.replace');
+require('../../modules/es.string.replace-all');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('String', 'replaceAll');
diff --git a/node_modules/core-js/es/string/replace.js b/node_modules/core-js/es/string/replace.js
new file mode 100644
index 0000000..724b811
--- /dev/null
+++ b/node_modules/core-js/es/string/replace.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.regexp.exec');
+require('../../modules/es.string.replace');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('String', 'replace');
diff --git a/node_modules/core-js/es/string/search.js b/node_modules/core-js/es/string/search.js
new file mode 100644
index 0000000..d85960c
--- /dev/null
+++ b/node_modules/core-js/es/string/search.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.regexp.exec');
+require('../../modules/es.string.search');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('String', 'search');
diff --git a/node_modules/core-js/es/string/small.js b/node_modules/core-js/es/string/small.js
new file mode 100644
index 0000000..1d5bd50
--- /dev/null
+++ b/node_modules/core-js/es/string/small.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.string.small');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('String', 'small');
diff --git a/node_modules/core-js/es/string/split.js b/node_modules/core-js/es/string/split.js
new file mode 100644
index 0000000..e449df0
--- /dev/null
+++ b/node_modules/core-js/es/string/split.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.regexp.exec');
+require('../../modules/es.string.split');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('String', 'split');
diff --git a/node_modules/core-js/es/string/starts-with.js b/node_modules/core-js/es/string/starts-with.js
new file mode 100644
index 0000000..ebf96ad
--- /dev/null
+++ b/node_modules/core-js/es/string/starts-with.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.string.starts-with');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('String', 'startsWith');
diff --git a/node_modules/core-js/es/string/strike.js b/node_modules/core-js/es/string/strike.js
new file mode 100644
index 0000000..0ea8a3a
--- /dev/null
+++ b/node_modules/core-js/es/string/strike.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.string.strike');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('String', 'strike');
diff --git a/node_modules/core-js/es/string/sub.js b/node_modules/core-js/es/string/sub.js
new file mode 100644
index 0000000..9ba0d45
--- /dev/null
+++ b/node_modules/core-js/es/string/sub.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.string.sub');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('String', 'sub');
diff --git a/node_modules/core-js/es/string/substr.js b/node_modules/core-js/es/string/substr.js
new file mode 100644
index 0000000..6159b9e
--- /dev/null
+++ b/node_modules/core-js/es/string/substr.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.string.substr');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('String', 'substr');
diff --git a/node_modules/core-js/es/string/sup.js b/node_modules/core-js/es/string/sup.js
new file mode 100644
index 0000000..fd0a477
--- /dev/null
+++ b/node_modules/core-js/es/string/sup.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.string.sup');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('String', 'sup');
diff --git a/node_modules/core-js/es/string/to-well-formed.js b/node_modules/core-js/es/string/to-well-formed.js
new file mode 100644
index 0000000..151870a
--- /dev/null
+++ b/node_modules/core-js/es/string/to-well-formed.js
@@ -0,0 +1,4 @@
+'use strict';
+require('../../modules/es.string.to-well-formed');
+
+module.exports = require('../../internals/entry-unbind')('String', 'toWellFormed');
diff --git a/node_modules/core-js/es/string/trim-end.js b/node_modules/core-js/es/string/trim-end.js
new file mode 100644
index 0000000..1ca5a97
--- /dev/null
+++ b/node_modules/core-js/es/string/trim-end.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.string.trim-end');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('String', 'trimRight');
diff --git a/node_modules/core-js/es/string/trim-left.js b/node_modules/core-js/es/string/trim-left.js
new file mode 100644
index 0000000..ea85dd9
--- /dev/null
+++ b/node_modules/core-js/es/string/trim-left.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.string.trim-start');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('String', 'trimLeft');
diff --git a/node_modules/core-js/es/string/trim-right.js b/node_modules/core-js/es/string/trim-right.js
new file mode 100644
index 0000000..1ca5a97
--- /dev/null
+++ b/node_modules/core-js/es/string/trim-right.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.string.trim-end');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('String', 'trimRight');
diff --git a/node_modules/core-js/es/string/trim-start.js b/node_modules/core-js/es/string/trim-start.js
new file mode 100644
index 0000000..ea85dd9
--- /dev/null
+++ b/node_modules/core-js/es/string/trim-start.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.string.trim-start');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('String', 'trimLeft');
diff --git a/node_modules/core-js/es/string/trim.js b/node_modules/core-js/es/string/trim.js
new file mode 100644
index 0000000..4ae27eb
--- /dev/null
+++ b/node_modules/core-js/es/string/trim.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.string.trim');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('String', 'trim');
diff --git a/node_modules/core-js/es/string/virtual/anchor.js b/node_modules/core-js/es/string/virtual/anchor.js
new file mode 100644
index 0000000..fc4dce9
--- /dev/null
+++ b/node_modules/core-js/es/string/virtual/anchor.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.string.anchor');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('String', 'anchor');
diff --git a/node_modules/core-js/es/string/virtual/at.js b/node_modules/core-js/es/string/virtual/at.js
new file mode 100644
index 0000000..bea638a
--- /dev/null
+++ b/node_modules/core-js/es/string/virtual/at.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.string.at-alternative');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('String', 'at');
diff --git a/node_modules/core-js/es/string/virtual/big.js b/node_modules/core-js/es/string/virtual/big.js
new file mode 100644
index 0000000..07d2c7c
--- /dev/null
+++ b/node_modules/core-js/es/string/virtual/big.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.string.big');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('String', 'big');
diff --git a/node_modules/core-js/es/string/virtual/blink.js b/node_modules/core-js/es/string/virtual/blink.js
new file mode 100644
index 0000000..dddf5b0
--- /dev/null
+++ b/node_modules/core-js/es/string/virtual/blink.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.string.blink');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('String', 'blink');
diff --git a/node_modules/core-js/es/string/virtual/bold.js b/node_modules/core-js/es/string/virtual/bold.js
new file mode 100644
index 0000000..7c74a78
--- /dev/null
+++ b/node_modules/core-js/es/string/virtual/bold.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.string.bold');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('String', 'bold');
diff --git a/node_modules/core-js/es/string/virtual/code-point-at.js b/node_modules/core-js/es/string/virtual/code-point-at.js
new file mode 100644
index 0000000..593ef4c
--- /dev/null
+++ b/node_modules/core-js/es/string/virtual/code-point-at.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.string.code-point-at');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('String', 'codePointAt');
diff --git a/node_modules/core-js/es/string/virtual/ends-with.js b/node_modules/core-js/es/string/virtual/ends-with.js
new file mode 100644
index 0000000..a45a986
--- /dev/null
+++ b/node_modules/core-js/es/string/virtual/ends-with.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.string.ends-with');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('String', 'endsWith');
diff --git a/node_modules/core-js/es/string/virtual/fixed.js b/node_modules/core-js/es/string/virtual/fixed.js
new file mode 100644
index 0000000..bbde9c3
--- /dev/null
+++ b/node_modules/core-js/es/string/virtual/fixed.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.string.fixed');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('String', 'fixed');
diff --git a/node_modules/core-js/es/string/virtual/fontcolor.js b/node_modules/core-js/es/string/virtual/fontcolor.js
new file mode 100644
index 0000000..d5f9568
--- /dev/null
+++ b/node_modules/core-js/es/string/virtual/fontcolor.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.string.fontcolor');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('String', 'fontcolor');
diff --git a/node_modules/core-js/es/string/virtual/fontsize.js b/node_modules/core-js/es/string/virtual/fontsize.js
new file mode 100644
index 0000000..8283920
--- /dev/null
+++ b/node_modules/core-js/es/string/virtual/fontsize.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.string.fontsize');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('String', 'fontsize');
diff --git a/node_modules/core-js/es/string/virtual/includes.js b/node_modules/core-js/es/string/virtual/includes.js
new file mode 100644
index 0000000..b75490a
--- /dev/null
+++ b/node_modules/core-js/es/string/virtual/includes.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.string.includes');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('String', 'includes');
diff --git a/node_modules/core-js/es/string/virtual/index.js b/node_modules/core-js/es/string/virtual/index.js
new file mode 100644
index 0000000..70199c9
--- /dev/null
+++ b/node_modules/core-js/es/string/virtual/index.js
@@ -0,0 +1,38 @@
+'use strict';
+require('../../../modules/es.object.to-string');
+require('../../../modules/es.regexp.exec');
+require('../../../modules/es.string.at-alternative');
+require('../../../modules/es.string.code-point-at');
+require('../../../modules/es.string.ends-with');
+require('../../../modules/es.string.includes');
+require('../../../modules/es.string.match');
+require('../../../modules/es.string.match-all');
+require('../../../modules/es.string.pad-end');
+require('../../../modules/es.string.pad-start');
+require('../../../modules/es.string.repeat');
+require('../../../modules/es.string.replace');
+require('../../../modules/es.string.replace-all');
+require('../../../modules/es.string.search');
+require('../../../modules/es.string.split');
+require('../../../modules/es.string.starts-with');
+require('../../../modules/es.string.substr');
+require('../../../modules/es.string.trim');
+require('../../../modules/es.string.trim-start');
+require('../../../modules/es.string.trim-end');
+require('../../../modules/es.string.iterator');
+require('../../../modules/es.string.anchor');
+require('../../../modules/es.string.big');
+require('../../../modules/es.string.blink');
+require('../../../modules/es.string.bold');
+require('../../../modules/es.string.fixed');
+require('../../../modules/es.string.fontcolor');
+require('../../../modules/es.string.fontsize');
+require('../../../modules/es.string.italics');
+require('../../../modules/es.string.link');
+require('../../../modules/es.string.small');
+require('../../../modules/es.string.strike');
+require('../../../modules/es.string.sub');
+require('../../../modules/es.string.sup');
+var entryVirtual = require('../../../internals/entry-virtual');
+
+module.exports = entryVirtual('String');
diff --git a/node_modules/core-js/es/string/virtual/is-well-formed.js b/node_modules/core-js/es/string/virtual/is-well-formed.js
new file mode 100644
index 0000000..620db5e
--- /dev/null
+++ b/node_modules/core-js/es/string/virtual/is-well-formed.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.string.is-well-formed');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('String', 'isWellFormed');
diff --git a/node_modules/core-js/es/string/virtual/italics.js b/node_modules/core-js/es/string/virtual/italics.js
new file mode 100644
index 0000000..59866c1
--- /dev/null
+++ b/node_modules/core-js/es/string/virtual/italics.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.string.italics');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('String', 'italics');
diff --git a/node_modules/core-js/es/string/virtual/iterator.js b/node_modules/core-js/es/string/virtual/iterator.js
new file mode 100644
index 0000000..613d81d
--- /dev/null
+++ b/node_modules/core-js/es/string/virtual/iterator.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../../modules/es.object.to-string');
+require('../../../modules/es.string.iterator');
+var Iterators = require('../../../internals/iterators');
+
+module.exports = Iterators.String;
diff --git a/node_modules/core-js/es/string/virtual/link.js b/node_modules/core-js/es/string/virtual/link.js
new file mode 100644
index 0000000..f3e9c31
--- /dev/null
+++ b/node_modules/core-js/es/string/virtual/link.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.string.link');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('String', 'link');
diff --git a/node_modules/core-js/es/string/virtual/match-all.js b/node_modules/core-js/es/string/virtual/match-all.js
new file mode 100644
index 0000000..ef1e92e
--- /dev/null
+++ b/node_modules/core-js/es/string/virtual/match-all.js
@@ -0,0 +1,7 @@
+'use strict';
+require('../../../modules/es.object.to-string');
+require('../../../modules/es.regexp.exec');
+require('../../../modules/es.string.match-all');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('String', 'matchAll');
diff --git a/node_modules/core-js/es/string/virtual/pad-end.js b/node_modules/core-js/es/string/virtual/pad-end.js
new file mode 100644
index 0000000..e76542b
--- /dev/null
+++ b/node_modules/core-js/es/string/virtual/pad-end.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.string.pad-end');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('String', 'padEnd');
diff --git a/node_modules/core-js/es/string/virtual/pad-start.js b/node_modules/core-js/es/string/virtual/pad-start.js
new file mode 100644
index 0000000..56aa70d
--- /dev/null
+++ b/node_modules/core-js/es/string/virtual/pad-start.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.string.pad-start');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('String', 'padStart');
diff --git a/node_modules/core-js/es/string/virtual/repeat.js b/node_modules/core-js/es/string/virtual/repeat.js
new file mode 100644
index 0000000..b8d857b
--- /dev/null
+++ b/node_modules/core-js/es/string/virtual/repeat.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.string.repeat');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('String', 'repeat');
diff --git a/node_modules/core-js/es/string/virtual/replace-all.js b/node_modules/core-js/es/string/virtual/replace-all.js
new file mode 100644
index 0000000..aeebb97
--- /dev/null
+++ b/node_modules/core-js/es/string/virtual/replace-all.js
@@ -0,0 +1,7 @@
+'use strict';
+require('../../../modules/es.regexp.exec');
+require('../../../modules/es.string.replace');
+require('../../../modules/es.string.replace-all');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('String', 'replaceAll');
diff --git a/node_modules/core-js/es/string/virtual/small.js b/node_modules/core-js/es/string/virtual/small.js
new file mode 100644
index 0000000..401b13a
--- /dev/null
+++ b/node_modules/core-js/es/string/virtual/small.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.string.small');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('String', 'small');
diff --git a/node_modules/core-js/es/string/virtual/starts-with.js b/node_modules/core-js/es/string/virtual/starts-with.js
new file mode 100644
index 0000000..d4dbe86
--- /dev/null
+++ b/node_modules/core-js/es/string/virtual/starts-with.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.string.starts-with');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('String', 'startsWith');
diff --git a/node_modules/core-js/es/string/virtual/strike.js b/node_modules/core-js/es/string/virtual/strike.js
new file mode 100644
index 0000000..a0b769c
--- /dev/null
+++ b/node_modules/core-js/es/string/virtual/strike.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.string.strike');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('String', 'strike');
diff --git a/node_modules/core-js/es/string/virtual/sub.js b/node_modules/core-js/es/string/virtual/sub.js
new file mode 100644
index 0000000..c710755
--- /dev/null
+++ b/node_modules/core-js/es/string/virtual/sub.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.string.sub');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('String', 'sub');
diff --git a/node_modules/core-js/es/string/virtual/substr.js b/node_modules/core-js/es/string/virtual/substr.js
new file mode 100644
index 0000000..61a2217
--- /dev/null
+++ b/node_modules/core-js/es/string/virtual/substr.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.string.substr');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('String', 'substr');
diff --git a/node_modules/core-js/es/string/virtual/sup.js b/node_modules/core-js/es/string/virtual/sup.js
new file mode 100644
index 0000000..0707bc0
--- /dev/null
+++ b/node_modules/core-js/es/string/virtual/sup.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.string.sup');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('String', 'sup');
diff --git a/node_modules/core-js/es/string/virtual/to-well-formed.js b/node_modules/core-js/es/string/virtual/to-well-formed.js
new file mode 100644
index 0000000..87d6275
--- /dev/null
+++ b/node_modules/core-js/es/string/virtual/to-well-formed.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.string.to-well-formed');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('String', 'toWellFormed');
diff --git a/node_modules/core-js/es/string/virtual/trim-end.js b/node_modules/core-js/es/string/virtual/trim-end.js
new file mode 100644
index 0000000..bd013aa
--- /dev/null
+++ b/node_modules/core-js/es/string/virtual/trim-end.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.string.trim-end');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('String', 'trimRight');
diff --git a/node_modules/core-js/es/string/virtual/trim-left.js b/node_modules/core-js/es/string/virtual/trim-left.js
new file mode 100644
index 0000000..3987da8
--- /dev/null
+++ b/node_modules/core-js/es/string/virtual/trim-left.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.string.trim-start');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('String', 'trimLeft');
diff --git a/node_modules/core-js/es/string/virtual/trim-right.js b/node_modules/core-js/es/string/virtual/trim-right.js
new file mode 100644
index 0000000..bd013aa
--- /dev/null
+++ b/node_modules/core-js/es/string/virtual/trim-right.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.string.trim-end');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('String', 'trimRight');
diff --git a/node_modules/core-js/es/string/virtual/trim-start.js b/node_modules/core-js/es/string/virtual/trim-start.js
new file mode 100644
index 0000000..3987da8
--- /dev/null
+++ b/node_modules/core-js/es/string/virtual/trim-start.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.string.trim-start');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('String', 'trimLeft');
diff --git a/node_modules/core-js/es/string/virtual/trim.js b/node_modules/core-js/es/string/virtual/trim.js
new file mode 100644
index 0000000..02e9b22
--- /dev/null
+++ b/node_modules/core-js/es/string/virtual/trim.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/es.string.trim');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('String', 'trim');
diff --git a/node_modules/core-js/es/symbol/async-iterator.js b/node_modules/core-js/es/symbol/async-iterator.js
new file mode 100644
index 0000000..64b80ae
--- /dev/null
+++ b/node_modules/core-js/es/symbol/async-iterator.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.symbol.async-iterator');
+var WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');
+
+module.exports = WrappedWellKnownSymbolModule.f('asyncIterator');
diff --git a/node_modules/core-js/es/symbol/description.js b/node_modules/core-js/es/symbol/description.js
new file mode 100644
index 0000000..01ce17a
--- /dev/null
+++ b/node_modules/core-js/es/symbol/description.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.symbol.description');
diff --git a/node_modules/core-js/es/symbol/for.js b/node_modules/core-js/es/symbol/for.js
new file mode 100644
index 0000000..9c0a7d0
--- /dev/null
+++ b/node_modules/core-js/es/symbol/for.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.symbol');
+var path = require('../../internals/path');
+
+module.exports = path.Symbol['for'];
diff --git a/node_modules/core-js/es/symbol/has-instance.js b/node_modules/core-js/es/symbol/has-instance.js
new file mode 100644
index 0000000..a588394
--- /dev/null
+++ b/node_modules/core-js/es/symbol/has-instance.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.symbol.has-instance');
+require('../../modules/es.function.has-instance');
+var WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');
+
+module.exports = WrappedWellKnownSymbolModule.f('hasInstance');
diff --git a/node_modules/core-js/es/symbol/index.js b/node_modules/core-js/es/symbol/index.js
new file mode 100644
index 0000000..80226ab
--- /dev/null
+++ b/node_modules/core-js/es/symbol/index.js
@@ -0,0 +1,24 @@
+'use strict';
+require('../../modules/es.array.concat');
+require('../../modules/es.object.to-string');
+require('../../modules/es.symbol');
+require('../../modules/es.symbol.async-iterator');
+require('../../modules/es.symbol.description');
+require('../../modules/es.symbol.has-instance');
+require('../../modules/es.symbol.is-concat-spreadable');
+require('../../modules/es.symbol.iterator');
+require('../../modules/es.symbol.match');
+require('../../modules/es.symbol.match-all');
+require('../../modules/es.symbol.replace');
+require('../../modules/es.symbol.search');
+require('../../modules/es.symbol.species');
+require('../../modules/es.symbol.split');
+require('../../modules/es.symbol.to-primitive');
+require('../../modules/es.symbol.to-string-tag');
+require('../../modules/es.symbol.unscopables');
+require('../../modules/es.json.to-string-tag');
+require('../../modules/es.math.to-string-tag');
+require('../../modules/es.reflect.to-string-tag');
+var path = require('../../internals/path');
+
+module.exports = path.Symbol;
diff --git a/node_modules/core-js/es/symbol/is-concat-spreadable.js b/node_modules/core-js/es/symbol/is-concat-spreadable.js
new file mode 100644
index 0000000..dbf9a5b
--- /dev/null
+++ b/node_modules/core-js/es/symbol/is-concat-spreadable.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.array.concat');
+require('../../modules/es.symbol.is-concat-spreadable');
+var WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');
+
+module.exports = WrappedWellKnownSymbolModule.f('isConcatSpreadable');
diff --git a/node_modules/core-js/es/symbol/iterator.js b/node_modules/core-js/es/symbol/iterator.js
new file mode 100644
index 0000000..dfddcf8
--- /dev/null
+++ b/node_modules/core-js/es/symbol/iterator.js
@@ -0,0 +1,8 @@
+'use strict';
+require('../../modules/es.array.iterator');
+require('../../modules/es.object.to-string');
+require('../../modules/es.string.iterator');
+require('../../modules/es.symbol.iterator');
+var WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');
+
+module.exports = WrappedWellKnownSymbolModule.f('iterator');
diff --git a/node_modules/core-js/es/symbol/key-for.js b/node_modules/core-js/es/symbol/key-for.js
new file mode 100644
index 0000000..d04d3d0
--- /dev/null
+++ b/node_modules/core-js/es/symbol/key-for.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.symbol');
+var path = require('../../internals/path');
+
+module.exports = path.Symbol.keyFor;
diff --git a/node_modules/core-js/es/symbol/match-all.js b/node_modules/core-js/es/symbol/match-all.js
new file mode 100644
index 0000000..295d0db
--- /dev/null
+++ b/node_modules/core-js/es/symbol/match-all.js
@@ -0,0 +1,8 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.regexp.exec');
+require('../../modules/es.symbol.match-all');
+require('../../modules/es.string.match-all');
+var WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');
+
+module.exports = WrappedWellKnownSymbolModule.f('matchAll');
diff --git a/node_modules/core-js/es/symbol/match.js b/node_modules/core-js/es/symbol/match.js
new file mode 100644
index 0000000..7047f3d
--- /dev/null
+++ b/node_modules/core-js/es/symbol/match.js
@@ -0,0 +1,7 @@
+'use strict';
+require('../../modules/es.regexp.exec');
+require('../../modules/es.symbol.match');
+require('../../modules/es.string.match');
+var WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');
+
+module.exports = WrappedWellKnownSymbolModule.f('match');
diff --git a/node_modules/core-js/es/symbol/replace.js b/node_modules/core-js/es/symbol/replace.js
new file mode 100644
index 0000000..8ebfd57
--- /dev/null
+++ b/node_modules/core-js/es/symbol/replace.js
@@ -0,0 +1,7 @@
+'use strict';
+require('../../modules/es.regexp.exec');
+require('../../modules/es.symbol.replace');
+require('../../modules/es.string.replace');
+var WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');
+
+module.exports = WrappedWellKnownSymbolModule.f('replace');
diff --git a/node_modules/core-js/es/symbol/search.js b/node_modules/core-js/es/symbol/search.js
new file mode 100644
index 0000000..2510cd6
--- /dev/null
+++ b/node_modules/core-js/es/symbol/search.js
@@ -0,0 +1,7 @@
+'use strict';
+require('../../modules/es.regexp.exec');
+require('../../modules/es.symbol.search');
+require('../../modules/es.string.search');
+var WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');
+
+module.exports = WrappedWellKnownSymbolModule.f('search');
diff --git a/node_modules/core-js/es/symbol/species.js b/node_modules/core-js/es/symbol/species.js
new file mode 100644
index 0000000..12f064a
--- /dev/null
+++ b/node_modules/core-js/es/symbol/species.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.symbol.species');
+var WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');
+
+module.exports = WrappedWellKnownSymbolModule.f('species');
diff --git a/node_modules/core-js/es/symbol/split.js b/node_modules/core-js/es/symbol/split.js
new file mode 100644
index 0000000..da2c04b
--- /dev/null
+++ b/node_modules/core-js/es/symbol/split.js
@@ -0,0 +1,7 @@
+'use strict';
+require('../../modules/es.regexp.exec');
+require('../../modules/es.symbol.split');
+require('../../modules/es.string.split');
+var WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');
+
+module.exports = WrappedWellKnownSymbolModule.f('split');
diff --git a/node_modules/core-js/es/symbol/to-primitive.js b/node_modules/core-js/es/symbol/to-primitive.js
new file mode 100644
index 0000000..c5fde8d
--- /dev/null
+++ b/node_modules/core-js/es/symbol/to-primitive.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.date.to-primitive');
+require('../../modules/es.symbol.to-primitive');
+var WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');
+
+module.exports = WrappedWellKnownSymbolModule.f('toPrimitive');
diff --git a/node_modules/core-js/es/symbol/to-string-tag.js b/node_modules/core-js/es/symbol/to-string-tag.js
new file mode 100644
index 0000000..1bf1284
--- /dev/null
+++ b/node_modules/core-js/es/symbol/to-string-tag.js
@@ -0,0 +1,9 @@
+'use strict';
+require('../../modules/es.json.to-string-tag');
+require('../../modules/es.math.to-string-tag');
+require('../../modules/es.object.to-string');
+require('../../modules/es.reflect.to-string-tag');
+require('../../modules/es.symbol.to-string-tag');
+var WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');
+
+module.exports = WrappedWellKnownSymbolModule.f('toStringTag');
diff --git a/node_modules/core-js/es/symbol/unscopables.js b/node_modules/core-js/es/symbol/unscopables.js
new file mode 100644
index 0000000..5d7799c
--- /dev/null
+++ b/node_modules/core-js/es/symbol/unscopables.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.symbol.unscopables');
+var WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');
+
+module.exports = WrappedWellKnownSymbolModule.f('unscopables');
diff --git a/node_modules/core-js/es/typed-array/at.js b/node_modules/core-js/es/typed-array/at.js
new file mode 100644
index 0000000..17ed453
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/at.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.typed-array.at');
diff --git a/node_modules/core-js/es/typed-array/copy-within.js b/node_modules/core-js/es/typed-array/copy-within.js
new file mode 100644
index 0000000..1381bac
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/copy-within.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.typed-array.copy-within');
diff --git a/node_modules/core-js/es/typed-array/entries.js b/node_modules/core-js/es/typed-array/entries.js
new file mode 100644
index 0000000..918a9b3
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/entries.js
@@ -0,0 +1,3 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.typed-array.iterator');
diff --git a/node_modules/core-js/es/typed-array/every.js b/node_modules/core-js/es/typed-array/every.js
new file mode 100644
index 0000000..530fbbb
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/every.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.typed-array.every');
diff --git a/node_modules/core-js/es/typed-array/fill.js b/node_modules/core-js/es/typed-array/fill.js
new file mode 100644
index 0000000..0f13bf5
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/fill.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.typed-array.fill');
diff --git a/node_modules/core-js/es/typed-array/filter.js b/node_modules/core-js/es/typed-array/filter.js
new file mode 100644
index 0000000..40bbc51
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/filter.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.typed-array.filter');
diff --git a/node_modules/core-js/es/typed-array/find-index.js b/node_modules/core-js/es/typed-array/find-index.js
new file mode 100644
index 0000000..e5e3a33
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/find-index.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.typed-array.find-index');
diff --git a/node_modules/core-js/es/typed-array/find-last-index.js b/node_modules/core-js/es/typed-array/find-last-index.js
new file mode 100644
index 0000000..e2c58bf
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/find-last-index.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.typed-array.find-last-index');
diff --git a/node_modules/core-js/es/typed-array/find-last.js b/node_modules/core-js/es/typed-array/find-last.js
new file mode 100644
index 0000000..95e4117
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/find-last.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.typed-array.find-last');
diff --git a/node_modules/core-js/es/typed-array/find.js b/node_modules/core-js/es/typed-array/find.js
new file mode 100644
index 0000000..1d89e09
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/find.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.typed-array.find');
diff --git a/node_modules/core-js/es/typed-array/float32-array.js b/node_modules/core-js/es/typed-array/float32-array.js
new file mode 100644
index 0000000..9f3e4bb
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/float32-array.js
@@ -0,0 +1,8 @@
+'use strict';
+require('../../modules/es.array-buffer.constructor');
+require('../../modules/es.array-buffer.slice');
+require('../../modules/es.typed-array.float32-array');
+require('./methods');
+var global = require('../../internals/global-this');
+
+module.exports = global.Float32Array;
diff --git a/node_modules/core-js/es/typed-array/float64-array.js b/node_modules/core-js/es/typed-array/float64-array.js
new file mode 100644
index 0000000..5506d7b
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/float64-array.js
@@ -0,0 +1,8 @@
+'use strict';
+require('../../modules/es.array-buffer.constructor');
+require('../../modules/es.array-buffer.slice');
+require('../../modules/es.typed-array.float64-array');
+require('./methods');
+var global = require('../../internals/global-this');
+
+module.exports = global.Float64Array;
diff --git a/node_modules/core-js/es/typed-array/for-each.js b/node_modules/core-js/es/typed-array/for-each.js
new file mode 100644
index 0000000..9545224
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/for-each.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.typed-array.for-each');
diff --git a/node_modules/core-js/es/typed-array/from.js b/node_modules/core-js/es/typed-array/from.js
new file mode 100644
index 0000000..b38f31c
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/from.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.typed-array.from');
diff --git a/node_modules/core-js/es/typed-array/includes.js b/node_modules/core-js/es/typed-array/includes.js
new file mode 100644
index 0000000..0c825a4
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/includes.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.typed-array.includes');
diff --git a/node_modules/core-js/es/typed-array/index-of.js b/node_modules/core-js/es/typed-array/index-of.js
new file mode 100644
index 0000000..5e78bf0
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/index-of.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.typed-array.index-of');
diff --git a/node_modules/core-js/es/typed-array/index.js b/node_modules/core-js/es/typed-array/index.js
new file mode 100644
index 0000000..9e20b36
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/index.js
@@ -0,0 +1,13 @@
+'use strict';
+require('../../modules/es.typed-array.int8-array');
+require('../../modules/es.typed-array.uint8-array');
+require('../../modules/es.typed-array.uint8-clamped-array');
+require('../../modules/es.typed-array.int16-array');
+require('../../modules/es.typed-array.uint16-array');
+require('../../modules/es.typed-array.int32-array');
+require('../../modules/es.typed-array.uint32-array');
+require('../../modules/es.typed-array.float32-array');
+require('../../modules/es.typed-array.float64-array');
+require('./methods');
+
+module.exports = require('../../internals/global-this');
diff --git a/node_modules/core-js/es/typed-array/int16-array.js b/node_modules/core-js/es/typed-array/int16-array.js
new file mode 100644
index 0000000..5ba8637
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/int16-array.js
@@ -0,0 +1,8 @@
+'use strict';
+require('../../modules/es.array-buffer.constructor');
+require('../../modules/es.array-buffer.slice');
+require('../../modules/es.typed-array.int16-array');
+require('./methods');
+var global = require('../../internals/global-this');
+
+module.exports = global.Int16Array;
diff --git a/node_modules/core-js/es/typed-array/int32-array.js b/node_modules/core-js/es/typed-array/int32-array.js
new file mode 100644
index 0000000..24bf169
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/int32-array.js
@@ -0,0 +1,8 @@
+'use strict';
+require('../../modules/es.array-buffer.constructor');
+require('../../modules/es.array-buffer.slice');
+require('../../modules/es.typed-array.int32-array');
+require('./methods');
+var global = require('../../internals/global-this');
+
+module.exports = global.Int32Array;
diff --git a/node_modules/core-js/es/typed-array/int8-array.js b/node_modules/core-js/es/typed-array/int8-array.js
new file mode 100644
index 0000000..3796320
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/int8-array.js
@@ -0,0 +1,8 @@
+'use strict';
+require('../../modules/es.array-buffer.constructor');
+require('../../modules/es.array-buffer.slice');
+require('../../modules/es.typed-array.int8-array');
+require('./methods');
+var global = require('../../internals/global-this');
+
+module.exports = global.Int8Array;
diff --git a/node_modules/core-js/es/typed-array/iterator.js b/node_modules/core-js/es/typed-array/iterator.js
new file mode 100644
index 0000000..918a9b3
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/iterator.js
@@ -0,0 +1,3 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.typed-array.iterator');
diff --git a/node_modules/core-js/es/typed-array/join.js b/node_modules/core-js/es/typed-array/join.js
new file mode 100644
index 0000000..70465b8
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/join.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.typed-array.join');
diff --git a/node_modules/core-js/es/typed-array/keys.js b/node_modules/core-js/es/typed-array/keys.js
new file mode 100644
index 0000000..918a9b3
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/keys.js
@@ -0,0 +1,3 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.typed-array.iterator');
diff --git a/node_modules/core-js/es/typed-array/last-index-of.js b/node_modules/core-js/es/typed-array/last-index-of.js
new file mode 100644
index 0000000..4babd1e
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/last-index-of.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.typed-array.last-index-of');
diff --git a/node_modules/core-js/es/typed-array/map.js b/node_modules/core-js/es/typed-array/map.js
new file mode 100644
index 0000000..059366c
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/map.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.typed-array.map');
diff --git a/node_modules/core-js/es/typed-array/methods.js b/node_modules/core-js/es/typed-array/methods.js
new file mode 100644
index 0000000..22b5d7c
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/methods.js
@@ -0,0 +1,34 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.string.iterator');
+require('../../modules/es.typed-array.from');
+require('../../modules/es.typed-array.of');
+require('../../modules/es.typed-array.at');
+require('../../modules/es.typed-array.copy-within');
+require('../../modules/es.typed-array.every');
+require('../../modules/es.typed-array.fill');
+require('../../modules/es.typed-array.filter');
+require('../../modules/es.typed-array.find');
+require('../../modules/es.typed-array.find-index');
+require('../../modules/es.typed-array.find-last');
+require('../../modules/es.typed-array.find-last-index');
+require('../../modules/es.typed-array.for-each');
+require('../../modules/es.typed-array.includes');
+require('../../modules/es.typed-array.index-of');
+require('../../modules/es.typed-array.join');
+require('../../modules/es.typed-array.last-index-of');
+require('../../modules/es.typed-array.map');
+require('../../modules/es.typed-array.reduce');
+require('../../modules/es.typed-array.reduce-right');
+require('../../modules/es.typed-array.reverse');
+require('../../modules/es.typed-array.set');
+require('../../modules/es.typed-array.slice');
+require('../../modules/es.typed-array.some');
+require('../../modules/es.typed-array.sort');
+require('../../modules/es.typed-array.subarray');
+require('../../modules/es.typed-array.to-locale-string');
+require('../../modules/es.typed-array.to-string');
+require('../../modules/es.typed-array.to-reversed');
+require('../../modules/es.typed-array.to-sorted');
+require('../../modules/es.typed-array.with');
+require('../../modules/es.typed-array.iterator');
diff --git a/node_modules/core-js/es/typed-array/of.js b/node_modules/core-js/es/typed-array/of.js
new file mode 100644
index 0000000..dc572fb
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/of.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.typed-array.of');
diff --git a/node_modules/core-js/es/typed-array/reduce-right.js b/node_modules/core-js/es/typed-array/reduce-right.js
new file mode 100644
index 0000000..9acb3e7
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/reduce-right.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.typed-array.reduce-right');
diff --git a/node_modules/core-js/es/typed-array/reduce.js b/node_modules/core-js/es/typed-array/reduce.js
new file mode 100644
index 0000000..59b3f78
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/reduce.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.typed-array.reduce');
diff --git a/node_modules/core-js/es/typed-array/reverse.js b/node_modules/core-js/es/typed-array/reverse.js
new file mode 100644
index 0000000..00d8399
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/reverse.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.typed-array.reverse');
diff --git a/node_modules/core-js/es/typed-array/set.js b/node_modules/core-js/es/typed-array/set.js
new file mode 100644
index 0000000..3394aae
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/set.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.typed-array.set');
diff --git a/node_modules/core-js/es/typed-array/slice.js b/node_modules/core-js/es/typed-array/slice.js
new file mode 100644
index 0000000..5b074a1
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/slice.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.typed-array.slice');
diff --git a/node_modules/core-js/es/typed-array/some.js b/node_modules/core-js/es/typed-array/some.js
new file mode 100644
index 0000000..bfc4f4f
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/some.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.typed-array.some');
diff --git a/node_modules/core-js/es/typed-array/sort.js b/node_modules/core-js/es/typed-array/sort.js
new file mode 100644
index 0000000..a3cf1c8
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/sort.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.typed-array.sort');
diff --git a/node_modules/core-js/es/typed-array/subarray.js b/node_modules/core-js/es/typed-array/subarray.js
new file mode 100644
index 0000000..5314642
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/subarray.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.typed-array.subarray');
diff --git a/node_modules/core-js/es/typed-array/to-locale-string.js b/node_modules/core-js/es/typed-array/to-locale-string.js
new file mode 100644
index 0000000..aa77e74
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/to-locale-string.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.typed-array.to-locale-string');
diff --git a/node_modules/core-js/es/typed-array/to-reversed.js b/node_modules/core-js/es/typed-array/to-reversed.js
new file mode 100644
index 0000000..2bd631a
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/to-reversed.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.typed-array.to-reversed');
diff --git a/node_modules/core-js/es/typed-array/to-sorted.js b/node_modules/core-js/es/typed-array/to-sorted.js
new file mode 100644
index 0000000..9ab0f2b
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/to-sorted.js
@@ -0,0 +1,3 @@
+'use strict';
+require('../../modules/es.typed-array.sort');
+require('../../modules/es.typed-array.to-sorted');
diff --git a/node_modules/core-js/es/typed-array/to-string.js b/node_modules/core-js/es/typed-array/to-string.js
new file mode 100644
index 0000000..86142ad
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/to-string.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.typed-array.to-string');
diff --git a/node_modules/core-js/es/typed-array/uint16-array.js b/node_modules/core-js/es/typed-array/uint16-array.js
new file mode 100644
index 0000000..08ebcad
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/uint16-array.js
@@ -0,0 +1,8 @@
+'use strict';
+require('../../modules/es.array-buffer.constructor');
+require('../../modules/es.array-buffer.slice');
+require('../../modules/es.typed-array.uint16-array');
+require('./methods');
+var global = require('../../internals/global-this');
+
+module.exports = global.Uint16Array;
diff --git a/node_modules/core-js/es/typed-array/uint32-array.js b/node_modules/core-js/es/typed-array/uint32-array.js
new file mode 100644
index 0000000..04cd382
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/uint32-array.js
@@ -0,0 +1,8 @@
+'use strict';
+require('../../modules/es.array-buffer.constructor');
+require('../../modules/es.array-buffer.slice');
+require('../../modules/es.typed-array.uint32-array');
+require('./methods');
+var global = require('../../internals/global-this');
+
+module.exports = global.Uint32Array;
diff --git a/node_modules/core-js/es/typed-array/uint8-array.js b/node_modules/core-js/es/typed-array/uint8-array.js
new file mode 100644
index 0000000..531c1f3
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/uint8-array.js
@@ -0,0 +1,8 @@
+'use strict';
+require('../../modules/es.array-buffer.constructor');
+require('../../modules/es.array-buffer.slice');
+require('../../modules/es.typed-array.uint8-array');
+require('./methods');
+var global = require('../../internals/global-this');
+
+module.exports = global.Uint8Array;
diff --git a/node_modules/core-js/es/typed-array/uint8-clamped-array.js b/node_modules/core-js/es/typed-array/uint8-clamped-array.js
new file mode 100644
index 0000000..2081308
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/uint8-clamped-array.js
@@ -0,0 +1,8 @@
+'use strict';
+require('../../modules/es.array-buffer.constructor');
+require('../../modules/es.array-buffer.slice');
+require('../../modules/es.typed-array.uint8-clamped-array');
+require('./methods');
+var global = require('../../internals/global-this');
+
+module.exports = global.Uint8ClampedArray;
diff --git a/node_modules/core-js/es/typed-array/values.js b/node_modules/core-js/es/typed-array/values.js
new file mode 100644
index 0000000..918a9b3
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/values.js
@@ -0,0 +1,3 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.typed-array.iterator');
diff --git a/node_modules/core-js/es/typed-array/with.js b/node_modules/core-js/es/typed-array/with.js
new file mode 100644
index 0000000..25d0047
--- /dev/null
+++ b/node_modules/core-js/es/typed-array/with.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.typed-array.with');
diff --git a/node_modules/core-js/es/unescape.js b/node_modules/core-js/es/unescape.js
new file mode 100644
index 0000000..9482945
--- /dev/null
+++ b/node_modules/core-js/es/unescape.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../modules/es.unescape');
+var path = require('../internals/path');
+
+module.exports = path.unescape;
diff --git a/node_modules/core-js/es/weak-map/index.js b/node_modules/core-js/es/weak-map/index.js
new file mode 100644
index 0000000..591e5b8
--- /dev/null
+++ b/node_modules/core-js/es/weak-map/index.js
@@ -0,0 +1,7 @@
+'use strict';
+require('../../modules/es.array.iterator');
+require('../../modules/es.object.to-string');
+require('../../modules/es.weak-map');
+var path = require('../../internals/path');
+
+module.exports = path.WeakMap;
diff --git a/node_modules/core-js/es/weak-set/index.js b/node_modules/core-js/es/weak-set/index.js
new file mode 100644
index 0000000..39079e3
--- /dev/null
+++ b/node_modules/core-js/es/weak-set/index.js
@@ -0,0 +1,7 @@
+'use strict';
+require('../../modules/es.array.iterator');
+require('../../modules/es.object.to-string');
+require('../../modules/es.weak-set');
+var path = require('../../internals/path');
+
+module.exports = path.WeakSet;
diff --git a/node_modules/core-js/features/aggregate-error.js b/node_modules/core-js/features/aggregate-error.js
new file mode 100644
index 0000000..dc651f8
--- /dev/null
+++ b/node_modules/core-js/features/aggregate-error.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../full/aggregate-error');
diff --git a/node_modules/core-js/features/array-buffer/constructor.js b/node_modules/core-js/features/array-buffer/constructor.js
new file mode 100644
index 0000000..5a04836
--- /dev/null
+++ b/node_modules/core-js/features/array-buffer/constructor.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array-buffer/constructor');
diff --git a/node_modules/core-js/features/array-buffer/detached.js b/node_modules/core-js/features/array-buffer/detached.js
new file mode 100644
index 0000000..9f086b3
--- /dev/null
+++ b/node_modules/core-js/features/array-buffer/detached.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array-buffer/detached');
diff --git a/node_modules/core-js/features/array-buffer/index.js b/node_modules/core-js/features/array-buffer/index.js
new file mode 100644
index 0000000..c742210
--- /dev/null
+++ b/node_modules/core-js/features/array-buffer/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array-buffer');
diff --git a/node_modules/core-js/features/array-buffer/is-view.js b/node_modules/core-js/features/array-buffer/is-view.js
new file mode 100644
index 0000000..32ac354
--- /dev/null
+++ b/node_modules/core-js/features/array-buffer/is-view.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array-buffer/is-view');
diff --git a/node_modules/core-js/features/array-buffer/slice.js b/node_modules/core-js/features/array-buffer/slice.js
new file mode 100644
index 0000000..dc4551f
--- /dev/null
+++ b/node_modules/core-js/features/array-buffer/slice.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array-buffer/slice');
diff --git a/node_modules/core-js/features/array-buffer/transfer-to-fixed-length.js b/node_modules/core-js/features/array-buffer/transfer-to-fixed-length.js
new file mode 100644
index 0000000..0820c7b
--- /dev/null
+++ b/node_modules/core-js/features/array-buffer/transfer-to-fixed-length.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array-buffer/transfer-to-fixed-length');
diff --git a/node_modules/core-js/features/array-buffer/transfer.js b/node_modules/core-js/features/array-buffer/transfer.js
new file mode 100644
index 0000000..f34385e
--- /dev/null
+++ b/node_modules/core-js/features/array-buffer/transfer.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array-buffer/transfer');
diff --git a/node_modules/core-js/features/array/at.js b/node_modules/core-js/features/array/at.js
new file mode 100644
index 0000000..28ad63a
--- /dev/null
+++ b/node_modules/core-js/features/array/at.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/at');
diff --git a/node_modules/core-js/features/array/concat.js b/node_modules/core-js/features/array/concat.js
new file mode 100644
index 0000000..a4d9301
--- /dev/null
+++ b/node_modules/core-js/features/array/concat.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/concat');
diff --git a/node_modules/core-js/features/array/copy-within.js b/node_modules/core-js/features/array/copy-within.js
new file mode 100644
index 0000000..22359da
--- /dev/null
+++ b/node_modules/core-js/features/array/copy-within.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/copy-within');
diff --git a/node_modules/core-js/features/array/entries.js b/node_modules/core-js/features/array/entries.js
new file mode 100644
index 0000000..b7e134a
--- /dev/null
+++ b/node_modules/core-js/features/array/entries.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/entries');
diff --git a/node_modules/core-js/features/array/every.js b/node_modules/core-js/features/array/every.js
new file mode 100644
index 0000000..5a6748d
--- /dev/null
+++ b/node_modules/core-js/features/array/every.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/every');
diff --git a/node_modules/core-js/features/array/fill.js b/node_modules/core-js/features/array/fill.js
new file mode 100644
index 0000000..e4e0278
--- /dev/null
+++ b/node_modules/core-js/features/array/fill.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/fill');
diff --git a/node_modules/core-js/features/array/filter-out.js b/node_modules/core-js/features/array/filter-out.js
new file mode 100644
index 0000000..3a82aff
--- /dev/null
+++ b/node_modules/core-js/features/array/filter-out.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/filter-out');
diff --git a/node_modules/core-js/features/array/filter-reject.js b/node_modules/core-js/features/array/filter-reject.js
new file mode 100644
index 0000000..497c19a
--- /dev/null
+++ b/node_modules/core-js/features/array/filter-reject.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/filter-reject');
diff --git a/node_modules/core-js/features/array/filter.js b/node_modules/core-js/features/array/filter.js
new file mode 100644
index 0000000..79fb0b9
--- /dev/null
+++ b/node_modules/core-js/features/array/filter.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/filter');
diff --git a/node_modules/core-js/features/array/find-index.js b/node_modules/core-js/features/array/find-index.js
new file mode 100644
index 0000000..119f698
--- /dev/null
+++ b/node_modules/core-js/features/array/find-index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/find-index');
diff --git a/node_modules/core-js/features/array/find-last-index.js b/node_modules/core-js/features/array/find-last-index.js
new file mode 100644
index 0000000..0a760db
--- /dev/null
+++ b/node_modules/core-js/features/array/find-last-index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/find-last-index');
diff --git a/node_modules/core-js/features/array/find-last.js b/node_modules/core-js/features/array/find-last.js
new file mode 100644
index 0000000..49f9d2f
--- /dev/null
+++ b/node_modules/core-js/features/array/find-last.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/find-last');
diff --git a/node_modules/core-js/features/array/find.js b/node_modules/core-js/features/array/find.js
new file mode 100644
index 0000000..eac1147
--- /dev/null
+++ b/node_modules/core-js/features/array/find.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/find');
diff --git a/node_modules/core-js/features/array/flat-map.js b/node_modules/core-js/features/array/flat-map.js
new file mode 100644
index 0000000..db4a7d7
--- /dev/null
+++ b/node_modules/core-js/features/array/flat-map.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/flat-map');
diff --git a/node_modules/core-js/features/array/flat.js b/node_modules/core-js/features/array/flat.js
new file mode 100644
index 0000000..45797e0
--- /dev/null
+++ b/node_modules/core-js/features/array/flat.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/flat');
diff --git a/node_modules/core-js/features/array/for-each.js b/node_modules/core-js/features/array/for-each.js
new file mode 100644
index 0000000..b823be5
--- /dev/null
+++ b/node_modules/core-js/features/array/for-each.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/for-each');
diff --git a/node_modules/core-js/features/array/from-async.js b/node_modules/core-js/features/array/from-async.js
new file mode 100644
index 0000000..63c1931
--- /dev/null
+++ b/node_modules/core-js/features/array/from-async.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/from-async');
diff --git a/node_modules/core-js/features/array/from.js b/node_modules/core-js/features/array/from.js
new file mode 100644
index 0000000..752da11
--- /dev/null
+++ b/node_modules/core-js/features/array/from.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/from');
diff --git a/node_modules/core-js/features/array/group-by-to-map.js b/node_modules/core-js/features/array/group-by-to-map.js
new file mode 100644
index 0000000..559d458
--- /dev/null
+++ b/node_modules/core-js/features/array/group-by-to-map.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/group-by-to-map');
diff --git a/node_modules/core-js/features/array/group-by.js b/node_modules/core-js/features/array/group-by.js
new file mode 100644
index 0000000..66f66a5
--- /dev/null
+++ b/node_modules/core-js/features/array/group-by.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/group-by');
diff --git a/node_modules/core-js/features/array/group-to-map.js b/node_modules/core-js/features/array/group-to-map.js
new file mode 100644
index 0000000..9bf0af4
--- /dev/null
+++ b/node_modules/core-js/features/array/group-to-map.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/group-to-map');
diff --git a/node_modules/core-js/features/array/group.js b/node_modules/core-js/features/array/group.js
new file mode 100644
index 0000000..8e58705
--- /dev/null
+++ b/node_modules/core-js/features/array/group.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/group');
diff --git a/node_modules/core-js/features/array/includes.js b/node_modules/core-js/features/array/includes.js
new file mode 100644
index 0000000..b70af4c
--- /dev/null
+++ b/node_modules/core-js/features/array/includes.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/includes');
diff --git a/node_modules/core-js/features/array/index-of.js b/node_modules/core-js/features/array/index-of.js
new file mode 100644
index 0000000..c088e00
--- /dev/null
+++ b/node_modules/core-js/features/array/index-of.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/index-of');
diff --git a/node_modules/core-js/features/array/index.js b/node_modules/core-js/features/array/index.js
new file mode 100644
index 0000000..7b95b43
--- /dev/null
+++ b/node_modules/core-js/features/array/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array');
diff --git a/node_modules/core-js/features/array/is-array.js b/node_modules/core-js/features/array/is-array.js
new file mode 100644
index 0000000..119116a
--- /dev/null
+++ b/node_modules/core-js/features/array/is-array.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/is-array');
diff --git a/node_modules/core-js/features/array/is-template-object.js b/node_modules/core-js/features/array/is-template-object.js
new file mode 100644
index 0000000..25ec3f7
--- /dev/null
+++ b/node_modules/core-js/features/array/is-template-object.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/is-template-object');
diff --git a/node_modules/core-js/features/array/iterator.js b/node_modules/core-js/features/array/iterator.js
new file mode 100644
index 0000000..322b558
--- /dev/null
+++ b/node_modules/core-js/features/array/iterator.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/iterator');
diff --git a/node_modules/core-js/features/array/join.js b/node_modules/core-js/features/array/join.js
new file mode 100644
index 0000000..c053244
--- /dev/null
+++ b/node_modules/core-js/features/array/join.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/join');
diff --git a/node_modules/core-js/features/array/keys.js b/node_modules/core-js/features/array/keys.js
new file mode 100644
index 0000000..fd4c6f8
--- /dev/null
+++ b/node_modules/core-js/features/array/keys.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/keys');
diff --git a/node_modules/core-js/features/array/last-index-of.js b/node_modules/core-js/features/array/last-index-of.js
new file mode 100644
index 0000000..1a4b7d0
--- /dev/null
+++ b/node_modules/core-js/features/array/last-index-of.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/last-index-of');
diff --git a/node_modules/core-js/features/array/last-index.js b/node_modules/core-js/features/array/last-index.js
new file mode 100644
index 0000000..c813300
--- /dev/null
+++ b/node_modules/core-js/features/array/last-index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/last-index');
diff --git a/node_modules/core-js/features/array/last-item.js b/node_modules/core-js/features/array/last-item.js
new file mode 100644
index 0000000..264d109
--- /dev/null
+++ b/node_modules/core-js/features/array/last-item.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/last-item');
diff --git a/node_modules/core-js/features/array/map.js b/node_modules/core-js/features/array/map.js
new file mode 100644
index 0000000..755baa0
--- /dev/null
+++ b/node_modules/core-js/features/array/map.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/map');
diff --git a/node_modules/core-js/features/array/of.js b/node_modules/core-js/features/array/of.js
new file mode 100644
index 0000000..aa27fbe
--- /dev/null
+++ b/node_modules/core-js/features/array/of.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/of');
diff --git a/node_modules/core-js/features/array/push.js b/node_modules/core-js/features/array/push.js
new file mode 100644
index 0000000..e445e85
--- /dev/null
+++ b/node_modules/core-js/features/array/push.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/push');
diff --git a/node_modules/core-js/features/array/reduce-right.js b/node_modules/core-js/features/array/reduce-right.js
new file mode 100644
index 0000000..0a81e53
--- /dev/null
+++ b/node_modules/core-js/features/array/reduce-right.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/reduce-right');
diff --git a/node_modules/core-js/features/array/reduce.js b/node_modules/core-js/features/array/reduce.js
new file mode 100644
index 0000000..be5dcc4
--- /dev/null
+++ b/node_modules/core-js/features/array/reduce.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/reduce');
diff --git a/node_modules/core-js/features/array/reverse.js b/node_modules/core-js/features/array/reverse.js
new file mode 100644
index 0000000..13ffa30
--- /dev/null
+++ b/node_modules/core-js/features/array/reverse.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/reverse');
diff --git a/node_modules/core-js/features/array/slice.js b/node_modules/core-js/features/array/slice.js
new file mode 100644
index 0000000..2361724
--- /dev/null
+++ b/node_modules/core-js/features/array/slice.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/slice');
diff --git a/node_modules/core-js/features/array/some.js b/node_modules/core-js/features/array/some.js
new file mode 100644
index 0000000..70ef42a
--- /dev/null
+++ b/node_modules/core-js/features/array/some.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/some');
diff --git a/node_modules/core-js/features/array/sort.js b/node_modules/core-js/features/array/sort.js
new file mode 100644
index 0000000..51542be
--- /dev/null
+++ b/node_modules/core-js/features/array/sort.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/sort');
diff --git a/node_modules/core-js/features/array/splice.js b/node_modules/core-js/features/array/splice.js
new file mode 100644
index 0000000..435477a
--- /dev/null
+++ b/node_modules/core-js/features/array/splice.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/splice');
diff --git a/node_modules/core-js/features/array/to-reversed.js b/node_modules/core-js/features/array/to-reversed.js
new file mode 100644
index 0000000..4d5e3e8
--- /dev/null
+++ b/node_modules/core-js/features/array/to-reversed.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/to-reversed');
diff --git a/node_modules/core-js/features/array/to-sorted.js b/node_modules/core-js/features/array/to-sorted.js
new file mode 100644
index 0000000..7863413
--- /dev/null
+++ b/node_modules/core-js/features/array/to-sorted.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/to-sorted');
diff --git a/node_modules/core-js/features/array/to-spliced.js b/node_modules/core-js/features/array/to-spliced.js
new file mode 100644
index 0000000..573563c
--- /dev/null
+++ b/node_modules/core-js/features/array/to-spliced.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/to-spliced');
diff --git a/node_modules/core-js/features/array/unique-by.js b/node_modules/core-js/features/array/unique-by.js
new file mode 100644
index 0000000..f45a3d1
--- /dev/null
+++ b/node_modules/core-js/features/array/unique-by.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/unique-by');
diff --git a/node_modules/core-js/features/array/unshift.js b/node_modules/core-js/features/array/unshift.js
new file mode 100644
index 0000000..0b2cc19
--- /dev/null
+++ b/node_modules/core-js/features/array/unshift.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/unshift');
diff --git a/node_modules/core-js/features/array/values.js b/node_modules/core-js/features/array/values.js
new file mode 100644
index 0000000..a07deb7
--- /dev/null
+++ b/node_modules/core-js/features/array/values.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/values');
diff --git a/node_modules/core-js/features/array/virtual/at.js b/node_modules/core-js/features/array/virtual/at.js
new file mode 100644
index 0000000..0df9756
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/at.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/at');
diff --git a/node_modules/core-js/features/array/virtual/concat.js b/node_modules/core-js/features/array/virtual/concat.js
new file mode 100644
index 0000000..1c92a12
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/concat.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/concat');
diff --git a/node_modules/core-js/features/array/virtual/copy-within.js b/node_modules/core-js/features/array/virtual/copy-within.js
new file mode 100644
index 0000000..ece58e6
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/copy-within.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/copy-within');
diff --git a/node_modules/core-js/features/array/virtual/entries.js b/node_modules/core-js/features/array/virtual/entries.js
new file mode 100644
index 0000000..ad7f4f5
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/entries.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/entries');
diff --git a/node_modules/core-js/features/array/virtual/every.js b/node_modules/core-js/features/array/virtual/every.js
new file mode 100644
index 0000000..228d31b
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/every.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/every');
diff --git a/node_modules/core-js/features/array/virtual/fill.js b/node_modules/core-js/features/array/virtual/fill.js
new file mode 100644
index 0000000..066ebc1
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/fill.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/fill');
diff --git a/node_modules/core-js/features/array/virtual/filter-out.js b/node_modules/core-js/features/array/virtual/filter-out.js
new file mode 100644
index 0000000..c01b3c4
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/filter-out.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/filter-out');
diff --git a/node_modules/core-js/features/array/virtual/filter-reject.js b/node_modules/core-js/features/array/virtual/filter-reject.js
new file mode 100644
index 0000000..e361da3
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/filter-reject.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/filter-reject');
diff --git a/node_modules/core-js/features/array/virtual/filter.js b/node_modules/core-js/features/array/virtual/filter.js
new file mode 100644
index 0000000..b037cf9
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/filter.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/filter');
diff --git a/node_modules/core-js/features/array/virtual/find-index.js b/node_modules/core-js/features/array/virtual/find-index.js
new file mode 100644
index 0000000..7353298
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/find-index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/find-index');
diff --git a/node_modules/core-js/features/array/virtual/find-last-index.js b/node_modules/core-js/features/array/virtual/find-last-index.js
new file mode 100644
index 0000000..fd157f2
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/find-last-index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/find-last-index');
diff --git a/node_modules/core-js/features/array/virtual/find-last.js b/node_modules/core-js/features/array/virtual/find-last.js
new file mode 100644
index 0000000..4f7456b
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/find-last.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/find-last');
diff --git a/node_modules/core-js/features/array/virtual/find.js b/node_modules/core-js/features/array/virtual/find.js
new file mode 100644
index 0000000..d87b83e
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/find.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/find');
diff --git a/node_modules/core-js/features/array/virtual/flat-map.js b/node_modules/core-js/features/array/virtual/flat-map.js
new file mode 100644
index 0000000..eb6010c
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/flat-map.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/flat-map');
diff --git a/node_modules/core-js/features/array/virtual/flat.js b/node_modules/core-js/features/array/virtual/flat.js
new file mode 100644
index 0000000..b13e32d
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/flat.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/flat');
diff --git a/node_modules/core-js/features/array/virtual/for-each.js b/node_modules/core-js/features/array/virtual/for-each.js
new file mode 100644
index 0000000..36a63e2
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/for-each.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/for-each');
diff --git a/node_modules/core-js/features/array/virtual/group-by-to-map.js b/node_modules/core-js/features/array/virtual/group-by-to-map.js
new file mode 100644
index 0000000..e6e3500
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/group-by-to-map.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/group-by-to-map');
diff --git a/node_modules/core-js/features/array/virtual/group-by.js b/node_modules/core-js/features/array/virtual/group-by.js
new file mode 100644
index 0000000..cb7b425
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/group-by.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/group-by');
diff --git a/node_modules/core-js/features/array/virtual/group-to-map.js b/node_modules/core-js/features/array/virtual/group-to-map.js
new file mode 100644
index 0000000..4579468
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/group-to-map.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/group-to-map');
diff --git a/node_modules/core-js/features/array/virtual/group.js b/node_modules/core-js/features/array/virtual/group.js
new file mode 100644
index 0000000..d74be5c
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/group.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/group');
diff --git a/node_modules/core-js/features/array/virtual/includes.js b/node_modules/core-js/features/array/virtual/includes.js
new file mode 100644
index 0000000..b958745
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/includes.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/includes');
diff --git a/node_modules/core-js/features/array/virtual/index-of.js b/node_modules/core-js/features/array/virtual/index-of.js
new file mode 100644
index 0000000..c662ba1
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/index-of.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/index-of');
diff --git a/node_modules/core-js/features/array/virtual/index.js b/node_modules/core-js/features/array/virtual/index.js
new file mode 100644
index 0000000..dee1f54
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual');
diff --git a/node_modules/core-js/features/array/virtual/iterator.js b/node_modules/core-js/features/array/virtual/iterator.js
new file mode 100644
index 0000000..557e31b
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/iterator.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/iterator');
diff --git a/node_modules/core-js/features/array/virtual/join.js b/node_modules/core-js/features/array/virtual/join.js
new file mode 100644
index 0000000..62bf5b9
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/join.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/join');
diff --git a/node_modules/core-js/features/array/virtual/keys.js b/node_modules/core-js/features/array/virtual/keys.js
new file mode 100644
index 0000000..1e088ef
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/keys.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/keys');
diff --git a/node_modules/core-js/features/array/virtual/last-index-of.js b/node_modules/core-js/features/array/virtual/last-index-of.js
new file mode 100644
index 0000000..f275e49
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/last-index-of.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/last-index-of');
diff --git a/node_modules/core-js/features/array/virtual/map.js b/node_modules/core-js/features/array/virtual/map.js
new file mode 100644
index 0000000..af801d8
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/map.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/map');
diff --git a/node_modules/core-js/features/array/virtual/push.js b/node_modules/core-js/features/array/virtual/push.js
new file mode 100644
index 0000000..b25cc38
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/push.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/push');
diff --git a/node_modules/core-js/features/array/virtual/reduce-right.js b/node_modules/core-js/features/array/virtual/reduce-right.js
new file mode 100644
index 0000000..896942f
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/reduce-right.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/reduce-right');
diff --git a/node_modules/core-js/features/array/virtual/reduce.js b/node_modules/core-js/features/array/virtual/reduce.js
new file mode 100644
index 0000000..479ec56
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/reduce.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/reduce');
diff --git a/node_modules/core-js/features/array/virtual/reverse.js b/node_modules/core-js/features/array/virtual/reverse.js
new file mode 100644
index 0000000..94b6ab8
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/reverse.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/reverse');
diff --git a/node_modules/core-js/features/array/virtual/slice.js b/node_modules/core-js/features/array/virtual/slice.js
new file mode 100644
index 0000000..4cb10c6
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/slice.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/slice');
diff --git a/node_modules/core-js/features/array/virtual/some.js b/node_modules/core-js/features/array/virtual/some.js
new file mode 100644
index 0000000..12cd60c
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/some.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/some');
diff --git a/node_modules/core-js/features/array/virtual/sort.js b/node_modules/core-js/features/array/virtual/sort.js
new file mode 100644
index 0000000..db45d31
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/sort.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/sort');
diff --git a/node_modules/core-js/features/array/virtual/splice.js b/node_modules/core-js/features/array/virtual/splice.js
new file mode 100644
index 0000000..e1485f0
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/splice.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/splice');
diff --git a/node_modules/core-js/features/array/virtual/to-reversed.js b/node_modules/core-js/features/array/virtual/to-reversed.js
new file mode 100644
index 0000000..d6c9044
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/to-reversed.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/to-reversed');
diff --git a/node_modules/core-js/features/array/virtual/to-sorted.js b/node_modules/core-js/features/array/virtual/to-sorted.js
new file mode 100644
index 0000000..2c9ccf2
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/to-sorted.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/to-sorted');
diff --git a/node_modules/core-js/features/array/virtual/to-spliced.js b/node_modules/core-js/features/array/virtual/to-spliced.js
new file mode 100644
index 0000000..785933f
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/to-spliced.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/to-spliced');
diff --git a/node_modules/core-js/features/array/virtual/unique-by.js b/node_modules/core-js/features/array/virtual/unique-by.js
new file mode 100644
index 0000000..178bd56
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/unique-by.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/unique-by');
diff --git a/node_modules/core-js/features/array/virtual/unshift.js b/node_modules/core-js/features/array/virtual/unshift.js
new file mode 100644
index 0000000..c9761cb
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/unshift.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/unshift');
diff --git a/node_modules/core-js/features/array/virtual/values.js b/node_modules/core-js/features/array/virtual/values.js
new file mode 100644
index 0000000..c39701e
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/values.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/values');
diff --git a/node_modules/core-js/features/array/virtual/with.js b/node_modules/core-js/features/array/virtual/with.js
new file mode 100644
index 0000000..5b3f3a9
--- /dev/null
+++ b/node_modules/core-js/features/array/virtual/with.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/array/virtual/with');
diff --git a/node_modules/core-js/features/array/with.js b/node_modules/core-js/features/array/with.js
new file mode 100644
index 0000000..dea83a7
--- /dev/null
+++ b/node_modules/core-js/features/array/with.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/array/with');
diff --git a/node_modules/core-js/features/async-disposable-stack/constructor.js b/node_modules/core-js/features/async-disposable-stack/constructor.js
new file mode 100644
index 0000000..2adfd3e
--- /dev/null
+++ b/node_modules/core-js/features/async-disposable-stack/constructor.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/async-disposable-stack/constructor');
diff --git a/node_modules/core-js/features/async-disposable-stack/index.js b/node_modules/core-js/features/async-disposable-stack/index.js
new file mode 100644
index 0000000..e45aa25
--- /dev/null
+++ b/node_modules/core-js/features/async-disposable-stack/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/async-disposable-stack');
diff --git a/node_modules/core-js/features/async-iterator/as-indexed-pairs.js b/node_modules/core-js/features/async-iterator/as-indexed-pairs.js
new file mode 100644
index 0000000..8f479ff
--- /dev/null
+++ b/node_modules/core-js/features/async-iterator/as-indexed-pairs.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/async-iterator/as-indexed-pairs');
diff --git a/node_modules/core-js/features/async-iterator/async-dispose.js b/node_modules/core-js/features/async-iterator/async-dispose.js
new file mode 100644
index 0000000..ac37610
--- /dev/null
+++ b/node_modules/core-js/features/async-iterator/async-dispose.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/async-iterator/async-dispose');
diff --git a/node_modules/core-js/features/async-iterator/drop.js b/node_modules/core-js/features/async-iterator/drop.js
new file mode 100644
index 0000000..12e52a3
--- /dev/null
+++ b/node_modules/core-js/features/async-iterator/drop.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/async-iterator/drop');
diff --git a/node_modules/core-js/features/async-iterator/every.js b/node_modules/core-js/features/async-iterator/every.js
new file mode 100644
index 0000000..eb74c22
--- /dev/null
+++ b/node_modules/core-js/features/async-iterator/every.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/async-iterator/every');
diff --git a/node_modules/core-js/features/async-iterator/filter.js b/node_modules/core-js/features/async-iterator/filter.js
new file mode 100644
index 0000000..eaef99a
--- /dev/null
+++ b/node_modules/core-js/features/async-iterator/filter.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/async-iterator/filter');
diff --git a/node_modules/core-js/features/async-iterator/find.js b/node_modules/core-js/features/async-iterator/find.js
new file mode 100644
index 0000000..3b5a8ea
--- /dev/null
+++ b/node_modules/core-js/features/async-iterator/find.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/async-iterator/find');
diff --git a/node_modules/core-js/features/async-iterator/flat-map.js b/node_modules/core-js/features/async-iterator/flat-map.js
new file mode 100644
index 0000000..dbfc9c7
--- /dev/null
+++ b/node_modules/core-js/features/async-iterator/flat-map.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/async-iterator/flat-map');
diff --git a/node_modules/core-js/features/async-iterator/for-each.js b/node_modules/core-js/features/async-iterator/for-each.js
new file mode 100644
index 0000000..3ff764a
--- /dev/null
+++ b/node_modules/core-js/features/async-iterator/for-each.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/async-iterator/for-each');
diff --git a/node_modules/core-js/features/async-iterator/from.js b/node_modules/core-js/features/async-iterator/from.js
new file mode 100644
index 0000000..1fcdec1
--- /dev/null
+++ b/node_modules/core-js/features/async-iterator/from.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/async-iterator/from');
diff --git a/node_modules/core-js/features/async-iterator/index.js b/node_modules/core-js/features/async-iterator/index.js
new file mode 100644
index 0000000..7aaf549
--- /dev/null
+++ b/node_modules/core-js/features/async-iterator/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/async-iterator');
diff --git a/node_modules/core-js/features/async-iterator/indexed.js b/node_modules/core-js/features/async-iterator/indexed.js
new file mode 100644
index 0000000..b8403f6
--- /dev/null
+++ b/node_modules/core-js/features/async-iterator/indexed.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/async-iterator/indexed');
diff --git a/node_modules/core-js/features/async-iterator/map.js b/node_modules/core-js/features/async-iterator/map.js
new file mode 100644
index 0000000..9de4ae3
--- /dev/null
+++ b/node_modules/core-js/features/async-iterator/map.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/async-iterator/map');
diff --git a/node_modules/core-js/features/async-iterator/reduce.js b/node_modules/core-js/features/async-iterator/reduce.js
new file mode 100644
index 0000000..8050d22
--- /dev/null
+++ b/node_modules/core-js/features/async-iterator/reduce.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/async-iterator/reduce');
diff --git a/node_modules/core-js/features/async-iterator/some.js b/node_modules/core-js/features/async-iterator/some.js
new file mode 100644
index 0000000..eeeff5d
--- /dev/null
+++ b/node_modules/core-js/features/async-iterator/some.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/async-iterator/some');
diff --git a/node_modules/core-js/features/async-iterator/take.js b/node_modules/core-js/features/async-iterator/take.js
new file mode 100644
index 0000000..17d1a63
--- /dev/null
+++ b/node_modules/core-js/features/async-iterator/take.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/async-iterator/take');
diff --git a/node_modules/core-js/features/async-iterator/to-array.js b/node_modules/core-js/features/async-iterator/to-array.js
new file mode 100644
index 0000000..cf42198
--- /dev/null
+++ b/node_modules/core-js/features/async-iterator/to-array.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/async-iterator/to-array');
diff --git a/node_modules/core-js/features/atob.js b/node_modules/core-js/features/atob.js
new file mode 100644
index 0000000..5274555
--- /dev/null
+++ b/node_modules/core-js/features/atob.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../full/atob');
diff --git a/node_modules/core-js/features/bigint/index.js b/node_modules/core-js/features/bigint/index.js
new file mode 100644
index 0000000..c634a7c
--- /dev/null
+++ b/node_modules/core-js/features/bigint/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/bigint');
diff --git a/node_modules/core-js/features/bigint/range.js b/node_modules/core-js/features/bigint/range.js
new file mode 100644
index 0000000..b40003d
--- /dev/null
+++ b/node_modules/core-js/features/bigint/range.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/bigint/range');
diff --git a/node_modules/core-js/features/btoa.js b/node_modules/core-js/features/btoa.js
new file mode 100644
index 0000000..a3eeb28
--- /dev/null
+++ b/node_modules/core-js/features/btoa.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../full/btoa');
diff --git a/node_modules/core-js/features/clear-immediate.js b/node_modules/core-js/features/clear-immediate.js
new file mode 100644
index 0000000..670e2ac
--- /dev/null
+++ b/node_modules/core-js/features/clear-immediate.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../full/clear-immediate');
diff --git a/node_modules/core-js/features/composite-key.js b/node_modules/core-js/features/composite-key.js
new file mode 100644
index 0000000..0aa534d
--- /dev/null
+++ b/node_modules/core-js/features/composite-key.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../full/composite-key');
diff --git a/node_modules/core-js/features/composite-symbol.js b/node_modules/core-js/features/composite-symbol.js
new file mode 100644
index 0000000..870aaf3
--- /dev/null
+++ b/node_modules/core-js/features/composite-symbol.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../full/composite-symbol');
diff --git a/node_modules/core-js/features/data-view/get-float16.js b/node_modules/core-js/features/data-view/get-float16.js
new file mode 100644
index 0000000..d53e289
--- /dev/null
+++ b/node_modules/core-js/features/data-view/get-float16.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/data-view/get-float16');
diff --git a/node_modules/core-js/features/data-view/get-uint8-clamped.js b/node_modules/core-js/features/data-view/get-uint8-clamped.js
new file mode 100644
index 0000000..6b2e0e3
--- /dev/null
+++ b/node_modules/core-js/features/data-view/get-uint8-clamped.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/data-view/get-uint8-clamped');
diff --git a/node_modules/core-js/features/data-view/index.js b/node_modules/core-js/features/data-view/index.js
new file mode 100644
index 0000000..3ee3e88
--- /dev/null
+++ b/node_modules/core-js/features/data-view/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/data-view');
diff --git a/node_modules/core-js/features/data-view/set-float16.js b/node_modules/core-js/features/data-view/set-float16.js
new file mode 100644
index 0000000..2c0c9af
--- /dev/null
+++ b/node_modules/core-js/features/data-view/set-float16.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/data-view/set-float16');
diff --git a/node_modules/core-js/features/data-view/set-uint8-clamped.js b/node_modules/core-js/features/data-view/set-uint8-clamped.js
new file mode 100644
index 0000000..27e928f
--- /dev/null
+++ b/node_modules/core-js/features/data-view/set-uint8-clamped.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/data-view/set-uint8-clamped');
diff --git a/node_modules/core-js/features/date/get-year.js b/node_modules/core-js/features/date/get-year.js
new file mode 100644
index 0000000..01748db
--- /dev/null
+++ b/node_modules/core-js/features/date/get-year.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/date/get-year');
diff --git a/node_modules/core-js/features/date/index.js b/node_modules/core-js/features/date/index.js
new file mode 100644
index 0000000..00763b1
--- /dev/null
+++ b/node_modules/core-js/features/date/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/date');
diff --git a/node_modules/core-js/features/date/now.js b/node_modules/core-js/features/date/now.js
new file mode 100644
index 0000000..456f092
--- /dev/null
+++ b/node_modules/core-js/features/date/now.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/date/now');
diff --git a/node_modules/core-js/features/date/set-year.js b/node_modules/core-js/features/date/set-year.js
new file mode 100644
index 0000000..b1eb5b6
--- /dev/null
+++ b/node_modules/core-js/features/date/set-year.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/date/set-year');
diff --git a/node_modules/core-js/features/date/to-gmt-string.js b/node_modules/core-js/features/date/to-gmt-string.js
new file mode 100644
index 0000000..1a8cf3d
--- /dev/null
+++ b/node_modules/core-js/features/date/to-gmt-string.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/date/to-gmt-string');
diff --git a/node_modules/core-js/features/date/to-iso-string.js b/node_modules/core-js/features/date/to-iso-string.js
new file mode 100644
index 0000000..4351df8
--- /dev/null
+++ b/node_modules/core-js/features/date/to-iso-string.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/date/to-iso-string');
diff --git a/node_modules/core-js/features/date/to-json.js b/node_modules/core-js/features/date/to-json.js
new file mode 100644
index 0000000..eb1f073
--- /dev/null
+++ b/node_modules/core-js/features/date/to-json.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/date/to-json');
diff --git a/node_modules/core-js/features/date/to-primitive.js b/node_modules/core-js/features/date/to-primitive.js
new file mode 100644
index 0000000..c04d5ff
--- /dev/null
+++ b/node_modules/core-js/features/date/to-primitive.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/date/to-primitive');
diff --git a/node_modules/core-js/features/date/to-string.js b/node_modules/core-js/features/date/to-string.js
new file mode 100644
index 0000000..138ac94
--- /dev/null
+++ b/node_modules/core-js/features/date/to-string.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/date/to-string');
diff --git a/node_modules/core-js/features/disposable-stack/constructor.js b/node_modules/core-js/features/disposable-stack/constructor.js
new file mode 100644
index 0000000..be69e37
--- /dev/null
+++ b/node_modules/core-js/features/disposable-stack/constructor.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/disposable-stack/constructor');
diff --git a/node_modules/core-js/features/disposable-stack/index.js b/node_modules/core-js/features/disposable-stack/index.js
new file mode 100644
index 0000000..5bbacfb
--- /dev/null
+++ b/node_modules/core-js/features/disposable-stack/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/disposable-stack');
diff --git a/node_modules/core-js/features/dom-collections/for-each.js b/node_modules/core-js/features/dom-collections/for-each.js
new file mode 100644
index 0000000..4e34919
--- /dev/null
+++ b/node_modules/core-js/features/dom-collections/for-each.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/dom-collections/for-each');
diff --git a/node_modules/core-js/features/dom-collections/index.js b/node_modules/core-js/features/dom-collections/index.js
new file mode 100644
index 0000000..a2b1318
--- /dev/null
+++ b/node_modules/core-js/features/dom-collections/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/dom-collections');
diff --git a/node_modules/core-js/features/dom-collections/iterator.js b/node_modules/core-js/features/dom-collections/iterator.js
new file mode 100644
index 0000000..6b51ef0
--- /dev/null
+++ b/node_modules/core-js/features/dom-collections/iterator.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/dom-collections/iterator');
diff --git a/node_modules/core-js/features/dom-exception/constructor.js b/node_modules/core-js/features/dom-exception/constructor.js
new file mode 100644
index 0000000..54c37aa
--- /dev/null
+++ b/node_modules/core-js/features/dom-exception/constructor.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/dom-exception/constructor');
diff --git a/node_modules/core-js/features/dom-exception/index.js b/node_modules/core-js/features/dom-exception/index.js
new file mode 100644
index 0000000..d047ee8
--- /dev/null
+++ b/node_modules/core-js/features/dom-exception/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/dom-exception');
diff --git a/node_modules/core-js/features/dom-exception/to-string-tag.js b/node_modules/core-js/features/dom-exception/to-string-tag.js
new file mode 100644
index 0000000..a578f44
--- /dev/null
+++ b/node_modules/core-js/features/dom-exception/to-string-tag.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/dom-exception/to-string-tag');
diff --git a/node_modules/core-js/features/error/constructor.js b/node_modules/core-js/features/error/constructor.js
new file mode 100644
index 0000000..73f2cbc
--- /dev/null
+++ b/node_modules/core-js/features/error/constructor.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/error/constructor');
diff --git a/node_modules/core-js/features/error/index.js b/node_modules/core-js/features/error/index.js
new file mode 100644
index 0000000..5a0f6b0
--- /dev/null
+++ b/node_modules/core-js/features/error/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/error');
diff --git a/node_modules/core-js/features/error/is-error.js b/node_modules/core-js/features/error/is-error.js
new file mode 100644
index 0000000..fdfa339
--- /dev/null
+++ b/node_modules/core-js/features/error/is-error.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/error/is-error');
diff --git a/node_modules/core-js/features/error/to-string.js b/node_modules/core-js/features/error/to-string.js
new file mode 100644
index 0000000..47b1551
--- /dev/null
+++ b/node_modules/core-js/features/error/to-string.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/error/to-string');
diff --git a/node_modules/core-js/features/escape.js b/node_modules/core-js/features/escape.js
new file mode 100644
index 0000000..be0474b
--- /dev/null
+++ b/node_modules/core-js/features/escape.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../full/escape');
diff --git a/node_modules/core-js/features/function/bind.js b/node_modules/core-js/features/function/bind.js
new file mode 100644
index 0000000..8281dcb
--- /dev/null
+++ b/node_modules/core-js/features/function/bind.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/function/bind');
diff --git a/node_modules/core-js/features/function/demethodize.js b/node_modules/core-js/features/function/demethodize.js
new file mode 100644
index 0000000..cf093c3
--- /dev/null
+++ b/node_modules/core-js/features/function/demethodize.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/function/demethodize');
diff --git a/node_modules/core-js/features/function/has-instance.js b/node_modules/core-js/features/function/has-instance.js
new file mode 100644
index 0000000..4fc1051
--- /dev/null
+++ b/node_modules/core-js/features/function/has-instance.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/function/has-instance');
diff --git a/node_modules/core-js/features/function/index.js b/node_modules/core-js/features/function/index.js
new file mode 100644
index 0000000..0ba08df
--- /dev/null
+++ b/node_modules/core-js/features/function/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/function');
diff --git a/node_modules/core-js/features/function/is-callable.js b/node_modules/core-js/features/function/is-callable.js
new file mode 100644
index 0000000..b624162
--- /dev/null
+++ b/node_modules/core-js/features/function/is-callable.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/function/is-callable');
diff --git a/node_modules/core-js/features/function/is-constructor.js b/node_modules/core-js/features/function/is-constructor.js
new file mode 100644
index 0000000..46c9208
--- /dev/null
+++ b/node_modules/core-js/features/function/is-constructor.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/function/is-constructor');
diff --git a/node_modules/core-js/features/function/metadata.js b/node_modules/core-js/features/function/metadata.js
new file mode 100644
index 0000000..31e8fea
--- /dev/null
+++ b/node_modules/core-js/features/function/metadata.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/function/metadata');
diff --git a/node_modules/core-js/features/function/name.js b/node_modules/core-js/features/function/name.js
new file mode 100644
index 0000000..e5facbc
--- /dev/null
+++ b/node_modules/core-js/features/function/name.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/function/name');
diff --git a/node_modules/core-js/features/function/un-this.js b/node_modules/core-js/features/function/un-this.js
new file mode 100644
index 0000000..bc6f519
--- /dev/null
+++ b/node_modules/core-js/features/function/un-this.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/function/un-this');
diff --git a/node_modules/core-js/features/function/virtual/bind.js b/node_modules/core-js/features/function/virtual/bind.js
new file mode 100644
index 0000000..f0da5de
--- /dev/null
+++ b/node_modules/core-js/features/function/virtual/bind.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/function/virtual/bind');
diff --git a/node_modules/core-js/features/function/virtual/demethodize.js b/node_modules/core-js/features/function/virtual/demethodize.js
new file mode 100644
index 0000000..a9e6403
--- /dev/null
+++ b/node_modules/core-js/features/function/virtual/demethodize.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/function/virtual/demethodize');
diff --git a/node_modules/core-js/features/function/virtual/index.js b/node_modules/core-js/features/function/virtual/index.js
new file mode 100644
index 0000000..cbfa55e
--- /dev/null
+++ b/node_modules/core-js/features/function/virtual/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/function/virtual');
diff --git a/node_modules/core-js/features/function/virtual/un-this.js b/node_modules/core-js/features/function/virtual/un-this.js
new file mode 100644
index 0000000..d534492
--- /dev/null
+++ b/node_modules/core-js/features/function/virtual/un-this.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/function/virtual/un-this');
diff --git a/node_modules/core-js/features/get-iterator-method.js b/node_modules/core-js/features/get-iterator-method.js
new file mode 100644
index 0000000..2ee2e32
--- /dev/null
+++ b/node_modules/core-js/features/get-iterator-method.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../full/get-iterator-method');
diff --git a/node_modules/core-js/features/get-iterator.js b/node_modules/core-js/features/get-iterator.js
new file mode 100644
index 0000000..0e97366
--- /dev/null
+++ b/node_modules/core-js/features/get-iterator.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../full/get-iterator');
diff --git a/node_modules/core-js/features/global-this.js b/node_modules/core-js/features/global-this.js
new file mode 100644
index 0000000..7ef6e00
--- /dev/null
+++ b/node_modules/core-js/features/global-this.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../full/global-this');
diff --git a/node_modules/core-js/features/index.js b/node_modules/core-js/features/index.js
new file mode 100644
index 0000000..862f06c
--- /dev/null
+++ b/node_modules/core-js/features/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../full');
diff --git a/node_modules/core-js/features/instance/at.js b/node_modules/core-js/features/instance/at.js
new file mode 100644
index 0000000..63ee4e0
--- /dev/null
+++ b/node_modules/core-js/features/instance/at.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/at');
diff --git a/node_modules/core-js/features/instance/bind.js b/node_modules/core-js/features/instance/bind.js
new file mode 100644
index 0000000..a4df444
--- /dev/null
+++ b/node_modules/core-js/features/instance/bind.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/bind');
diff --git a/node_modules/core-js/features/instance/code-point-at.js b/node_modules/core-js/features/instance/code-point-at.js
new file mode 100644
index 0000000..ac8f54a
--- /dev/null
+++ b/node_modules/core-js/features/instance/code-point-at.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/code-point-at');
diff --git a/node_modules/core-js/features/instance/code-points.js b/node_modules/core-js/features/instance/code-points.js
new file mode 100644
index 0000000..250b28c
--- /dev/null
+++ b/node_modules/core-js/features/instance/code-points.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/code-points');
diff --git a/node_modules/core-js/features/instance/concat.js b/node_modules/core-js/features/instance/concat.js
new file mode 100644
index 0000000..70fe007
--- /dev/null
+++ b/node_modules/core-js/features/instance/concat.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/concat');
diff --git a/node_modules/core-js/features/instance/copy-within.js b/node_modules/core-js/features/instance/copy-within.js
new file mode 100644
index 0000000..b833739
--- /dev/null
+++ b/node_modules/core-js/features/instance/copy-within.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/copy-within');
diff --git a/node_modules/core-js/features/instance/demethodize.js b/node_modules/core-js/features/instance/demethodize.js
new file mode 100644
index 0000000..3d5d9a4
--- /dev/null
+++ b/node_modules/core-js/features/instance/demethodize.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/demethodize');
diff --git a/node_modules/core-js/features/instance/ends-with.js b/node_modules/core-js/features/instance/ends-with.js
new file mode 100644
index 0000000..e6abcf7
--- /dev/null
+++ b/node_modules/core-js/features/instance/ends-with.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/ends-with');
diff --git a/node_modules/core-js/features/instance/entries.js b/node_modules/core-js/features/instance/entries.js
new file mode 100644
index 0000000..23486b2
--- /dev/null
+++ b/node_modules/core-js/features/instance/entries.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/entries');
diff --git a/node_modules/core-js/features/instance/every.js b/node_modules/core-js/features/instance/every.js
new file mode 100644
index 0000000..d9b53c9
--- /dev/null
+++ b/node_modules/core-js/features/instance/every.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/every');
diff --git a/node_modules/core-js/features/instance/fill.js b/node_modules/core-js/features/instance/fill.js
new file mode 100644
index 0000000..17d1f57
--- /dev/null
+++ b/node_modules/core-js/features/instance/fill.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/fill');
diff --git a/node_modules/core-js/features/instance/filter-out.js b/node_modules/core-js/features/instance/filter-out.js
new file mode 100644
index 0000000..12191d6
--- /dev/null
+++ b/node_modules/core-js/features/instance/filter-out.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/filter-out');
diff --git a/node_modules/core-js/features/instance/filter-reject.js b/node_modules/core-js/features/instance/filter-reject.js
new file mode 100644
index 0000000..c52ceab
--- /dev/null
+++ b/node_modules/core-js/features/instance/filter-reject.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/filter-reject');
diff --git a/node_modules/core-js/features/instance/filter.js b/node_modules/core-js/features/instance/filter.js
new file mode 100644
index 0000000..75faee1
--- /dev/null
+++ b/node_modules/core-js/features/instance/filter.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/filter');
diff --git a/node_modules/core-js/features/instance/find-index.js b/node_modules/core-js/features/instance/find-index.js
new file mode 100644
index 0000000..843a5f0
--- /dev/null
+++ b/node_modules/core-js/features/instance/find-index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/find-index');
diff --git a/node_modules/core-js/features/instance/find-last-index.js b/node_modules/core-js/features/instance/find-last-index.js
new file mode 100644
index 0000000..9e12128
--- /dev/null
+++ b/node_modules/core-js/features/instance/find-last-index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/find-last-index');
diff --git a/node_modules/core-js/features/instance/find-last.js b/node_modules/core-js/features/instance/find-last.js
new file mode 100644
index 0000000..f3e952e
--- /dev/null
+++ b/node_modules/core-js/features/instance/find-last.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/find-last');
diff --git a/node_modules/core-js/features/instance/find.js b/node_modules/core-js/features/instance/find.js
new file mode 100644
index 0000000..2b4eece
--- /dev/null
+++ b/node_modules/core-js/features/instance/find.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/find');
diff --git a/node_modules/core-js/features/instance/flags.js b/node_modules/core-js/features/instance/flags.js
new file mode 100644
index 0000000..5d51e28
--- /dev/null
+++ b/node_modules/core-js/features/instance/flags.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/flags');
diff --git a/node_modules/core-js/features/instance/flat-map.js b/node_modules/core-js/features/instance/flat-map.js
new file mode 100644
index 0000000..9de4385
--- /dev/null
+++ b/node_modules/core-js/features/instance/flat-map.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/flat-map');
diff --git a/node_modules/core-js/features/instance/flat.js b/node_modules/core-js/features/instance/flat.js
new file mode 100644
index 0000000..caceea4
--- /dev/null
+++ b/node_modules/core-js/features/instance/flat.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/flat');
diff --git a/node_modules/core-js/features/instance/for-each.js b/node_modules/core-js/features/instance/for-each.js
new file mode 100644
index 0000000..160548f
--- /dev/null
+++ b/node_modules/core-js/features/instance/for-each.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/for-each');
diff --git a/node_modules/core-js/features/instance/group-by-to-map.js b/node_modules/core-js/features/instance/group-by-to-map.js
new file mode 100644
index 0000000..0a27360
--- /dev/null
+++ b/node_modules/core-js/features/instance/group-by-to-map.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/group-by-to-map');
diff --git a/node_modules/core-js/features/instance/group-by.js b/node_modules/core-js/features/instance/group-by.js
new file mode 100644
index 0000000..fc9c9cc
--- /dev/null
+++ b/node_modules/core-js/features/instance/group-by.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/group-by');
diff --git a/node_modules/core-js/features/instance/group-to-map.js b/node_modules/core-js/features/instance/group-to-map.js
new file mode 100644
index 0000000..010a97e
--- /dev/null
+++ b/node_modules/core-js/features/instance/group-to-map.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/group-to-map');
diff --git a/node_modules/core-js/features/instance/group.js b/node_modules/core-js/features/instance/group.js
new file mode 100644
index 0000000..4479a8a
--- /dev/null
+++ b/node_modules/core-js/features/instance/group.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/group');
diff --git a/node_modules/core-js/features/instance/includes.js b/node_modules/core-js/features/instance/includes.js
new file mode 100644
index 0000000..845b728
--- /dev/null
+++ b/node_modules/core-js/features/instance/includes.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/includes');
diff --git a/node_modules/core-js/features/instance/index-of.js b/node_modules/core-js/features/instance/index-of.js
new file mode 100644
index 0000000..39d1aa0
--- /dev/null
+++ b/node_modules/core-js/features/instance/index-of.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/index-of');
diff --git a/node_modules/core-js/features/instance/is-well-formed.js b/node_modules/core-js/features/instance/is-well-formed.js
new file mode 100644
index 0000000..50253dc
--- /dev/null
+++ b/node_modules/core-js/features/instance/is-well-formed.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/is-well-formed');
diff --git a/node_modules/core-js/features/instance/keys.js b/node_modules/core-js/features/instance/keys.js
new file mode 100644
index 0000000..2def5f5
--- /dev/null
+++ b/node_modules/core-js/features/instance/keys.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/keys');
diff --git a/node_modules/core-js/features/instance/last-index-of.js b/node_modules/core-js/features/instance/last-index-of.js
new file mode 100644
index 0000000..03502cc
--- /dev/null
+++ b/node_modules/core-js/features/instance/last-index-of.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/last-index-of');
diff --git a/node_modules/core-js/features/instance/map.js b/node_modules/core-js/features/instance/map.js
new file mode 100644
index 0000000..0108606
--- /dev/null
+++ b/node_modules/core-js/features/instance/map.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/map');
diff --git a/node_modules/core-js/features/instance/match-all.js b/node_modules/core-js/features/instance/match-all.js
new file mode 100644
index 0000000..41dd3e4
--- /dev/null
+++ b/node_modules/core-js/features/instance/match-all.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/match-all');
diff --git a/node_modules/core-js/features/instance/pad-end.js b/node_modules/core-js/features/instance/pad-end.js
new file mode 100644
index 0000000..d7d01c5
--- /dev/null
+++ b/node_modules/core-js/features/instance/pad-end.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/pad-end');
diff --git a/node_modules/core-js/features/instance/pad-start.js b/node_modules/core-js/features/instance/pad-start.js
new file mode 100644
index 0000000..c96ea43
--- /dev/null
+++ b/node_modules/core-js/features/instance/pad-start.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/pad-start');
diff --git a/node_modules/core-js/features/instance/push.js b/node_modules/core-js/features/instance/push.js
new file mode 100644
index 0000000..3d1703f
--- /dev/null
+++ b/node_modules/core-js/features/instance/push.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/push');
diff --git a/node_modules/core-js/features/instance/reduce-right.js b/node_modules/core-js/features/instance/reduce-right.js
new file mode 100644
index 0000000..024f17b
--- /dev/null
+++ b/node_modules/core-js/features/instance/reduce-right.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/reduce-right');
diff --git a/node_modules/core-js/features/instance/reduce.js b/node_modules/core-js/features/instance/reduce.js
new file mode 100644
index 0000000..895fc2f
--- /dev/null
+++ b/node_modules/core-js/features/instance/reduce.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/reduce');
diff --git a/node_modules/core-js/features/instance/repeat.js b/node_modules/core-js/features/instance/repeat.js
new file mode 100644
index 0000000..8664359
--- /dev/null
+++ b/node_modules/core-js/features/instance/repeat.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/repeat');
diff --git a/node_modules/core-js/features/instance/replace-all.js b/node_modules/core-js/features/instance/replace-all.js
new file mode 100644
index 0000000..9018591
--- /dev/null
+++ b/node_modules/core-js/features/instance/replace-all.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/replace-all');
diff --git a/node_modules/core-js/features/instance/reverse.js b/node_modules/core-js/features/instance/reverse.js
new file mode 100644
index 0000000..d7173ec
--- /dev/null
+++ b/node_modules/core-js/features/instance/reverse.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/reverse');
diff --git a/node_modules/core-js/features/instance/slice.js b/node_modules/core-js/features/instance/slice.js
new file mode 100644
index 0000000..550de9b
--- /dev/null
+++ b/node_modules/core-js/features/instance/slice.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/slice');
diff --git a/node_modules/core-js/features/instance/some.js b/node_modules/core-js/features/instance/some.js
new file mode 100644
index 0000000..a03bf9a
--- /dev/null
+++ b/node_modules/core-js/features/instance/some.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/some');
diff --git a/node_modules/core-js/features/instance/sort.js b/node_modules/core-js/features/instance/sort.js
new file mode 100644
index 0000000..a7368e0
--- /dev/null
+++ b/node_modules/core-js/features/instance/sort.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/sort');
diff --git a/node_modules/core-js/features/instance/splice.js b/node_modules/core-js/features/instance/splice.js
new file mode 100644
index 0000000..0527d4f
--- /dev/null
+++ b/node_modules/core-js/features/instance/splice.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/splice');
diff --git a/node_modules/core-js/features/instance/starts-with.js b/node_modules/core-js/features/instance/starts-with.js
new file mode 100644
index 0000000..fc41430
--- /dev/null
+++ b/node_modules/core-js/features/instance/starts-with.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/starts-with');
diff --git a/node_modules/core-js/features/instance/to-reversed.js b/node_modules/core-js/features/instance/to-reversed.js
new file mode 100644
index 0000000..e89a837
--- /dev/null
+++ b/node_modules/core-js/features/instance/to-reversed.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/to-reversed');
diff --git a/node_modules/core-js/features/instance/to-sorted.js b/node_modules/core-js/features/instance/to-sorted.js
new file mode 100644
index 0000000..52d079a
--- /dev/null
+++ b/node_modules/core-js/features/instance/to-sorted.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/to-sorted');
diff --git a/node_modules/core-js/features/instance/to-spliced.js b/node_modules/core-js/features/instance/to-spliced.js
new file mode 100644
index 0000000..bcca07d
--- /dev/null
+++ b/node_modules/core-js/features/instance/to-spliced.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/to-spliced');
diff --git a/node_modules/core-js/features/instance/to-well-formed.js b/node_modules/core-js/features/instance/to-well-formed.js
new file mode 100644
index 0000000..b689d9f
--- /dev/null
+++ b/node_modules/core-js/features/instance/to-well-formed.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/to-well-formed');
diff --git a/node_modules/core-js/features/instance/trim-end.js b/node_modules/core-js/features/instance/trim-end.js
new file mode 100644
index 0000000..3cc7030
--- /dev/null
+++ b/node_modules/core-js/features/instance/trim-end.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/trim-end');
diff --git a/node_modules/core-js/features/instance/trim-left.js b/node_modules/core-js/features/instance/trim-left.js
new file mode 100644
index 0000000..212ab15
--- /dev/null
+++ b/node_modules/core-js/features/instance/trim-left.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/trim-left');
diff --git a/node_modules/core-js/features/instance/trim-right.js b/node_modules/core-js/features/instance/trim-right.js
new file mode 100644
index 0000000..f264fe6
--- /dev/null
+++ b/node_modules/core-js/features/instance/trim-right.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/trim-right');
diff --git a/node_modules/core-js/features/instance/trim-start.js b/node_modules/core-js/features/instance/trim-start.js
new file mode 100644
index 0000000..f3a64e5
--- /dev/null
+++ b/node_modules/core-js/features/instance/trim-start.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/trim-start');
diff --git a/node_modules/core-js/features/instance/trim.js b/node_modules/core-js/features/instance/trim.js
new file mode 100644
index 0000000..1f4c525
--- /dev/null
+++ b/node_modules/core-js/features/instance/trim.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/trim');
diff --git a/node_modules/core-js/features/instance/un-this.js b/node_modules/core-js/features/instance/un-this.js
new file mode 100644
index 0000000..d66d389
--- /dev/null
+++ b/node_modules/core-js/features/instance/un-this.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/un-this');
diff --git a/node_modules/core-js/features/instance/unique-by.js b/node_modules/core-js/features/instance/unique-by.js
new file mode 100644
index 0000000..cd88bc7
--- /dev/null
+++ b/node_modules/core-js/features/instance/unique-by.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/unique-by');
diff --git a/node_modules/core-js/features/instance/unshift.js b/node_modules/core-js/features/instance/unshift.js
new file mode 100644
index 0000000..e5e66aa
--- /dev/null
+++ b/node_modules/core-js/features/instance/unshift.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/unshift');
diff --git a/node_modules/core-js/features/instance/values.js b/node_modules/core-js/features/instance/values.js
new file mode 100644
index 0000000..9052a5d
--- /dev/null
+++ b/node_modules/core-js/features/instance/values.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/values');
diff --git a/node_modules/core-js/features/instance/with.js b/node_modules/core-js/features/instance/with.js
new file mode 100644
index 0000000..286b09d
--- /dev/null
+++ b/node_modules/core-js/features/instance/with.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/instance/with');
diff --git a/node_modules/core-js/features/is-iterable.js b/node_modules/core-js/features/is-iterable.js
new file mode 100644
index 0000000..766bd5f
--- /dev/null
+++ b/node_modules/core-js/features/is-iterable.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../full/is-iterable');
diff --git a/node_modules/core-js/features/iterator/as-indexed-pairs.js b/node_modules/core-js/features/iterator/as-indexed-pairs.js
new file mode 100644
index 0000000..9364305
--- /dev/null
+++ b/node_modules/core-js/features/iterator/as-indexed-pairs.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/iterator/as-indexed-pairs');
diff --git a/node_modules/core-js/features/iterator/concat.js b/node_modules/core-js/features/iterator/concat.js
new file mode 100644
index 0000000..91d0cb7
--- /dev/null
+++ b/node_modules/core-js/features/iterator/concat.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/iterator/concat');
diff --git a/node_modules/core-js/features/iterator/dispose.js b/node_modules/core-js/features/iterator/dispose.js
new file mode 100644
index 0000000..fcd3539
--- /dev/null
+++ b/node_modules/core-js/features/iterator/dispose.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/iterator/dispose');
diff --git a/node_modules/core-js/features/iterator/drop.js b/node_modules/core-js/features/iterator/drop.js
new file mode 100644
index 0000000..bbcff35
--- /dev/null
+++ b/node_modules/core-js/features/iterator/drop.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/iterator/drop');
diff --git a/node_modules/core-js/features/iterator/every.js b/node_modules/core-js/features/iterator/every.js
new file mode 100644
index 0000000..ecc41f2
--- /dev/null
+++ b/node_modules/core-js/features/iterator/every.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/iterator/every');
diff --git a/node_modules/core-js/features/iterator/filter.js b/node_modules/core-js/features/iterator/filter.js
new file mode 100644
index 0000000..0f7c200
--- /dev/null
+++ b/node_modules/core-js/features/iterator/filter.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/iterator/filter');
diff --git a/node_modules/core-js/features/iterator/find.js b/node_modules/core-js/features/iterator/find.js
new file mode 100644
index 0000000..cc311fa
--- /dev/null
+++ b/node_modules/core-js/features/iterator/find.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/iterator/find');
diff --git a/node_modules/core-js/features/iterator/flat-map.js b/node_modules/core-js/features/iterator/flat-map.js
new file mode 100644
index 0000000..a738044
--- /dev/null
+++ b/node_modules/core-js/features/iterator/flat-map.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/iterator/flat-map');
diff --git a/node_modules/core-js/features/iterator/for-each.js b/node_modules/core-js/features/iterator/for-each.js
new file mode 100644
index 0000000..21c2f99
--- /dev/null
+++ b/node_modules/core-js/features/iterator/for-each.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/iterator/for-each');
diff --git a/node_modules/core-js/features/iterator/from.js b/node_modules/core-js/features/iterator/from.js
new file mode 100644
index 0000000..92d71c4
--- /dev/null
+++ b/node_modules/core-js/features/iterator/from.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/iterator/from');
diff --git a/node_modules/core-js/features/iterator/index.js b/node_modules/core-js/features/iterator/index.js
new file mode 100644
index 0000000..fef2b87
--- /dev/null
+++ b/node_modules/core-js/features/iterator/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/iterator');
diff --git a/node_modules/core-js/features/iterator/indexed.js b/node_modules/core-js/features/iterator/indexed.js
new file mode 100644
index 0000000..e4440d0
--- /dev/null
+++ b/node_modules/core-js/features/iterator/indexed.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/iterator/indexed');
diff --git a/node_modules/core-js/features/iterator/map.js b/node_modules/core-js/features/iterator/map.js
new file mode 100644
index 0000000..4428c6b
--- /dev/null
+++ b/node_modules/core-js/features/iterator/map.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/iterator/map');
diff --git a/node_modules/core-js/features/iterator/range.js b/node_modules/core-js/features/iterator/range.js
new file mode 100644
index 0000000..ae809a5
--- /dev/null
+++ b/node_modules/core-js/features/iterator/range.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/iterator/range');
diff --git a/node_modules/core-js/features/iterator/reduce.js b/node_modules/core-js/features/iterator/reduce.js
new file mode 100644
index 0000000..6e397c1
--- /dev/null
+++ b/node_modules/core-js/features/iterator/reduce.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/iterator/reduce');
diff --git a/node_modules/core-js/features/iterator/some.js b/node_modules/core-js/features/iterator/some.js
new file mode 100644
index 0000000..4a3b82b
--- /dev/null
+++ b/node_modules/core-js/features/iterator/some.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/iterator/some');
diff --git a/node_modules/core-js/features/iterator/take.js b/node_modules/core-js/features/iterator/take.js
new file mode 100644
index 0000000..0f04626
--- /dev/null
+++ b/node_modules/core-js/features/iterator/take.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/iterator/take');
diff --git a/node_modules/core-js/features/iterator/to-array.js b/node_modules/core-js/features/iterator/to-array.js
new file mode 100644
index 0000000..fa386a0
--- /dev/null
+++ b/node_modules/core-js/features/iterator/to-array.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/iterator/to-array');
diff --git a/node_modules/core-js/features/iterator/to-async.js b/node_modules/core-js/features/iterator/to-async.js
new file mode 100644
index 0000000..0feb846
--- /dev/null
+++ b/node_modules/core-js/features/iterator/to-async.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/iterator/to-async');
diff --git a/node_modules/core-js/features/json/index.js b/node_modules/core-js/features/json/index.js
new file mode 100644
index 0000000..4148d30
--- /dev/null
+++ b/node_modules/core-js/features/json/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/json');
diff --git a/node_modules/core-js/features/json/is-raw-json.js b/node_modules/core-js/features/json/is-raw-json.js
new file mode 100644
index 0000000..602cee7
--- /dev/null
+++ b/node_modules/core-js/features/json/is-raw-json.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/json/is-raw-json');
diff --git a/node_modules/core-js/features/json/parse.js b/node_modules/core-js/features/json/parse.js
new file mode 100644
index 0000000..f65730c
--- /dev/null
+++ b/node_modules/core-js/features/json/parse.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/json/parse');
diff --git a/node_modules/core-js/features/json/raw-json.js b/node_modules/core-js/features/json/raw-json.js
new file mode 100644
index 0000000..7b1ba01
--- /dev/null
+++ b/node_modules/core-js/features/json/raw-json.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/json/raw-json');
diff --git a/node_modules/core-js/features/json/stringify.js b/node_modules/core-js/features/json/stringify.js
new file mode 100644
index 0000000..026d871
--- /dev/null
+++ b/node_modules/core-js/features/json/stringify.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/json/stringify');
diff --git a/node_modules/core-js/features/json/to-string-tag.js b/node_modules/core-js/features/json/to-string-tag.js
new file mode 100644
index 0000000..68c5d83
--- /dev/null
+++ b/node_modules/core-js/features/json/to-string-tag.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/json/to-string-tag');
diff --git a/node_modules/core-js/features/map/delete-all.js b/node_modules/core-js/features/map/delete-all.js
new file mode 100644
index 0000000..a80185d
--- /dev/null
+++ b/node_modules/core-js/features/map/delete-all.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/map/delete-all');
diff --git a/node_modules/core-js/features/map/emplace.js b/node_modules/core-js/features/map/emplace.js
new file mode 100644
index 0000000..91430cf
--- /dev/null
+++ b/node_modules/core-js/features/map/emplace.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/map/emplace');
diff --git a/node_modules/core-js/features/map/every.js b/node_modules/core-js/features/map/every.js
new file mode 100644
index 0000000..f9061c0
--- /dev/null
+++ b/node_modules/core-js/features/map/every.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/map/every');
diff --git a/node_modules/core-js/features/map/filter.js b/node_modules/core-js/features/map/filter.js
new file mode 100644
index 0000000..c2e9bab
--- /dev/null
+++ b/node_modules/core-js/features/map/filter.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/map/filter');
diff --git a/node_modules/core-js/features/map/find-key.js b/node_modules/core-js/features/map/find-key.js
new file mode 100644
index 0000000..f279fcd
--- /dev/null
+++ b/node_modules/core-js/features/map/find-key.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/map/find-key');
diff --git a/node_modules/core-js/features/map/find.js b/node_modules/core-js/features/map/find.js
new file mode 100644
index 0000000..1e59378
--- /dev/null
+++ b/node_modules/core-js/features/map/find.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/map/find');
diff --git a/node_modules/core-js/features/map/from.js b/node_modules/core-js/features/map/from.js
new file mode 100644
index 0000000..ec52d18
--- /dev/null
+++ b/node_modules/core-js/features/map/from.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/map/from');
diff --git a/node_modules/core-js/features/map/get-or-insert-computed.js b/node_modules/core-js/features/map/get-or-insert-computed.js
new file mode 100644
index 0000000..34907c1
--- /dev/null
+++ b/node_modules/core-js/features/map/get-or-insert-computed.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/map/get-or-insert-computed');
diff --git a/node_modules/core-js/features/map/get-or-insert.js b/node_modules/core-js/features/map/get-or-insert.js
new file mode 100644
index 0000000..ac952cf
--- /dev/null
+++ b/node_modules/core-js/features/map/get-or-insert.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/map/get-or-insert');
diff --git a/node_modules/core-js/features/map/group-by.js b/node_modules/core-js/features/map/group-by.js
new file mode 100644
index 0000000..63b9c7a
--- /dev/null
+++ b/node_modules/core-js/features/map/group-by.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/map/group-by');
diff --git a/node_modules/core-js/features/map/includes.js b/node_modules/core-js/features/map/includes.js
new file mode 100644
index 0000000..fb664b9
--- /dev/null
+++ b/node_modules/core-js/features/map/includes.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/map/includes');
diff --git a/node_modules/core-js/features/map/index.js b/node_modules/core-js/features/map/index.js
new file mode 100644
index 0000000..2a8a0b9
--- /dev/null
+++ b/node_modules/core-js/features/map/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/map');
diff --git a/node_modules/core-js/features/map/key-by.js b/node_modules/core-js/features/map/key-by.js
new file mode 100644
index 0000000..2e8ee66
--- /dev/null
+++ b/node_modules/core-js/features/map/key-by.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/map/key-by');
diff --git a/node_modules/core-js/features/map/key-of.js b/node_modules/core-js/features/map/key-of.js
new file mode 100644
index 0000000..9beb059
--- /dev/null
+++ b/node_modules/core-js/features/map/key-of.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/map/key-of');
diff --git a/node_modules/core-js/features/map/map-keys.js b/node_modules/core-js/features/map/map-keys.js
new file mode 100644
index 0000000..bfb33d3
--- /dev/null
+++ b/node_modules/core-js/features/map/map-keys.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/map/map-keys');
diff --git a/node_modules/core-js/features/map/map-values.js b/node_modules/core-js/features/map/map-values.js
new file mode 100644
index 0000000..2c304ce
--- /dev/null
+++ b/node_modules/core-js/features/map/map-values.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/map/map-values');
diff --git a/node_modules/core-js/features/map/merge.js b/node_modules/core-js/features/map/merge.js
new file mode 100644
index 0000000..fdd5c80
--- /dev/null
+++ b/node_modules/core-js/features/map/merge.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/map/merge');
diff --git a/node_modules/core-js/features/map/of.js b/node_modules/core-js/features/map/of.js
new file mode 100644
index 0000000..d8f58a5
--- /dev/null
+++ b/node_modules/core-js/features/map/of.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/map/of');
diff --git a/node_modules/core-js/features/map/reduce.js b/node_modules/core-js/features/map/reduce.js
new file mode 100644
index 0000000..e5cd5df
--- /dev/null
+++ b/node_modules/core-js/features/map/reduce.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/map/reduce');
diff --git a/node_modules/core-js/features/map/some.js b/node_modules/core-js/features/map/some.js
new file mode 100644
index 0000000..2512dd2
--- /dev/null
+++ b/node_modules/core-js/features/map/some.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/map/some');
diff --git a/node_modules/core-js/features/map/update-or-insert.js b/node_modules/core-js/features/map/update-or-insert.js
new file mode 100644
index 0000000..a18ccb4
--- /dev/null
+++ b/node_modules/core-js/features/map/update-or-insert.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/map/update-or-insert');
diff --git a/node_modules/core-js/features/map/update.js b/node_modules/core-js/features/map/update.js
new file mode 100644
index 0000000..440c740
--- /dev/null
+++ b/node_modules/core-js/features/map/update.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/map/update');
diff --git a/node_modules/core-js/features/map/upsert.js b/node_modules/core-js/features/map/upsert.js
new file mode 100644
index 0000000..04ffb64
--- /dev/null
+++ b/node_modules/core-js/features/map/upsert.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/map/upsert');
diff --git a/node_modules/core-js/features/math/acosh.js b/node_modules/core-js/features/math/acosh.js
new file mode 100644
index 0000000..c9bfc00
--- /dev/null
+++ b/node_modules/core-js/features/math/acosh.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/math/acosh');
diff --git a/node_modules/core-js/features/math/asinh.js b/node_modules/core-js/features/math/asinh.js
new file mode 100644
index 0000000..6b9eb95
--- /dev/null
+++ b/node_modules/core-js/features/math/asinh.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/math/asinh');
diff --git a/node_modules/core-js/features/math/atanh.js b/node_modules/core-js/features/math/atanh.js
new file mode 100644
index 0000000..8217711
--- /dev/null
+++ b/node_modules/core-js/features/math/atanh.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/math/atanh');
diff --git a/node_modules/core-js/features/math/cbrt.js b/node_modules/core-js/features/math/cbrt.js
new file mode 100644
index 0000000..f9b9faa
--- /dev/null
+++ b/node_modules/core-js/features/math/cbrt.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/math/cbrt');
diff --git a/node_modules/core-js/features/math/clamp.js b/node_modules/core-js/features/math/clamp.js
new file mode 100644
index 0000000..c2f8174
--- /dev/null
+++ b/node_modules/core-js/features/math/clamp.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/math/clamp');
diff --git a/node_modules/core-js/features/math/clz32.js b/node_modules/core-js/features/math/clz32.js
new file mode 100644
index 0000000..2841081
--- /dev/null
+++ b/node_modules/core-js/features/math/clz32.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/math/clz32');
diff --git a/node_modules/core-js/features/math/cosh.js b/node_modules/core-js/features/math/cosh.js
new file mode 100644
index 0000000..65e2661
--- /dev/null
+++ b/node_modules/core-js/features/math/cosh.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/math/cosh');
diff --git a/node_modules/core-js/features/math/deg-per-rad.js b/node_modules/core-js/features/math/deg-per-rad.js
new file mode 100644
index 0000000..110d845
--- /dev/null
+++ b/node_modules/core-js/features/math/deg-per-rad.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/math/deg-per-rad');
diff --git a/node_modules/core-js/features/math/degrees.js b/node_modules/core-js/features/math/degrees.js
new file mode 100644
index 0000000..76853a8
--- /dev/null
+++ b/node_modules/core-js/features/math/degrees.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/math/degrees');
diff --git a/node_modules/core-js/features/math/expm1.js b/node_modules/core-js/features/math/expm1.js
new file mode 100644
index 0000000..800178a
--- /dev/null
+++ b/node_modules/core-js/features/math/expm1.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/math/expm1');
diff --git a/node_modules/core-js/features/math/f16round.js b/node_modules/core-js/features/math/f16round.js
new file mode 100644
index 0000000..ef46057
--- /dev/null
+++ b/node_modules/core-js/features/math/f16round.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/math/f16round');
diff --git a/node_modules/core-js/features/math/fround.js b/node_modules/core-js/features/math/fround.js
new file mode 100644
index 0000000..2d0ffb9
--- /dev/null
+++ b/node_modules/core-js/features/math/fround.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/math/fround');
diff --git a/node_modules/core-js/features/math/fscale.js b/node_modules/core-js/features/math/fscale.js
new file mode 100644
index 0000000..a3c810e
--- /dev/null
+++ b/node_modules/core-js/features/math/fscale.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/math/fscale');
diff --git a/node_modules/core-js/features/math/hypot.js b/node_modules/core-js/features/math/hypot.js
new file mode 100644
index 0000000..440e05b
--- /dev/null
+++ b/node_modules/core-js/features/math/hypot.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/math/hypot');
diff --git a/node_modules/core-js/features/math/iaddh.js b/node_modules/core-js/features/math/iaddh.js
new file mode 100644
index 0000000..41b6022
--- /dev/null
+++ b/node_modules/core-js/features/math/iaddh.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/math/iaddh');
diff --git a/node_modules/core-js/features/math/imul.js b/node_modules/core-js/features/math/imul.js
new file mode 100644
index 0000000..6ea4a59
--- /dev/null
+++ b/node_modules/core-js/features/math/imul.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/math/imul');
diff --git a/node_modules/core-js/features/math/imulh.js b/node_modules/core-js/features/math/imulh.js
new file mode 100644
index 0000000..8d3aa00
--- /dev/null
+++ b/node_modules/core-js/features/math/imulh.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/math/imulh');
diff --git a/node_modules/core-js/features/math/index.js b/node_modules/core-js/features/math/index.js
new file mode 100644
index 0000000..a81bf12
--- /dev/null
+++ b/node_modules/core-js/features/math/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/math');
diff --git a/node_modules/core-js/features/math/isubh.js b/node_modules/core-js/features/math/isubh.js
new file mode 100644
index 0000000..230ac6d
--- /dev/null
+++ b/node_modules/core-js/features/math/isubh.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/math/isubh');
diff --git a/node_modules/core-js/features/math/log10.js b/node_modules/core-js/features/math/log10.js
new file mode 100644
index 0000000..318026b
--- /dev/null
+++ b/node_modules/core-js/features/math/log10.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/math/log10');
diff --git a/node_modules/core-js/features/math/log1p.js b/node_modules/core-js/features/math/log1p.js
new file mode 100644
index 0000000..6ba95b3
--- /dev/null
+++ b/node_modules/core-js/features/math/log1p.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/math/log1p');
diff --git a/node_modules/core-js/features/math/log2.js b/node_modules/core-js/features/math/log2.js
new file mode 100644
index 0000000..5864670
--- /dev/null
+++ b/node_modules/core-js/features/math/log2.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/math/log2');
diff --git a/node_modules/core-js/features/math/rad-per-deg.js b/node_modules/core-js/features/math/rad-per-deg.js
new file mode 100644
index 0000000..5835603
--- /dev/null
+++ b/node_modules/core-js/features/math/rad-per-deg.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/math/rad-per-deg');
diff --git a/node_modules/core-js/features/math/radians.js b/node_modules/core-js/features/math/radians.js
new file mode 100644
index 0000000..24b0d60
--- /dev/null
+++ b/node_modules/core-js/features/math/radians.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/math/radians');
diff --git a/node_modules/core-js/features/math/scale.js b/node_modules/core-js/features/math/scale.js
new file mode 100644
index 0000000..5ab06d2
--- /dev/null
+++ b/node_modules/core-js/features/math/scale.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/math/scale');
diff --git a/node_modules/core-js/features/math/seeded-prng.js b/node_modules/core-js/features/math/seeded-prng.js
new file mode 100644
index 0000000..2974ed0
--- /dev/null
+++ b/node_modules/core-js/features/math/seeded-prng.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/math/seeded-prng');
diff --git a/node_modules/core-js/features/math/sign.js b/node_modules/core-js/features/math/sign.js
new file mode 100644
index 0000000..f7d2f5b
--- /dev/null
+++ b/node_modules/core-js/features/math/sign.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/math/sign');
diff --git a/node_modules/core-js/features/math/signbit.js b/node_modules/core-js/features/math/signbit.js
new file mode 100644
index 0000000..04d90f3
--- /dev/null
+++ b/node_modules/core-js/features/math/signbit.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/math/signbit');
diff --git a/node_modules/core-js/features/math/sinh.js b/node_modules/core-js/features/math/sinh.js
new file mode 100644
index 0000000..efa726f
--- /dev/null
+++ b/node_modules/core-js/features/math/sinh.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/math/sinh');
diff --git a/node_modules/core-js/features/math/sum-precise.js b/node_modules/core-js/features/math/sum-precise.js
new file mode 100644
index 0000000..9b97747
--- /dev/null
+++ b/node_modules/core-js/features/math/sum-precise.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/math/sum-precise');
diff --git a/node_modules/core-js/features/math/tanh.js b/node_modules/core-js/features/math/tanh.js
new file mode 100644
index 0000000..64b2af9
--- /dev/null
+++ b/node_modules/core-js/features/math/tanh.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/math/tanh');
diff --git a/node_modules/core-js/features/math/to-string-tag.js b/node_modules/core-js/features/math/to-string-tag.js
new file mode 100644
index 0000000..1e098bc
--- /dev/null
+++ b/node_modules/core-js/features/math/to-string-tag.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/math/to-string-tag');
diff --git a/node_modules/core-js/features/math/trunc.js b/node_modules/core-js/features/math/trunc.js
new file mode 100644
index 0000000..5e0503e
--- /dev/null
+++ b/node_modules/core-js/features/math/trunc.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/math/trunc');
diff --git a/node_modules/core-js/features/math/umulh.js b/node_modules/core-js/features/math/umulh.js
new file mode 100644
index 0000000..a75cfb2
--- /dev/null
+++ b/node_modules/core-js/features/math/umulh.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/math/umulh');
diff --git a/node_modules/core-js/features/number/constructor.js b/node_modules/core-js/features/number/constructor.js
new file mode 100644
index 0000000..c8b7fd2
--- /dev/null
+++ b/node_modules/core-js/features/number/constructor.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/number/constructor');
diff --git a/node_modules/core-js/features/number/epsilon.js b/node_modules/core-js/features/number/epsilon.js
new file mode 100644
index 0000000..3ef9388
--- /dev/null
+++ b/node_modules/core-js/features/number/epsilon.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/number/epsilon');
diff --git a/node_modules/core-js/features/number/from-string.js b/node_modules/core-js/features/number/from-string.js
new file mode 100644
index 0000000..94449dc
--- /dev/null
+++ b/node_modules/core-js/features/number/from-string.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/number/from-string');
diff --git a/node_modules/core-js/features/number/index.js b/node_modules/core-js/features/number/index.js
new file mode 100644
index 0000000..cc284ab
--- /dev/null
+++ b/node_modules/core-js/features/number/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/number');
diff --git a/node_modules/core-js/features/number/is-finite.js b/node_modules/core-js/features/number/is-finite.js
new file mode 100644
index 0000000..6b4d686
--- /dev/null
+++ b/node_modules/core-js/features/number/is-finite.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/number/is-finite');
diff --git a/node_modules/core-js/features/number/is-integer.js b/node_modules/core-js/features/number/is-integer.js
new file mode 100644
index 0000000..875de43
--- /dev/null
+++ b/node_modules/core-js/features/number/is-integer.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/number/is-integer');
diff --git a/node_modules/core-js/features/number/is-nan.js b/node_modules/core-js/features/number/is-nan.js
new file mode 100644
index 0000000..3d04b6c
--- /dev/null
+++ b/node_modules/core-js/features/number/is-nan.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/number/is-nan');
diff --git a/node_modules/core-js/features/number/is-safe-integer.js b/node_modules/core-js/features/number/is-safe-integer.js
new file mode 100644
index 0000000..80138ab
--- /dev/null
+++ b/node_modules/core-js/features/number/is-safe-integer.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/number/is-safe-integer');
diff --git a/node_modules/core-js/features/number/max-safe-integer.js b/node_modules/core-js/features/number/max-safe-integer.js
new file mode 100644
index 0000000..f197c19
--- /dev/null
+++ b/node_modules/core-js/features/number/max-safe-integer.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/number/max-safe-integer');
diff --git a/node_modules/core-js/features/number/min-safe-integer.js b/node_modules/core-js/features/number/min-safe-integer.js
new file mode 100644
index 0000000..eb2f1cc
--- /dev/null
+++ b/node_modules/core-js/features/number/min-safe-integer.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/number/min-safe-integer');
diff --git a/node_modules/core-js/features/number/parse-float.js b/node_modules/core-js/features/number/parse-float.js
new file mode 100644
index 0000000..f7a26ad
--- /dev/null
+++ b/node_modules/core-js/features/number/parse-float.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/number/parse-float');
diff --git a/node_modules/core-js/features/number/parse-int.js b/node_modules/core-js/features/number/parse-int.js
new file mode 100644
index 0000000..7386793
--- /dev/null
+++ b/node_modules/core-js/features/number/parse-int.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/number/parse-int');
diff --git a/node_modules/core-js/features/number/range.js b/node_modules/core-js/features/number/range.js
new file mode 100644
index 0000000..baaff2d
--- /dev/null
+++ b/node_modules/core-js/features/number/range.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/number/range');
diff --git a/node_modules/core-js/features/number/to-exponential.js b/node_modules/core-js/features/number/to-exponential.js
new file mode 100644
index 0000000..d43a5cb
--- /dev/null
+++ b/node_modules/core-js/features/number/to-exponential.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/number/to-exponential');
diff --git a/node_modules/core-js/features/number/to-fixed.js b/node_modules/core-js/features/number/to-fixed.js
new file mode 100644
index 0000000..2bfde18
--- /dev/null
+++ b/node_modules/core-js/features/number/to-fixed.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/number/to-fixed');
diff --git a/node_modules/core-js/features/number/to-precision.js b/node_modules/core-js/features/number/to-precision.js
new file mode 100644
index 0000000..7b11461
--- /dev/null
+++ b/node_modules/core-js/features/number/to-precision.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/number/to-precision');
diff --git a/node_modules/core-js/features/number/virtual/index.js b/node_modules/core-js/features/number/virtual/index.js
new file mode 100644
index 0000000..ecbe682
--- /dev/null
+++ b/node_modules/core-js/features/number/virtual/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/number/virtual');
diff --git a/node_modules/core-js/features/number/virtual/to-exponential.js b/node_modules/core-js/features/number/virtual/to-exponential.js
new file mode 100644
index 0000000..cfea35c
--- /dev/null
+++ b/node_modules/core-js/features/number/virtual/to-exponential.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/number/virtual/to-exponential');
diff --git a/node_modules/core-js/features/number/virtual/to-fixed.js b/node_modules/core-js/features/number/virtual/to-fixed.js
new file mode 100644
index 0000000..1189dde
--- /dev/null
+++ b/node_modules/core-js/features/number/virtual/to-fixed.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/number/virtual/to-fixed');
diff --git a/node_modules/core-js/features/number/virtual/to-precision.js b/node_modules/core-js/features/number/virtual/to-precision.js
new file mode 100644
index 0000000..ae1ecf0
--- /dev/null
+++ b/node_modules/core-js/features/number/virtual/to-precision.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/number/virtual/to-precision');
diff --git a/node_modules/core-js/features/object/assign.js b/node_modules/core-js/features/object/assign.js
new file mode 100644
index 0000000..5683ee5
--- /dev/null
+++ b/node_modules/core-js/features/object/assign.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/object/assign');
diff --git a/node_modules/core-js/features/object/create.js b/node_modules/core-js/features/object/create.js
new file mode 100644
index 0000000..64219ba
--- /dev/null
+++ b/node_modules/core-js/features/object/create.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/object/create');
diff --git a/node_modules/core-js/features/object/define-getter.js b/node_modules/core-js/features/object/define-getter.js
new file mode 100644
index 0000000..ca4f069
--- /dev/null
+++ b/node_modules/core-js/features/object/define-getter.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/object/define-getter');
diff --git a/node_modules/core-js/features/object/define-properties.js b/node_modules/core-js/features/object/define-properties.js
new file mode 100644
index 0000000..9304e18
--- /dev/null
+++ b/node_modules/core-js/features/object/define-properties.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/object/define-properties');
diff --git a/node_modules/core-js/features/object/define-property.js b/node_modules/core-js/features/object/define-property.js
new file mode 100644
index 0000000..73e600e
--- /dev/null
+++ b/node_modules/core-js/features/object/define-property.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/object/define-property');
diff --git a/node_modules/core-js/features/object/define-setter.js b/node_modules/core-js/features/object/define-setter.js
new file mode 100644
index 0000000..433c6db
--- /dev/null
+++ b/node_modules/core-js/features/object/define-setter.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/object/define-setter');
diff --git a/node_modules/core-js/features/object/entries.js b/node_modules/core-js/features/object/entries.js
new file mode 100644
index 0000000..571de8a
--- /dev/null
+++ b/node_modules/core-js/features/object/entries.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/object/entries');
diff --git a/node_modules/core-js/features/object/freeze.js b/node_modules/core-js/features/object/freeze.js
new file mode 100644
index 0000000..16498eb
--- /dev/null
+++ b/node_modules/core-js/features/object/freeze.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/object/freeze');
diff --git a/node_modules/core-js/features/object/from-entries.js b/node_modules/core-js/features/object/from-entries.js
new file mode 100644
index 0000000..ba13c50
--- /dev/null
+++ b/node_modules/core-js/features/object/from-entries.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/object/from-entries');
diff --git a/node_modules/core-js/features/object/get-own-property-descriptor.js b/node_modules/core-js/features/object/get-own-property-descriptor.js
new file mode 100644
index 0000000..8830ad1
--- /dev/null
+++ b/node_modules/core-js/features/object/get-own-property-descriptor.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/object/get-own-property-descriptor');
diff --git a/node_modules/core-js/features/object/get-own-property-descriptors.js b/node_modules/core-js/features/object/get-own-property-descriptors.js
new file mode 100644
index 0000000..387f6ba
--- /dev/null
+++ b/node_modules/core-js/features/object/get-own-property-descriptors.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/object/get-own-property-descriptors');
diff --git a/node_modules/core-js/features/object/get-own-property-names.js b/node_modules/core-js/features/object/get-own-property-names.js
new file mode 100644
index 0000000..908d1bc
--- /dev/null
+++ b/node_modules/core-js/features/object/get-own-property-names.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/object/get-own-property-names');
diff --git a/node_modules/core-js/features/object/get-own-property-symbols.js b/node_modules/core-js/features/object/get-own-property-symbols.js
new file mode 100644
index 0000000..5c07b43
--- /dev/null
+++ b/node_modules/core-js/features/object/get-own-property-symbols.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/object/get-own-property-symbols');
diff --git a/node_modules/core-js/features/object/get-prototype-of.js b/node_modules/core-js/features/object/get-prototype-of.js
new file mode 100644
index 0000000..42892a9
--- /dev/null
+++ b/node_modules/core-js/features/object/get-prototype-of.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/object/get-prototype-of');
diff --git a/node_modules/core-js/features/object/group-by.js b/node_modules/core-js/features/object/group-by.js
new file mode 100644
index 0000000..0453c41
--- /dev/null
+++ b/node_modules/core-js/features/object/group-by.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/object/group-by');
diff --git a/node_modules/core-js/features/object/has-own.js b/node_modules/core-js/features/object/has-own.js
new file mode 100644
index 0000000..54f123a
--- /dev/null
+++ b/node_modules/core-js/features/object/has-own.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/object/has-own');
diff --git a/node_modules/core-js/features/object/index.js b/node_modules/core-js/features/object/index.js
new file mode 100644
index 0000000..5c340fa
--- /dev/null
+++ b/node_modules/core-js/features/object/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/object');
diff --git a/node_modules/core-js/features/object/is-extensible.js b/node_modules/core-js/features/object/is-extensible.js
new file mode 100644
index 0000000..9c5cf71
--- /dev/null
+++ b/node_modules/core-js/features/object/is-extensible.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/object/is-extensible');
diff --git a/node_modules/core-js/features/object/is-frozen.js b/node_modules/core-js/features/object/is-frozen.js
new file mode 100644
index 0000000..5b55ff2
--- /dev/null
+++ b/node_modules/core-js/features/object/is-frozen.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/object/is-frozen');
diff --git a/node_modules/core-js/features/object/is-sealed.js b/node_modules/core-js/features/object/is-sealed.js
new file mode 100644
index 0000000..ca9b6d5
--- /dev/null
+++ b/node_modules/core-js/features/object/is-sealed.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/object/is-sealed');
diff --git a/node_modules/core-js/features/object/is.js b/node_modules/core-js/features/object/is.js
new file mode 100644
index 0000000..3c1cc37
--- /dev/null
+++ b/node_modules/core-js/features/object/is.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/object/is');
diff --git a/node_modules/core-js/features/object/iterate-entries.js b/node_modules/core-js/features/object/iterate-entries.js
new file mode 100644
index 0000000..9062fd9
--- /dev/null
+++ b/node_modules/core-js/features/object/iterate-entries.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/object/iterate-entries');
diff --git a/node_modules/core-js/features/object/iterate-keys.js b/node_modules/core-js/features/object/iterate-keys.js
new file mode 100644
index 0000000..399bf68
--- /dev/null
+++ b/node_modules/core-js/features/object/iterate-keys.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/object/iterate-keys');
diff --git a/node_modules/core-js/features/object/iterate-values.js b/node_modules/core-js/features/object/iterate-values.js
new file mode 100644
index 0000000..9071119
--- /dev/null
+++ b/node_modules/core-js/features/object/iterate-values.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/object/iterate-values');
diff --git a/node_modules/core-js/features/object/keys.js b/node_modules/core-js/features/object/keys.js
new file mode 100644
index 0000000..96c50aa
--- /dev/null
+++ b/node_modules/core-js/features/object/keys.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/object/keys');
diff --git a/node_modules/core-js/features/object/lookup-getter.js b/node_modules/core-js/features/object/lookup-getter.js
new file mode 100644
index 0000000..adb1c5f
--- /dev/null
+++ b/node_modules/core-js/features/object/lookup-getter.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/object/lookup-getter');
diff --git a/node_modules/core-js/features/object/lookup-setter.js b/node_modules/core-js/features/object/lookup-setter.js
new file mode 100644
index 0000000..2f5f762
--- /dev/null
+++ b/node_modules/core-js/features/object/lookup-setter.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/object/lookup-setter');
diff --git a/node_modules/core-js/features/object/prevent-extensions.js b/node_modules/core-js/features/object/prevent-extensions.js
new file mode 100644
index 0000000..82d6ec6
--- /dev/null
+++ b/node_modules/core-js/features/object/prevent-extensions.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/object/prevent-extensions');
diff --git a/node_modules/core-js/features/object/proto.js b/node_modules/core-js/features/object/proto.js
new file mode 100644
index 0000000..19d734a
--- /dev/null
+++ b/node_modules/core-js/features/object/proto.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/object/proto');
diff --git a/node_modules/core-js/features/object/seal.js b/node_modules/core-js/features/object/seal.js
new file mode 100644
index 0000000..938fdea
--- /dev/null
+++ b/node_modules/core-js/features/object/seal.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/object/seal');
diff --git a/node_modules/core-js/features/object/set-prototype-of.js b/node_modules/core-js/features/object/set-prototype-of.js
new file mode 100644
index 0000000..c675249
--- /dev/null
+++ b/node_modules/core-js/features/object/set-prototype-of.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/object/set-prototype-of');
diff --git a/node_modules/core-js/features/object/to-string.js b/node_modules/core-js/features/object/to-string.js
new file mode 100644
index 0000000..dfe3d9a
--- /dev/null
+++ b/node_modules/core-js/features/object/to-string.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/object/to-string');
diff --git a/node_modules/core-js/features/object/values.js b/node_modules/core-js/features/object/values.js
new file mode 100644
index 0000000..a24b011
--- /dev/null
+++ b/node_modules/core-js/features/object/values.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/object/values');
diff --git a/node_modules/core-js/features/observable/index.js b/node_modules/core-js/features/observable/index.js
new file mode 100644
index 0000000..8a6a134
--- /dev/null
+++ b/node_modules/core-js/features/observable/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/observable');
diff --git a/node_modules/core-js/features/parse-float.js b/node_modules/core-js/features/parse-float.js
new file mode 100644
index 0000000..c4f9729
--- /dev/null
+++ b/node_modules/core-js/features/parse-float.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../full/parse-float');
diff --git a/node_modules/core-js/features/parse-int.js b/node_modules/core-js/features/parse-int.js
new file mode 100644
index 0000000..ed5510f
--- /dev/null
+++ b/node_modules/core-js/features/parse-int.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../full/parse-int');
diff --git a/node_modules/core-js/features/promise/all-settled.js b/node_modules/core-js/features/promise/all-settled.js
new file mode 100644
index 0000000..4a11ad8
--- /dev/null
+++ b/node_modules/core-js/features/promise/all-settled.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/promise/all-settled');
diff --git a/node_modules/core-js/features/promise/any.js b/node_modules/core-js/features/promise/any.js
new file mode 100644
index 0000000..8aca210
--- /dev/null
+++ b/node_modules/core-js/features/promise/any.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/promise/any');
diff --git a/node_modules/core-js/features/promise/finally.js b/node_modules/core-js/features/promise/finally.js
new file mode 100644
index 0000000..597665b
--- /dev/null
+++ b/node_modules/core-js/features/promise/finally.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/promise/finally');
diff --git a/node_modules/core-js/features/promise/index.js b/node_modules/core-js/features/promise/index.js
new file mode 100644
index 0000000..087ef05
--- /dev/null
+++ b/node_modules/core-js/features/promise/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/promise');
diff --git a/node_modules/core-js/features/promise/try.js b/node_modules/core-js/features/promise/try.js
new file mode 100644
index 0000000..51e03f3
--- /dev/null
+++ b/node_modules/core-js/features/promise/try.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/promise/try');
diff --git a/node_modules/core-js/features/promise/with-resolvers.js b/node_modules/core-js/features/promise/with-resolvers.js
new file mode 100644
index 0000000..d605d92
--- /dev/null
+++ b/node_modules/core-js/features/promise/with-resolvers.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/promise/with-resolvers');
diff --git a/node_modules/core-js/features/queue-microtask.js b/node_modules/core-js/features/queue-microtask.js
new file mode 100644
index 0000000..2eba40c
--- /dev/null
+++ b/node_modules/core-js/features/queue-microtask.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../full/queue-microtask');
diff --git a/node_modules/core-js/features/reflect/apply.js b/node_modules/core-js/features/reflect/apply.js
new file mode 100644
index 0000000..91bd4b7
--- /dev/null
+++ b/node_modules/core-js/features/reflect/apply.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/reflect/apply');
diff --git a/node_modules/core-js/features/reflect/construct.js b/node_modules/core-js/features/reflect/construct.js
new file mode 100644
index 0000000..0cac364
--- /dev/null
+++ b/node_modules/core-js/features/reflect/construct.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/reflect/construct');
diff --git a/node_modules/core-js/features/reflect/define-metadata.js b/node_modules/core-js/features/reflect/define-metadata.js
new file mode 100644
index 0000000..ebae09e
--- /dev/null
+++ b/node_modules/core-js/features/reflect/define-metadata.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/reflect/define-metadata');
diff --git a/node_modules/core-js/features/reflect/define-property.js b/node_modules/core-js/features/reflect/define-property.js
new file mode 100644
index 0000000..4505faa
--- /dev/null
+++ b/node_modules/core-js/features/reflect/define-property.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/reflect/define-property');
diff --git a/node_modules/core-js/features/reflect/delete-metadata.js b/node_modules/core-js/features/reflect/delete-metadata.js
new file mode 100644
index 0000000..a7a5de5
--- /dev/null
+++ b/node_modules/core-js/features/reflect/delete-metadata.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/reflect/delete-metadata');
diff --git a/node_modules/core-js/features/reflect/delete-property.js b/node_modules/core-js/features/reflect/delete-property.js
new file mode 100644
index 0000000..30f0bcb
--- /dev/null
+++ b/node_modules/core-js/features/reflect/delete-property.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/reflect/delete-property');
diff --git a/node_modules/core-js/features/reflect/get-metadata-keys.js b/node_modules/core-js/features/reflect/get-metadata-keys.js
new file mode 100644
index 0000000..ddb8096
--- /dev/null
+++ b/node_modules/core-js/features/reflect/get-metadata-keys.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/reflect/get-metadata-keys');
diff --git a/node_modules/core-js/features/reflect/get-metadata.js b/node_modules/core-js/features/reflect/get-metadata.js
new file mode 100644
index 0000000..df1a505
--- /dev/null
+++ b/node_modules/core-js/features/reflect/get-metadata.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/reflect/get-metadata');
diff --git a/node_modules/core-js/features/reflect/get-own-metadata-keys.js b/node_modules/core-js/features/reflect/get-own-metadata-keys.js
new file mode 100644
index 0000000..900520a
--- /dev/null
+++ b/node_modules/core-js/features/reflect/get-own-metadata-keys.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/reflect/get-own-metadata-keys');
diff --git a/node_modules/core-js/features/reflect/get-own-metadata.js b/node_modules/core-js/features/reflect/get-own-metadata.js
new file mode 100644
index 0000000..4a57ec5
--- /dev/null
+++ b/node_modules/core-js/features/reflect/get-own-metadata.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/reflect/get-own-metadata');
diff --git a/node_modules/core-js/features/reflect/get-own-property-descriptor.js b/node_modules/core-js/features/reflect/get-own-property-descriptor.js
new file mode 100644
index 0000000..3762167
--- /dev/null
+++ b/node_modules/core-js/features/reflect/get-own-property-descriptor.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/reflect/get-own-property-descriptor');
diff --git a/node_modules/core-js/features/reflect/get-prototype-of.js b/node_modules/core-js/features/reflect/get-prototype-of.js
new file mode 100644
index 0000000..e9e5ccc
--- /dev/null
+++ b/node_modules/core-js/features/reflect/get-prototype-of.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/reflect/get-prototype-of');
diff --git a/node_modules/core-js/features/reflect/get.js b/node_modules/core-js/features/reflect/get.js
new file mode 100644
index 0000000..208ac21
--- /dev/null
+++ b/node_modules/core-js/features/reflect/get.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/reflect/get');
diff --git a/node_modules/core-js/features/reflect/has-metadata.js b/node_modules/core-js/features/reflect/has-metadata.js
new file mode 100644
index 0000000..4672bb1
--- /dev/null
+++ b/node_modules/core-js/features/reflect/has-metadata.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/reflect/has-metadata');
diff --git a/node_modules/core-js/features/reflect/has-own-metadata.js b/node_modules/core-js/features/reflect/has-own-metadata.js
new file mode 100644
index 0000000..312bbcd
--- /dev/null
+++ b/node_modules/core-js/features/reflect/has-own-metadata.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/reflect/has-own-metadata');
diff --git a/node_modules/core-js/features/reflect/has.js b/node_modules/core-js/features/reflect/has.js
new file mode 100644
index 0000000..cce123e
--- /dev/null
+++ b/node_modules/core-js/features/reflect/has.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/reflect/has');
diff --git a/node_modules/core-js/features/reflect/index.js b/node_modules/core-js/features/reflect/index.js
new file mode 100644
index 0000000..71c2937
--- /dev/null
+++ b/node_modules/core-js/features/reflect/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/reflect');
diff --git a/node_modules/core-js/features/reflect/is-extensible.js b/node_modules/core-js/features/reflect/is-extensible.js
new file mode 100644
index 0000000..0505e0d
--- /dev/null
+++ b/node_modules/core-js/features/reflect/is-extensible.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/reflect/is-extensible');
diff --git a/node_modules/core-js/features/reflect/metadata.js b/node_modules/core-js/features/reflect/metadata.js
new file mode 100644
index 0000000..0be9239
--- /dev/null
+++ b/node_modules/core-js/features/reflect/metadata.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/reflect/metadata');
diff --git a/node_modules/core-js/features/reflect/own-keys.js b/node_modules/core-js/features/reflect/own-keys.js
new file mode 100644
index 0000000..92abc14
--- /dev/null
+++ b/node_modules/core-js/features/reflect/own-keys.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/reflect/own-keys');
diff --git a/node_modules/core-js/features/reflect/prevent-extensions.js b/node_modules/core-js/features/reflect/prevent-extensions.js
new file mode 100644
index 0000000..2ff709a
--- /dev/null
+++ b/node_modules/core-js/features/reflect/prevent-extensions.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/reflect/prevent-extensions');
diff --git a/node_modules/core-js/features/reflect/set-prototype-of.js b/node_modules/core-js/features/reflect/set-prototype-of.js
new file mode 100644
index 0000000..0de0f6f
--- /dev/null
+++ b/node_modules/core-js/features/reflect/set-prototype-of.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/reflect/set-prototype-of');
diff --git a/node_modules/core-js/features/reflect/set.js b/node_modules/core-js/features/reflect/set.js
new file mode 100644
index 0000000..64d2f25
--- /dev/null
+++ b/node_modules/core-js/features/reflect/set.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/reflect/set');
diff --git a/node_modules/core-js/features/reflect/to-string-tag.js b/node_modules/core-js/features/reflect/to-string-tag.js
new file mode 100644
index 0000000..8025077
--- /dev/null
+++ b/node_modules/core-js/features/reflect/to-string-tag.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/reflect/to-string-tag');
diff --git a/node_modules/core-js/features/regexp/constructor.js b/node_modules/core-js/features/regexp/constructor.js
new file mode 100644
index 0000000..4ebcde9
--- /dev/null
+++ b/node_modules/core-js/features/regexp/constructor.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/regexp/constructor');
diff --git a/node_modules/core-js/features/regexp/dot-all.js b/node_modules/core-js/features/regexp/dot-all.js
new file mode 100644
index 0000000..54e2001
--- /dev/null
+++ b/node_modules/core-js/features/regexp/dot-all.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/regexp/dot-all');
diff --git a/node_modules/core-js/features/regexp/escape.js b/node_modules/core-js/features/regexp/escape.js
new file mode 100644
index 0000000..49cff6e
--- /dev/null
+++ b/node_modules/core-js/features/regexp/escape.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/regexp/escape');
diff --git a/node_modules/core-js/features/regexp/flags.js b/node_modules/core-js/features/regexp/flags.js
new file mode 100644
index 0000000..7f42d4c
--- /dev/null
+++ b/node_modules/core-js/features/regexp/flags.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/regexp/flags');
diff --git a/node_modules/core-js/features/regexp/index.js b/node_modules/core-js/features/regexp/index.js
new file mode 100644
index 0000000..c0ac4a6
--- /dev/null
+++ b/node_modules/core-js/features/regexp/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/regexp');
diff --git a/node_modules/core-js/features/regexp/match.js b/node_modules/core-js/features/regexp/match.js
new file mode 100644
index 0000000..ee1ff23
--- /dev/null
+++ b/node_modules/core-js/features/regexp/match.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/regexp/match');
diff --git a/node_modules/core-js/features/regexp/replace.js b/node_modules/core-js/features/regexp/replace.js
new file mode 100644
index 0000000..ec82d10
--- /dev/null
+++ b/node_modules/core-js/features/regexp/replace.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/regexp/replace');
diff --git a/node_modules/core-js/features/regexp/search.js b/node_modules/core-js/features/regexp/search.js
new file mode 100644
index 0000000..81bf05a
--- /dev/null
+++ b/node_modules/core-js/features/regexp/search.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/regexp/search');
diff --git a/node_modules/core-js/features/regexp/split.js b/node_modules/core-js/features/regexp/split.js
new file mode 100644
index 0000000..de101d1
--- /dev/null
+++ b/node_modules/core-js/features/regexp/split.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/regexp/split');
diff --git a/node_modules/core-js/features/regexp/sticky.js b/node_modules/core-js/features/regexp/sticky.js
new file mode 100644
index 0000000..a126677
--- /dev/null
+++ b/node_modules/core-js/features/regexp/sticky.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/regexp/sticky');
diff --git a/node_modules/core-js/features/regexp/test.js b/node_modules/core-js/features/regexp/test.js
new file mode 100644
index 0000000..4a71272
--- /dev/null
+++ b/node_modules/core-js/features/regexp/test.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/regexp/test');
diff --git a/node_modules/core-js/features/regexp/to-string.js b/node_modules/core-js/features/regexp/to-string.js
new file mode 100644
index 0000000..231dd7f
--- /dev/null
+++ b/node_modules/core-js/features/regexp/to-string.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/regexp/to-string');
diff --git a/node_modules/core-js/features/self.js b/node_modules/core-js/features/self.js
new file mode 100644
index 0000000..8d6cc48
--- /dev/null
+++ b/node_modules/core-js/features/self.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../full/self');
diff --git a/node_modules/core-js/features/set-immediate.js b/node_modules/core-js/features/set-immediate.js
new file mode 100644
index 0000000..596f174
--- /dev/null
+++ b/node_modules/core-js/features/set-immediate.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../full/set-immediate');
diff --git a/node_modules/core-js/features/set-interval.js b/node_modules/core-js/features/set-interval.js
new file mode 100644
index 0000000..87f9063
--- /dev/null
+++ b/node_modules/core-js/features/set-interval.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../full/set-interval');
diff --git a/node_modules/core-js/features/set-timeout.js b/node_modules/core-js/features/set-timeout.js
new file mode 100644
index 0000000..572fe7c
--- /dev/null
+++ b/node_modules/core-js/features/set-timeout.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../full/set-timeout');
diff --git a/node_modules/core-js/features/set/add-all.js b/node_modules/core-js/features/set/add-all.js
new file mode 100644
index 0000000..9483e5e
--- /dev/null
+++ b/node_modules/core-js/features/set/add-all.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/set/add-all');
diff --git a/node_modules/core-js/features/set/delete-all.js b/node_modules/core-js/features/set/delete-all.js
new file mode 100644
index 0000000..bbc2a2d
--- /dev/null
+++ b/node_modules/core-js/features/set/delete-all.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/set/delete-all');
diff --git a/node_modules/core-js/features/set/difference.js b/node_modules/core-js/features/set/difference.js
new file mode 100644
index 0000000..bd086a8
--- /dev/null
+++ b/node_modules/core-js/features/set/difference.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/set/difference');
diff --git a/node_modules/core-js/features/set/every.js b/node_modules/core-js/features/set/every.js
new file mode 100644
index 0000000..ee6f35a
--- /dev/null
+++ b/node_modules/core-js/features/set/every.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/set/every');
diff --git a/node_modules/core-js/features/set/filter.js b/node_modules/core-js/features/set/filter.js
new file mode 100644
index 0000000..9f15da0
--- /dev/null
+++ b/node_modules/core-js/features/set/filter.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/set/filter');
diff --git a/node_modules/core-js/features/set/find.js b/node_modules/core-js/features/set/find.js
new file mode 100644
index 0000000..d3345d5
--- /dev/null
+++ b/node_modules/core-js/features/set/find.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/set/find');
diff --git a/node_modules/core-js/features/set/from.js b/node_modules/core-js/features/set/from.js
new file mode 100644
index 0000000..fcf53c4
--- /dev/null
+++ b/node_modules/core-js/features/set/from.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/set/from');
diff --git a/node_modules/core-js/features/set/index.js b/node_modules/core-js/features/set/index.js
new file mode 100644
index 0000000..b014ccf
--- /dev/null
+++ b/node_modules/core-js/features/set/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/set');
diff --git a/node_modules/core-js/features/set/intersection.js b/node_modules/core-js/features/set/intersection.js
new file mode 100644
index 0000000..013eccf
--- /dev/null
+++ b/node_modules/core-js/features/set/intersection.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/set/intersection');
diff --git a/node_modules/core-js/features/set/is-disjoint-from.js b/node_modules/core-js/features/set/is-disjoint-from.js
new file mode 100644
index 0000000..45b1726
--- /dev/null
+++ b/node_modules/core-js/features/set/is-disjoint-from.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/set/is-disjoint-from');
diff --git a/node_modules/core-js/features/set/is-subset-of.js b/node_modules/core-js/features/set/is-subset-of.js
new file mode 100644
index 0000000..0276665
--- /dev/null
+++ b/node_modules/core-js/features/set/is-subset-of.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/set/is-subset-of');
diff --git a/node_modules/core-js/features/set/is-superset-of.js b/node_modules/core-js/features/set/is-superset-of.js
new file mode 100644
index 0000000..d90cf53
--- /dev/null
+++ b/node_modules/core-js/features/set/is-superset-of.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/set/is-superset-of');
diff --git a/node_modules/core-js/features/set/join.js b/node_modules/core-js/features/set/join.js
new file mode 100644
index 0000000..74be35e
--- /dev/null
+++ b/node_modules/core-js/features/set/join.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/set/join');
diff --git a/node_modules/core-js/features/set/map.js b/node_modules/core-js/features/set/map.js
new file mode 100644
index 0000000..4a8d431
--- /dev/null
+++ b/node_modules/core-js/features/set/map.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/set/map');
diff --git a/node_modules/core-js/features/set/of.js b/node_modules/core-js/features/set/of.js
new file mode 100644
index 0000000..07c4b51
--- /dev/null
+++ b/node_modules/core-js/features/set/of.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/set/of');
diff --git a/node_modules/core-js/features/set/reduce.js b/node_modules/core-js/features/set/reduce.js
new file mode 100644
index 0000000..9a91617
--- /dev/null
+++ b/node_modules/core-js/features/set/reduce.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/set/reduce');
diff --git a/node_modules/core-js/features/set/some.js b/node_modules/core-js/features/set/some.js
new file mode 100644
index 0000000..cf445d5
--- /dev/null
+++ b/node_modules/core-js/features/set/some.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/set/some');
diff --git a/node_modules/core-js/features/set/symmetric-difference.js b/node_modules/core-js/features/set/symmetric-difference.js
new file mode 100644
index 0000000..66dbeb3
--- /dev/null
+++ b/node_modules/core-js/features/set/symmetric-difference.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/set/symmetric-difference');
diff --git a/node_modules/core-js/features/set/union.js b/node_modules/core-js/features/set/union.js
new file mode 100644
index 0000000..56b88c7
--- /dev/null
+++ b/node_modules/core-js/features/set/union.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/set/union');
diff --git a/node_modules/core-js/features/string/anchor.js b/node_modules/core-js/features/string/anchor.js
new file mode 100644
index 0000000..e319c4c
--- /dev/null
+++ b/node_modules/core-js/features/string/anchor.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/anchor');
diff --git a/node_modules/core-js/features/string/at.js b/node_modules/core-js/features/string/at.js
new file mode 100644
index 0000000..f052a4b
--- /dev/null
+++ b/node_modules/core-js/features/string/at.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/at');
diff --git a/node_modules/core-js/features/string/big.js b/node_modules/core-js/features/string/big.js
new file mode 100644
index 0000000..25db1cd
--- /dev/null
+++ b/node_modules/core-js/features/string/big.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/big');
diff --git a/node_modules/core-js/features/string/blink.js b/node_modules/core-js/features/string/blink.js
new file mode 100644
index 0000000..198acfb
--- /dev/null
+++ b/node_modules/core-js/features/string/blink.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/blink');
diff --git a/node_modules/core-js/features/string/bold.js b/node_modules/core-js/features/string/bold.js
new file mode 100644
index 0000000..12e3a98
--- /dev/null
+++ b/node_modules/core-js/features/string/bold.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/bold');
diff --git a/node_modules/core-js/features/string/code-point-at.js b/node_modules/core-js/features/string/code-point-at.js
new file mode 100644
index 0000000..21a1efc
--- /dev/null
+++ b/node_modules/core-js/features/string/code-point-at.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/code-point-at');
diff --git a/node_modules/core-js/features/string/code-points.js b/node_modules/core-js/features/string/code-points.js
new file mode 100644
index 0000000..aa721d7
--- /dev/null
+++ b/node_modules/core-js/features/string/code-points.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/code-points');
diff --git a/node_modules/core-js/features/string/cooked.js b/node_modules/core-js/features/string/cooked.js
new file mode 100644
index 0000000..cc7d80b
--- /dev/null
+++ b/node_modules/core-js/features/string/cooked.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/cooked');
diff --git a/node_modules/core-js/features/string/dedent.js b/node_modules/core-js/features/string/dedent.js
new file mode 100644
index 0000000..1417fea
--- /dev/null
+++ b/node_modules/core-js/features/string/dedent.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/dedent');
diff --git a/node_modules/core-js/features/string/ends-with.js b/node_modules/core-js/features/string/ends-with.js
new file mode 100644
index 0000000..82c8de3
--- /dev/null
+++ b/node_modules/core-js/features/string/ends-with.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/ends-with');
diff --git a/node_modules/core-js/features/string/fixed.js b/node_modules/core-js/features/string/fixed.js
new file mode 100644
index 0000000..18e3d12
--- /dev/null
+++ b/node_modules/core-js/features/string/fixed.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/fixed');
diff --git a/node_modules/core-js/features/string/fontcolor.js b/node_modules/core-js/features/string/fontcolor.js
new file mode 100644
index 0000000..d2173ad
--- /dev/null
+++ b/node_modules/core-js/features/string/fontcolor.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/fontcolor');
diff --git a/node_modules/core-js/features/string/fontsize.js b/node_modules/core-js/features/string/fontsize.js
new file mode 100644
index 0000000..60ed0de
--- /dev/null
+++ b/node_modules/core-js/features/string/fontsize.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/fontsize');
diff --git a/node_modules/core-js/features/string/from-code-point.js b/node_modules/core-js/features/string/from-code-point.js
new file mode 100644
index 0000000..4ae1760
--- /dev/null
+++ b/node_modules/core-js/features/string/from-code-point.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/from-code-point');
diff --git a/node_modules/core-js/features/string/includes.js b/node_modules/core-js/features/string/includes.js
new file mode 100644
index 0000000..a38daae
--- /dev/null
+++ b/node_modules/core-js/features/string/includes.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/includes');
diff --git a/node_modules/core-js/features/string/index.js b/node_modules/core-js/features/string/index.js
new file mode 100644
index 0000000..39dec7f
--- /dev/null
+++ b/node_modules/core-js/features/string/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string');
diff --git a/node_modules/core-js/features/string/is-well-formed.js b/node_modules/core-js/features/string/is-well-formed.js
new file mode 100644
index 0000000..8a3222e
--- /dev/null
+++ b/node_modules/core-js/features/string/is-well-formed.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/is-well-formed');
diff --git a/node_modules/core-js/features/string/italics.js b/node_modules/core-js/features/string/italics.js
new file mode 100644
index 0000000..2662142
--- /dev/null
+++ b/node_modules/core-js/features/string/italics.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/italics');
diff --git a/node_modules/core-js/features/string/iterator.js b/node_modules/core-js/features/string/iterator.js
new file mode 100644
index 0000000..e947c4c
--- /dev/null
+++ b/node_modules/core-js/features/string/iterator.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/iterator');
diff --git a/node_modules/core-js/features/string/link.js b/node_modules/core-js/features/string/link.js
new file mode 100644
index 0000000..ce03a70
--- /dev/null
+++ b/node_modules/core-js/features/string/link.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/link');
diff --git a/node_modules/core-js/features/string/match-all.js b/node_modules/core-js/features/string/match-all.js
new file mode 100644
index 0000000..cff637b
--- /dev/null
+++ b/node_modules/core-js/features/string/match-all.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/match-all');
diff --git a/node_modules/core-js/features/string/match.js b/node_modules/core-js/features/string/match.js
new file mode 100644
index 0000000..fcdc638
--- /dev/null
+++ b/node_modules/core-js/features/string/match.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/match');
diff --git a/node_modules/core-js/features/string/pad-end.js b/node_modules/core-js/features/string/pad-end.js
new file mode 100644
index 0000000..87afd0b
--- /dev/null
+++ b/node_modules/core-js/features/string/pad-end.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/pad-end');
diff --git a/node_modules/core-js/features/string/pad-start.js b/node_modules/core-js/features/string/pad-start.js
new file mode 100644
index 0000000..6381fbd
--- /dev/null
+++ b/node_modules/core-js/features/string/pad-start.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/pad-start');
diff --git a/node_modules/core-js/features/string/raw.js b/node_modules/core-js/features/string/raw.js
new file mode 100644
index 0000000..9921960
--- /dev/null
+++ b/node_modules/core-js/features/string/raw.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/raw');
diff --git a/node_modules/core-js/features/string/repeat.js b/node_modules/core-js/features/string/repeat.js
new file mode 100644
index 0000000..e9549f3
--- /dev/null
+++ b/node_modules/core-js/features/string/repeat.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/repeat');
diff --git a/node_modules/core-js/features/string/replace-all.js b/node_modules/core-js/features/string/replace-all.js
new file mode 100644
index 0000000..8cb01ea
--- /dev/null
+++ b/node_modules/core-js/features/string/replace-all.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/replace-all');
diff --git a/node_modules/core-js/features/string/replace.js b/node_modules/core-js/features/string/replace.js
new file mode 100644
index 0000000..cfbbbdb
--- /dev/null
+++ b/node_modules/core-js/features/string/replace.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/replace');
diff --git a/node_modules/core-js/features/string/search.js b/node_modules/core-js/features/string/search.js
new file mode 100644
index 0000000..7f44eba
--- /dev/null
+++ b/node_modules/core-js/features/string/search.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/search');
diff --git a/node_modules/core-js/features/string/small.js b/node_modules/core-js/features/string/small.js
new file mode 100644
index 0000000..83371d4
--- /dev/null
+++ b/node_modules/core-js/features/string/small.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/small');
diff --git a/node_modules/core-js/features/string/split.js b/node_modules/core-js/features/string/split.js
new file mode 100644
index 0000000..df53dde
--- /dev/null
+++ b/node_modules/core-js/features/string/split.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/split');
diff --git a/node_modules/core-js/features/string/starts-with.js b/node_modules/core-js/features/string/starts-with.js
new file mode 100644
index 0000000..c36f72b
--- /dev/null
+++ b/node_modules/core-js/features/string/starts-with.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/starts-with');
diff --git a/node_modules/core-js/features/string/strike.js b/node_modules/core-js/features/string/strike.js
new file mode 100644
index 0000000..5931582
--- /dev/null
+++ b/node_modules/core-js/features/string/strike.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/strike');
diff --git a/node_modules/core-js/features/string/sub.js b/node_modules/core-js/features/string/sub.js
new file mode 100644
index 0000000..ee9be2d
--- /dev/null
+++ b/node_modules/core-js/features/string/sub.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/sub');
diff --git a/node_modules/core-js/features/string/substr.js b/node_modules/core-js/features/string/substr.js
new file mode 100644
index 0000000..3a0d996
--- /dev/null
+++ b/node_modules/core-js/features/string/substr.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/substr');
diff --git a/node_modules/core-js/features/string/sup.js b/node_modules/core-js/features/string/sup.js
new file mode 100644
index 0000000..fafa2e5
--- /dev/null
+++ b/node_modules/core-js/features/string/sup.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/sup');
diff --git a/node_modules/core-js/features/string/to-well-formed.js b/node_modules/core-js/features/string/to-well-formed.js
new file mode 100644
index 0000000..318acd2
--- /dev/null
+++ b/node_modules/core-js/features/string/to-well-formed.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/to-well-formed');
diff --git a/node_modules/core-js/features/string/trim-end.js b/node_modules/core-js/features/string/trim-end.js
new file mode 100644
index 0000000..6913dab
--- /dev/null
+++ b/node_modules/core-js/features/string/trim-end.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/trim-end');
diff --git a/node_modules/core-js/features/string/trim-left.js b/node_modules/core-js/features/string/trim-left.js
new file mode 100644
index 0000000..729d4d4
--- /dev/null
+++ b/node_modules/core-js/features/string/trim-left.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/trim-left');
diff --git a/node_modules/core-js/features/string/trim-right.js b/node_modules/core-js/features/string/trim-right.js
new file mode 100644
index 0000000..5bb915c
--- /dev/null
+++ b/node_modules/core-js/features/string/trim-right.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/trim-right');
diff --git a/node_modules/core-js/features/string/trim-start.js b/node_modules/core-js/features/string/trim-start.js
new file mode 100644
index 0000000..9288f6c
--- /dev/null
+++ b/node_modules/core-js/features/string/trim-start.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/trim-start');
diff --git a/node_modules/core-js/features/string/trim.js b/node_modules/core-js/features/string/trim.js
new file mode 100644
index 0000000..d5cdd8e
--- /dev/null
+++ b/node_modules/core-js/features/string/trim.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/string/trim');
diff --git a/node_modules/core-js/features/string/virtual/anchor.js b/node_modules/core-js/features/string/virtual/anchor.js
new file mode 100644
index 0000000..ef0030d
--- /dev/null
+++ b/node_modules/core-js/features/string/virtual/anchor.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/string/virtual/anchor');
diff --git a/node_modules/core-js/features/string/virtual/at.js b/node_modules/core-js/features/string/virtual/at.js
new file mode 100644
index 0000000..cf004d8
--- /dev/null
+++ b/node_modules/core-js/features/string/virtual/at.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/string/virtual/at');
diff --git a/node_modules/core-js/features/string/virtual/big.js b/node_modules/core-js/features/string/virtual/big.js
new file mode 100644
index 0000000..bb7af64
--- /dev/null
+++ b/node_modules/core-js/features/string/virtual/big.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/string/virtual/big');
diff --git a/node_modules/core-js/features/string/virtual/blink.js b/node_modules/core-js/features/string/virtual/blink.js
new file mode 100644
index 0000000..13c183f
--- /dev/null
+++ b/node_modules/core-js/features/string/virtual/blink.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/string/virtual/blink');
diff --git a/node_modules/core-js/features/string/virtual/bold.js b/node_modules/core-js/features/string/virtual/bold.js
new file mode 100644
index 0000000..b18c2dc
--- /dev/null
+++ b/node_modules/core-js/features/string/virtual/bold.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/string/virtual/bold');
diff --git a/node_modules/core-js/features/string/virtual/code-point-at.js b/node_modules/core-js/features/string/virtual/code-point-at.js
new file mode 100644
index 0000000..d96f544
--- /dev/null
+++ b/node_modules/core-js/features/string/virtual/code-point-at.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/string/virtual/code-point-at');
diff --git a/node_modules/core-js/features/string/virtual/code-points.js b/node_modules/core-js/features/string/virtual/code-points.js
new file mode 100644
index 0000000..fdbd7a4
--- /dev/null
+++ b/node_modules/core-js/features/string/virtual/code-points.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/string/virtual/code-points');
diff --git a/node_modules/core-js/features/string/virtual/ends-with.js b/node_modules/core-js/features/string/virtual/ends-with.js
new file mode 100644
index 0000000..232aaa7
--- /dev/null
+++ b/node_modules/core-js/features/string/virtual/ends-with.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/string/virtual/ends-with');
diff --git a/node_modules/core-js/features/string/virtual/fixed.js b/node_modules/core-js/features/string/virtual/fixed.js
new file mode 100644
index 0000000..4d40578
--- /dev/null
+++ b/node_modules/core-js/features/string/virtual/fixed.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/string/virtual/fixed');
diff --git a/node_modules/core-js/features/string/virtual/fontcolor.js b/node_modules/core-js/features/string/virtual/fontcolor.js
new file mode 100644
index 0000000..2d37d0e
--- /dev/null
+++ b/node_modules/core-js/features/string/virtual/fontcolor.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/string/virtual/fontcolor');
diff --git a/node_modules/core-js/features/string/virtual/fontsize.js b/node_modules/core-js/features/string/virtual/fontsize.js
new file mode 100644
index 0000000..9a10610
--- /dev/null
+++ b/node_modules/core-js/features/string/virtual/fontsize.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/string/virtual/fontsize');
diff --git a/node_modules/core-js/features/string/virtual/includes.js b/node_modules/core-js/features/string/virtual/includes.js
new file mode 100644
index 0000000..0c77bc7
--- /dev/null
+++ b/node_modules/core-js/features/string/virtual/includes.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/string/virtual/includes');
diff --git a/node_modules/core-js/features/string/virtual/index.js b/node_modules/core-js/features/string/virtual/index.js
new file mode 100644
index 0000000..4dbf80b
--- /dev/null
+++ b/node_modules/core-js/features/string/virtual/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/string/virtual');
diff --git a/node_modules/core-js/features/string/virtual/is-well-formed.js b/node_modules/core-js/features/string/virtual/is-well-formed.js
new file mode 100644
index 0000000..7a46df3
--- /dev/null
+++ b/node_modules/core-js/features/string/virtual/is-well-formed.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/string/virtual/is-well-formed');
diff --git a/node_modules/core-js/features/string/virtual/italics.js b/node_modules/core-js/features/string/virtual/italics.js
new file mode 100644
index 0000000..a359791
--- /dev/null
+++ b/node_modules/core-js/features/string/virtual/italics.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/string/virtual/italics');
diff --git a/node_modules/core-js/features/string/virtual/iterator.js b/node_modules/core-js/features/string/virtual/iterator.js
new file mode 100644
index 0000000..070896f
--- /dev/null
+++ b/node_modules/core-js/features/string/virtual/iterator.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/string/virtual/iterator');
diff --git a/node_modules/core-js/features/string/virtual/link.js b/node_modules/core-js/features/string/virtual/link.js
new file mode 100644
index 0000000..4caad6c
--- /dev/null
+++ b/node_modules/core-js/features/string/virtual/link.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/string/virtual/link');
diff --git a/node_modules/core-js/features/string/virtual/match-all.js b/node_modules/core-js/features/string/virtual/match-all.js
new file mode 100644
index 0000000..f1a16e5
--- /dev/null
+++ b/node_modules/core-js/features/string/virtual/match-all.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/string/virtual/match-all');
diff --git a/node_modules/core-js/features/string/virtual/pad-end.js b/node_modules/core-js/features/string/virtual/pad-end.js
new file mode 100644
index 0000000..b197b82
--- /dev/null
+++ b/node_modules/core-js/features/string/virtual/pad-end.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/string/virtual/pad-end');
diff --git a/node_modules/core-js/features/string/virtual/pad-start.js b/node_modules/core-js/features/string/virtual/pad-start.js
new file mode 100644
index 0000000..0d9f790
--- /dev/null
+++ b/node_modules/core-js/features/string/virtual/pad-start.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/string/virtual/pad-start');
diff --git a/node_modules/core-js/features/string/virtual/repeat.js b/node_modules/core-js/features/string/virtual/repeat.js
new file mode 100644
index 0000000..c9bd2b1
--- /dev/null
+++ b/node_modules/core-js/features/string/virtual/repeat.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/string/virtual/repeat');
diff --git a/node_modules/core-js/features/string/virtual/replace-all.js b/node_modules/core-js/features/string/virtual/replace-all.js
new file mode 100644
index 0000000..5c41a81
--- /dev/null
+++ b/node_modules/core-js/features/string/virtual/replace-all.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/string/virtual/replace-all');
diff --git a/node_modules/core-js/features/string/virtual/small.js b/node_modules/core-js/features/string/virtual/small.js
new file mode 100644
index 0000000..41830fd
--- /dev/null
+++ b/node_modules/core-js/features/string/virtual/small.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/string/virtual/small');
diff --git a/node_modules/core-js/features/string/virtual/starts-with.js b/node_modules/core-js/features/string/virtual/starts-with.js
new file mode 100644
index 0000000..faf7f9a
--- /dev/null
+++ b/node_modules/core-js/features/string/virtual/starts-with.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/string/virtual/starts-with');
diff --git a/node_modules/core-js/features/string/virtual/strike.js b/node_modules/core-js/features/string/virtual/strike.js
new file mode 100644
index 0000000..4aa6aab
--- /dev/null
+++ b/node_modules/core-js/features/string/virtual/strike.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/string/virtual/strike');
diff --git a/node_modules/core-js/features/string/virtual/sub.js b/node_modules/core-js/features/string/virtual/sub.js
new file mode 100644
index 0000000..0406b51
--- /dev/null
+++ b/node_modules/core-js/features/string/virtual/sub.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/string/virtual/sub');
diff --git a/node_modules/core-js/features/string/virtual/substr.js b/node_modules/core-js/features/string/virtual/substr.js
new file mode 100644
index 0000000..bff178a
--- /dev/null
+++ b/node_modules/core-js/features/string/virtual/substr.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/string/virtual/substr');
diff --git a/node_modules/core-js/features/string/virtual/sup.js b/node_modules/core-js/features/string/virtual/sup.js
new file mode 100644
index 0000000..ea4b086
--- /dev/null
+++ b/node_modules/core-js/features/string/virtual/sup.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/string/virtual/sup');
diff --git a/node_modules/core-js/features/string/virtual/to-well-formed.js b/node_modules/core-js/features/string/virtual/to-well-formed.js
new file mode 100644
index 0000000..fb106bc
--- /dev/null
+++ b/node_modules/core-js/features/string/virtual/to-well-formed.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/string/virtual/to-well-formed');
diff --git a/node_modules/core-js/features/string/virtual/trim-end.js b/node_modules/core-js/features/string/virtual/trim-end.js
new file mode 100644
index 0000000..d90c02d
--- /dev/null
+++ b/node_modules/core-js/features/string/virtual/trim-end.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/string/virtual/trim-end');
diff --git a/node_modules/core-js/features/string/virtual/trim-left.js b/node_modules/core-js/features/string/virtual/trim-left.js
new file mode 100644
index 0000000..407b11f
--- /dev/null
+++ b/node_modules/core-js/features/string/virtual/trim-left.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/string/virtual/trim-left');
diff --git a/node_modules/core-js/features/string/virtual/trim-right.js b/node_modules/core-js/features/string/virtual/trim-right.js
new file mode 100644
index 0000000..8e6fd4d
--- /dev/null
+++ b/node_modules/core-js/features/string/virtual/trim-right.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/string/virtual/trim-right');
diff --git a/node_modules/core-js/features/string/virtual/trim-start.js b/node_modules/core-js/features/string/virtual/trim-start.js
new file mode 100644
index 0000000..0c3545a
--- /dev/null
+++ b/node_modules/core-js/features/string/virtual/trim-start.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/string/virtual/trim-start');
diff --git a/node_modules/core-js/features/string/virtual/trim.js b/node_modules/core-js/features/string/virtual/trim.js
new file mode 100644
index 0000000..da33237
--- /dev/null
+++ b/node_modules/core-js/features/string/virtual/trim.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../full/string/virtual/trim');
diff --git a/node_modules/core-js/features/structured-clone.js b/node_modules/core-js/features/structured-clone.js
new file mode 100644
index 0000000..3f23d55
--- /dev/null
+++ b/node_modules/core-js/features/structured-clone.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../full/structured-clone');
diff --git a/node_modules/core-js/features/suppressed-error.js b/node_modules/core-js/features/suppressed-error.js
new file mode 100644
index 0000000..331939c
--- /dev/null
+++ b/node_modules/core-js/features/suppressed-error.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../full/suppressed-error');
diff --git a/node_modules/core-js/features/symbol/async-dispose.js b/node_modules/core-js/features/symbol/async-dispose.js
new file mode 100644
index 0000000..e31c76d
--- /dev/null
+++ b/node_modules/core-js/features/symbol/async-dispose.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/symbol/async-dispose');
diff --git a/node_modules/core-js/features/symbol/async-iterator.js b/node_modules/core-js/features/symbol/async-iterator.js
new file mode 100644
index 0000000..6951dae
--- /dev/null
+++ b/node_modules/core-js/features/symbol/async-iterator.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/symbol/async-iterator');
diff --git a/node_modules/core-js/features/symbol/custom-matcher.js b/node_modules/core-js/features/symbol/custom-matcher.js
new file mode 100644
index 0000000..79c145d
--- /dev/null
+++ b/node_modules/core-js/features/symbol/custom-matcher.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/symbol/custom-matcher');
diff --git a/node_modules/core-js/features/symbol/description.js b/node_modules/core-js/features/symbol/description.js
new file mode 100644
index 0000000..dacdab2
--- /dev/null
+++ b/node_modules/core-js/features/symbol/description.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/symbol/description');
diff --git a/node_modules/core-js/features/symbol/dispose.js b/node_modules/core-js/features/symbol/dispose.js
new file mode 100644
index 0000000..270f729
--- /dev/null
+++ b/node_modules/core-js/features/symbol/dispose.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/symbol/dispose');
diff --git a/node_modules/core-js/features/symbol/for.js b/node_modules/core-js/features/symbol/for.js
new file mode 100644
index 0000000..69a3555
--- /dev/null
+++ b/node_modules/core-js/features/symbol/for.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/symbol/for');
diff --git a/node_modules/core-js/features/symbol/has-instance.js b/node_modules/core-js/features/symbol/has-instance.js
new file mode 100644
index 0000000..fc003b3
--- /dev/null
+++ b/node_modules/core-js/features/symbol/has-instance.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/symbol/has-instance');
diff --git a/node_modules/core-js/features/symbol/index.js b/node_modules/core-js/features/symbol/index.js
new file mode 100644
index 0000000..02c9e00
--- /dev/null
+++ b/node_modules/core-js/features/symbol/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/symbol');
diff --git a/node_modules/core-js/features/symbol/is-concat-spreadable.js b/node_modules/core-js/features/symbol/is-concat-spreadable.js
new file mode 100644
index 0000000..190c326
--- /dev/null
+++ b/node_modules/core-js/features/symbol/is-concat-spreadable.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/symbol/is-concat-spreadable');
diff --git a/node_modules/core-js/features/symbol/is-registered-symbol.js b/node_modules/core-js/features/symbol/is-registered-symbol.js
new file mode 100644
index 0000000..abc6281
--- /dev/null
+++ b/node_modules/core-js/features/symbol/is-registered-symbol.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/symbol/is-registered-symbol');
diff --git a/node_modules/core-js/features/symbol/is-registered.js b/node_modules/core-js/features/symbol/is-registered.js
new file mode 100644
index 0000000..5954519
--- /dev/null
+++ b/node_modules/core-js/features/symbol/is-registered.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/symbol/is-registered');
diff --git a/node_modules/core-js/features/symbol/is-well-known-symbol.js b/node_modules/core-js/features/symbol/is-well-known-symbol.js
new file mode 100644
index 0000000..71f6a9d
--- /dev/null
+++ b/node_modules/core-js/features/symbol/is-well-known-symbol.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/symbol/is-well-known-symbol');
diff --git a/node_modules/core-js/features/symbol/is-well-known.js b/node_modules/core-js/features/symbol/is-well-known.js
new file mode 100644
index 0000000..3c6270e
--- /dev/null
+++ b/node_modules/core-js/features/symbol/is-well-known.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/symbol/is-well-known');
diff --git a/node_modules/core-js/features/symbol/iterator.js b/node_modules/core-js/features/symbol/iterator.js
new file mode 100644
index 0000000..01690d8
--- /dev/null
+++ b/node_modules/core-js/features/symbol/iterator.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/symbol/iterator');
diff --git a/node_modules/core-js/features/symbol/key-for.js b/node_modules/core-js/features/symbol/key-for.js
new file mode 100644
index 0000000..b8d2061
--- /dev/null
+++ b/node_modules/core-js/features/symbol/key-for.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/symbol/key-for');
diff --git a/node_modules/core-js/features/symbol/match-all.js b/node_modules/core-js/features/symbol/match-all.js
new file mode 100644
index 0000000..d921882
--- /dev/null
+++ b/node_modules/core-js/features/symbol/match-all.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/symbol/match-all');
diff --git a/node_modules/core-js/features/symbol/match.js b/node_modules/core-js/features/symbol/match.js
new file mode 100644
index 0000000..52f36d4
--- /dev/null
+++ b/node_modules/core-js/features/symbol/match.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/symbol/match');
diff --git a/node_modules/core-js/features/symbol/matcher.js b/node_modules/core-js/features/symbol/matcher.js
new file mode 100644
index 0000000..a595085
--- /dev/null
+++ b/node_modules/core-js/features/symbol/matcher.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/symbol/matcher');
diff --git a/node_modules/core-js/features/symbol/metadata-key.js b/node_modules/core-js/features/symbol/metadata-key.js
new file mode 100644
index 0000000..8f0b026
--- /dev/null
+++ b/node_modules/core-js/features/symbol/metadata-key.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/symbol/metadata-key');
diff --git a/node_modules/core-js/features/symbol/metadata.js b/node_modules/core-js/features/symbol/metadata.js
new file mode 100644
index 0000000..af7fdd1
--- /dev/null
+++ b/node_modules/core-js/features/symbol/metadata.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/symbol/metadata');
diff --git a/node_modules/core-js/features/symbol/observable.js b/node_modules/core-js/features/symbol/observable.js
new file mode 100644
index 0000000..991b7f9
--- /dev/null
+++ b/node_modules/core-js/features/symbol/observable.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/symbol/observable');
diff --git a/node_modules/core-js/features/symbol/pattern-match.js b/node_modules/core-js/features/symbol/pattern-match.js
new file mode 100644
index 0000000..74a6bba
--- /dev/null
+++ b/node_modules/core-js/features/symbol/pattern-match.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/symbol/pattern-match');
diff --git a/node_modules/core-js/features/symbol/replace-all.js b/node_modules/core-js/features/symbol/replace-all.js
new file mode 100644
index 0000000..e6b3eab
--- /dev/null
+++ b/node_modules/core-js/features/symbol/replace-all.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/symbol/replace-all');
diff --git a/node_modules/core-js/features/symbol/replace.js b/node_modules/core-js/features/symbol/replace.js
new file mode 100644
index 0000000..890d0fc
--- /dev/null
+++ b/node_modules/core-js/features/symbol/replace.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/symbol/replace');
diff --git a/node_modules/core-js/features/symbol/search.js b/node_modules/core-js/features/symbol/search.js
new file mode 100644
index 0000000..b888afc
--- /dev/null
+++ b/node_modules/core-js/features/symbol/search.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/symbol/search');
diff --git a/node_modules/core-js/features/symbol/species.js b/node_modules/core-js/features/symbol/species.js
new file mode 100644
index 0000000..e7e4e28
--- /dev/null
+++ b/node_modules/core-js/features/symbol/species.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/symbol/species');
diff --git a/node_modules/core-js/features/symbol/split.js b/node_modules/core-js/features/symbol/split.js
new file mode 100644
index 0000000..8c4b7a5
--- /dev/null
+++ b/node_modules/core-js/features/symbol/split.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/symbol/split');
diff --git a/node_modules/core-js/features/symbol/to-primitive.js b/node_modules/core-js/features/symbol/to-primitive.js
new file mode 100644
index 0000000..d3b7a0d
--- /dev/null
+++ b/node_modules/core-js/features/symbol/to-primitive.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/symbol/to-primitive');
diff --git a/node_modules/core-js/features/symbol/to-string-tag.js b/node_modules/core-js/features/symbol/to-string-tag.js
new file mode 100644
index 0000000..b08cc0f
--- /dev/null
+++ b/node_modules/core-js/features/symbol/to-string-tag.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/symbol/to-string-tag');
diff --git a/node_modules/core-js/features/symbol/unscopables.js b/node_modules/core-js/features/symbol/unscopables.js
new file mode 100644
index 0000000..f336314
--- /dev/null
+++ b/node_modules/core-js/features/symbol/unscopables.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/symbol/unscopables');
diff --git a/node_modules/core-js/features/typed-array/at.js b/node_modules/core-js/features/typed-array/at.js
new file mode 100644
index 0000000..dbda0f2
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/at.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/at');
diff --git a/node_modules/core-js/features/typed-array/copy-within.js b/node_modules/core-js/features/typed-array/copy-within.js
new file mode 100644
index 0000000..5cd49d9
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/copy-within.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/copy-within');
diff --git a/node_modules/core-js/features/typed-array/entries.js b/node_modules/core-js/features/typed-array/entries.js
new file mode 100644
index 0000000..d7fb635
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/entries.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/entries');
diff --git a/node_modules/core-js/features/typed-array/every.js b/node_modules/core-js/features/typed-array/every.js
new file mode 100644
index 0000000..4d9f494
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/every.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/every');
diff --git a/node_modules/core-js/features/typed-array/fill.js b/node_modules/core-js/features/typed-array/fill.js
new file mode 100644
index 0000000..987b2c6
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/fill.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/fill');
diff --git a/node_modules/core-js/features/typed-array/filter-out.js b/node_modules/core-js/features/typed-array/filter-out.js
new file mode 100644
index 0000000..4ebe258
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/filter-out.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/filter-out');
diff --git a/node_modules/core-js/features/typed-array/filter-reject.js b/node_modules/core-js/features/typed-array/filter-reject.js
new file mode 100644
index 0000000..1eca98c
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/filter-reject.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/filter-reject');
diff --git a/node_modules/core-js/features/typed-array/filter.js b/node_modules/core-js/features/typed-array/filter.js
new file mode 100644
index 0000000..e8004b2
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/filter.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/filter');
diff --git a/node_modules/core-js/features/typed-array/find-index.js b/node_modules/core-js/features/typed-array/find-index.js
new file mode 100644
index 0000000..a1de959
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/find-index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/find-index');
diff --git a/node_modules/core-js/features/typed-array/find-last-index.js b/node_modules/core-js/features/typed-array/find-last-index.js
new file mode 100644
index 0000000..de77d08
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/find-last-index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/find-last-index');
diff --git a/node_modules/core-js/features/typed-array/find-last.js b/node_modules/core-js/features/typed-array/find-last.js
new file mode 100644
index 0000000..d224ab3
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/find-last.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/find-last');
diff --git a/node_modules/core-js/features/typed-array/find.js b/node_modules/core-js/features/typed-array/find.js
new file mode 100644
index 0000000..40cc496
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/find.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/find');
diff --git a/node_modules/core-js/features/typed-array/float32-array.js b/node_modules/core-js/features/typed-array/float32-array.js
new file mode 100644
index 0000000..4d48fa1
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/float32-array.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/float32-array');
diff --git a/node_modules/core-js/features/typed-array/float64-array.js b/node_modules/core-js/features/typed-array/float64-array.js
new file mode 100644
index 0000000..64bdedf
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/float64-array.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/float64-array');
diff --git a/node_modules/core-js/features/typed-array/for-each.js b/node_modules/core-js/features/typed-array/for-each.js
new file mode 100644
index 0000000..f2e5073
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/for-each.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/for-each');
diff --git a/node_modules/core-js/features/typed-array/from-async.js b/node_modules/core-js/features/typed-array/from-async.js
new file mode 100644
index 0000000..c19d08c
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/from-async.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/from-async');
diff --git a/node_modules/core-js/features/typed-array/from-base64.js b/node_modules/core-js/features/typed-array/from-base64.js
new file mode 100644
index 0000000..dbcfebc
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/from-base64.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/from-base64');
diff --git a/node_modules/core-js/features/typed-array/from-hex.js b/node_modules/core-js/features/typed-array/from-hex.js
new file mode 100644
index 0000000..d7418cd
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/from-hex.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/from-hex');
diff --git a/node_modules/core-js/features/typed-array/from.js b/node_modules/core-js/features/typed-array/from.js
new file mode 100644
index 0000000..a0488ef
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/from.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/from');
diff --git a/node_modules/core-js/features/typed-array/group-by.js b/node_modules/core-js/features/typed-array/group-by.js
new file mode 100644
index 0000000..946f22c
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/group-by.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/group-by');
diff --git a/node_modules/core-js/features/typed-array/includes.js b/node_modules/core-js/features/typed-array/includes.js
new file mode 100644
index 0000000..1af591f
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/includes.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/includes');
diff --git a/node_modules/core-js/features/typed-array/index-of.js b/node_modules/core-js/features/typed-array/index-of.js
new file mode 100644
index 0000000..d100918
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/index-of.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/index-of');
diff --git a/node_modules/core-js/features/typed-array/index.js b/node_modules/core-js/features/typed-array/index.js
new file mode 100644
index 0000000..84e38dd
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array');
diff --git a/node_modules/core-js/features/typed-array/int16-array.js b/node_modules/core-js/features/typed-array/int16-array.js
new file mode 100644
index 0000000..8b90d1a
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/int16-array.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/int16-array');
diff --git a/node_modules/core-js/features/typed-array/int32-array.js b/node_modules/core-js/features/typed-array/int32-array.js
new file mode 100644
index 0000000..0bc324b
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/int32-array.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/int32-array');
diff --git a/node_modules/core-js/features/typed-array/int8-array.js b/node_modules/core-js/features/typed-array/int8-array.js
new file mode 100644
index 0000000..3d30c41
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/int8-array.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/int8-array');
diff --git a/node_modules/core-js/features/typed-array/iterator.js b/node_modules/core-js/features/typed-array/iterator.js
new file mode 100644
index 0000000..02623ea
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/iterator.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/iterator');
diff --git a/node_modules/core-js/features/typed-array/join.js b/node_modules/core-js/features/typed-array/join.js
new file mode 100644
index 0000000..8c1a74f
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/join.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/join');
diff --git a/node_modules/core-js/features/typed-array/keys.js b/node_modules/core-js/features/typed-array/keys.js
new file mode 100644
index 0000000..b90483f
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/keys.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/keys');
diff --git a/node_modules/core-js/features/typed-array/last-index-of.js b/node_modules/core-js/features/typed-array/last-index-of.js
new file mode 100644
index 0000000..c170848
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/last-index-of.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/last-index-of');
diff --git a/node_modules/core-js/features/typed-array/map.js b/node_modules/core-js/features/typed-array/map.js
new file mode 100644
index 0000000..cb73c09
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/map.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/map');
diff --git a/node_modules/core-js/features/typed-array/methods.js b/node_modules/core-js/features/typed-array/methods.js
new file mode 100644
index 0000000..9f8db1e
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/methods.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/methods');
diff --git a/node_modules/core-js/features/typed-array/of.js b/node_modules/core-js/features/typed-array/of.js
new file mode 100644
index 0000000..52663f4
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/of.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/of');
diff --git a/node_modules/core-js/features/typed-array/reduce-right.js b/node_modules/core-js/features/typed-array/reduce-right.js
new file mode 100644
index 0000000..d258dcd
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/reduce-right.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/reduce-right');
diff --git a/node_modules/core-js/features/typed-array/reduce.js b/node_modules/core-js/features/typed-array/reduce.js
new file mode 100644
index 0000000..bdb9106
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/reduce.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/reduce');
diff --git a/node_modules/core-js/features/typed-array/reverse.js b/node_modules/core-js/features/typed-array/reverse.js
new file mode 100644
index 0000000..7923e59
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/reverse.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/reverse');
diff --git a/node_modules/core-js/features/typed-array/set-from-base64.js b/node_modules/core-js/features/typed-array/set-from-base64.js
new file mode 100644
index 0000000..ea2f639
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/set-from-base64.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/set-from-base64');
diff --git a/node_modules/core-js/features/typed-array/set-from-hex.js b/node_modules/core-js/features/typed-array/set-from-hex.js
new file mode 100644
index 0000000..a6c639b
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/set-from-hex.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/set-from-hex');
diff --git a/node_modules/core-js/features/typed-array/set.js b/node_modules/core-js/features/typed-array/set.js
new file mode 100644
index 0000000..5f12682
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/set.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/set');
diff --git a/node_modules/core-js/features/typed-array/slice.js b/node_modules/core-js/features/typed-array/slice.js
new file mode 100644
index 0000000..e0d0811
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/slice.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/slice');
diff --git a/node_modules/core-js/features/typed-array/some.js b/node_modules/core-js/features/typed-array/some.js
new file mode 100644
index 0000000..7d3bf5a
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/some.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/some');
diff --git a/node_modules/core-js/features/typed-array/sort.js b/node_modules/core-js/features/typed-array/sort.js
new file mode 100644
index 0000000..8af7761
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/sort.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/sort');
diff --git a/node_modules/core-js/features/typed-array/subarray.js b/node_modules/core-js/features/typed-array/subarray.js
new file mode 100644
index 0000000..aba0b31
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/subarray.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/subarray');
diff --git a/node_modules/core-js/features/typed-array/to-base64.js b/node_modules/core-js/features/typed-array/to-base64.js
new file mode 100644
index 0000000..9205945
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/to-base64.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/to-base64');
diff --git a/node_modules/core-js/features/typed-array/to-hex.js b/node_modules/core-js/features/typed-array/to-hex.js
new file mode 100644
index 0000000..2a19bdc
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/to-hex.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/to-hex');
diff --git a/node_modules/core-js/features/typed-array/to-locale-string.js b/node_modules/core-js/features/typed-array/to-locale-string.js
new file mode 100644
index 0000000..96ec891
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/to-locale-string.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/to-locale-string');
diff --git a/node_modules/core-js/features/typed-array/to-reversed.js b/node_modules/core-js/features/typed-array/to-reversed.js
new file mode 100644
index 0000000..1d163ed
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/to-reversed.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/to-reversed');
diff --git a/node_modules/core-js/features/typed-array/to-sorted.js b/node_modules/core-js/features/typed-array/to-sorted.js
new file mode 100644
index 0000000..06ee8a6
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/to-sorted.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/to-sorted');
diff --git a/node_modules/core-js/features/typed-array/to-spliced.js b/node_modules/core-js/features/typed-array/to-spliced.js
new file mode 100644
index 0000000..4bc8246
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/to-spliced.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/to-spliced');
diff --git a/node_modules/core-js/features/typed-array/to-string.js b/node_modules/core-js/features/typed-array/to-string.js
new file mode 100644
index 0000000..564dec7
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/to-string.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/to-string');
diff --git a/node_modules/core-js/features/typed-array/uint16-array.js b/node_modules/core-js/features/typed-array/uint16-array.js
new file mode 100644
index 0000000..3c13972
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/uint16-array.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/uint16-array');
diff --git a/node_modules/core-js/features/typed-array/uint32-array.js b/node_modules/core-js/features/typed-array/uint32-array.js
new file mode 100644
index 0000000..57d4db5
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/uint32-array.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/uint32-array');
diff --git a/node_modules/core-js/features/typed-array/uint8-array.js b/node_modules/core-js/features/typed-array/uint8-array.js
new file mode 100644
index 0000000..7d50a3d
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/uint8-array.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/uint8-array');
diff --git a/node_modules/core-js/features/typed-array/uint8-clamped-array.js b/node_modules/core-js/features/typed-array/uint8-clamped-array.js
new file mode 100644
index 0000000..6a82ffb
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/uint8-clamped-array.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/uint8-clamped-array');
diff --git a/node_modules/core-js/features/typed-array/unique-by.js b/node_modules/core-js/features/typed-array/unique-by.js
new file mode 100644
index 0000000..8ee5b6e
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/unique-by.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/unique-by');
diff --git a/node_modules/core-js/features/typed-array/values.js b/node_modules/core-js/features/typed-array/values.js
new file mode 100644
index 0000000..c2d2e94
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/values.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/values');
diff --git a/node_modules/core-js/features/typed-array/with.js b/node_modules/core-js/features/typed-array/with.js
new file mode 100644
index 0000000..93b9f51
--- /dev/null
+++ b/node_modules/core-js/features/typed-array/with.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/typed-array/with');
diff --git a/node_modules/core-js/features/unescape.js b/node_modules/core-js/features/unescape.js
new file mode 100644
index 0000000..2627b4a
--- /dev/null
+++ b/node_modules/core-js/features/unescape.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../full/unescape');
diff --git a/node_modules/core-js/features/url-search-params/index.js b/node_modules/core-js/features/url-search-params/index.js
new file mode 100644
index 0000000..a820545
--- /dev/null
+++ b/node_modules/core-js/features/url-search-params/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/url-search-params');
diff --git a/node_modules/core-js/features/url/can-parse.js b/node_modules/core-js/features/url/can-parse.js
new file mode 100644
index 0000000..3d69ec5
--- /dev/null
+++ b/node_modules/core-js/features/url/can-parse.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/url/can-parse');
diff --git a/node_modules/core-js/features/url/index.js b/node_modules/core-js/features/url/index.js
new file mode 100644
index 0000000..d7202ad
--- /dev/null
+++ b/node_modules/core-js/features/url/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/url');
diff --git a/node_modules/core-js/features/url/parse.js b/node_modules/core-js/features/url/parse.js
new file mode 100644
index 0000000..37c22d6
--- /dev/null
+++ b/node_modules/core-js/features/url/parse.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/url/parse');
diff --git a/node_modules/core-js/features/url/to-json.js b/node_modules/core-js/features/url/to-json.js
new file mode 100644
index 0000000..6cf7a77
--- /dev/null
+++ b/node_modules/core-js/features/url/to-json.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/url/to-json');
diff --git a/node_modules/core-js/features/weak-map/delete-all.js b/node_modules/core-js/features/weak-map/delete-all.js
new file mode 100644
index 0000000..a19160b
--- /dev/null
+++ b/node_modules/core-js/features/weak-map/delete-all.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/weak-map/delete-all');
diff --git a/node_modules/core-js/features/weak-map/emplace.js b/node_modules/core-js/features/weak-map/emplace.js
new file mode 100644
index 0000000..ac39847
--- /dev/null
+++ b/node_modules/core-js/features/weak-map/emplace.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/weak-map/emplace');
diff --git a/node_modules/core-js/features/weak-map/from.js b/node_modules/core-js/features/weak-map/from.js
new file mode 100644
index 0000000..4dbec01
--- /dev/null
+++ b/node_modules/core-js/features/weak-map/from.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/weak-map/from');
diff --git a/node_modules/core-js/features/weak-map/get-or-insert-computed.js b/node_modules/core-js/features/weak-map/get-or-insert-computed.js
new file mode 100644
index 0000000..9eabbfb
--- /dev/null
+++ b/node_modules/core-js/features/weak-map/get-or-insert-computed.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/weak-map/get-or-insert-computed');
diff --git a/node_modules/core-js/features/weak-map/get-or-insert.js b/node_modules/core-js/features/weak-map/get-or-insert.js
new file mode 100644
index 0000000..9962ee3
--- /dev/null
+++ b/node_modules/core-js/features/weak-map/get-or-insert.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/weak-map/get-or-insert');
diff --git a/node_modules/core-js/features/weak-map/index.js b/node_modules/core-js/features/weak-map/index.js
new file mode 100644
index 0000000..d5bcede
--- /dev/null
+++ b/node_modules/core-js/features/weak-map/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/weak-map');
diff --git a/node_modules/core-js/features/weak-map/of.js b/node_modules/core-js/features/weak-map/of.js
new file mode 100644
index 0000000..73021e6
--- /dev/null
+++ b/node_modules/core-js/features/weak-map/of.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/weak-map/of');
diff --git a/node_modules/core-js/features/weak-map/upsert.js b/node_modules/core-js/features/weak-map/upsert.js
new file mode 100644
index 0000000..6582591
--- /dev/null
+++ b/node_modules/core-js/features/weak-map/upsert.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/weak-map/upsert');
diff --git a/node_modules/core-js/features/weak-set/add-all.js b/node_modules/core-js/features/weak-set/add-all.js
new file mode 100644
index 0000000..f537412
--- /dev/null
+++ b/node_modules/core-js/features/weak-set/add-all.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/weak-set/add-all');
diff --git a/node_modules/core-js/features/weak-set/delete-all.js b/node_modules/core-js/features/weak-set/delete-all.js
new file mode 100644
index 0000000..3da6c75
--- /dev/null
+++ b/node_modules/core-js/features/weak-set/delete-all.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/weak-set/delete-all');
diff --git a/node_modules/core-js/features/weak-set/from.js b/node_modules/core-js/features/weak-set/from.js
new file mode 100644
index 0000000..d300e22
--- /dev/null
+++ b/node_modules/core-js/features/weak-set/from.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/weak-set/from');
diff --git a/node_modules/core-js/features/weak-set/index.js b/node_modules/core-js/features/weak-set/index.js
new file mode 100644
index 0000000..7da09c8
--- /dev/null
+++ b/node_modules/core-js/features/weak-set/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/weak-set');
diff --git a/node_modules/core-js/features/weak-set/of.js b/node_modules/core-js/features/weak-set/of.js
new file mode 100644
index 0000000..7070230
--- /dev/null
+++ b/node_modules/core-js/features/weak-set/of.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../full/weak-set/of');
diff --git a/node_modules/core-js/full/README.md b/node_modules/core-js/full/README.md
new file mode 100644
index 0000000..62c88a0
--- /dev/null
+++ b/node_modules/core-js/full/README.md
@@ -0,0 +1 @@
+This folder contains entry points for all `core-js` features with dependencies. It's the recommended way for usage only required features.
diff --git a/node_modules/core-js/full/aggregate-error.js b/node_modules/core-js/full/aggregate-error.js
new file mode 100644
index 0000000..53ba5cf
--- /dev/null
+++ b/node_modules/core-js/full/aggregate-error.js
@@ -0,0 +1,7 @@
+'use strict';
+// TODO: remove from `core-js@4`
+require('../modules/esnext.aggregate-error');
+
+var parent = require('../actual/aggregate-error');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array-buffer/constructor.js b/node_modules/core-js/full/array-buffer/constructor.js
new file mode 100644
index 0000000..fc0efd2
--- /dev/null
+++ b/node_modules/core-js/full/array-buffer/constructor.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array-buffer/constructor');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array-buffer/detached.js b/node_modules/core-js/full/array-buffer/detached.js
new file mode 100644
index 0000000..08bff30
--- /dev/null
+++ b/node_modules/core-js/full/array-buffer/detached.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array-buffer/detached');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array-buffer/index.js b/node_modules/core-js/full/array-buffer/index.js
new file mode 100644
index 0000000..6f64913
--- /dev/null
+++ b/node_modules/core-js/full/array-buffer/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array-buffer');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array-buffer/is-view.js b/node_modules/core-js/full/array-buffer/is-view.js
new file mode 100644
index 0000000..ae1a546
--- /dev/null
+++ b/node_modules/core-js/full/array-buffer/is-view.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array-buffer/is-view');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array-buffer/slice.js b/node_modules/core-js/full/array-buffer/slice.js
new file mode 100644
index 0000000..1886c1e
--- /dev/null
+++ b/node_modules/core-js/full/array-buffer/slice.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array-buffer/slice');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array-buffer/transfer-to-fixed-length.js b/node_modules/core-js/full/array-buffer/transfer-to-fixed-length.js
new file mode 100644
index 0000000..8eb8cc9
--- /dev/null
+++ b/node_modules/core-js/full/array-buffer/transfer-to-fixed-length.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array-buffer/transfer-to-fixed-length');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array-buffer/transfer.js b/node_modules/core-js/full/array-buffer/transfer.js
new file mode 100644
index 0000000..2906f13
--- /dev/null
+++ b/node_modules/core-js/full/array-buffer/transfer.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array-buffer/transfer');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/at.js b/node_modules/core-js/full/array/at.js
new file mode 100644
index 0000000..edc75ea
--- /dev/null
+++ b/node_modules/core-js/full/array/at.js
@@ -0,0 +1,7 @@
+'use strict';
+var parent = require('../../actual/array/at');
+
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.array.at');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/concat.js b/node_modules/core-js/full/array/concat.js
new file mode 100644
index 0000000..249f671
--- /dev/null
+++ b/node_modules/core-js/full/array/concat.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/concat');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/copy-within.js b/node_modules/core-js/full/array/copy-within.js
new file mode 100644
index 0000000..e6f7e0e
--- /dev/null
+++ b/node_modules/core-js/full/array/copy-within.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/copy-within');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/entries.js b/node_modules/core-js/full/array/entries.js
new file mode 100644
index 0000000..cca5eaf
--- /dev/null
+++ b/node_modules/core-js/full/array/entries.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/entries');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/every.js b/node_modules/core-js/full/array/every.js
new file mode 100644
index 0000000..d82e61d
--- /dev/null
+++ b/node_modules/core-js/full/array/every.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/every');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/fill.js b/node_modules/core-js/full/array/fill.js
new file mode 100644
index 0000000..7ed4273
--- /dev/null
+++ b/node_modules/core-js/full/array/fill.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/fill');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/filter-out.js b/node_modules/core-js/full/array/filter-out.js
new file mode 100644
index 0000000..21169a1
--- /dev/null
+++ b/node_modules/core-js/full/array/filter-out.js
@@ -0,0 +1,6 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.array.filter-out');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'filterOut');
diff --git a/node_modules/core-js/full/array/filter-reject.js b/node_modules/core-js/full/array/filter-reject.js
new file mode 100644
index 0000000..b346de7
--- /dev/null
+++ b/node_modules/core-js/full/array/filter-reject.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.array.filter-reject');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'filterReject');
diff --git a/node_modules/core-js/full/array/filter.js b/node_modules/core-js/full/array/filter.js
new file mode 100644
index 0000000..910ac63
--- /dev/null
+++ b/node_modules/core-js/full/array/filter.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/filter');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/find-index.js b/node_modules/core-js/full/array/find-index.js
new file mode 100644
index 0000000..b3b00d6
--- /dev/null
+++ b/node_modules/core-js/full/array/find-index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/find-index');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/find-last-index.js b/node_modules/core-js/full/array/find-last-index.js
new file mode 100644
index 0000000..6dbba15
--- /dev/null
+++ b/node_modules/core-js/full/array/find-last-index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/find-last-index');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/find-last.js b/node_modules/core-js/full/array/find-last.js
new file mode 100644
index 0000000..60a41af
--- /dev/null
+++ b/node_modules/core-js/full/array/find-last.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/find-last');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/find.js b/node_modules/core-js/full/array/find.js
new file mode 100644
index 0000000..48dfb63
--- /dev/null
+++ b/node_modules/core-js/full/array/find.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/find');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/flat-map.js b/node_modules/core-js/full/array/flat-map.js
new file mode 100644
index 0000000..f610ccd
--- /dev/null
+++ b/node_modules/core-js/full/array/flat-map.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/flat-map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/flat.js b/node_modules/core-js/full/array/flat.js
new file mode 100644
index 0000000..db1d556
--- /dev/null
+++ b/node_modules/core-js/full/array/flat.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/flat');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/for-each.js b/node_modules/core-js/full/array/for-each.js
new file mode 100644
index 0000000..8b5c684
--- /dev/null
+++ b/node_modules/core-js/full/array/for-each.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/for-each');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/from-async.js b/node_modules/core-js/full/array/from-async.js
new file mode 100644
index 0000000..667964a
--- /dev/null
+++ b/node_modules/core-js/full/array/from-async.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/from-async');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/from.js b/node_modules/core-js/full/array/from.js
new file mode 100644
index 0000000..b6eda77
--- /dev/null
+++ b/node_modules/core-js/full/array/from.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/from');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/group-by-to-map.js b/node_modules/core-js/full/array/group-by-to-map.js
new file mode 100644
index 0000000..70ca4cc
--- /dev/null
+++ b/node_modules/core-js/full/array/group-by-to-map.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/group-by-to-map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/group-by.js b/node_modules/core-js/full/array/group-by.js
new file mode 100644
index 0000000..12da265
--- /dev/null
+++ b/node_modules/core-js/full/array/group-by.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/group-by');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/group-to-map.js b/node_modules/core-js/full/array/group-to-map.js
new file mode 100644
index 0000000..46b881d
--- /dev/null
+++ b/node_modules/core-js/full/array/group-to-map.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/group-to-map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/group.js b/node_modules/core-js/full/array/group.js
new file mode 100644
index 0000000..597fe8e
--- /dev/null
+++ b/node_modules/core-js/full/array/group.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/group');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/includes.js b/node_modules/core-js/full/array/includes.js
new file mode 100644
index 0000000..445a988
--- /dev/null
+++ b/node_modules/core-js/full/array/includes.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/includes');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/index-of.js b/node_modules/core-js/full/array/index-of.js
new file mode 100644
index 0000000..6974884
--- /dev/null
+++ b/node_modules/core-js/full/array/index-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/index-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/index.js b/node_modules/core-js/full/array/index.js
new file mode 100644
index 0000000..a6de170
--- /dev/null
+++ b/node_modules/core-js/full/array/index.js
@@ -0,0 +1,14 @@
+'use strict';
+var parent = require('../../actual/array');
+require('../../modules/es.map');
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.array.at');
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.array.filter-out');
+require('../../modules/esnext.array.filter-reject');
+require('../../modules/esnext.array.is-template-object');
+require('../../modules/esnext.array.last-item');
+require('../../modules/esnext.array.last-index');
+require('../../modules/esnext.array.unique-by');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/is-array.js b/node_modules/core-js/full/array/is-array.js
new file mode 100644
index 0000000..5d277cb
--- /dev/null
+++ b/node_modules/core-js/full/array/is-array.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/is-array');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/is-template-object.js b/node_modules/core-js/full/array/is-template-object.js
new file mode 100644
index 0000000..30fe977
--- /dev/null
+++ b/node_modules/core-js/full/array/is-template-object.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.array.is-template-object');
+var path = require('../../internals/path');
+
+module.exports = path.Array.isTemplateObject;
diff --git a/node_modules/core-js/full/array/iterator.js b/node_modules/core-js/full/array/iterator.js
new file mode 100644
index 0000000..3ab47e3
--- /dev/null
+++ b/node_modules/core-js/full/array/iterator.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/join.js b/node_modules/core-js/full/array/join.js
new file mode 100644
index 0000000..63f9458
--- /dev/null
+++ b/node_modules/core-js/full/array/join.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/join');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/keys.js b/node_modules/core-js/full/array/keys.js
new file mode 100644
index 0000000..fb0bfd2
--- /dev/null
+++ b/node_modules/core-js/full/array/keys.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/keys');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/last-index-of.js b/node_modules/core-js/full/array/last-index-of.js
new file mode 100644
index 0000000..c013671
--- /dev/null
+++ b/node_modules/core-js/full/array/last-index-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/last-index-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/last-index.js b/node_modules/core-js/full/array/last-index.js
new file mode 100644
index 0000000..2f49d08
--- /dev/null
+++ b/node_modules/core-js/full/array/last-index.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/esnext.array.last-index');
diff --git a/node_modules/core-js/full/array/last-item.js b/node_modules/core-js/full/array/last-item.js
new file mode 100644
index 0000000..be6b3d6
--- /dev/null
+++ b/node_modules/core-js/full/array/last-item.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/esnext.array.last-item');
diff --git a/node_modules/core-js/full/array/map.js b/node_modules/core-js/full/array/map.js
new file mode 100644
index 0000000..d26b99e
--- /dev/null
+++ b/node_modules/core-js/full/array/map.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/of.js b/node_modules/core-js/full/array/of.js
new file mode 100644
index 0000000..ada7f02
--- /dev/null
+++ b/node_modules/core-js/full/array/of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/push.js b/node_modules/core-js/full/array/push.js
new file mode 100644
index 0000000..f0d432a
--- /dev/null
+++ b/node_modules/core-js/full/array/push.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/push');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/reduce-right.js b/node_modules/core-js/full/array/reduce-right.js
new file mode 100644
index 0000000..d060ec9
--- /dev/null
+++ b/node_modules/core-js/full/array/reduce-right.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/reduce-right');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/reduce.js b/node_modules/core-js/full/array/reduce.js
new file mode 100644
index 0000000..31389bd
--- /dev/null
+++ b/node_modules/core-js/full/array/reduce.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/reduce');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/reverse.js b/node_modules/core-js/full/array/reverse.js
new file mode 100644
index 0000000..8841bf7
--- /dev/null
+++ b/node_modules/core-js/full/array/reverse.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/reverse');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/slice.js b/node_modules/core-js/full/array/slice.js
new file mode 100644
index 0000000..b113e06
--- /dev/null
+++ b/node_modules/core-js/full/array/slice.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/slice');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/some.js b/node_modules/core-js/full/array/some.js
new file mode 100644
index 0000000..21360ff
--- /dev/null
+++ b/node_modules/core-js/full/array/some.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/some');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/sort.js b/node_modules/core-js/full/array/sort.js
new file mode 100644
index 0000000..05edb2f
--- /dev/null
+++ b/node_modules/core-js/full/array/sort.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/sort');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/splice.js b/node_modules/core-js/full/array/splice.js
new file mode 100644
index 0000000..9bdd09c
--- /dev/null
+++ b/node_modules/core-js/full/array/splice.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/splice');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/to-reversed.js b/node_modules/core-js/full/array/to-reversed.js
new file mode 100644
index 0000000..ac88cd1
--- /dev/null
+++ b/node_modules/core-js/full/array/to-reversed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/to-reversed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/to-sorted.js b/node_modules/core-js/full/array/to-sorted.js
new file mode 100644
index 0000000..45e8491
--- /dev/null
+++ b/node_modules/core-js/full/array/to-sorted.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/to-sorted');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/to-spliced.js b/node_modules/core-js/full/array/to-spliced.js
new file mode 100644
index 0000000..219c3ef
--- /dev/null
+++ b/node_modules/core-js/full/array/to-spliced.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/to-spliced');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/unique-by.js b/node_modules/core-js/full/array/unique-by.js
new file mode 100644
index 0000000..8bb3b36
--- /dev/null
+++ b/node_modules/core-js/full/array/unique-by.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.map');
+require('../../modules/esnext.array.unique-by');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'uniqueBy');
diff --git a/node_modules/core-js/full/array/unshift.js b/node_modules/core-js/full/array/unshift.js
new file mode 100644
index 0000000..ab7ecb8
--- /dev/null
+++ b/node_modules/core-js/full/array/unshift.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/unshift');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/values.js b/node_modules/core-js/full/array/values.js
new file mode 100644
index 0000000..61ee0a9
--- /dev/null
+++ b/node_modules/core-js/full/array/values.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/values');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/at.js b/node_modules/core-js/full/array/virtual/at.js
new file mode 100644
index 0000000..3780e74
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/at.js
@@ -0,0 +1,7 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/at');
+
+// TODO: Remove from `core-js@4`
+require('../../../modules/esnext.array.at');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/concat.js b/node_modules/core-js/full/array/virtual/concat.js
new file mode 100644
index 0000000..5909ae1
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/concat.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/concat');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/copy-within.js b/node_modules/core-js/full/array/virtual/copy-within.js
new file mode 100644
index 0000000..da9f25b
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/copy-within.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/copy-within');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/entries.js b/node_modules/core-js/full/array/virtual/entries.js
new file mode 100644
index 0000000..e8d3408
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/entries.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/entries');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/every.js b/node_modules/core-js/full/array/virtual/every.js
new file mode 100644
index 0000000..0365070
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/every.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/every');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/fill.js b/node_modules/core-js/full/array/virtual/fill.js
new file mode 100644
index 0000000..7c55451
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/fill.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/fill');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/filter-out.js b/node_modules/core-js/full/array/virtual/filter-out.js
new file mode 100644
index 0000000..8bf9a24
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/filter-out.js
@@ -0,0 +1,6 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../../../modules/esnext.array.filter-out');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'filterOut');
diff --git a/node_modules/core-js/full/array/virtual/filter-reject.js b/node_modules/core-js/full/array/virtual/filter-reject.js
new file mode 100644
index 0000000..094f90d
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/filter-reject.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/esnext.array.filter-reject');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'filterReject');
diff --git a/node_modules/core-js/full/array/virtual/filter.js b/node_modules/core-js/full/array/virtual/filter.js
new file mode 100644
index 0000000..f1f4713
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/filter.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/filter');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/find-index.js b/node_modules/core-js/full/array/virtual/find-index.js
new file mode 100644
index 0000000..78f64de
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/find-index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/find-index');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/find-last-index.js b/node_modules/core-js/full/array/virtual/find-last-index.js
new file mode 100644
index 0000000..d681c60
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/find-last-index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/find-last-index');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/find-last.js b/node_modules/core-js/full/array/virtual/find-last.js
new file mode 100644
index 0000000..cbe5fd0
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/find-last.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/find-last');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/find.js b/node_modules/core-js/full/array/virtual/find.js
new file mode 100644
index 0000000..fda73cb
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/find.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/find');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/flat-map.js b/node_modules/core-js/full/array/virtual/flat-map.js
new file mode 100644
index 0000000..4c95ebd
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/flat-map.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/flat-map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/flat.js b/node_modules/core-js/full/array/virtual/flat.js
new file mode 100644
index 0000000..801557b
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/flat.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/flat');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/for-each.js b/node_modules/core-js/full/array/virtual/for-each.js
new file mode 100644
index 0000000..4f3c6b4
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/for-each.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/for-each');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/group-by-to-map.js b/node_modules/core-js/full/array/virtual/group-by-to-map.js
new file mode 100644
index 0000000..5ef4d2c
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/group-by-to-map.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/group-by-to-map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/group-by.js b/node_modules/core-js/full/array/virtual/group-by.js
new file mode 100644
index 0000000..69cb432
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/group-by.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/group-by');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/group-to-map.js b/node_modules/core-js/full/array/virtual/group-to-map.js
new file mode 100644
index 0000000..f400392
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/group-to-map.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/group-to-map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/group.js b/node_modules/core-js/full/array/virtual/group.js
new file mode 100644
index 0000000..e207bea
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/group.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/group');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/includes.js b/node_modules/core-js/full/array/virtual/includes.js
new file mode 100644
index 0000000..87036aa
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/includes.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/includes');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/index-of.js b/node_modules/core-js/full/array/virtual/index-of.js
new file mode 100644
index 0000000..3bed9e3
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/index-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/index-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/index.js b/node_modules/core-js/full/array/virtual/index.js
new file mode 100644
index 0000000..540a9c5
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/index.js
@@ -0,0 +1,10 @@
+'use strict';
+var parent = require('../../../actual/array/virtual');
+// TODO: Remove from `core-js@4`
+require('../../../modules/esnext.array.at');
+// TODO: Remove from `core-js@4`
+require('../../../modules/esnext.array.filter-out');
+require('../../../modules/esnext.array.filter-reject');
+require('../../../modules/esnext.array.unique-by');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/iterator.js b/node_modules/core-js/full/array/virtual/iterator.js
new file mode 100644
index 0000000..7270ac1
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/iterator.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/join.js b/node_modules/core-js/full/array/virtual/join.js
new file mode 100644
index 0000000..da77b62
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/join.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/join');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/keys.js b/node_modules/core-js/full/array/virtual/keys.js
new file mode 100644
index 0000000..d0dac79
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/keys.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/keys');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/last-index-of.js b/node_modules/core-js/full/array/virtual/last-index-of.js
new file mode 100644
index 0000000..255dbfc
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/last-index-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/last-index-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/map.js b/node_modules/core-js/full/array/virtual/map.js
new file mode 100644
index 0000000..4c48db4
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/map.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/push.js b/node_modules/core-js/full/array/virtual/push.js
new file mode 100644
index 0000000..19e76ba
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/push.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/push');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/reduce-right.js b/node_modules/core-js/full/array/virtual/reduce-right.js
new file mode 100644
index 0000000..2af9769
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/reduce-right.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/reduce-right');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/reduce.js b/node_modules/core-js/full/array/virtual/reduce.js
new file mode 100644
index 0000000..db9f088
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/reduce.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/reduce');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/reverse.js b/node_modules/core-js/full/array/virtual/reverse.js
new file mode 100644
index 0000000..68e2e48
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/reverse.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/reverse');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/slice.js b/node_modules/core-js/full/array/virtual/slice.js
new file mode 100644
index 0000000..3a59289
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/slice.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/slice');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/some.js b/node_modules/core-js/full/array/virtual/some.js
new file mode 100644
index 0000000..629feb3
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/some.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/some');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/sort.js b/node_modules/core-js/full/array/virtual/sort.js
new file mode 100644
index 0000000..c10bc93
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/sort.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/sort');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/splice.js b/node_modules/core-js/full/array/virtual/splice.js
new file mode 100644
index 0000000..f0cf444
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/splice.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/splice');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/to-reversed.js b/node_modules/core-js/full/array/virtual/to-reversed.js
new file mode 100644
index 0000000..7e90ce0
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/to-reversed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/to-reversed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/to-sorted.js b/node_modules/core-js/full/array/virtual/to-sorted.js
new file mode 100644
index 0000000..d7c3698
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/to-sorted.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/to-sorted');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/to-spliced.js b/node_modules/core-js/full/array/virtual/to-spliced.js
new file mode 100644
index 0000000..f8abf12
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/to-spliced.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/to-spliced');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/unique-by.js b/node_modules/core-js/full/array/virtual/unique-by.js
new file mode 100644
index 0000000..d9c0282
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/unique-by.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../../modules/es.map');
+require('../../../modules/esnext.array.unique-by');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Array', 'uniqueBy');
diff --git a/node_modules/core-js/full/array/virtual/unshift.js b/node_modules/core-js/full/array/virtual/unshift.js
new file mode 100644
index 0000000..20c1022
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/unshift.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/unshift');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/values.js b/node_modules/core-js/full/array/virtual/values.js
new file mode 100644
index 0000000..d88e6f4
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/values.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/values');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/virtual/with.js b/node_modules/core-js/full/array/virtual/with.js
new file mode 100644
index 0000000..51abc80
--- /dev/null
+++ b/node_modules/core-js/full/array/virtual/with.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/array/virtual/with');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/array/with.js b/node_modules/core-js/full/array/with.js
new file mode 100644
index 0000000..71c9c57
--- /dev/null
+++ b/node_modules/core-js/full/array/with.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/array/with');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/async-disposable-stack/constructor.js b/node_modules/core-js/full/async-disposable-stack/constructor.js
new file mode 100644
index 0000000..9726971
--- /dev/null
+++ b/node_modules/core-js/full/async-disposable-stack/constructor.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/async-disposable-stack/constructor');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/async-disposable-stack/index.js b/node_modules/core-js/full/async-disposable-stack/index.js
new file mode 100644
index 0000000..5958353
--- /dev/null
+++ b/node_modules/core-js/full/async-disposable-stack/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/async-disposable-stack');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/async-iterator/as-indexed-pairs.js b/node_modules/core-js/full/async-iterator/as-indexed-pairs.js
new file mode 100644
index 0000000..0dee720
--- /dev/null
+++ b/node_modules/core-js/full/async-iterator/as-indexed-pairs.js
@@ -0,0 +1,9 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.promise');
+require('../../modules/esnext.async-iterator.constructor');
+require('../../modules/esnext.async-iterator.as-indexed-pairs');
+
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('AsyncIterator', 'asIndexedPairs');
diff --git a/node_modules/core-js/full/async-iterator/async-dispose.js b/node_modules/core-js/full/async-iterator/async-dispose.js
new file mode 100644
index 0000000..fb92148
--- /dev/null
+++ b/node_modules/core-js/full/async-iterator/async-dispose.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/async-iterator/async-dispose');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/async-iterator/drop.js b/node_modules/core-js/full/async-iterator/drop.js
new file mode 100644
index 0000000..7b3e510
--- /dev/null
+++ b/node_modules/core-js/full/async-iterator/drop.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/async-iterator/drop');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/async-iterator/every.js b/node_modules/core-js/full/async-iterator/every.js
new file mode 100644
index 0000000..22304e4
--- /dev/null
+++ b/node_modules/core-js/full/async-iterator/every.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/async-iterator/every');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/async-iterator/filter.js b/node_modules/core-js/full/async-iterator/filter.js
new file mode 100644
index 0000000..b50edd6
--- /dev/null
+++ b/node_modules/core-js/full/async-iterator/filter.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/async-iterator/filter');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/async-iterator/find.js b/node_modules/core-js/full/async-iterator/find.js
new file mode 100644
index 0000000..9288425
--- /dev/null
+++ b/node_modules/core-js/full/async-iterator/find.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/async-iterator/find');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/async-iterator/flat-map.js b/node_modules/core-js/full/async-iterator/flat-map.js
new file mode 100644
index 0000000..8ec8656
--- /dev/null
+++ b/node_modules/core-js/full/async-iterator/flat-map.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/async-iterator/flat-map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/async-iterator/for-each.js b/node_modules/core-js/full/async-iterator/for-each.js
new file mode 100644
index 0000000..ae36f43
--- /dev/null
+++ b/node_modules/core-js/full/async-iterator/for-each.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/async-iterator/for-each');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/async-iterator/from.js b/node_modules/core-js/full/async-iterator/from.js
new file mode 100644
index 0000000..3023df9
--- /dev/null
+++ b/node_modules/core-js/full/async-iterator/from.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/async-iterator/from');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/async-iterator/index.js b/node_modules/core-js/full/async-iterator/index.js
new file mode 100644
index 0000000..2f8a40e
--- /dev/null
+++ b/node_modules/core-js/full/async-iterator/index.js
@@ -0,0 +1,7 @@
+'use strict';
+var parent = require('../../actual/async-iterator');
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.async-iterator.as-indexed-pairs');
+require('../../modules/esnext.async-iterator.indexed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/async-iterator/indexed.js b/node_modules/core-js/full/async-iterator/indexed.js
new file mode 100644
index 0000000..915bf46
--- /dev/null
+++ b/node_modules/core-js/full/async-iterator/indexed.js
@@ -0,0 +1,10 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../../modules/es.object.to-string');
+require('../../modules/es.promise');
+require('../../modules/esnext.async-iterator.constructor');
+require('../../modules/esnext.async-iterator.indexed');
+
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('AsyncIterator', 'indexed');
diff --git a/node_modules/core-js/full/async-iterator/map.js b/node_modules/core-js/full/async-iterator/map.js
new file mode 100644
index 0000000..516dd53
--- /dev/null
+++ b/node_modules/core-js/full/async-iterator/map.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/async-iterator/map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/async-iterator/reduce.js b/node_modules/core-js/full/async-iterator/reduce.js
new file mode 100644
index 0000000..eedfb77
--- /dev/null
+++ b/node_modules/core-js/full/async-iterator/reduce.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/async-iterator/reduce');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/async-iterator/some.js b/node_modules/core-js/full/async-iterator/some.js
new file mode 100644
index 0000000..aec975a
--- /dev/null
+++ b/node_modules/core-js/full/async-iterator/some.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/async-iterator/some');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/async-iterator/take.js b/node_modules/core-js/full/async-iterator/take.js
new file mode 100644
index 0000000..b921202
--- /dev/null
+++ b/node_modules/core-js/full/async-iterator/take.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/async-iterator/take');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/async-iterator/to-array.js b/node_modules/core-js/full/async-iterator/to-array.js
new file mode 100644
index 0000000..df3bad6
--- /dev/null
+++ b/node_modules/core-js/full/async-iterator/to-array.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/async-iterator/to-array');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/atob.js b/node_modules/core-js/full/atob.js
new file mode 100644
index 0000000..b133156
--- /dev/null
+++ b/node_modules/core-js/full/atob.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../actual/atob');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/bigint/index.js b/node_modules/core-js/full/bigint/index.js
new file mode 100644
index 0000000..f00d835
--- /dev/null
+++ b/node_modules/core-js/full/bigint/index.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/esnext.bigint.range');
+var BigInt = require('../../internals/path').BigInt;
+
+module.exports = BigInt;
diff --git a/node_modules/core-js/full/bigint/range.js b/node_modules/core-js/full/bigint/range.js
new file mode 100644
index 0000000..dac0848
--- /dev/null
+++ b/node_modules/core-js/full/bigint/range.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/esnext.bigint.range');
+var BigInt = require('../../internals/path').BigInt;
+
+module.exports = BigInt && BigInt.range;
diff --git a/node_modules/core-js/full/btoa.js b/node_modules/core-js/full/btoa.js
new file mode 100644
index 0000000..6dc6cdf
--- /dev/null
+++ b/node_modules/core-js/full/btoa.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../actual/btoa');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/clear-immediate.js b/node_modules/core-js/full/clear-immediate.js
new file mode 100644
index 0000000..34408f3
--- /dev/null
+++ b/node_modules/core-js/full/clear-immediate.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../actual/clear-immediate');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/composite-key.js b/node_modules/core-js/full/composite-key.js
new file mode 100644
index 0000000..6da3f57
--- /dev/null
+++ b/node_modules/core-js/full/composite-key.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../modules/esnext.composite-key');
+var path = require('../internals/path');
+
+module.exports = path.compositeKey;
diff --git a/node_modules/core-js/full/composite-symbol.js b/node_modules/core-js/full/composite-symbol.js
new file mode 100644
index 0000000..50b220c
--- /dev/null
+++ b/node_modules/core-js/full/composite-symbol.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../modules/es.symbol');
+require('../modules/esnext.composite-symbol');
+var path = require('../internals/path');
+
+module.exports = path.compositeSymbol;
diff --git a/node_modules/core-js/full/data-view/get-float16.js b/node_modules/core-js/full/data-view/get-float16.js
new file mode 100644
index 0000000..03caa59
--- /dev/null
+++ b/node_modules/core-js/full/data-view/get-float16.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/data-view/get-float16');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/data-view/get-uint8-clamped.js b/node_modules/core-js/full/data-view/get-uint8-clamped.js
new file mode 100644
index 0000000..8311c07
--- /dev/null
+++ b/node_modules/core-js/full/data-view/get-uint8-clamped.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/esnext.data-view.get-uint8-clamped');
diff --git a/node_modules/core-js/full/data-view/index.js b/node_modules/core-js/full/data-view/index.js
new file mode 100644
index 0000000..18d16c4
--- /dev/null
+++ b/node_modules/core-js/full/data-view/index.js
@@ -0,0 +1,6 @@
+'use strict';
+var parent = require('../../actual/data-view');
+require('../../modules/esnext.data-view.get-uint8-clamped');
+require('../../modules/esnext.data-view.set-uint8-clamped');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/data-view/set-float16.js b/node_modules/core-js/full/data-view/set-float16.js
new file mode 100644
index 0000000..e884df9
--- /dev/null
+++ b/node_modules/core-js/full/data-view/set-float16.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/data-view/set-float16');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/data-view/set-uint8-clamped.js b/node_modules/core-js/full/data-view/set-uint8-clamped.js
new file mode 100644
index 0000000..e2bbae2
--- /dev/null
+++ b/node_modules/core-js/full/data-view/set-uint8-clamped.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/esnext.data-view.set-uint8-clamped');
diff --git a/node_modules/core-js/full/date/get-year.js b/node_modules/core-js/full/date/get-year.js
new file mode 100644
index 0000000..4ef2dc1
--- /dev/null
+++ b/node_modules/core-js/full/date/get-year.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/date/get-year');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/date/index.js b/node_modules/core-js/full/date/index.js
new file mode 100644
index 0000000..4077bde
--- /dev/null
+++ b/node_modules/core-js/full/date/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/date');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/date/now.js b/node_modules/core-js/full/date/now.js
new file mode 100644
index 0000000..87da638
--- /dev/null
+++ b/node_modules/core-js/full/date/now.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/date/now');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/date/set-year.js b/node_modules/core-js/full/date/set-year.js
new file mode 100644
index 0000000..79c0ab3
--- /dev/null
+++ b/node_modules/core-js/full/date/set-year.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/date/set-year');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/date/to-gmt-string.js b/node_modules/core-js/full/date/to-gmt-string.js
new file mode 100644
index 0000000..53aa627
--- /dev/null
+++ b/node_modules/core-js/full/date/to-gmt-string.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/date/to-gmt-string');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/date/to-iso-string.js b/node_modules/core-js/full/date/to-iso-string.js
new file mode 100644
index 0000000..c8041d0
--- /dev/null
+++ b/node_modules/core-js/full/date/to-iso-string.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/date/to-iso-string');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/date/to-json.js b/node_modules/core-js/full/date/to-json.js
new file mode 100644
index 0000000..d80c14a
--- /dev/null
+++ b/node_modules/core-js/full/date/to-json.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/date/to-json');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/date/to-primitive.js b/node_modules/core-js/full/date/to-primitive.js
new file mode 100644
index 0000000..7e8094e
--- /dev/null
+++ b/node_modules/core-js/full/date/to-primitive.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/date/to-primitive');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/date/to-string.js b/node_modules/core-js/full/date/to-string.js
new file mode 100644
index 0000000..15f2903
--- /dev/null
+++ b/node_modules/core-js/full/date/to-string.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/date/to-string');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/disposable-stack/constructor.js b/node_modules/core-js/full/disposable-stack/constructor.js
new file mode 100644
index 0000000..4ee0a30
--- /dev/null
+++ b/node_modules/core-js/full/disposable-stack/constructor.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/disposable-stack/constructor');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/disposable-stack/index.js b/node_modules/core-js/full/disposable-stack/index.js
new file mode 100644
index 0000000..a0c0de9
--- /dev/null
+++ b/node_modules/core-js/full/disposable-stack/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/disposable-stack');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/dom-collections/for-each.js b/node_modules/core-js/full/dom-collections/for-each.js
new file mode 100644
index 0000000..5172d59
--- /dev/null
+++ b/node_modules/core-js/full/dom-collections/for-each.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/dom-collections/for-each');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/dom-collections/index.js b/node_modules/core-js/full/dom-collections/index.js
new file mode 100644
index 0000000..1239518
--- /dev/null
+++ b/node_modules/core-js/full/dom-collections/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/dom-collections');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/dom-collections/iterator.js b/node_modules/core-js/full/dom-collections/iterator.js
new file mode 100644
index 0000000..8c31637
--- /dev/null
+++ b/node_modules/core-js/full/dom-collections/iterator.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/dom-collections/iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/dom-exception/constructor.js b/node_modules/core-js/full/dom-exception/constructor.js
new file mode 100644
index 0000000..873ebbf
--- /dev/null
+++ b/node_modules/core-js/full/dom-exception/constructor.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/dom-exception/constructor');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/dom-exception/index.js b/node_modules/core-js/full/dom-exception/index.js
new file mode 100644
index 0000000..31290fc
--- /dev/null
+++ b/node_modules/core-js/full/dom-exception/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/dom-exception');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/dom-exception/to-string-tag.js b/node_modules/core-js/full/dom-exception/to-string-tag.js
new file mode 100644
index 0000000..50261b6
--- /dev/null
+++ b/node_modules/core-js/full/dom-exception/to-string-tag.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/dom-exception/to-string-tag');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/error/constructor.js b/node_modules/core-js/full/error/constructor.js
new file mode 100644
index 0000000..26a72a6
--- /dev/null
+++ b/node_modules/core-js/full/error/constructor.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/error/constructor');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/error/index.js b/node_modules/core-js/full/error/index.js
new file mode 100644
index 0000000..1885dea
--- /dev/null
+++ b/node_modules/core-js/full/error/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/error');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/error/is-error.js b/node_modules/core-js/full/error/is-error.js
new file mode 100644
index 0000000..1d2e205
--- /dev/null
+++ b/node_modules/core-js/full/error/is-error.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/error/is-error');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/error/to-string.js b/node_modules/core-js/full/error/to-string.js
new file mode 100644
index 0000000..1b33052
--- /dev/null
+++ b/node_modules/core-js/full/error/to-string.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/error/to-string');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/escape.js b/node_modules/core-js/full/escape.js
new file mode 100644
index 0000000..6648b3a
--- /dev/null
+++ b/node_modules/core-js/full/escape.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../actual/escape');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/function/bind.js b/node_modules/core-js/full/function/bind.js
new file mode 100644
index 0000000..33687e0
--- /dev/null
+++ b/node_modules/core-js/full/function/bind.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/function/bind');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/function/demethodize.js b/node_modules/core-js/full/function/demethodize.js
new file mode 100644
index 0000000..6e96aa1
--- /dev/null
+++ b/node_modules/core-js/full/function/demethodize.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.function.demethodize');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Function', 'demethodize');
diff --git a/node_modules/core-js/full/function/has-instance.js b/node_modules/core-js/full/function/has-instance.js
new file mode 100644
index 0000000..12219cb
--- /dev/null
+++ b/node_modules/core-js/full/function/has-instance.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/function/has-instance');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/function/index.js b/node_modules/core-js/full/function/index.js
new file mode 100644
index 0000000..4ecdac5
--- /dev/null
+++ b/node_modules/core-js/full/function/index.js
@@ -0,0 +1,9 @@
+'use strict';
+var parent = require('../../actual/function');
+require('../../modules/esnext.function.demethodize');
+require('../../modules/esnext.function.is-callable');
+require('../../modules/esnext.function.is-constructor');
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.function.un-this');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/function/is-callable.js b/node_modules/core-js/full/function/is-callable.js
new file mode 100644
index 0000000..e481b3c
--- /dev/null
+++ b/node_modules/core-js/full/function/is-callable.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.function.is-callable');
+var path = require('../../internals/path');
+
+module.exports = path.Function.isCallable;
diff --git a/node_modules/core-js/full/function/is-constructor.js b/node_modules/core-js/full/function/is-constructor.js
new file mode 100644
index 0000000..7256eac
--- /dev/null
+++ b/node_modules/core-js/full/function/is-constructor.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.function.is-constructor');
+var path = require('../../internals/path');
+
+module.exports = path.Function.isConstructor;
diff --git a/node_modules/core-js/full/function/metadata.js b/node_modules/core-js/full/function/metadata.js
new file mode 100644
index 0000000..5b33d15
--- /dev/null
+++ b/node_modules/core-js/full/function/metadata.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/function/metadata');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/function/name.js b/node_modules/core-js/full/function/name.js
new file mode 100644
index 0000000..80daa2d
--- /dev/null
+++ b/node_modules/core-js/full/function/name.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/function/name');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/function/un-this.js b/node_modules/core-js/full/function/un-this.js
new file mode 100644
index 0000000..a9561ca
--- /dev/null
+++ b/node_modules/core-js/full/function/un-this.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.function.un-this');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Function', 'unThis');
diff --git a/node_modules/core-js/full/function/virtual/bind.js b/node_modules/core-js/full/function/virtual/bind.js
new file mode 100644
index 0000000..2262d5f
--- /dev/null
+++ b/node_modules/core-js/full/function/virtual/bind.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/function/virtual/bind');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/function/virtual/demethodize.js b/node_modules/core-js/full/function/virtual/demethodize.js
new file mode 100644
index 0000000..47318a4
--- /dev/null
+++ b/node_modules/core-js/full/function/virtual/demethodize.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/esnext.function.demethodize');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Function', 'demethodize');
diff --git a/node_modules/core-js/full/function/virtual/index.js b/node_modules/core-js/full/function/virtual/index.js
new file mode 100644
index 0000000..76d5952
--- /dev/null
+++ b/node_modules/core-js/full/function/virtual/index.js
@@ -0,0 +1,7 @@
+'use strict';
+var parent = require('../../../actual/function/virtual');
+require('../../../modules/esnext.function.demethodize');
+// TODO: Remove from `core-js@4`
+require('../../../modules/esnext.function.un-this');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/function/virtual/un-this.js b/node_modules/core-js/full/function/virtual/un-this.js
new file mode 100644
index 0000000..671c189
--- /dev/null
+++ b/node_modules/core-js/full/function/virtual/un-this.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../../modules/esnext.function.un-this');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('Function', 'unThis');
diff --git a/node_modules/core-js/full/get-iterator-method.js b/node_modules/core-js/full/get-iterator-method.js
new file mode 100644
index 0000000..803708e
--- /dev/null
+++ b/node_modules/core-js/full/get-iterator-method.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../actual/get-iterator-method');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/get-iterator.js b/node_modules/core-js/full/get-iterator.js
new file mode 100644
index 0000000..d22ebe3
--- /dev/null
+++ b/node_modules/core-js/full/get-iterator.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../actual/get-iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/global-this.js b/node_modules/core-js/full/global-this.js
new file mode 100644
index 0000000..fd3dec9
--- /dev/null
+++ b/node_modules/core-js/full/global-this.js
@@ -0,0 +1,7 @@
+'use strict';
+// TODO: remove from `core-js@4`
+require('../modules/esnext.global-this');
+
+var parent = require('../actual/global-this');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/index.js b/node_modules/core-js/full/index.js
new file mode 100644
index 0000000..c36191e
--- /dev/null
+++ b/node_modules/core-js/full/index.js
@@ -0,0 +1,507 @@
+'use strict';
+require('../modules/es.symbol');
+require('../modules/es.symbol.description');
+require('../modules/es.symbol.async-iterator');
+require('../modules/es.symbol.has-instance');
+require('../modules/es.symbol.is-concat-spreadable');
+require('../modules/es.symbol.iterator');
+require('../modules/es.symbol.match');
+require('../modules/es.symbol.match-all');
+require('../modules/es.symbol.replace');
+require('../modules/es.symbol.search');
+require('../modules/es.symbol.species');
+require('../modules/es.symbol.split');
+require('../modules/es.symbol.to-primitive');
+require('../modules/es.symbol.to-string-tag');
+require('../modules/es.symbol.unscopables');
+require('../modules/es.error.cause');
+require('../modules/es.error.to-string');
+require('../modules/es.aggregate-error');
+require('../modules/es.aggregate-error.cause');
+require('../modules/es.array.at');
+require('../modules/es.array.concat');
+require('../modules/es.array.copy-within');
+require('../modules/es.array.every');
+require('../modules/es.array.fill');
+require('../modules/es.array.filter');
+require('../modules/es.array.find');
+require('../modules/es.array.find-index');
+require('../modules/es.array.find-last');
+require('../modules/es.array.find-last-index');
+require('../modules/es.array.flat');
+require('../modules/es.array.flat-map');
+require('../modules/es.array.for-each');
+require('../modules/es.array.from');
+require('../modules/es.array.includes');
+require('../modules/es.array.index-of');
+require('../modules/es.array.is-array');
+require('../modules/es.array.iterator');
+require('../modules/es.array.join');
+require('../modules/es.array.last-index-of');
+require('../modules/es.array.map');
+require('../modules/es.array.of');
+require('../modules/es.array.push');
+require('../modules/es.array.reduce');
+require('../modules/es.array.reduce-right');
+require('../modules/es.array.reverse');
+require('../modules/es.array.slice');
+require('../modules/es.array.some');
+require('../modules/es.array.sort');
+require('../modules/es.array.species');
+require('../modules/es.array.splice');
+require('../modules/es.array.to-reversed');
+require('../modules/es.array.to-sorted');
+require('../modules/es.array.to-spliced');
+require('../modules/es.array.unscopables.flat');
+require('../modules/es.array.unscopables.flat-map');
+require('../modules/es.array.unshift');
+require('../modules/es.array.with');
+require('../modules/es.array-buffer.constructor');
+require('../modules/es.array-buffer.is-view');
+require('../modules/es.array-buffer.slice');
+require('../modules/es.data-view');
+require('../modules/es.data-view.get-float16');
+require('../modules/es.data-view.set-float16');
+require('../modules/es.array-buffer.detached');
+require('../modules/es.array-buffer.transfer');
+require('../modules/es.array-buffer.transfer-to-fixed-length');
+require('../modules/es.date.get-year');
+require('../modules/es.date.now');
+require('../modules/es.date.set-year');
+require('../modules/es.date.to-gmt-string');
+require('../modules/es.date.to-iso-string');
+require('../modules/es.date.to-json');
+require('../modules/es.date.to-primitive');
+require('../modules/es.date.to-string');
+require('../modules/es.escape');
+require('../modules/es.function.bind');
+require('../modules/es.function.has-instance');
+require('../modules/es.function.name');
+require('../modules/es.global-this');
+require('../modules/es.iterator.constructor');
+require('../modules/es.iterator.drop');
+require('../modules/es.iterator.every');
+require('../modules/es.iterator.filter');
+require('../modules/es.iterator.find');
+require('../modules/es.iterator.flat-map');
+require('../modules/es.iterator.for-each');
+require('../modules/es.iterator.from');
+require('../modules/es.iterator.map');
+require('../modules/es.iterator.reduce');
+require('../modules/es.iterator.some');
+require('../modules/es.iterator.take');
+require('../modules/es.iterator.to-array');
+require('../modules/es.json.stringify');
+require('../modules/es.json.to-string-tag');
+require('../modules/es.map');
+require('../modules/es.map.group-by');
+require('../modules/es.math.acosh');
+require('../modules/es.math.asinh');
+require('../modules/es.math.atanh');
+require('../modules/es.math.cbrt');
+require('../modules/es.math.clz32');
+require('../modules/es.math.cosh');
+require('../modules/es.math.expm1');
+require('../modules/es.math.fround');
+require('../modules/es.math.f16round');
+require('../modules/es.math.hypot');
+require('../modules/es.math.imul');
+require('../modules/es.math.log10');
+require('../modules/es.math.log1p');
+require('../modules/es.math.log2');
+require('../modules/es.math.sign');
+require('../modules/es.math.sinh');
+require('../modules/es.math.tanh');
+require('../modules/es.math.to-string-tag');
+require('../modules/es.math.trunc');
+require('../modules/es.number.constructor');
+require('../modules/es.number.epsilon');
+require('../modules/es.number.is-finite');
+require('../modules/es.number.is-integer');
+require('../modules/es.number.is-nan');
+require('../modules/es.number.is-safe-integer');
+require('../modules/es.number.max-safe-integer');
+require('../modules/es.number.min-safe-integer');
+require('../modules/es.number.parse-float');
+require('../modules/es.number.parse-int');
+require('../modules/es.number.to-exponential');
+require('../modules/es.number.to-fixed');
+require('../modules/es.number.to-precision');
+require('../modules/es.object.assign');
+require('../modules/es.object.create');
+require('../modules/es.object.define-getter');
+require('../modules/es.object.define-properties');
+require('../modules/es.object.define-property');
+require('../modules/es.object.define-setter');
+require('../modules/es.object.entries');
+require('../modules/es.object.freeze');
+require('../modules/es.object.from-entries');
+require('../modules/es.object.get-own-property-descriptor');
+require('../modules/es.object.get-own-property-descriptors');
+require('../modules/es.object.get-own-property-names');
+require('../modules/es.object.get-prototype-of');
+require('../modules/es.object.group-by');
+require('../modules/es.object.has-own');
+require('../modules/es.object.is');
+require('../modules/es.object.is-extensible');
+require('../modules/es.object.is-frozen');
+require('../modules/es.object.is-sealed');
+require('../modules/es.object.keys');
+require('../modules/es.object.lookup-getter');
+require('../modules/es.object.lookup-setter');
+require('../modules/es.object.prevent-extensions');
+require('../modules/es.object.proto');
+require('../modules/es.object.seal');
+require('../modules/es.object.set-prototype-of');
+require('../modules/es.object.to-string');
+require('../modules/es.object.values');
+require('../modules/es.parse-float');
+require('../modules/es.parse-int');
+require('../modules/es.promise');
+require('../modules/es.promise.all-settled');
+require('../modules/es.promise.any');
+require('../modules/es.promise.finally');
+require('../modules/es.promise.try');
+require('../modules/es.promise.with-resolvers');
+require('../modules/es.reflect.apply');
+require('../modules/es.reflect.construct');
+require('../modules/es.reflect.define-property');
+require('../modules/es.reflect.delete-property');
+require('../modules/es.reflect.get');
+require('../modules/es.reflect.get-own-property-descriptor');
+require('../modules/es.reflect.get-prototype-of');
+require('../modules/es.reflect.has');
+require('../modules/es.reflect.is-extensible');
+require('../modules/es.reflect.own-keys');
+require('../modules/es.reflect.prevent-extensions');
+require('../modules/es.reflect.set');
+require('../modules/es.reflect.set-prototype-of');
+require('../modules/es.reflect.to-string-tag');
+require('../modules/es.regexp.constructor');
+require('../modules/es.regexp.escape');
+require('../modules/es.regexp.dot-all');
+require('../modules/es.regexp.exec');
+require('../modules/es.regexp.flags');
+require('../modules/es.regexp.sticky');
+require('../modules/es.regexp.test');
+require('../modules/es.regexp.to-string');
+require('../modules/es.set');
+require('../modules/es.set.difference.v2');
+require('../modules/es.set.intersection.v2');
+require('../modules/es.set.is-disjoint-from.v2');
+require('../modules/es.set.is-subset-of.v2');
+require('../modules/es.set.is-superset-of.v2');
+require('../modules/es.set.symmetric-difference.v2');
+require('../modules/es.set.union.v2');
+require('../modules/es.string.at-alternative');
+require('../modules/es.string.code-point-at');
+require('../modules/es.string.ends-with');
+require('../modules/es.string.from-code-point');
+require('../modules/es.string.includes');
+require('../modules/es.string.is-well-formed');
+require('../modules/es.string.iterator');
+require('../modules/es.string.match');
+require('../modules/es.string.match-all');
+require('../modules/es.string.pad-end');
+require('../modules/es.string.pad-start');
+require('../modules/es.string.raw');
+require('../modules/es.string.repeat');
+require('../modules/es.string.replace');
+require('../modules/es.string.replace-all');
+require('../modules/es.string.search');
+require('../modules/es.string.split');
+require('../modules/es.string.starts-with');
+require('../modules/es.string.substr');
+require('../modules/es.string.to-well-formed');
+require('../modules/es.string.trim');
+require('../modules/es.string.trim-end');
+require('../modules/es.string.trim-start');
+require('../modules/es.string.anchor');
+require('../modules/es.string.big');
+require('../modules/es.string.blink');
+require('../modules/es.string.bold');
+require('../modules/es.string.fixed');
+require('../modules/es.string.fontcolor');
+require('../modules/es.string.fontsize');
+require('../modules/es.string.italics');
+require('../modules/es.string.link');
+require('../modules/es.string.small');
+require('../modules/es.string.strike');
+require('../modules/es.string.sub');
+require('../modules/es.string.sup');
+require('../modules/es.typed-array.float32-array');
+require('../modules/es.typed-array.float64-array');
+require('../modules/es.typed-array.int8-array');
+require('../modules/es.typed-array.int16-array');
+require('../modules/es.typed-array.int32-array');
+require('../modules/es.typed-array.uint8-array');
+require('../modules/es.typed-array.uint8-clamped-array');
+require('../modules/es.typed-array.uint16-array');
+require('../modules/es.typed-array.uint32-array');
+require('../modules/es.typed-array.at');
+require('../modules/es.typed-array.copy-within');
+require('../modules/es.typed-array.every');
+require('../modules/es.typed-array.fill');
+require('../modules/es.typed-array.filter');
+require('../modules/es.typed-array.find');
+require('../modules/es.typed-array.find-index');
+require('../modules/es.typed-array.find-last');
+require('../modules/es.typed-array.find-last-index');
+require('../modules/es.typed-array.for-each');
+require('../modules/es.typed-array.from');
+require('../modules/es.typed-array.includes');
+require('../modules/es.typed-array.index-of');
+require('../modules/es.typed-array.iterator');
+require('../modules/es.typed-array.join');
+require('../modules/es.typed-array.last-index-of');
+require('../modules/es.typed-array.map');
+require('../modules/es.typed-array.of');
+require('../modules/es.typed-array.reduce');
+require('../modules/es.typed-array.reduce-right');
+require('../modules/es.typed-array.reverse');
+require('../modules/es.typed-array.set');
+require('../modules/es.typed-array.slice');
+require('../modules/es.typed-array.some');
+require('../modules/es.typed-array.sort');
+require('../modules/es.typed-array.subarray');
+require('../modules/es.typed-array.to-locale-string');
+require('../modules/es.typed-array.to-reversed');
+require('../modules/es.typed-array.to-sorted');
+require('../modules/es.typed-array.to-string');
+require('../modules/es.typed-array.with');
+require('../modules/es.unescape');
+require('../modules/es.weak-map');
+require('../modules/es.weak-set');
+require('../modules/esnext.aggregate-error');
+require('../modules/esnext.suppressed-error.constructor');
+require('../modules/esnext.array.from-async');
+require('../modules/esnext.array.at');
+require('../modules/esnext.array.filter-out');
+require('../modules/esnext.array.filter-reject');
+require('../modules/esnext.array.find-last');
+require('../modules/esnext.array.find-last-index');
+require('../modules/esnext.array.group');
+require('../modules/esnext.array.group-by');
+require('../modules/esnext.array.group-by-to-map');
+require('../modules/esnext.array.group-to-map');
+require('../modules/esnext.array.is-template-object');
+require('../modules/esnext.array.last-index');
+require('../modules/esnext.array.last-item');
+require('../modules/esnext.array.to-reversed');
+require('../modules/esnext.array.to-sorted');
+require('../modules/esnext.array.to-spliced');
+require('../modules/esnext.array.unique-by');
+require('../modules/esnext.array.with');
+require('../modules/esnext.array-buffer.detached');
+require('../modules/esnext.array-buffer.transfer');
+require('../modules/esnext.array-buffer.transfer-to-fixed-length');
+require('../modules/esnext.async-disposable-stack.constructor');
+require('../modules/esnext.async-iterator.constructor');
+require('../modules/esnext.async-iterator.as-indexed-pairs');
+require('../modules/esnext.async-iterator.async-dispose');
+require('../modules/esnext.async-iterator.drop');
+require('../modules/esnext.async-iterator.every');
+require('../modules/esnext.async-iterator.filter');
+require('../modules/esnext.async-iterator.find');
+require('../modules/esnext.async-iterator.flat-map');
+require('../modules/esnext.async-iterator.for-each');
+require('../modules/esnext.async-iterator.from');
+require('../modules/esnext.async-iterator.indexed');
+require('../modules/esnext.async-iterator.map');
+require('../modules/esnext.async-iterator.reduce');
+require('../modules/esnext.async-iterator.some');
+require('../modules/esnext.async-iterator.take');
+require('../modules/esnext.async-iterator.to-array');
+require('../modules/esnext.bigint.range');
+require('../modules/esnext.composite-key');
+require('../modules/esnext.composite-symbol');
+require('../modules/esnext.data-view.get-float16');
+require('../modules/esnext.data-view.get-uint8-clamped');
+require('../modules/esnext.data-view.set-float16');
+require('../modules/esnext.data-view.set-uint8-clamped');
+require('../modules/esnext.disposable-stack.constructor');
+require('../modules/esnext.error.is-error');
+require('../modules/esnext.function.demethodize');
+require('../modules/esnext.function.is-callable');
+require('../modules/esnext.function.is-constructor');
+require('../modules/esnext.function.metadata');
+require('../modules/esnext.function.un-this');
+require('../modules/esnext.global-this');
+require('../modules/esnext.iterator.constructor');
+require('../modules/esnext.iterator.as-indexed-pairs');
+require('../modules/esnext.iterator.concat');
+require('../modules/esnext.iterator.dispose');
+require('../modules/esnext.iterator.drop');
+require('../modules/esnext.iterator.every');
+require('../modules/esnext.iterator.filter');
+require('../modules/esnext.iterator.find');
+require('../modules/esnext.iterator.flat-map');
+require('../modules/esnext.iterator.for-each');
+require('../modules/esnext.iterator.from');
+require('../modules/esnext.iterator.indexed');
+require('../modules/esnext.iterator.map');
+require('../modules/esnext.iterator.range');
+require('../modules/esnext.iterator.reduce');
+require('../modules/esnext.iterator.some');
+require('../modules/esnext.iterator.take');
+require('../modules/esnext.iterator.to-array');
+require('../modules/esnext.iterator.to-async');
+require('../modules/esnext.json.is-raw-json');
+require('../modules/esnext.json.parse');
+require('../modules/esnext.json.raw-json');
+require('../modules/esnext.map.delete-all');
+require('../modules/esnext.map.emplace');
+require('../modules/esnext.map.every');
+require('../modules/esnext.map.filter');
+require('../modules/esnext.map.find');
+require('../modules/esnext.map.find-key');
+require('../modules/esnext.map.from');
+require('../modules/esnext.map.get-or-insert');
+require('../modules/esnext.map.get-or-insert-computed');
+require('../modules/esnext.map.group-by');
+require('../modules/esnext.map.includes');
+require('../modules/esnext.map.key-by');
+require('../modules/esnext.map.key-of');
+require('../modules/esnext.map.map-keys');
+require('../modules/esnext.map.map-values');
+require('../modules/esnext.map.merge');
+require('../modules/esnext.map.of');
+require('../modules/esnext.map.reduce');
+require('../modules/esnext.map.some');
+require('../modules/esnext.map.update');
+require('../modules/esnext.map.update-or-insert');
+require('../modules/esnext.map.upsert');
+require('../modules/esnext.math.clamp');
+require('../modules/esnext.math.deg-per-rad');
+require('../modules/esnext.math.degrees');
+require('../modules/esnext.math.fscale');
+require('../modules/esnext.math.f16round');
+require('../modules/esnext.math.iaddh');
+require('../modules/esnext.math.imulh');
+require('../modules/esnext.math.isubh');
+require('../modules/esnext.math.rad-per-deg');
+require('../modules/esnext.math.radians');
+require('../modules/esnext.math.scale');
+require('../modules/esnext.math.seeded-prng');
+require('../modules/esnext.math.signbit');
+require('../modules/esnext.math.sum-precise');
+require('../modules/esnext.math.umulh');
+require('../modules/esnext.number.from-string');
+require('../modules/esnext.number.range');
+require('../modules/esnext.object.has-own');
+require('../modules/esnext.object.iterate-entries');
+require('../modules/esnext.object.iterate-keys');
+require('../modules/esnext.object.iterate-values');
+require('../modules/esnext.object.group-by');
+require('../modules/esnext.observable');
+require('../modules/esnext.promise.all-settled');
+require('../modules/esnext.promise.any');
+require('../modules/esnext.promise.try');
+require('../modules/esnext.promise.with-resolvers');
+require('../modules/esnext.reflect.define-metadata');
+require('../modules/esnext.reflect.delete-metadata');
+require('../modules/esnext.reflect.get-metadata');
+require('../modules/esnext.reflect.get-metadata-keys');
+require('../modules/esnext.reflect.get-own-metadata');
+require('../modules/esnext.reflect.get-own-metadata-keys');
+require('../modules/esnext.reflect.has-metadata');
+require('../modules/esnext.reflect.has-own-metadata');
+require('../modules/esnext.reflect.metadata');
+require('../modules/esnext.regexp.escape');
+require('../modules/esnext.set.add-all');
+require('../modules/esnext.set.delete-all');
+require('../modules/esnext.set.difference.v2');
+require('../modules/esnext.set.difference');
+require('../modules/esnext.set.every');
+require('../modules/esnext.set.filter');
+require('../modules/esnext.set.find');
+require('../modules/esnext.set.from');
+require('../modules/esnext.set.intersection.v2');
+require('../modules/esnext.set.intersection');
+require('../modules/esnext.set.is-disjoint-from.v2');
+require('../modules/esnext.set.is-disjoint-from');
+require('../modules/esnext.set.is-subset-of.v2');
+require('../modules/esnext.set.is-subset-of');
+require('../modules/esnext.set.is-superset-of.v2');
+require('../modules/esnext.set.is-superset-of');
+require('../modules/esnext.set.join');
+require('../modules/esnext.set.map');
+require('../modules/esnext.set.of');
+require('../modules/esnext.set.reduce');
+require('../modules/esnext.set.some');
+require('../modules/esnext.set.symmetric-difference.v2');
+require('../modules/esnext.set.symmetric-difference');
+require('../modules/esnext.set.union.v2');
+require('../modules/esnext.set.union');
+require('../modules/esnext.string.at');
+require('../modules/esnext.string.cooked');
+require('../modules/esnext.string.code-points');
+require('../modules/esnext.string.dedent');
+require('../modules/esnext.string.is-well-formed');
+require('../modules/esnext.string.match-all');
+require('../modules/esnext.string.replace-all');
+require('../modules/esnext.string.to-well-formed');
+require('../modules/esnext.symbol.async-dispose');
+require('../modules/esnext.symbol.custom-matcher');
+require('../modules/esnext.symbol.dispose');
+require('../modules/esnext.symbol.is-registered-symbol');
+require('../modules/esnext.symbol.is-registered');
+require('../modules/esnext.symbol.is-well-known-symbol');
+require('../modules/esnext.symbol.is-well-known');
+require('../modules/esnext.symbol.matcher');
+require('../modules/esnext.symbol.metadata');
+require('../modules/esnext.symbol.metadata-key');
+require('../modules/esnext.symbol.observable');
+require('../modules/esnext.symbol.pattern-match');
+require('../modules/esnext.symbol.replace-all');
+require('../modules/esnext.typed-array.from-async');
+require('../modules/esnext.typed-array.at');
+require('../modules/esnext.typed-array.filter-out');
+require('../modules/esnext.typed-array.filter-reject');
+require('../modules/esnext.typed-array.find-last');
+require('../modules/esnext.typed-array.find-last-index');
+require('../modules/esnext.typed-array.group-by');
+require('../modules/esnext.typed-array.to-reversed');
+require('../modules/esnext.typed-array.to-sorted');
+require('../modules/esnext.typed-array.to-spliced');
+require('../modules/esnext.typed-array.unique-by');
+require('../modules/esnext.typed-array.with');
+require('../modules/esnext.uint8-array.from-base64');
+require('../modules/esnext.uint8-array.from-hex');
+require('../modules/esnext.uint8-array.set-from-base64');
+require('../modules/esnext.uint8-array.set-from-hex');
+require('../modules/esnext.uint8-array.to-base64');
+require('../modules/esnext.uint8-array.to-hex');
+require('../modules/esnext.weak-map.delete-all');
+require('../modules/esnext.weak-map.from');
+require('../modules/esnext.weak-map.of');
+require('../modules/esnext.weak-map.emplace');
+require('../modules/esnext.weak-map.get-or-insert');
+require('../modules/esnext.weak-map.get-or-insert-computed');
+require('../modules/esnext.weak-map.upsert');
+require('../modules/esnext.weak-set.add-all');
+require('../modules/esnext.weak-set.delete-all');
+require('../modules/esnext.weak-set.from');
+require('../modules/esnext.weak-set.of');
+require('../modules/web.atob');
+require('../modules/web.btoa');
+require('../modules/web.dom-collections.for-each');
+require('../modules/web.dom-collections.iterator');
+require('../modules/web.dom-exception.constructor');
+require('../modules/web.dom-exception.stack');
+require('../modules/web.dom-exception.to-string-tag');
+require('../modules/web.immediate');
+require('../modules/web.queue-microtask');
+require('../modules/web.self');
+require('../modules/web.structured-clone');
+require('../modules/web.timers');
+require('../modules/web.url');
+require('../modules/web.url.can-parse');
+require('../modules/web.url.parse');
+require('../modules/web.url.to-json');
+require('../modules/web.url-search-params');
+require('../modules/web.url-search-params.delete');
+require('../modules/web.url-search-params.has');
+require('../modules/web.url-search-params.size');
+
+module.exports = require('../internals/path');
diff --git a/node_modules/core-js/full/instance/at.js b/node_modules/core-js/full/instance/at.js
new file mode 100644
index 0000000..75de4fc
--- /dev/null
+++ b/node_modules/core-js/full/instance/at.js
@@ -0,0 +1,15 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var arrayMethod = require('../array/virtual/at');
+var stringMethod = require('../string/virtual/at');
+
+var ArrayPrototype = Array.prototype;
+var StringPrototype = String.prototype;
+
+module.exports = function (it) {
+  var own = it.at;
+  if (it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.at)) return arrayMethod;
+  if (typeof it == 'string' || it === StringPrototype || (isPrototypeOf(StringPrototype, it) && own === StringPrototype.at)) {
+    return stringMethod;
+  } return own;
+};
diff --git a/node_modules/core-js/full/instance/bind.js b/node_modules/core-js/full/instance/bind.js
new file mode 100644
index 0000000..229d51a
--- /dev/null
+++ b/node_modules/core-js/full/instance/bind.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/bind');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/code-point-at.js b/node_modules/core-js/full/instance/code-point-at.js
new file mode 100644
index 0000000..57d254a
--- /dev/null
+++ b/node_modules/core-js/full/instance/code-point-at.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/code-point-at');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/code-points.js b/node_modules/core-js/full/instance/code-points.js
new file mode 100644
index 0000000..d2050a7
--- /dev/null
+++ b/node_modules/core-js/full/instance/code-points.js
@@ -0,0 +1,11 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../string/virtual/code-points');
+
+var StringPrototype = String.prototype;
+
+module.exports = function (it) {
+  var own = it.codePoints;
+  return typeof it == 'string' || it === StringPrototype
+    || (isPrototypeOf(StringPrototype, it) && own === StringPrototype.codePoints) ? method : own;
+};
diff --git a/node_modules/core-js/full/instance/concat.js b/node_modules/core-js/full/instance/concat.js
new file mode 100644
index 0000000..7efdf2c
--- /dev/null
+++ b/node_modules/core-js/full/instance/concat.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/concat');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/copy-within.js b/node_modules/core-js/full/instance/copy-within.js
new file mode 100644
index 0000000..3ee9dc5
--- /dev/null
+++ b/node_modules/core-js/full/instance/copy-within.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/copy-within');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/demethodize.js b/node_modules/core-js/full/instance/demethodize.js
new file mode 100644
index 0000000..c463e6c
--- /dev/null
+++ b/node_modules/core-js/full/instance/demethodize.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../function/virtual/demethodize');
+
+var FunctionPrototype = Function.prototype;
+
+module.exports = function (it) {
+  var own = it.demethodize;
+  return it === FunctionPrototype || (isPrototypeOf(FunctionPrototype, it) && own === FunctionPrototype.demethodize) ? method : own;
+};
diff --git a/node_modules/core-js/full/instance/ends-with.js b/node_modules/core-js/full/instance/ends-with.js
new file mode 100644
index 0000000..af148b0
--- /dev/null
+++ b/node_modules/core-js/full/instance/ends-with.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/ends-with');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/entries.js b/node_modules/core-js/full/instance/entries.js
new file mode 100644
index 0000000..e29f0d3
--- /dev/null
+++ b/node_modules/core-js/full/instance/entries.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/entries');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/every.js b/node_modules/core-js/full/instance/every.js
new file mode 100644
index 0000000..49822cb
--- /dev/null
+++ b/node_modules/core-js/full/instance/every.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/every');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/fill.js b/node_modules/core-js/full/instance/fill.js
new file mode 100644
index 0000000..d4a97d4
--- /dev/null
+++ b/node_modules/core-js/full/instance/fill.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/fill');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/filter-out.js b/node_modules/core-js/full/instance/filter-out.js
new file mode 100644
index 0000000..ea5fb5b
--- /dev/null
+++ b/node_modules/core-js/full/instance/filter-out.js
@@ -0,0 +1,11 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/filter-out');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.filterOut;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.filterOut) ? method : own;
+};
diff --git a/node_modules/core-js/full/instance/filter-reject.js b/node_modules/core-js/full/instance/filter-reject.js
new file mode 100644
index 0000000..fbf438d
--- /dev/null
+++ b/node_modules/core-js/full/instance/filter-reject.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/filter-reject');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.filterReject;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.filterReject) ? method : own;
+};
diff --git a/node_modules/core-js/full/instance/filter.js b/node_modules/core-js/full/instance/filter.js
new file mode 100644
index 0000000..2f0f1b5
--- /dev/null
+++ b/node_modules/core-js/full/instance/filter.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/filter');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/find-index.js b/node_modules/core-js/full/instance/find-index.js
new file mode 100644
index 0000000..fb201b7
--- /dev/null
+++ b/node_modules/core-js/full/instance/find-index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/find-index');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/find-last-index.js b/node_modules/core-js/full/instance/find-last-index.js
new file mode 100644
index 0000000..031dfc9
--- /dev/null
+++ b/node_modules/core-js/full/instance/find-last-index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/find-last-index');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/find-last.js b/node_modules/core-js/full/instance/find-last.js
new file mode 100644
index 0000000..1f5dcc6
--- /dev/null
+++ b/node_modules/core-js/full/instance/find-last.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/find-last');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/find.js b/node_modules/core-js/full/instance/find.js
new file mode 100644
index 0000000..80aafe1
--- /dev/null
+++ b/node_modules/core-js/full/instance/find.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/find');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/flags.js b/node_modules/core-js/full/instance/flags.js
new file mode 100644
index 0000000..ad4640c
--- /dev/null
+++ b/node_modules/core-js/full/instance/flags.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/flags');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/flat-map.js b/node_modules/core-js/full/instance/flat-map.js
new file mode 100644
index 0000000..53315a1
--- /dev/null
+++ b/node_modules/core-js/full/instance/flat-map.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/flat-map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/flat.js b/node_modules/core-js/full/instance/flat.js
new file mode 100644
index 0000000..20538cd
--- /dev/null
+++ b/node_modules/core-js/full/instance/flat.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/flat');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/for-each.js b/node_modules/core-js/full/instance/for-each.js
new file mode 100644
index 0000000..0fc6785
--- /dev/null
+++ b/node_modules/core-js/full/instance/for-each.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/for-each');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/group-by-to-map.js b/node_modules/core-js/full/instance/group-by-to-map.js
new file mode 100644
index 0000000..35da2a7
--- /dev/null
+++ b/node_modules/core-js/full/instance/group-by-to-map.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/group-by-to-map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/group-by.js b/node_modules/core-js/full/instance/group-by.js
new file mode 100644
index 0000000..0162d6d
--- /dev/null
+++ b/node_modules/core-js/full/instance/group-by.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/group-by');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/group-to-map.js b/node_modules/core-js/full/instance/group-to-map.js
new file mode 100644
index 0000000..62d9a1f
--- /dev/null
+++ b/node_modules/core-js/full/instance/group-to-map.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/group-to-map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/group.js b/node_modules/core-js/full/instance/group.js
new file mode 100644
index 0000000..9fc4fd1
--- /dev/null
+++ b/node_modules/core-js/full/instance/group.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/group');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/includes.js b/node_modules/core-js/full/instance/includes.js
new file mode 100644
index 0000000..a5d876e
--- /dev/null
+++ b/node_modules/core-js/full/instance/includes.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/includes');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/index-of.js b/node_modules/core-js/full/instance/index-of.js
new file mode 100644
index 0000000..bbfecf2
--- /dev/null
+++ b/node_modules/core-js/full/instance/index-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/index-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/is-well-formed.js b/node_modules/core-js/full/instance/is-well-formed.js
new file mode 100644
index 0000000..2480643
--- /dev/null
+++ b/node_modules/core-js/full/instance/is-well-formed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/is-well-formed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/keys.js b/node_modules/core-js/full/instance/keys.js
new file mode 100644
index 0000000..d066c77
--- /dev/null
+++ b/node_modules/core-js/full/instance/keys.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/keys');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/last-index-of.js b/node_modules/core-js/full/instance/last-index-of.js
new file mode 100644
index 0000000..04d3e45
--- /dev/null
+++ b/node_modules/core-js/full/instance/last-index-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/last-index-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/map.js b/node_modules/core-js/full/instance/map.js
new file mode 100644
index 0000000..2b2d637
--- /dev/null
+++ b/node_modules/core-js/full/instance/map.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/match-all.js b/node_modules/core-js/full/instance/match-all.js
new file mode 100644
index 0000000..0207313
--- /dev/null
+++ b/node_modules/core-js/full/instance/match-all.js
@@ -0,0 +1,7 @@
+'use strict';
+// TODO: remove from `core-js@4`
+require('../../modules/esnext.string.match-all');
+
+var parent = require('../../actual/instance/match-all');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/pad-end.js b/node_modules/core-js/full/instance/pad-end.js
new file mode 100644
index 0000000..a288446
--- /dev/null
+++ b/node_modules/core-js/full/instance/pad-end.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/pad-end');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/pad-start.js b/node_modules/core-js/full/instance/pad-start.js
new file mode 100644
index 0000000..1e66bd4
--- /dev/null
+++ b/node_modules/core-js/full/instance/pad-start.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/pad-start');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/push.js b/node_modules/core-js/full/instance/push.js
new file mode 100644
index 0000000..5b49c01
--- /dev/null
+++ b/node_modules/core-js/full/instance/push.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/push');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/reduce-right.js b/node_modules/core-js/full/instance/reduce-right.js
new file mode 100644
index 0000000..0ffbf82
--- /dev/null
+++ b/node_modules/core-js/full/instance/reduce-right.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/reduce-right');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/reduce.js b/node_modules/core-js/full/instance/reduce.js
new file mode 100644
index 0000000..ae52442
--- /dev/null
+++ b/node_modules/core-js/full/instance/reduce.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/reduce');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/repeat.js b/node_modules/core-js/full/instance/repeat.js
new file mode 100644
index 0000000..5828652
--- /dev/null
+++ b/node_modules/core-js/full/instance/repeat.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/repeat');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/replace-all.js b/node_modules/core-js/full/instance/replace-all.js
new file mode 100644
index 0000000..f218e3e
--- /dev/null
+++ b/node_modules/core-js/full/instance/replace-all.js
@@ -0,0 +1,7 @@
+'use strict';
+// TODO: remove from `core-js@4`
+require('../../modules/esnext.string.replace-all');
+
+var parent = require('../../actual/instance/replace-all');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/reverse.js b/node_modules/core-js/full/instance/reverse.js
new file mode 100644
index 0000000..5541ac7
--- /dev/null
+++ b/node_modules/core-js/full/instance/reverse.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/reverse');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/slice.js b/node_modules/core-js/full/instance/slice.js
new file mode 100644
index 0000000..07cdbd7
--- /dev/null
+++ b/node_modules/core-js/full/instance/slice.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/slice');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/some.js b/node_modules/core-js/full/instance/some.js
new file mode 100644
index 0000000..c01be5f
--- /dev/null
+++ b/node_modules/core-js/full/instance/some.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/some');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/sort.js b/node_modules/core-js/full/instance/sort.js
new file mode 100644
index 0000000..b51a3f1
--- /dev/null
+++ b/node_modules/core-js/full/instance/sort.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/sort');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/splice.js b/node_modules/core-js/full/instance/splice.js
new file mode 100644
index 0000000..b0fd55e
--- /dev/null
+++ b/node_modules/core-js/full/instance/splice.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/splice');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/starts-with.js b/node_modules/core-js/full/instance/starts-with.js
new file mode 100644
index 0000000..4d7a24e
--- /dev/null
+++ b/node_modules/core-js/full/instance/starts-with.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/starts-with');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/to-reversed.js b/node_modules/core-js/full/instance/to-reversed.js
new file mode 100644
index 0000000..030a66a
--- /dev/null
+++ b/node_modules/core-js/full/instance/to-reversed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/to-reversed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/to-sorted.js b/node_modules/core-js/full/instance/to-sorted.js
new file mode 100644
index 0000000..623a535
--- /dev/null
+++ b/node_modules/core-js/full/instance/to-sorted.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/to-sorted');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/to-spliced.js b/node_modules/core-js/full/instance/to-spliced.js
new file mode 100644
index 0000000..92fc837
--- /dev/null
+++ b/node_modules/core-js/full/instance/to-spliced.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/to-spliced');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/to-well-formed.js b/node_modules/core-js/full/instance/to-well-formed.js
new file mode 100644
index 0000000..751ce51
--- /dev/null
+++ b/node_modules/core-js/full/instance/to-well-formed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/to-well-formed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/trim-end.js b/node_modules/core-js/full/instance/trim-end.js
new file mode 100644
index 0000000..c28bf3f
--- /dev/null
+++ b/node_modules/core-js/full/instance/trim-end.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/trim-end');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/trim-left.js b/node_modules/core-js/full/instance/trim-left.js
new file mode 100644
index 0000000..2888ccf
--- /dev/null
+++ b/node_modules/core-js/full/instance/trim-left.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/trim-left');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/trim-right.js b/node_modules/core-js/full/instance/trim-right.js
new file mode 100644
index 0000000..83c6b40
--- /dev/null
+++ b/node_modules/core-js/full/instance/trim-right.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/trim-right');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/trim-start.js b/node_modules/core-js/full/instance/trim-start.js
new file mode 100644
index 0000000..3e92d9f
--- /dev/null
+++ b/node_modules/core-js/full/instance/trim-start.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/trim-start');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/trim.js b/node_modules/core-js/full/instance/trim.js
new file mode 100644
index 0000000..6327d40
--- /dev/null
+++ b/node_modules/core-js/full/instance/trim.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/trim');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/un-this.js b/node_modules/core-js/full/instance/un-this.js
new file mode 100644
index 0000000..a1d40b7
--- /dev/null
+++ b/node_modules/core-js/full/instance/un-this.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../function/virtual/un-this');
+
+var FunctionPrototype = Function.prototype;
+
+module.exports = function (it) {
+  var own = it.unThis;
+  return it === FunctionPrototype || (isPrototypeOf(FunctionPrototype, it) && own === FunctionPrototype.unThis) ? method : own;
+};
diff --git a/node_modules/core-js/full/instance/unique-by.js b/node_modules/core-js/full/instance/unique-by.js
new file mode 100644
index 0000000..faad544
--- /dev/null
+++ b/node_modules/core-js/full/instance/unique-by.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/unique-by');
+
+var ArrayPrototype = Array.prototype;
+
+module.exports = function (it) {
+  var own = it.uniqueBy;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.uniqueBy) ? method : own;
+};
diff --git a/node_modules/core-js/full/instance/unshift.js b/node_modules/core-js/full/instance/unshift.js
new file mode 100644
index 0000000..d92d4a6
--- /dev/null
+++ b/node_modules/core-js/full/instance/unshift.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/unshift');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/values.js b/node_modules/core-js/full/instance/values.js
new file mode 100644
index 0000000..5b3a76e
--- /dev/null
+++ b/node_modules/core-js/full/instance/values.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/values');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/instance/with.js b/node_modules/core-js/full/instance/with.js
new file mode 100644
index 0000000..b1eb565
--- /dev/null
+++ b/node_modules/core-js/full/instance/with.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/instance/with');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/is-iterable.js b/node_modules/core-js/full/is-iterable.js
new file mode 100644
index 0000000..c8f44d7
--- /dev/null
+++ b/node_modules/core-js/full/is-iterable.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../actual/is-iterable');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/iterator/as-indexed-pairs.js b/node_modules/core-js/full/iterator/as-indexed-pairs.js
new file mode 100644
index 0000000..e8504f3
--- /dev/null
+++ b/node_modules/core-js/full/iterator/as-indexed-pairs.js
@@ -0,0 +1,9 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/esnext.iterator.constructor');
+require('../../modules/esnext.iterator.as-indexed-pairs');
+
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Iterator', 'asIndexedPairs');
+
diff --git a/node_modules/core-js/full/iterator/concat.js b/node_modules/core-js/full/iterator/concat.js
new file mode 100644
index 0000000..f0979dd
--- /dev/null
+++ b/node_modules/core-js/full/iterator/concat.js
@@ -0,0 +1,20 @@
+'use strict';
+require('../../modules/es.array.iterator');
+require('../../modules/es.object.to-string');
+require('../../modules/es.string.iterator');
+require('../../modules/es.iterator.constructor');
+require('../../modules/es.iterator.drop');
+require('../../modules/es.iterator.every');
+require('../../modules/es.iterator.filter');
+require('../../modules/es.iterator.find');
+require('../../modules/es.iterator.flat-map');
+require('../../modules/es.iterator.for-each');
+require('../../modules/es.iterator.map');
+require('../../modules/es.iterator.reduce');
+require('../../modules/es.iterator.some');
+require('../../modules/es.iterator.take');
+require('../../modules/es.iterator.to-array');
+require('../../modules/esnext.iterator.concat');
+var path = require('../../internals/path');
+
+module.exports = path.Iterator.concat;
diff --git a/node_modules/core-js/full/iterator/dispose.js b/node_modules/core-js/full/iterator/dispose.js
new file mode 100644
index 0000000..6246a05
--- /dev/null
+++ b/node_modules/core-js/full/iterator/dispose.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/iterator/dispose');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/iterator/drop.js b/node_modules/core-js/full/iterator/drop.js
new file mode 100644
index 0000000..dc9a548
--- /dev/null
+++ b/node_modules/core-js/full/iterator/drop.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/iterator/drop');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/iterator/every.js b/node_modules/core-js/full/iterator/every.js
new file mode 100644
index 0000000..3f7b394
--- /dev/null
+++ b/node_modules/core-js/full/iterator/every.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/iterator/every');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/iterator/filter.js b/node_modules/core-js/full/iterator/filter.js
new file mode 100644
index 0000000..f19dd0f
--- /dev/null
+++ b/node_modules/core-js/full/iterator/filter.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/iterator/filter');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/iterator/find.js b/node_modules/core-js/full/iterator/find.js
new file mode 100644
index 0000000..e26690e
--- /dev/null
+++ b/node_modules/core-js/full/iterator/find.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/iterator/find');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/iterator/flat-map.js b/node_modules/core-js/full/iterator/flat-map.js
new file mode 100644
index 0000000..e6d721d
--- /dev/null
+++ b/node_modules/core-js/full/iterator/flat-map.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/iterator/flat-map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/iterator/for-each.js b/node_modules/core-js/full/iterator/for-each.js
new file mode 100644
index 0000000..b378e32
--- /dev/null
+++ b/node_modules/core-js/full/iterator/for-each.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/iterator/for-each');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/iterator/from.js b/node_modules/core-js/full/iterator/from.js
new file mode 100644
index 0000000..57cece2
--- /dev/null
+++ b/node_modules/core-js/full/iterator/from.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/iterator/from');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/iterator/index.js b/node_modules/core-js/full/iterator/index.js
new file mode 100644
index 0000000..f65eb51
--- /dev/null
+++ b/node_modules/core-js/full/iterator/index.js
@@ -0,0 +1,9 @@
+'use strict';
+var parent = require('../../actual/iterator');
+require('../../modules/esnext.iterator.concat');
+require('../../modules/esnext.iterator.range');
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.iterator.as-indexed-pairs');
+require('../../modules/esnext.iterator.indexed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/iterator/indexed.js b/node_modules/core-js/full/iterator/indexed.js
new file mode 100644
index 0000000..6a2aa84
--- /dev/null
+++ b/node_modules/core-js/full/iterator/indexed.js
@@ -0,0 +1,10 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../../modules/es.object.to-string');
+require('../../modules/esnext.iterator.constructor');
+require('../../modules/esnext.iterator.indexed');
+
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Iterator', 'indexed');
+
diff --git a/node_modules/core-js/full/iterator/map.js b/node_modules/core-js/full/iterator/map.js
new file mode 100644
index 0000000..e41e383
--- /dev/null
+++ b/node_modules/core-js/full/iterator/map.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/iterator/map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/iterator/range.js b/node_modules/core-js/full/iterator/range.js
new file mode 100644
index 0000000..20f811b
--- /dev/null
+++ b/node_modules/core-js/full/iterator/range.js
@@ -0,0 +1,7 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/esnext.iterator.constructor');
+require('../../modules/esnext.iterator.range');
+var path = require('../../internals/path');
+
+module.exports = path.Iterator.range;
diff --git a/node_modules/core-js/full/iterator/reduce.js b/node_modules/core-js/full/iterator/reduce.js
new file mode 100644
index 0000000..d2c30ac
--- /dev/null
+++ b/node_modules/core-js/full/iterator/reduce.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/iterator/reduce');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/iterator/some.js b/node_modules/core-js/full/iterator/some.js
new file mode 100644
index 0000000..a6ea597
--- /dev/null
+++ b/node_modules/core-js/full/iterator/some.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/iterator/some');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/iterator/take.js b/node_modules/core-js/full/iterator/take.js
new file mode 100644
index 0000000..6988d74
--- /dev/null
+++ b/node_modules/core-js/full/iterator/take.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/iterator/take');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/iterator/to-array.js b/node_modules/core-js/full/iterator/to-array.js
new file mode 100644
index 0000000..e8a923d
--- /dev/null
+++ b/node_modules/core-js/full/iterator/to-array.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/iterator/to-array');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/iterator/to-async.js b/node_modules/core-js/full/iterator/to-async.js
new file mode 100644
index 0000000..8c6985c
--- /dev/null
+++ b/node_modules/core-js/full/iterator/to-async.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/iterator/to-async');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/json/index.js b/node_modules/core-js/full/json/index.js
new file mode 100644
index 0000000..7f01daa
--- /dev/null
+++ b/node_modules/core-js/full/json/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/json');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/json/is-raw-json.js b/node_modules/core-js/full/json/is-raw-json.js
new file mode 100644
index 0000000..ba34b87
--- /dev/null
+++ b/node_modules/core-js/full/json/is-raw-json.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/json/is-raw-json');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/json/parse.js b/node_modules/core-js/full/json/parse.js
new file mode 100644
index 0000000..10319ef
--- /dev/null
+++ b/node_modules/core-js/full/json/parse.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/json/parse');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/json/raw-json.js b/node_modules/core-js/full/json/raw-json.js
new file mode 100644
index 0000000..1b85bf6
--- /dev/null
+++ b/node_modules/core-js/full/json/raw-json.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/json/raw-json');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/json/stringify.js b/node_modules/core-js/full/json/stringify.js
new file mode 100644
index 0000000..4b65c67
--- /dev/null
+++ b/node_modules/core-js/full/json/stringify.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/json/stringify');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/json/to-string-tag.js b/node_modules/core-js/full/json/to-string-tag.js
new file mode 100644
index 0000000..d0eae3c
--- /dev/null
+++ b/node_modules/core-js/full/json/to-string-tag.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/json/to-string-tag');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/map/delete-all.js b/node_modules/core-js/full/map/delete-all.js
new file mode 100644
index 0000000..53f7532
--- /dev/null
+++ b/node_modules/core-js/full/map/delete-all.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.map');
+require('../../modules/esnext.map.delete-all');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Map', 'deleteAll');
diff --git a/node_modules/core-js/full/map/emplace.js b/node_modules/core-js/full/map/emplace.js
new file mode 100644
index 0000000..b23b795
--- /dev/null
+++ b/node_modules/core-js/full/map/emplace.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.map');
+require('../../modules/esnext.map.emplace');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Map', 'emplace');
diff --git a/node_modules/core-js/full/map/every.js b/node_modules/core-js/full/map/every.js
new file mode 100644
index 0000000..cb6053b
--- /dev/null
+++ b/node_modules/core-js/full/map/every.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.map');
+require('../../modules/esnext.map.every');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Map', 'every');
diff --git a/node_modules/core-js/full/map/filter.js b/node_modules/core-js/full/map/filter.js
new file mode 100644
index 0000000..e94aafb
--- /dev/null
+++ b/node_modules/core-js/full/map/filter.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.map');
+require('../../modules/esnext.map.filter');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Map', 'filter');
diff --git a/node_modules/core-js/full/map/find-key.js b/node_modules/core-js/full/map/find-key.js
new file mode 100644
index 0000000..942c457
--- /dev/null
+++ b/node_modules/core-js/full/map/find-key.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.map');
+require('../../modules/esnext.map.find-key');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Map', 'findKey');
diff --git a/node_modules/core-js/full/map/find.js b/node_modules/core-js/full/map/find.js
new file mode 100644
index 0000000..f1326b2
--- /dev/null
+++ b/node_modules/core-js/full/map/find.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.map');
+require('../../modules/esnext.map.find');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Map', 'find');
diff --git a/node_modules/core-js/full/map/from.js b/node_modules/core-js/full/map/from.js
new file mode 100644
index 0000000..f19d8fd
--- /dev/null
+++ b/node_modules/core-js/full/map/from.js
@@ -0,0 +1,26 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.array.iterator');
+require('../../modules/es.map');
+require('../../modules/es.string.iterator');
+require('../../modules/esnext.map.from');
+require('../../modules/esnext.map.delete-all');
+require('../../modules/esnext.map.emplace');
+require('../../modules/esnext.map.every');
+require('../../modules/esnext.map.filter');
+require('../../modules/esnext.map.find');
+require('../../modules/esnext.map.find-key');
+require('../../modules/esnext.map.get-or-insert');
+require('../../modules/esnext.map.get-or-insert-computed');
+require('../../modules/esnext.map.includes');
+require('../../modules/esnext.map.key-of');
+require('../../modules/esnext.map.map-keys');
+require('../../modules/esnext.map.map-values');
+require('../../modules/esnext.map.merge');
+require('../../modules/esnext.map.reduce');
+require('../../modules/esnext.map.some');
+require('../../modules/esnext.map.update');
+require('../../modules/web.dom-collections.iterator');
+var path = require('../../internals/path');
+
+module.exports = path.Map.from;
diff --git a/node_modules/core-js/full/map/get-or-insert-computed.js b/node_modules/core-js/full/map/get-or-insert-computed.js
new file mode 100644
index 0000000..82f01b4
--- /dev/null
+++ b/node_modules/core-js/full/map/get-or-insert-computed.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.map');
+require('../../modules/esnext.map.get-or-insert-computed');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Map', 'getOrInsertComputed');
diff --git a/node_modules/core-js/full/map/get-or-insert.js b/node_modules/core-js/full/map/get-or-insert.js
new file mode 100644
index 0000000..a526ad6
--- /dev/null
+++ b/node_modules/core-js/full/map/get-or-insert.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.map');
+require('../../modules/esnext.map.get-or-insert');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Map', 'getOrInsert');
diff --git a/node_modules/core-js/full/map/group-by.js b/node_modules/core-js/full/map/group-by.js
new file mode 100644
index 0000000..1728363
--- /dev/null
+++ b/node_modules/core-js/full/map/group-by.js
@@ -0,0 +1,20 @@
+'use strict';
+var parent = require('../../actual/map/group-by');
+require('../../modules/esnext.map.delete-all');
+require('../../modules/esnext.map.emplace');
+require('../../modules/esnext.map.every');
+require('../../modules/esnext.map.filter');
+require('../../modules/esnext.map.find');
+require('../../modules/esnext.map.find-key');
+require('../../modules/esnext.map.get-or-insert');
+require('../../modules/esnext.map.get-or-insert-computed');
+require('../../modules/esnext.map.includes');
+require('../../modules/esnext.map.key-of');
+require('../../modules/esnext.map.map-keys');
+require('../../modules/esnext.map.map-values');
+require('../../modules/esnext.map.merge');
+require('../../modules/esnext.map.reduce');
+require('../../modules/esnext.map.some');
+require('../../modules/esnext.map.update');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/map/includes.js b/node_modules/core-js/full/map/includes.js
new file mode 100644
index 0000000..52432ed
--- /dev/null
+++ b/node_modules/core-js/full/map/includes.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.map');
+require('../../modules/esnext.map.includes');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Map', 'includes');
diff --git a/node_modules/core-js/full/map/index.js b/node_modules/core-js/full/map/index.js
new file mode 100644
index 0000000..26c5cab
--- /dev/null
+++ b/node_modules/core-js/full/map/index.js
@@ -0,0 +1,27 @@
+'use strict';
+var parent = require('../../actual/map');
+require('../../modules/esnext.map.from');
+require('../../modules/esnext.map.of');
+require('../../modules/esnext.map.key-by');
+require('../../modules/esnext.map.delete-all');
+require('../../modules/esnext.map.emplace');
+require('../../modules/esnext.map.every');
+require('../../modules/esnext.map.filter');
+require('../../modules/esnext.map.find');
+require('../../modules/esnext.map.find-key');
+require('../../modules/esnext.map.includes');
+require('../../modules/esnext.map.get-or-insert');
+require('../../modules/esnext.map.get-or-insert-computed');
+require('../../modules/esnext.map.key-of');
+require('../../modules/esnext.map.map-keys');
+require('../../modules/esnext.map.map-values');
+require('../../modules/esnext.map.merge');
+require('../../modules/esnext.map.reduce');
+require('../../modules/esnext.map.some');
+require('../../modules/esnext.map.update');
+// TODO: remove from `core-js@4`
+require('../../modules/esnext.map.upsert');
+// TODO: remove from `core-js@4`
+require('../../modules/esnext.map.update-or-insert');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/map/key-by.js b/node_modules/core-js/full/map/key-by.js
new file mode 100644
index 0000000..92c3570
--- /dev/null
+++ b/node_modules/core-js/full/map/key-by.js
@@ -0,0 +1,30 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.map');
+require('../../modules/esnext.map.key-by');
+require('../../modules/esnext.map.delete-all');
+require('../../modules/esnext.map.emplace');
+require('../../modules/esnext.map.every');
+require('../../modules/esnext.map.filter');
+require('../../modules/esnext.map.find');
+require('../../modules/esnext.map.find-key');
+require('../../modules/esnext.map.get-or-insert');
+require('../../modules/esnext.map.get-or-insert-computed');
+require('../../modules/esnext.map.includes');
+require('../../modules/esnext.map.key-of');
+require('../../modules/esnext.map.map-keys');
+require('../../modules/esnext.map.map-values');
+require('../../modules/esnext.map.merge');
+require('../../modules/esnext.map.reduce');
+require('../../modules/esnext.map.some');
+require('../../modules/esnext.map.update');
+var call = require('../../internals/function-call');
+var isCallable = require('../../internals/is-callable');
+var path = require('../../internals/path');
+
+var Map = path.Map;
+var mapKeyBy = Map.keyBy;
+
+module.exports = function keyBy(source, iterable, keyDerivative) {
+  return call(mapKeyBy, isCallable(this) ? this : Map, source, iterable, keyDerivative);
+};
diff --git a/node_modules/core-js/full/map/key-of.js b/node_modules/core-js/full/map/key-of.js
new file mode 100644
index 0000000..985c2ca
--- /dev/null
+++ b/node_modules/core-js/full/map/key-of.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.map');
+require('../../modules/esnext.map.key-of');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Map', 'keyOf');
diff --git a/node_modules/core-js/full/map/map-keys.js b/node_modules/core-js/full/map/map-keys.js
new file mode 100644
index 0000000..168d985
--- /dev/null
+++ b/node_modules/core-js/full/map/map-keys.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.map');
+require('../../modules/esnext.map.map-keys');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Map', 'mapKeys');
diff --git a/node_modules/core-js/full/map/map-values.js b/node_modules/core-js/full/map/map-values.js
new file mode 100644
index 0000000..2346a0b
--- /dev/null
+++ b/node_modules/core-js/full/map/map-values.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.map');
+require('../../modules/esnext.map.map-values');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Map', 'mapValues');
diff --git a/node_modules/core-js/full/map/merge.js b/node_modules/core-js/full/map/merge.js
new file mode 100644
index 0000000..85c0b0a
--- /dev/null
+++ b/node_modules/core-js/full/map/merge.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.map');
+require('../../modules/esnext.map.merge');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Map', 'merge');
diff --git a/node_modules/core-js/full/map/of.js b/node_modules/core-js/full/map/of.js
new file mode 100644
index 0000000..6a246dc
--- /dev/null
+++ b/node_modules/core-js/full/map/of.js
@@ -0,0 +1,24 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.array.iterator');
+require('../../modules/es.map');
+require('../../modules/esnext.map.of');
+require('../../modules/esnext.map.delete-all');
+require('../../modules/esnext.map.emplace');
+require('../../modules/esnext.map.every');
+require('../../modules/esnext.map.filter');
+require('../../modules/esnext.map.find');
+require('../../modules/esnext.map.find-key');
+require('../../modules/esnext.map.get-or-insert');
+require('../../modules/esnext.map.get-or-insert-computed');
+require('../../modules/esnext.map.includes');
+require('../../modules/esnext.map.key-of');
+require('../../modules/esnext.map.map-keys');
+require('../../modules/esnext.map.map-values');
+require('../../modules/esnext.map.merge');
+require('../../modules/esnext.map.reduce');
+require('../../modules/esnext.map.some');
+require('../../modules/esnext.map.update');
+var path = require('../../internals/path');
+
+module.exports = path.Map.of;
diff --git a/node_modules/core-js/full/map/reduce.js b/node_modules/core-js/full/map/reduce.js
new file mode 100644
index 0000000..88bf566
--- /dev/null
+++ b/node_modules/core-js/full/map/reduce.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.map');
+require('../../modules/esnext.map.reduce');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Map', 'reduce');
diff --git a/node_modules/core-js/full/map/some.js b/node_modules/core-js/full/map/some.js
new file mode 100644
index 0000000..fb55efb
--- /dev/null
+++ b/node_modules/core-js/full/map/some.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.map');
+require('../../modules/esnext.map.some');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Map', 'some');
diff --git a/node_modules/core-js/full/map/update-or-insert.js b/node_modules/core-js/full/map/update-or-insert.js
new file mode 100644
index 0000000..299d9c3
--- /dev/null
+++ b/node_modules/core-js/full/map/update-or-insert.js
@@ -0,0 +1,7 @@
+'use strict';
+// TODO: remove from `core-js@4`
+require('../../modules/es.map');
+require('../../modules/esnext.map.update-or-insert');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Map', 'updateOrInsert');
diff --git a/node_modules/core-js/full/map/update.js b/node_modules/core-js/full/map/update.js
new file mode 100644
index 0000000..abc452c
--- /dev/null
+++ b/node_modules/core-js/full/map/update.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.map');
+require('../../modules/esnext.map.update');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Map', 'update');
diff --git a/node_modules/core-js/full/map/upsert.js b/node_modules/core-js/full/map/upsert.js
new file mode 100644
index 0000000..7467fe7
--- /dev/null
+++ b/node_modules/core-js/full/map/upsert.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.map');
+require('../../modules/esnext.map.upsert');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Map', 'upsert');
diff --git a/node_modules/core-js/full/math/acosh.js b/node_modules/core-js/full/math/acosh.js
new file mode 100644
index 0000000..ae3e386
--- /dev/null
+++ b/node_modules/core-js/full/math/acosh.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/math/acosh');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/math/asinh.js b/node_modules/core-js/full/math/asinh.js
new file mode 100644
index 0000000..7771b33
--- /dev/null
+++ b/node_modules/core-js/full/math/asinh.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/math/asinh');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/math/atanh.js b/node_modules/core-js/full/math/atanh.js
new file mode 100644
index 0000000..40ffa97
--- /dev/null
+++ b/node_modules/core-js/full/math/atanh.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/math/atanh');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/math/cbrt.js b/node_modules/core-js/full/math/cbrt.js
new file mode 100644
index 0000000..add0887
--- /dev/null
+++ b/node_modules/core-js/full/math/cbrt.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/math/cbrt');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/math/clamp.js b/node_modules/core-js/full/math/clamp.js
new file mode 100644
index 0000000..fdece38
--- /dev/null
+++ b/node_modules/core-js/full/math/clamp.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.math.clamp');
+var path = require('../../internals/path');
+
+module.exports = path.Math.clamp;
diff --git a/node_modules/core-js/full/math/clz32.js b/node_modules/core-js/full/math/clz32.js
new file mode 100644
index 0000000..cb9c405
--- /dev/null
+++ b/node_modules/core-js/full/math/clz32.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/math/clz32');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/math/cosh.js b/node_modules/core-js/full/math/cosh.js
new file mode 100644
index 0000000..16e37a5
--- /dev/null
+++ b/node_modules/core-js/full/math/cosh.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/math/cosh');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/math/deg-per-rad.js b/node_modules/core-js/full/math/deg-per-rad.js
new file mode 100644
index 0000000..1580018
--- /dev/null
+++ b/node_modules/core-js/full/math/deg-per-rad.js
@@ -0,0 +1,4 @@
+'use strict';
+require('../../modules/esnext.math.deg-per-rad');
+
+module.exports = Math.PI / 180;
diff --git a/node_modules/core-js/full/math/degrees.js b/node_modules/core-js/full/math/degrees.js
new file mode 100644
index 0000000..fd68e7e
--- /dev/null
+++ b/node_modules/core-js/full/math/degrees.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.math.degrees');
+var path = require('../../internals/path');
+
+module.exports = path.Math.degrees;
diff --git a/node_modules/core-js/full/math/expm1.js b/node_modules/core-js/full/math/expm1.js
new file mode 100644
index 0000000..29f007e
--- /dev/null
+++ b/node_modules/core-js/full/math/expm1.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/math/expm1');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/math/f16round.js b/node_modules/core-js/full/math/f16round.js
new file mode 100644
index 0000000..935ecf4
--- /dev/null
+++ b/node_modules/core-js/full/math/f16round.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/math/f16round');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/math/fround.js b/node_modules/core-js/full/math/fround.js
new file mode 100644
index 0000000..87df0b1
--- /dev/null
+++ b/node_modules/core-js/full/math/fround.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/math/fround');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/math/fscale.js b/node_modules/core-js/full/math/fscale.js
new file mode 100644
index 0000000..43dbe07
--- /dev/null
+++ b/node_modules/core-js/full/math/fscale.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.math.fscale');
+var path = require('../../internals/path');
+
+module.exports = path.Math.fscale;
diff --git a/node_modules/core-js/full/math/hypot.js b/node_modules/core-js/full/math/hypot.js
new file mode 100644
index 0000000..5b340dc
--- /dev/null
+++ b/node_modules/core-js/full/math/hypot.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/math/hypot');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/math/iaddh.js b/node_modules/core-js/full/math/iaddh.js
new file mode 100644
index 0000000..a0c3543
--- /dev/null
+++ b/node_modules/core-js/full/math/iaddh.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.math.iaddh');
+var path = require('../../internals/path');
+
+module.exports = path.Math.iaddh;
diff --git a/node_modules/core-js/full/math/imul.js b/node_modules/core-js/full/math/imul.js
new file mode 100644
index 0000000..0d0c7eb
--- /dev/null
+++ b/node_modules/core-js/full/math/imul.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/math/imul');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/math/imulh.js b/node_modules/core-js/full/math/imulh.js
new file mode 100644
index 0000000..ee0b267
--- /dev/null
+++ b/node_modules/core-js/full/math/imulh.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.math.imulh');
+var path = require('../../internals/path');
+
+module.exports = path.Math.imulh;
diff --git a/node_modules/core-js/full/math/index.js b/node_modules/core-js/full/math/index.js
new file mode 100644
index 0000000..f1db3d4
--- /dev/null
+++ b/node_modules/core-js/full/math/index.js
@@ -0,0 +1,18 @@
+'use strict';
+var parent = require('../../actual/math');
+require('../../modules/esnext.math.clamp');
+require('../../modules/esnext.math.deg-per-rad');
+require('../../modules/esnext.math.degrees');
+require('../../modules/esnext.math.fscale');
+require('../../modules/esnext.math.rad-per-deg');
+require('../../modules/esnext.math.radians');
+require('../../modules/esnext.math.scale');
+require('../../modules/esnext.math.seeded-prng');
+require('../../modules/esnext.math.signbit');
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.math.iaddh');
+require('../../modules/esnext.math.isubh');
+require('../../modules/esnext.math.imulh');
+require('../../modules/esnext.math.umulh');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/math/isubh.js b/node_modules/core-js/full/math/isubh.js
new file mode 100644
index 0000000..57ff251
--- /dev/null
+++ b/node_modules/core-js/full/math/isubh.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.math.isubh');
+var path = require('../../internals/path');
+
+module.exports = path.Math.isubh;
diff --git a/node_modules/core-js/full/math/log10.js b/node_modules/core-js/full/math/log10.js
new file mode 100644
index 0000000..32b479f
--- /dev/null
+++ b/node_modules/core-js/full/math/log10.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/math/log10');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/math/log1p.js b/node_modules/core-js/full/math/log1p.js
new file mode 100644
index 0000000..06b776d
--- /dev/null
+++ b/node_modules/core-js/full/math/log1p.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/math/log1p');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/math/log2.js b/node_modules/core-js/full/math/log2.js
new file mode 100644
index 0000000..248ff4d
--- /dev/null
+++ b/node_modules/core-js/full/math/log2.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/math/log2');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/math/rad-per-deg.js b/node_modules/core-js/full/math/rad-per-deg.js
new file mode 100644
index 0000000..2f66c12
--- /dev/null
+++ b/node_modules/core-js/full/math/rad-per-deg.js
@@ -0,0 +1,4 @@
+'use strict';
+require('../../modules/esnext.math.rad-per-deg');
+
+module.exports = 180 / Math.PI;
diff --git a/node_modules/core-js/full/math/radians.js b/node_modules/core-js/full/math/radians.js
new file mode 100644
index 0000000..27d0a67
--- /dev/null
+++ b/node_modules/core-js/full/math/radians.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.math.radians');
+var path = require('../../internals/path');
+
+module.exports = path.Math.radians;
diff --git a/node_modules/core-js/full/math/scale.js b/node_modules/core-js/full/math/scale.js
new file mode 100644
index 0000000..8a60a85
--- /dev/null
+++ b/node_modules/core-js/full/math/scale.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.math.scale');
+var path = require('../../internals/path');
+
+module.exports = path.Math.scale;
diff --git a/node_modules/core-js/full/math/seeded-prng.js b/node_modules/core-js/full/math/seeded-prng.js
new file mode 100644
index 0000000..513140a
--- /dev/null
+++ b/node_modules/core-js/full/math/seeded-prng.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.math.seeded-prng');
+var path = require('../../internals/path');
+
+module.exports = path.Math.seededPRNG;
diff --git a/node_modules/core-js/full/math/sign.js b/node_modules/core-js/full/math/sign.js
new file mode 100644
index 0000000..678db98
--- /dev/null
+++ b/node_modules/core-js/full/math/sign.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/math/sign');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/math/signbit.js b/node_modules/core-js/full/math/signbit.js
new file mode 100644
index 0000000..e652559
--- /dev/null
+++ b/node_modules/core-js/full/math/signbit.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.math.signbit');
+var path = require('../../internals/path');
+
+module.exports = path.Math.signbit;
diff --git a/node_modules/core-js/full/math/sinh.js b/node_modules/core-js/full/math/sinh.js
new file mode 100644
index 0000000..6d1a498
--- /dev/null
+++ b/node_modules/core-js/full/math/sinh.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/math/sinh');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/math/sum-precise.js b/node_modules/core-js/full/math/sum-precise.js
new file mode 100644
index 0000000..6d72206
--- /dev/null
+++ b/node_modules/core-js/full/math/sum-precise.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/math/sum-precise');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/math/tanh.js b/node_modules/core-js/full/math/tanh.js
new file mode 100644
index 0000000..b56c9af
--- /dev/null
+++ b/node_modules/core-js/full/math/tanh.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/math/tanh');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/math/to-string-tag.js b/node_modules/core-js/full/math/to-string-tag.js
new file mode 100644
index 0000000..f391373
--- /dev/null
+++ b/node_modules/core-js/full/math/to-string-tag.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/math/to-string-tag');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/math/trunc.js b/node_modules/core-js/full/math/trunc.js
new file mode 100644
index 0000000..f0d3f68
--- /dev/null
+++ b/node_modules/core-js/full/math/trunc.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/math/trunc');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/math/umulh.js b/node_modules/core-js/full/math/umulh.js
new file mode 100644
index 0000000..2cdd561
--- /dev/null
+++ b/node_modules/core-js/full/math/umulh.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.math.umulh');
+var path = require('../../internals/path');
+
+module.exports = path.Math.umulh;
diff --git a/node_modules/core-js/full/number/constructor.js b/node_modules/core-js/full/number/constructor.js
new file mode 100644
index 0000000..74d8256
--- /dev/null
+++ b/node_modules/core-js/full/number/constructor.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/number/constructor');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/number/epsilon.js b/node_modules/core-js/full/number/epsilon.js
new file mode 100644
index 0000000..85eda3d
--- /dev/null
+++ b/node_modules/core-js/full/number/epsilon.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/number/epsilon');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/number/from-string.js b/node_modules/core-js/full/number/from-string.js
new file mode 100644
index 0000000..334b931
--- /dev/null
+++ b/node_modules/core-js/full/number/from-string.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.number.from-string');
+var path = require('../../internals/path');
+
+module.exports = path.Number.fromString;
diff --git a/node_modules/core-js/full/number/index.js b/node_modules/core-js/full/number/index.js
new file mode 100644
index 0000000..d06e9c1
--- /dev/null
+++ b/node_modules/core-js/full/number/index.js
@@ -0,0 +1,8 @@
+'use strict';
+var parent = require('../../actual/number');
+
+module.exports = parent;
+
+require('../../modules/es.object.to-string');
+require('../../modules/esnext.number.from-string');
+require('../../modules/esnext.number.range');
diff --git a/node_modules/core-js/full/number/is-finite.js b/node_modules/core-js/full/number/is-finite.js
new file mode 100644
index 0000000..160692d
--- /dev/null
+++ b/node_modules/core-js/full/number/is-finite.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/number/is-finite');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/number/is-integer.js b/node_modules/core-js/full/number/is-integer.js
new file mode 100644
index 0000000..c871191
--- /dev/null
+++ b/node_modules/core-js/full/number/is-integer.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/number/is-integer');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/number/is-nan.js b/node_modules/core-js/full/number/is-nan.js
new file mode 100644
index 0000000..e5bb8d0
--- /dev/null
+++ b/node_modules/core-js/full/number/is-nan.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/number/is-nan');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/number/is-safe-integer.js b/node_modules/core-js/full/number/is-safe-integer.js
new file mode 100644
index 0000000..2a81972
--- /dev/null
+++ b/node_modules/core-js/full/number/is-safe-integer.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/number/is-safe-integer');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/number/max-safe-integer.js b/node_modules/core-js/full/number/max-safe-integer.js
new file mode 100644
index 0000000..8090e2a
--- /dev/null
+++ b/node_modules/core-js/full/number/max-safe-integer.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/number/max-safe-integer');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/number/min-safe-integer.js b/node_modules/core-js/full/number/min-safe-integer.js
new file mode 100644
index 0000000..9c95f27
--- /dev/null
+++ b/node_modules/core-js/full/number/min-safe-integer.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/number/min-safe-integer');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/number/parse-float.js b/node_modules/core-js/full/number/parse-float.js
new file mode 100644
index 0000000..0c81579
--- /dev/null
+++ b/node_modules/core-js/full/number/parse-float.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/number/parse-float');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/number/parse-int.js b/node_modules/core-js/full/number/parse-int.js
new file mode 100644
index 0000000..211a703
--- /dev/null
+++ b/node_modules/core-js/full/number/parse-int.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/number/parse-int');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/number/range.js b/node_modules/core-js/full/number/range.js
new file mode 100644
index 0000000..5b02c43
--- /dev/null
+++ b/node_modules/core-js/full/number/range.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/esnext.number.range');
+var path = require('../../internals/path');
+
+module.exports = path.Number.range;
diff --git a/node_modules/core-js/full/number/to-exponential.js b/node_modules/core-js/full/number/to-exponential.js
new file mode 100644
index 0000000..35ecf72
--- /dev/null
+++ b/node_modules/core-js/full/number/to-exponential.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/number/to-exponential');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/number/to-fixed.js b/node_modules/core-js/full/number/to-fixed.js
new file mode 100644
index 0000000..4541d0e
--- /dev/null
+++ b/node_modules/core-js/full/number/to-fixed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/number/to-fixed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/number/to-precision.js b/node_modules/core-js/full/number/to-precision.js
new file mode 100644
index 0000000..6a5453b
--- /dev/null
+++ b/node_modules/core-js/full/number/to-precision.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/number/to-precision');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/number/virtual/index.js b/node_modules/core-js/full/number/virtual/index.js
new file mode 100644
index 0000000..8c21e41
--- /dev/null
+++ b/node_modules/core-js/full/number/virtual/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/number/virtual');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/number/virtual/to-exponential.js b/node_modules/core-js/full/number/virtual/to-exponential.js
new file mode 100644
index 0000000..7e9c11c
--- /dev/null
+++ b/node_modules/core-js/full/number/virtual/to-exponential.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/number/virtual/to-exponential');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/number/virtual/to-fixed.js b/node_modules/core-js/full/number/virtual/to-fixed.js
new file mode 100644
index 0000000..fd79411
--- /dev/null
+++ b/node_modules/core-js/full/number/virtual/to-fixed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/number/virtual/to-fixed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/number/virtual/to-precision.js b/node_modules/core-js/full/number/virtual/to-precision.js
new file mode 100644
index 0000000..7613cbe
--- /dev/null
+++ b/node_modules/core-js/full/number/virtual/to-precision.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/number/virtual/to-precision');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/object/assign.js b/node_modules/core-js/full/object/assign.js
new file mode 100644
index 0000000..31728d1
--- /dev/null
+++ b/node_modules/core-js/full/object/assign.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/object/assign');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/object/create.js b/node_modules/core-js/full/object/create.js
new file mode 100644
index 0000000..6f345f1
--- /dev/null
+++ b/node_modules/core-js/full/object/create.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/object/create');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/object/define-getter.js b/node_modules/core-js/full/object/define-getter.js
new file mode 100644
index 0000000..b227de0
--- /dev/null
+++ b/node_modules/core-js/full/object/define-getter.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/object/define-getter');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/object/define-properties.js b/node_modules/core-js/full/object/define-properties.js
new file mode 100644
index 0000000..4e8b0e0
--- /dev/null
+++ b/node_modules/core-js/full/object/define-properties.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/object/define-properties');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/object/define-property.js b/node_modules/core-js/full/object/define-property.js
new file mode 100644
index 0000000..49fbbb7
--- /dev/null
+++ b/node_modules/core-js/full/object/define-property.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/object/define-property');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/object/define-setter.js b/node_modules/core-js/full/object/define-setter.js
new file mode 100644
index 0000000..64d47dd
--- /dev/null
+++ b/node_modules/core-js/full/object/define-setter.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/object/define-setter');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/object/entries.js b/node_modules/core-js/full/object/entries.js
new file mode 100644
index 0000000..38df8a7
--- /dev/null
+++ b/node_modules/core-js/full/object/entries.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/object/entries');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/object/freeze.js b/node_modules/core-js/full/object/freeze.js
new file mode 100644
index 0000000..cb2d1fb
--- /dev/null
+++ b/node_modules/core-js/full/object/freeze.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/object/freeze');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/object/from-entries.js b/node_modules/core-js/full/object/from-entries.js
new file mode 100644
index 0000000..e057e66
--- /dev/null
+++ b/node_modules/core-js/full/object/from-entries.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/object/from-entries');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/object/get-own-property-descriptor.js b/node_modules/core-js/full/object/get-own-property-descriptor.js
new file mode 100644
index 0000000..0a2d96b
--- /dev/null
+++ b/node_modules/core-js/full/object/get-own-property-descriptor.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/object/get-own-property-descriptor');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/object/get-own-property-descriptors.js b/node_modules/core-js/full/object/get-own-property-descriptors.js
new file mode 100644
index 0000000..2d084c6
--- /dev/null
+++ b/node_modules/core-js/full/object/get-own-property-descriptors.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/object/get-own-property-descriptors');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/object/get-own-property-names.js b/node_modules/core-js/full/object/get-own-property-names.js
new file mode 100644
index 0000000..02d280f
--- /dev/null
+++ b/node_modules/core-js/full/object/get-own-property-names.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/object/get-own-property-names');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/object/get-own-property-symbols.js b/node_modules/core-js/full/object/get-own-property-symbols.js
new file mode 100644
index 0000000..ebad505
--- /dev/null
+++ b/node_modules/core-js/full/object/get-own-property-symbols.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/object/get-own-property-symbols');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/object/get-prototype-of.js b/node_modules/core-js/full/object/get-prototype-of.js
new file mode 100644
index 0000000..5cb26a8
--- /dev/null
+++ b/node_modules/core-js/full/object/get-prototype-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/object/get-prototype-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/object/group-by.js b/node_modules/core-js/full/object/group-by.js
new file mode 100644
index 0000000..c52c073
--- /dev/null
+++ b/node_modules/core-js/full/object/group-by.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/object/group-by');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/object/has-own.js b/node_modules/core-js/full/object/has-own.js
new file mode 100644
index 0000000..3d2c4ed
--- /dev/null
+++ b/node_modules/core-js/full/object/has-own.js
@@ -0,0 +1,7 @@
+'use strict';
+var parent = require('../../actual/object/has-own');
+
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.object.has-own');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/object/index.js b/node_modules/core-js/full/object/index.js
new file mode 100644
index 0000000..6720214
--- /dev/null
+++ b/node_modules/core-js/full/object/index.js
@@ -0,0 +1,9 @@
+'use strict';
+var parent = require('../../actual/object');
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.object.has-own');
+require('../../modules/esnext.object.iterate-entries');
+require('../../modules/esnext.object.iterate-keys');
+require('../../modules/esnext.object.iterate-values');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/object/is-extensible.js b/node_modules/core-js/full/object/is-extensible.js
new file mode 100644
index 0000000..7bc463a
--- /dev/null
+++ b/node_modules/core-js/full/object/is-extensible.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/object/is-extensible');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/object/is-frozen.js b/node_modules/core-js/full/object/is-frozen.js
new file mode 100644
index 0000000..5573c28
--- /dev/null
+++ b/node_modules/core-js/full/object/is-frozen.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/object/is-frozen');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/object/is-sealed.js b/node_modules/core-js/full/object/is-sealed.js
new file mode 100644
index 0000000..423fcaf
--- /dev/null
+++ b/node_modules/core-js/full/object/is-sealed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/object/is-sealed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/object/is.js b/node_modules/core-js/full/object/is.js
new file mode 100644
index 0000000..0787260
--- /dev/null
+++ b/node_modules/core-js/full/object/is.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/object/is');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/object/iterate-entries.js b/node_modules/core-js/full/object/iterate-entries.js
new file mode 100644
index 0000000..e46f881
--- /dev/null
+++ b/node_modules/core-js/full/object/iterate-entries.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.object.iterate-entries');
+var path = require('../../internals/path');
+
+module.exports = path.Object.iterateEntries;
diff --git a/node_modules/core-js/full/object/iterate-keys.js b/node_modules/core-js/full/object/iterate-keys.js
new file mode 100644
index 0000000..68afc74
--- /dev/null
+++ b/node_modules/core-js/full/object/iterate-keys.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.object.iterate-keys');
+var path = require('../../internals/path');
+
+module.exports = path.Object.iterateKeys;
diff --git a/node_modules/core-js/full/object/iterate-values.js b/node_modules/core-js/full/object/iterate-values.js
new file mode 100644
index 0000000..2a35127
--- /dev/null
+++ b/node_modules/core-js/full/object/iterate-values.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.object.iterate-values');
+var path = require('../../internals/path');
+
+module.exports = path.Object.iterateValues;
diff --git a/node_modules/core-js/full/object/keys.js b/node_modules/core-js/full/object/keys.js
new file mode 100644
index 0000000..f5e1b56
--- /dev/null
+++ b/node_modules/core-js/full/object/keys.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/object/keys');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/object/lookup-getter.js b/node_modules/core-js/full/object/lookup-getter.js
new file mode 100644
index 0000000..e74c064
--- /dev/null
+++ b/node_modules/core-js/full/object/lookup-getter.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/object/lookup-getter');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/object/lookup-setter.js b/node_modules/core-js/full/object/lookup-setter.js
new file mode 100644
index 0000000..7a11b4a
--- /dev/null
+++ b/node_modules/core-js/full/object/lookup-setter.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/object/lookup-setter');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/object/prevent-extensions.js b/node_modules/core-js/full/object/prevent-extensions.js
new file mode 100644
index 0000000..5537694
--- /dev/null
+++ b/node_modules/core-js/full/object/prevent-extensions.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/object/prevent-extensions');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/object/proto.js b/node_modules/core-js/full/object/proto.js
new file mode 100644
index 0000000..dcf2a1a
--- /dev/null
+++ b/node_modules/core-js/full/object/proto.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/object/proto');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/object/seal.js b/node_modules/core-js/full/object/seal.js
new file mode 100644
index 0000000..7afd5a9
--- /dev/null
+++ b/node_modules/core-js/full/object/seal.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/object/seal');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/object/set-prototype-of.js b/node_modules/core-js/full/object/set-prototype-of.js
new file mode 100644
index 0000000..e3434d7
--- /dev/null
+++ b/node_modules/core-js/full/object/set-prototype-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/object/set-prototype-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/object/to-string.js b/node_modules/core-js/full/object/to-string.js
new file mode 100644
index 0000000..7c590c6
--- /dev/null
+++ b/node_modules/core-js/full/object/to-string.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/object/to-string');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/object/values.js b/node_modules/core-js/full/object/values.js
new file mode 100644
index 0000000..72b8691
--- /dev/null
+++ b/node_modules/core-js/full/object/values.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/object/values');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/observable/index.js b/node_modules/core-js/full/observable/index.js
new file mode 100644
index 0000000..c29fa73
--- /dev/null
+++ b/node_modules/core-js/full/observable/index.js
@@ -0,0 +1,9 @@
+'use strict';
+require('../../modules/esnext.observable');
+require('../../modules/esnext.symbol.observable');
+require('../../modules/es.object.to-string');
+require('../../modules/es.string.iterator');
+require('../../modules/web.dom-collections.iterator');
+var path = require('../../internals/path');
+
+module.exports = path.Observable;
diff --git a/node_modules/core-js/full/parse-float.js b/node_modules/core-js/full/parse-float.js
new file mode 100644
index 0000000..943f46e
--- /dev/null
+++ b/node_modules/core-js/full/parse-float.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../actual/parse-float');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/parse-int.js b/node_modules/core-js/full/parse-int.js
new file mode 100644
index 0000000..0267308
--- /dev/null
+++ b/node_modules/core-js/full/parse-int.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../actual/parse-int');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/promise/all-settled.js b/node_modules/core-js/full/promise/all-settled.js
new file mode 100644
index 0000000..5279cba
--- /dev/null
+++ b/node_modules/core-js/full/promise/all-settled.js
@@ -0,0 +1,7 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.promise.all-settled');
+
+var parent = require('../../actual/promise/all-settled');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/promise/any.js b/node_modules/core-js/full/promise/any.js
new file mode 100644
index 0000000..ab2a7da
--- /dev/null
+++ b/node_modules/core-js/full/promise/any.js
@@ -0,0 +1,8 @@
+'use strict';
+var parent = require('../../actual/promise/any');
+
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.aggregate-error');
+require('../../modules/esnext.promise.any');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/promise/finally.js b/node_modules/core-js/full/promise/finally.js
new file mode 100644
index 0000000..feae5bb
--- /dev/null
+++ b/node_modules/core-js/full/promise/finally.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/promise/finally');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/promise/index.js b/node_modules/core-js/full/promise/index.js
new file mode 100644
index 0000000..f678969
--- /dev/null
+++ b/node_modules/core-js/full/promise/index.js
@@ -0,0 +1,8 @@
+'use strict';
+var parent = require('../../actual/promise');
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.aggregate-error');
+require('../../modules/esnext.promise.all-settled');
+require('../../modules/esnext.promise.any');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/promise/try.js b/node_modules/core-js/full/promise/try.js
new file mode 100644
index 0000000..68bb7ba
--- /dev/null
+++ b/node_modules/core-js/full/promise/try.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/promise/try');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/promise/with-resolvers.js b/node_modules/core-js/full/promise/with-resolvers.js
new file mode 100644
index 0000000..f1b0709
--- /dev/null
+++ b/node_modules/core-js/full/promise/with-resolvers.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/promise/with-resolvers');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/queue-microtask.js b/node_modules/core-js/full/queue-microtask.js
new file mode 100644
index 0000000..a01488c
--- /dev/null
+++ b/node_modules/core-js/full/queue-microtask.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../actual/queue-microtask');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/reflect/apply.js b/node_modules/core-js/full/reflect/apply.js
new file mode 100644
index 0000000..39adbcd
--- /dev/null
+++ b/node_modules/core-js/full/reflect/apply.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/reflect/apply');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/reflect/construct.js b/node_modules/core-js/full/reflect/construct.js
new file mode 100644
index 0000000..7f1bb95
--- /dev/null
+++ b/node_modules/core-js/full/reflect/construct.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/reflect/construct');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/reflect/define-metadata.js b/node_modules/core-js/full/reflect/define-metadata.js
new file mode 100644
index 0000000..dba9cc3
--- /dev/null
+++ b/node_modules/core-js/full/reflect/define-metadata.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.reflect.define-metadata');
+var path = require('../../internals/path');
+
+module.exports = path.Reflect.defineMetadata;
diff --git a/node_modules/core-js/full/reflect/define-property.js b/node_modules/core-js/full/reflect/define-property.js
new file mode 100644
index 0000000..f3f7d5f
--- /dev/null
+++ b/node_modules/core-js/full/reflect/define-property.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/reflect/define-property');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/reflect/delete-metadata.js b/node_modules/core-js/full/reflect/delete-metadata.js
new file mode 100644
index 0000000..a3a3733
--- /dev/null
+++ b/node_modules/core-js/full/reflect/delete-metadata.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.reflect.delete-metadata');
+var path = require('../../internals/path');
+
+module.exports = path.Reflect.deleteMetadata;
diff --git a/node_modules/core-js/full/reflect/delete-property.js b/node_modules/core-js/full/reflect/delete-property.js
new file mode 100644
index 0000000..270cb5d
--- /dev/null
+++ b/node_modules/core-js/full/reflect/delete-property.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/reflect/delete-property');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/reflect/get-metadata-keys.js b/node_modules/core-js/full/reflect/get-metadata-keys.js
new file mode 100644
index 0000000..4d671fd
--- /dev/null
+++ b/node_modules/core-js/full/reflect/get-metadata-keys.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.reflect.get-metadata-keys');
+var path = require('../../internals/path');
+
+module.exports = path.Reflect.getMetadataKeys;
diff --git a/node_modules/core-js/full/reflect/get-metadata.js b/node_modules/core-js/full/reflect/get-metadata.js
new file mode 100644
index 0000000..738bd74
--- /dev/null
+++ b/node_modules/core-js/full/reflect/get-metadata.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.reflect.get-metadata');
+var path = require('../../internals/path');
+
+module.exports = path.Reflect.getMetadata;
diff --git a/node_modules/core-js/full/reflect/get-own-metadata-keys.js b/node_modules/core-js/full/reflect/get-own-metadata-keys.js
new file mode 100644
index 0000000..bd33e65
--- /dev/null
+++ b/node_modules/core-js/full/reflect/get-own-metadata-keys.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.reflect.get-own-metadata-keys');
+var path = require('../../internals/path');
+
+module.exports = path.Reflect.getOwnMetadataKeys;
diff --git a/node_modules/core-js/full/reflect/get-own-metadata.js b/node_modules/core-js/full/reflect/get-own-metadata.js
new file mode 100644
index 0000000..c8890df
--- /dev/null
+++ b/node_modules/core-js/full/reflect/get-own-metadata.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.reflect.get-own-metadata');
+var path = require('../../internals/path');
+
+module.exports = path.Reflect.getOwnMetadata;
diff --git a/node_modules/core-js/full/reflect/get-own-property-descriptor.js b/node_modules/core-js/full/reflect/get-own-property-descriptor.js
new file mode 100644
index 0000000..4610a0f
--- /dev/null
+++ b/node_modules/core-js/full/reflect/get-own-property-descriptor.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/reflect/get-own-property-descriptor');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/reflect/get-prototype-of.js b/node_modules/core-js/full/reflect/get-prototype-of.js
new file mode 100644
index 0000000..e948f49
--- /dev/null
+++ b/node_modules/core-js/full/reflect/get-prototype-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/reflect/get-prototype-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/reflect/get.js b/node_modules/core-js/full/reflect/get.js
new file mode 100644
index 0000000..75b2c85
--- /dev/null
+++ b/node_modules/core-js/full/reflect/get.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/reflect/get');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/reflect/has-metadata.js b/node_modules/core-js/full/reflect/has-metadata.js
new file mode 100644
index 0000000..bd623a7
--- /dev/null
+++ b/node_modules/core-js/full/reflect/has-metadata.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.reflect.has-metadata');
+var path = require('../../internals/path');
+
+module.exports = path.Reflect.hasMetadata;
diff --git a/node_modules/core-js/full/reflect/has-own-metadata.js b/node_modules/core-js/full/reflect/has-own-metadata.js
new file mode 100644
index 0000000..f56149f
--- /dev/null
+++ b/node_modules/core-js/full/reflect/has-own-metadata.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.reflect.has-own-metadata');
+var path = require('../../internals/path');
+
+module.exports = path.Reflect.hasOwnMetadata;
diff --git a/node_modules/core-js/full/reflect/has.js b/node_modules/core-js/full/reflect/has.js
new file mode 100644
index 0000000..3de54d8
--- /dev/null
+++ b/node_modules/core-js/full/reflect/has.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/reflect/has');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/reflect/index.js b/node_modules/core-js/full/reflect/index.js
new file mode 100644
index 0000000..5ff5892
--- /dev/null
+++ b/node_modules/core-js/full/reflect/index.js
@@ -0,0 +1,13 @@
+'use strict';
+var parent = require('../../actual/reflect');
+require('../../modules/esnext.reflect.define-metadata');
+require('../../modules/esnext.reflect.delete-metadata');
+require('../../modules/esnext.reflect.get-metadata');
+require('../../modules/esnext.reflect.get-metadata-keys');
+require('../../modules/esnext.reflect.get-own-metadata');
+require('../../modules/esnext.reflect.get-own-metadata-keys');
+require('../../modules/esnext.reflect.has-metadata');
+require('../../modules/esnext.reflect.has-own-metadata');
+require('../../modules/esnext.reflect.metadata');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/reflect/is-extensible.js b/node_modules/core-js/full/reflect/is-extensible.js
new file mode 100644
index 0000000..b6131c4
--- /dev/null
+++ b/node_modules/core-js/full/reflect/is-extensible.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/reflect/is-extensible');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/reflect/metadata.js b/node_modules/core-js/full/reflect/metadata.js
new file mode 100644
index 0000000..a3ff8f5
--- /dev/null
+++ b/node_modules/core-js/full/reflect/metadata.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.reflect.metadata');
+var path = require('../../internals/path');
+
+module.exports = path.Reflect.metadata;
diff --git a/node_modules/core-js/full/reflect/own-keys.js b/node_modules/core-js/full/reflect/own-keys.js
new file mode 100644
index 0000000..1bfadd3
--- /dev/null
+++ b/node_modules/core-js/full/reflect/own-keys.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/reflect/own-keys');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/reflect/prevent-extensions.js b/node_modules/core-js/full/reflect/prevent-extensions.js
new file mode 100644
index 0000000..48af957
--- /dev/null
+++ b/node_modules/core-js/full/reflect/prevent-extensions.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/reflect/prevent-extensions');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/reflect/set-prototype-of.js b/node_modules/core-js/full/reflect/set-prototype-of.js
new file mode 100644
index 0000000..0d07597
--- /dev/null
+++ b/node_modules/core-js/full/reflect/set-prototype-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/reflect/set-prototype-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/reflect/set.js b/node_modules/core-js/full/reflect/set.js
new file mode 100644
index 0000000..a08a20d
--- /dev/null
+++ b/node_modules/core-js/full/reflect/set.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/reflect/set');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/reflect/to-string-tag.js b/node_modules/core-js/full/reflect/to-string-tag.js
new file mode 100644
index 0000000..3908aff
--- /dev/null
+++ b/node_modules/core-js/full/reflect/to-string-tag.js
@@ -0,0 +1,4 @@
+'use strict';
+require('../../modules/es.reflect.to-string-tag');
+
+module.exports = 'Reflect';
diff --git a/node_modules/core-js/full/regexp/constructor.js b/node_modules/core-js/full/regexp/constructor.js
new file mode 100644
index 0000000..414c1db
--- /dev/null
+++ b/node_modules/core-js/full/regexp/constructor.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/regexp/constructor');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/regexp/dot-all.js b/node_modules/core-js/full/regexp/dot-all.js
new file mode 100644
index 0000000..bb687d2
--- /dev/null
+++ b/node_modules/core-js/full/regexp/dot-all.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/regexp/dot-all');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/regexp/escape.js b/node_modules/core-js/full/regexp/escape.js
new file mode 100644
index 0000000..5790cab
--- /dev/null
+++ b/node_modules/core-js/full/regexp/escape.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/regexp/escape');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/regexp/flags.js b/node_modules/core-js/full/regexp/flags.js
new file mode 100644
index 0000000..1356b99
--- /dev/null
+++ b/node_modules/core-js/full/regexp/flags.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/regexp/flags');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/regexp/index.js b/node_modules/core-js/full/regexp/index.js
new file mode 100644
index 0000000..427bbc1
--- /dev/null
+++ b/node_modules/core-js/full/regexp/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/regexp');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/regexp/match.js b/node_modules/core-js/full/regexp/match.js
new file mode 100644
index 0000000..97dcf32
--- /dev/null
+++ b/node_modules/core-js/full/regexp/match.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/regexp/match');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/regexp/replace.js b/node_modules/core-js/full/regexp/replace.js
new file mode 100644
index 0000000..5c22adb
--- /dev/null
+++ b/node_modules/core-js/full/regexp/replace.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/regexp/replace');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/regexp/search.js b/node_modules/core-js/full/regexp/search.js
new file mode 100644
index 0000000..551c403
--- /dev/null
+++ b/node_modules/core-js/full/regexp/search.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/regexp/search');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/regexp/split.js b/node_modules/core-js/full/regexp/split.js
new file mode 100644
index 0000000..2aaa16c
--- /dev/null
+++ b/node_modules/core-js/full/regexp/split.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/regexp/split');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/regexp/sticky.js b/node_modules/core-js/full/regexp/sticky.js
new file mode 100644
index 0000000..2831425
--- /dev/null
+++ b/node_modules/core-js/full/regexp/sticky.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/regexp/sticky');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/regexp/test.js b/node_modules/core-js/full/regexp/test.js
new file mode 100644
index 0000000..04e5c12
--- /dev/null
+++ b/node_modules/core-js/full/regexp/test.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/regexp/test');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/regexp/to-string.js b/node_modules/core-js/full/regexp/to-string.js
new file mode 100644
index 0000000..f2a2709
--- /dev/null
+++ b/node_modules/core-js/full/regexp/to-string.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/regexp/to-string');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/self.js b/node_modules/core-js/full/self.js
new file mode 100644
index 0000000..f460150
--- /dev/null
+++ b/node_modules/core-js/full/self.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../actual/self');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/set-immediate.js b/node_modules/core-js/full/set-immediate.js
new file mode 100644
index 0000000..8d99840
--- /dev/null
+++ b/node_modules/core-js/full/set-immediate.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../actual/set-immediate');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/set-interval.js b/node_modules/core-js/full/set-interval.js
new file mode 100644
index 0000000..b542c54
--- /dev/null
+++ b/node_modules/core-js/full/set-interval.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../actual/set-interval');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/set-timeout.js b/node_modules/core-js/full/set-timeout.js
new file mode 100644
index 0000000..2cc1978
--- /dev/null
+++ b/node_modules/core-js/full/set-timeout.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../actual/set-timeout');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/set/add-all.js b/node_modules/core-js/full/set/add-all.js
new file mode 100644
index 0000000..bafef1c
--- /dev/null
+++ b/node_modules/core-js/full/set/add-all.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.set');
+require('../../modules/esnext.set.add-all');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Set', 'addAll');
diff --git a/node_modules/core-js/full/set/delete-all.js b/node_modules/core-js/full/set/delete-all.js
new file mode 100644
index 0000000..0233621
--- /dev/null
+++ b/node_modules/core-js/full/set/delete-all.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.set');
+require('../../modules/esnext.set.delete-all');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Set', 'deleteAll');
diff --git a/node_modules/core-js/full/set/difference.js b/node_modules/core-js/full/set/difference.js
new file mode 100644
index 0000000..879eff1
--- /dev/null
+++ b/node_modules/core-js/full/set/difference.js
@@ -0,0 +1,9 @@
+'use strict';
+require('../../actual/set/difference');
+require('../../modules/es.array.iterator');
+require('../../modules/es.string.iterator');
+require('../../modules/esnext.set.difference');
+require('../../modules/web.dom-collections.iterator');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Set', 'difference');
diff --git a/node_modules/core-js/full/set/every.js b/node_modules/core-js/full/set/every.js
new file mode 100644
index 0000000..f5c0cfb
--- /dev/null
+++ b/node_modules/core-js/full/set/every.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.set');
+require('../../modules/esnext.set.every');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Set', 'every');
diff --git a/node_modules/core-js/full/set/filter.js b/node_modules/core-js/full/set/filter.js
new file mode 100644
index 0000000..3150068
--- /dev/null
+++ b/node_modules/core-js/full/set/filter.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.set');
+require('../../modules/esnext.set.filter');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Set', 'filter');
diff --git a/node_modules/core-js/full/set/find.js b/node_modules/core-js/full/set/find.js
new file mode 100644
index 0000000..9ff5b53
--- /dev/null
+++ b/node_modules/core-js/full/set/find.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.set');
+require('../../modules/esnext.set.find');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Set', 'find');
diff --git a/node_modules/core-js/full/set/from.js b/node_modules/core-js/full/set/from.js
new file mode 100644
index 0000000..d46b051
--- /dev/null
+++ b/node_modules/core-js/full/set/from.js
@@ -0,0 +1,26 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.array.iterator');
+require('../../modules/es.set');
+require('../../modules/es.string.iterator');
+require('../../modules/esnext.set.from');
+require('../../modules/esnext.set.add-all');
+require('../../modules/esnext.set.delete-all');
+require('../../modules/esnext.set.difference.v2');
+require('../../modules/esnext.set.every');
+require('../../modules/esnext.set.filter');
+require('../../modules/esnext.set.find');
+require('../../modules/esnext.set.join');
+require('../../modules/esnext.set.intersection.v2');
+require('../../modules/esnext.set.is-disjoint-from.v2');
+require('../../modules/esnext.set.is-subset-of.v2');
+require('../../modules/esnext.set.is-superset-of.v2');
+require('../../modules/esnext.set.map');
+require('../../modules/esnext.set.reduce');
+require('../../modules/esnext.set.some');
+require('../../modules/esnext.set.symmetric-difference.v2');
+require('../../modules/esnext.set.union.v2');
+require('../../modules/web.dom-collections.iterator');
+var path = require('../../internals/path');
+
+module.exports = path.Set.from;
diff --git a/node_modules/core-js/full/set/index.js b/node_modules/core-js/full/set/index.js
new file mode 100644
index 0000000..f483f9e
--- /dev/null
+++ b/node_modules/core-js/full/set/index.js
@@ -0,0 +1,22 @@
+'use strict';
+var parent = require('../../actual/set');
+require('../../modules/esnext.set.from');
+require('../../modules/esnext.set.of');
+require('../../modules/esnext.set.add-all');
+require('../../modules/esnext.set.delete-all');
+require('../../modules/esnext.set.every');
+require('../../modules/esnext.set.difference');
+require('../../modules/esnext.set.filter');
+require('../../modules/esnext.set.find');
+require('../../modules/esnext.set.intersection');
+require('../../modules/esnext.set.is-disjoint-from');
+require('../../modules/esnext.set.is-subset-of');
+require('../../modules/esnext.set.is-superset-of');
+require('../../modules/esnext.set.join');
+require('../../modules/esnext.set.map');
+require('../../modules/esnext.set.reduce');
+require('../../modules/esnext.set.some');
+require('../../modules/esnext.set.symmetric-difference');
+require('../../modules/esnext.set.union');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/set/intersection.js b/node_modules/core-js/full/set/intersection.js
new file mode 100644
index 0000000..8e96ff5
--- /dev/null
+++ b/node_modules/core-js/full/set/intersection.js
@@ -0,0 +1,9 @@
+'use strict';
+require('../../actual/set/intersection');
+require('../../modules/es.array.iterator');
+require('../../modules/es.string.iterator');
+require('../../modules/esnext.set.intersection');
+require('../../modules/web.dom-collections.iterator');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Set', 'intersection');
diff --git a/node_modules/core-js/full/set/is-disjoint-from.js b/node_modules/core-js/full/set/is-disjoint-from.js
new file mode 100644
index 0000000..0eae0d6
--- /dev/null
+++ b/node_modules/core-js/full/set/is-disjoint-from.js
@@ -0,0 +1,9 @@
+'use strict';
+require('../../actual/set/is-disjoint-from');
+require('../../modules/es.array.iterator');
+require('../../modules/es.string.iterator');
+require('../../modules/esnext.set.is-disjoint-from');
+require('../../modules/web.dom-collections.iterator');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Set', 'isDisjointFrom');
diff --git a/node_modules/core-js/full/set/is-subset-of.js b/node_modules/core-js/full/set/is-subset-of.js
new file mode 100644
index 0000000..6cab425
--- /dev/null
+++ b/node_modules/core-js/full/set/is-subset-of.js
@@ -0,0 +1,9 @@
+'use strict';
+require('../../actual/set/is-subset-of');
+require('../../modules/es.array.iterator');
+require('../../modules/es.string.iterator');
+require('../../modules/esnext.set.is-subset-of');
+require('../../modules/web.dom-collections.iterator');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Set', 'isSubsetOf');
diff --git a/node_modules/core-js/full/set/is-superset-of.js b/node_modules/core-js/full/set/is-superset-of.js
new file mode 100644
index 0000000..38c029e
--- /dev/null
+++ b/node_modules/core-js/full/set/is-superset-of.js
@@ -0,0 +1,9 @@
+'use strict';
+require('../../actual/set/is-superset-of');
+require('../../modules/es.array.iterator');
+require('../../modules/es.string.iterator');
+require('../../modules/esnext.set.is-superset-of');
+require('../../modules/web.dom-collections.iterator');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Set', 'isSupersetOf');
diff --git a/node_modules/core-js/full/set/join.js b/node_modules/core-js/full/set/join.js
new file mode 100644
index 0000000..f50f5e2
--- /dev/null
+++ b/node_modules/core-js/full/set/join.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.set');
+require('../../modules/esnext.set.join');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Set', 'join');
diff --git a/node_modules/core-js/full/set/map.js b/node_modules/core-js/full/set/map.js
new file mode 100644
index 0000000..0785cfc
--- /dev/null
+++ b/node_modules/core-js/full/set/map.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.set');
+require('../../modules/esnext.set.map');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Set', 'map');
diff --git a/node_modules/core-js/full/set/of.js b/node_modules/core-js/full/set/of.js
new file mode 100644
index 0000000..754f8e3
--- /dev/null
+++ b/node_modules/core-js/full/set/of.js
@@ -0,0 +1,24 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.array.iterator');
+require('../../modules/es.set');
+require('../../modules/esnext.set.of');
+require('../../modules/esnext.set.add-all');
+require('../../modules/esnext.set.delete-all');
+require('../../modules/esnext.set.difference.v2');
+require('../../modules/esnext.set.every');
+require('../../modules/esnext.set.filter');
+require('../../modules/esnext.set.find');
+require('../../modules/esnext.set.join');
+require('../../modules/esnext.set.intersection.v2');
+require('../../modules/esnext.set.is-disjoint-from.v2');
+require('../../modules/esnext.set.is-subset-of.v2');
+require('../../modules/esnext.set.is-superset-of.v2');
+require('../../modules/esnext.set.map');
+require('../../modules/esnext.set.reduce');
+require('../../modules/esnext.set.some');
+require('../../modules/esnext.set.symmetric-difference.v2');
+require('../../modules/esnext.set.union.v2');
+var path = require('../../internals/path');
+
+module.exports = path.Set.of;
diff --git a/node_modules/core-js/full/set/reduce.js b/node_modules/core-js/full/set/reduce.js
new file mode 100644
index 0000000..5e624cd
--- /dev/null
+++ b/node_modules/core-js/full/set/reduce.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.set');
+require('../../modules/esnext.set.reduce');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Set', 'reduce');
diff --git a/node_modules/core-js/full/set/some.js b/node_modules/core-js/full/set/some.js
new file mode 100644
index 0000000..9a7adfd
--- /dev/null
+++ b/node_modules/core-js/full/set/some.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.set');
+require('../../modules/esnext.set.some');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Set', 'some');
diff --git a/node_modules/core-js/full/set/symmetric-difference.js b/node_modules/core-js/full/set/symmetric-difference.js
new file mode 100644
index 0000000..04b74e8
--- /dev/null
+++ b/node_modules/core-js/full/set/symmetric-difference.js
@@ -0,0 +1,9 @@
+'use strict';
+require('../../actual/set/symmetric-difference');
+require('../../modules/es.array.iterator');
+require('../../modules/es.string.iterator');
+require('../../modules/esnext.set.symmetric-difference');
+require('../../modules/web.dom-collections.iterator');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Set', 'symmetricDifference');
diff --git a/node_modules/core-js/full/set/union.js b/node_modules/core-js/full/set/union.js
new file mode 100644
index 0000000..146011c
--- /dev/null
+++ b/node_modules/core-js/full/set/union.js
@@ -0,0 +1,9 @@
+'use strict';
+require('../../actual/set/union');
+require('../../modules/es.array.iterator');
+require('../../modules/es.string.iterator');
+require('../../modules/esnext.set.union');
+require('../../modules/web.dom-collections.iterator');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Set', 'union');
diff --git a/node_modules/core-js/full/string/anchor.js b/node_modules/core-js/full/string/anchor.js
new file mode 100644
index 0000000..8faede4
--- /dev/null
+++ b/node_modules/core-js/full/string/anchor.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/string/anchor');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/at.js b/node_modules/core-js/full/string/at.js
new file mode 100644
index 0000000..a3903ea
--- /dev/null
+++ b/node_modules/core-js/full/string/at.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../actual/string/at');
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.string.at');
+
+module.exports = require('../../internals/entry-unbind')('String', 'at');
diff --git a/node_modules/core-js/full/string/big.js b/node_modules/core-js/full/string/big.js
new file mode 100644
index 0000000..bc349a2
--- /dev/null
+++ b/node_modules/core-js/full/string/big.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/string/big');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/blink.js b/node_modules/core-js/full/string/blink.js
new file mode 100644
index 0000000..e8abf63
--- /dev/null
+++ b/node_modules/core-js/full/string/blink.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/string/blink');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/bold.js b/node_modules/core-js/full/string/bold.js
new file mode 100644
index 0000000..e7954e5
--- /dev/null
+++ b/node_modules/core-js/full/string/bold.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/string/bold');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/code-point-at.js b/node_modules/core-js/full/string/code-point-at.js
new file mode 100644
index 0000000..ade6be4
--- /dev/null
+++ b/node_modules/core-js/full/string/code-point-at.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/string/code-point-at');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/code-points.js b/node_modules/core-js/full/string/code-points.js
new file mode 100644
index 0000000..73bca4e
--- /dev/null
+++ b/node_modules/core-js/full/string/code-points.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/esnext.string.code-points');
+
+module.exports = require('../../internals/entry-unbind')('String', 'codePoints');
diff --git a/node_modules/core-js/full/string/cooked.js b/node_modules/core-js/full/string/cooked.js
new file mode 100644
index 0000000..6eddb1b
--- /dev/null
+++ b/node_modules/core-js/full/string/cooked.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.string.cooked');
+var path = require('../../internals/path');
+
+module.exports = path.String.cooked;
diff --git a/node_modules/core-js/full/string/dedent.js b/node_modules/core-js/full/string/dedent.js
new file mode 100644
index 0000000..68eb090
--- /dev/null
+++ b/node_modules/core-js/full/string/dedent.js
@@ -0,0 +1,7 @@
+'use strict';
+require('../../modules/es.string.from-code-point');
+require('../../modules/es.weak-map');
+require('../../modules/esnext.string.dedent');
+var path = require('../../internals/path');
+
+module.exports = path.String.dedent;
diff --git a/node_modules/core-js/full/string/ends-with.js b/node_modules/core-js/full/string/ends-with.js
new file mode 100644
index 0000000..44ad69e
--- /dev/null
+++ b/node_modules/core-js/full/string/ends-with.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/string/ends-with');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/fixed.js b/node_modules/core-js/full/string/fixed.js
new file mode 100644
index 0000000..44efff2
--- /dev/null
+++ b/node_modules/core-js/full/string/fixed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/string/fixed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/fontcolor.js b/node_modules/core-js/full/string/fontcolor.js
new file mode 100644
index 0000000..f491dfb
--- /dev/null
+++ b/node_modules/core-js/full/string/fontcolor.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/string/fontcolor');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/fontsize.js b/node_modules/core-js/full/string/fontsize.js
new file mode 100644
index 0000000..0dffa6a
--- /dev/null
+++ b/node_modules/core-js/full/string/fontsize.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/string/fontsize');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/from-code-point.js b/node_modules/core-js/full/string/from-code-point.js
new file mode 100644
index 0000000..3c2e909
--- /dev/null
+++ b/node_modules/core-js/full/string/from-code-point.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/string/from-code-point');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/includes.js b/node_modules/core-js/full/string/includes.js
new file mode 100644
index 0000000..52966da
--- /dev/null
+++ b/node_modules/core-js/full/string/includes.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/string/includes');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/index.js b/node_modules/core-js/full/string/index.js
new file mode 100644
index 0000000..708cbe6
--- /dev/null
+++ b/node_modules/core-js/full/string/index.js
@@ -0,0 +1,12 @@
+'use strict';
+var parent = require('../../actual/string');
+require('../../modules/es.weak-map');
+// TODO: remove from `core-js@4`
+require('../../modules/esnext.string.at');
+require('../../modules/esnext.string.cooked');
+require('../../modules/esnext.string.code-points');
+require('../../modules/esnext.string.dedent');
+require('../../modules/esnext.string.match-all');
+require('../../modules/esnext.string.replace-all');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/is-well-formed.js b/node_modules/core-js/full/string/is-well-formed.js
new file mode 100644
index 0000000..c156be2
--- /dev/null
+++ b/node_modules/core-js/full/string/is-well-formed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/string/is-well-formed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/italics.js b/node_modules/core-js/full/string/italics.js
new file mode 100644
index 0000000..42184d3
--- /dev/null
+++ b/node_modules/core-js/full/string/italics.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/string/italics');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/iterator.js b/node_modules/core-js/full/string/iterator.js
new file mode 100644
index 0000000..fefcef6
--- /dev/null
+++ b/node_modules/core-js/full/string/iterator.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/string/iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/link.js b/node_modules/core-js/full/string/link.js
new file mode 100644
index 0000000..3acbcfb
--- /dev/null
+++ b/node_modules/core-js/full/string/link.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/string/link');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/match-all.js b/node_modules/core-js/full/string/match-all.js
new file mode 100644
index 0000000..9d23a4a
--- /dev/null
+++ b/node_modules/core-js/full/string/match-all.js
@@ -0,0 +1,7 @@
+'use strict';
+// TODO: remove from `core-js@4`
+require('../../modules/esnext.string.match-all');
+
+var parent = require('../../actual/string/match-all');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/match.js b/node_modules/core-js/full/string/match.js
new file mode 100644
index 0000000..a3dc019
--- /dev/null
+++ b/node_modules/core-js/full/string/match.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/string/match');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/pad-end.js b/node_modules/core-js/full/string/pad-end.js
new file mode 100644
index 0000000..d51bd03
--- /dev/null
+++ b/node_modules/core-js/full/string/pad-end.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/string/pad-end');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/pad-start.js b/node_modules/core-js/full/string/pad-start.js
new file mode 100644
index 0000000..f93fbdc
--- /dev/null
+++ b/node_modules/core-js/full/string/pad-start.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/string/pad-start');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/raw.js b/node_modules/core-js/full/string/raw.js
new file mode 100644
index 0000000..d304197
--- /dev/null
+++ b/node_modules/core-js/full/string/raw.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/string/raw');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/repeat.js b/node_modules/core-js/full/string/repeat.js
new file mode 100644
index 0000000..f3075ea
--- /dev/null
+++ b/node_modules/core-js/full/string/repeat.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/string/repeat');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/replace-all.js b/node_modules/core-js/full/string/replace-all.js
new file mode 100644
index 0000000..1bbb651
--- /dev/null
+++ b/node_modules/core-js/full/string/replace-all.js
@@ -0,0 +1,7 @@
+'use strict';
+// TODO: remove from `core-js@4`
+require('../../modules/esnext.string.replace-all');
+
+var parent = require('../../actual/string/replace-all');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/replace.js b/node_modules/core-js/full/string/replace.js
new file mode 100644
index 0000000..2ada803
--- /dev/null
+++ b/node_modules/core-js/full/string/replace.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/string/replace');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/search.js b/node_modules/core-js/full/string/search.js
new file mode 100644
index 0000000..53e96af
--- /dev/null
+++ b/node_modules/core-js/full/string/search.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/string/search');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/small.js b/node_modules/core-js/full/string/small.js
new file mode 100644
index 0000000..5d9b03f
--- /dev/null
+++ b/node_modules/core-js/full/string/small.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/string/small');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/split.js b/node_modules/core-js/full/string/split.js
new file mode 100644
index 0000000..29d4920
--- /dev/null
+++ b/node_modules/core-js/full/string/split.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/string/split');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/starts-with.js b/node_modules/core-js/full/string/starts-with.js
new file mode 100644
index 0000000..677f13f
--- /dev/null
+++ b/node_modules/core-js/full/string/starts-with.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/string/starts-with');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/strike.js b/node_modules/core-js/full/string/strike.js
new file mode 100644
index 0000000..39ac25e
--- /dev/null
+++ b/node_modules/core-js/full/string/strike.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/string/strike');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/sub.js b/node_modules/core-js/full/string/sub.js
new file mode 100644
index 0000000..a67dc8e
--- /dev/null
+++ b/node_modules/core-js/full/string/sub.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/string/sub');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/substr.js b/node_modules/core-js/full/string/substr.js
new file mode 100644
index 0000000..0ffb4ae
--- /dev/null
+++ b/node_modules/core-js/full/string/substr.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/string/substr');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/sup.js b/node_modules/core-js/full/string/sup.js
new file mode 100644
index 0000000..2ef447d
--- /dev/null
+++ b/node_modules/core-js/full/string/sup.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/string/sup');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/to-well-formed.js b/node_modules/core-js/full/string/to-well-formed.js
new file mode 100644
index 0000000..ac5affe
--- /dev/null
+++ b/node_modules/core-js/full/string/to-well-formed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/string/to-well-formed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/trim-end.js b/node_modules/core-js/full/string/trim-end.js
new file mode 100644
index 0000000..6be627f
--- /dev/null
+++ b/node_modules/core-js/full/string/trim-end.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/string/trim-end');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/trim-left.js b/node_modules/core-js/full/string/trim-left.js
new file mode 100644
index 0000000..862eb1a
--- /dev/null
+++ b/node_modules/core-js/full/string/trim-left.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/string/trim-left');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/trim-right.js b/node_modules/core-js/full/string/trim-right.js
new file mode 100644
index 0000000..8c34d71
--- /dev/null
+++ b/node_modules/core-js/full/string/trim-right.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/string/trim-right');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/trim-start.js b/node_modules/core-js/full/string/trim-start.js
new file mode 100644
index 0000000..b6c6e13
--- /dev/null
+++ b/node_modules/core-js/full/string/trim-start.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/string/trim-start');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/trim.js b/node_modules/core-js/full/string/trim.js
new file mode 100644
index 0000000..23cd177
--- /dev/null
+++ b/node_modules/core-js/full/string/trim.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/string/trim');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/virtual/anchor.js b/node_modules/core-js/full/string/virtual/anchor.js
new file mode 100644
index 0000000..fcd064c
--- /dev/null
+++ b/node_modules/core-js/full/string/virtual/anchor.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/string/virtual/anchor');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/virtual/at.js b/node_modules/core-js/full/string/virtual/at.js
new file mode 100644
index 0000000..68c432c
--- /dev/null
+++ b/node_modules/core-js/full/string/virtual/at.js
@@ -0,0 +1,7 @@
+'use strict';
+require('../../../actual/string/virtual/at');
+// TODO: Remove from `core-js@4`
+require('../../../modules/esnext.string.at');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('String', 'at');
diff --git a/node_modules/core-js/full/string/virtual/big.js b/node_modules/core-js/full/string/virtual/big.js
new file mode 100644
index 0000000..ea815ef
--- /dev/null
+++ b/node_modules/core-js/full/string/virtual/big.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/string/virtual/big');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/virtual/blink.js b/node_modules/core-js/full/string/virtual/blink.js
new file mode 100644
index 0000000..906bbe3
--- /dev/null
+++ b/node_modules/core-js/full/string/virtual/blink.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/string/virtual/blink');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/virtual/bold.js b/node_modules/core-js/full/string/virtual/bold.js
new file mode 100644
index 0000000..8cbfe9d
--- /dev/null
+++ b/node_modules/core-js/full/string/virtual/bold.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/string/virtual/bold');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/virtual/code-point-at.js b/node_modules/core-js/full/string/virtual/code-point-at.js
new file mode 100644
index 0000000..dd2db8f
--- /dev/null
+++ b/node_modules/core-js/full/string/virtual/code-point-at.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/string/virtual/code-point-at');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/virtual/code-points.js b/node_modules/core-js/full/string/virtual/code-points.js
new file mode 100644
index 0000000..4fa3ce4
--- /dev/null
+++ b/node_modules/core-js/full/string/virtual/code-points.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../../modules/es.object.to-string');
+require('../../../modules/esnext.string.code-points');
+var getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');
+
+module.exports = getBuiltInPrototypeMethod('String', 'codePoints');
diff --git a/node_modules/core-js/full/string/virtual/ends-with.js b/node_modules/core-js/full/string/virtual/ends-with.js
new file mode 100644
index 0000000..e77ae8d
--- /dev/null
+++ b/node_modules/core-js/full/string/virtual/ends-with.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/string/virtual/ends-with');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/virtual/fixed.js b/node_modules/core-js/full/string/virtual/fixed.js
new file mode 100644
index 0000000..daf1e22
--- /dev/null
+++ b/node_modules/core-js/full/string/virtual/fixed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/string/virtual/fixed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/virtual/fontcolor.js b/node_modules/core-js/full/string/virtual/fontcolor.js
new file mode 100644
index 0000000..1e9fa24
--- /dev/null
+++ b/node_modules/core-js/full/string/virtual/fontcolor.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/string/virtual/fontcolor');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/virtual/fontsize.js b/node_modules/core-js/full/string/virtual/fontsize.js
new file mode 100644
index 0000000..19b2a4c
--- /dev/null
+++ b/node_modules/core-js/full/string/virtual/fontsize.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/string/virtual/fontsize');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/virtual/includes.js b/node_modules/core-js/full/string/virtual/includes.js
new file mode 100644
index 0000000..5057bba
--- /dev/null
+++ b/node_modules/core-js/full/string/virtual/includes.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/string/virtual/includes');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/virtual/index.js b/node_modules/core-js/full/string/virtual/index.js
new file mode 100644
index 0000000..261c940
--- /dev/null
+++ b/node_modules/core-js/full/string/virtual/index.js
@@ -0,0 +1,10 @@
+'use strict';
+var parent = require('../../../actual/string/virtual');
+// TODO: remove from `core-js@4`
+require('../../../modules/esnext.string.at');
+require('../../../modules/esnext.string.code-points');
+// TODO: remove from `core-js@4`
+require('../../../modules/esnext.string.match-all');
+require('../../../modules/esnext.string.replace-all');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/virtual/is-well-formed.js b/node_modules/core-js/full/string/virtual/is-well-formed.js
new file mode 100644
index 0000000..0358bea
--- /dev/null
+++ b/node_modules/core-js/full/string/virtual/is-well-formed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/string/virtual/is-well-formed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/virtual/italics.js b/node_modules/core-js/full/string/virtual/italics.js
new file mode 100644
index 0000000..8714b59
--- /dev/null
+++ b/node_modules/core-js/full/string/virtual/italics.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/string/virtual/italics');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/virtual/iterator.js b/node_modules/core-js/full/string/virtual/iterator.js
new file mode 100644
index 0000000..1878fd1
--- /dev/null
+++ b/node_modules/core-js/full/string/virtual/iterator.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/string/virtual/iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/virtual/link.js b/node_modules/core-js/full/string/virtual/link.js
new file mode 100644
index 0000000..f61a09b
--- /dev/null
+++ b/node_modules/core-js/full/string/virtual/link.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/string/virtual/link');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/virtual/match-all.js b/node_modules/core-js/full/string/virtual/match-all.js
new file mode 100644
index 0000000..26e80f6
--- /dev/null
+++ b/node_modules/core-js/full/string/virtual/match-all.js
@@ -0,0 +1,7 @@
+'use strict';
+// TODO: remove from `core-js@4`
+require('../../../modules/esnext.string.match-all');
+
+var parent = require('../../../actual/string/virtual/match-all');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/virtual/pad-end.js b/node_modules/core-js/full/string/virtual/pad-end.js
new file mode 100644
index 0000000..f02b9ec
--- /dev/null
+++ b/node_modules/core-js/full/string/virtual/pad-end.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/string/virtual/pad-end');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/virtual/pad-start.js b/node_modules/core-js/full/string/virtual/pad-start.js
new file mode 100644
index 0000000..f8aeed6
--- /dev/null
+++ b/node_modules/core-js/full/string/virtual/pad-start.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/string/virtual/pad-start');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/virtual/repeat.js b/node_modules/core-js/full/string/virtual/repeat.js
new file mode 100644
index 0000000..4dc5718
--- /dev/null
+++ b/node_modules/core-js/full/string/virtual/repeat.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/string/virtual/repeat');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/virtual/replace-all.js b/node_modules/core-js/full/string/virtual/replace-all.js
new file mode 100644
index 0000000..cdf4c9d
--- /dev/null
+++ b/node_modules/core-js/full/string/virtual/replace-all.js
@@ -0,0 +1,7 @@
+'use strict';
+// TODO: remove from `core-js@4`
+require('../../../modules/esnext.string.replace-all');
+
+var parent = require('../../../actual/string/virtual/replace-all');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/virtual/small.js b/node_modules/core-js/full/string/virtual/small.js
new file mode 100644
index 0000000..7dd3fdf
--- /dev/null
+++ b/node_modules/core-js/full/string/virtual/small.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/string/virtual/small');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/virtual/starts-with.js b/node_modules/core-js/full/string/virtual/starts-with.js
new file mode 100644
index 0000000..7cda818
--- /dev/null
+++ b/node_modules/core-js/full/string/virtual/starts-with.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/string/virtual/starts-with');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/virtual/strike.js b/node_modules/core-js/full/string/virtual/strike.js
new file mode 100644
index 0000000..f1cdccb
--- /dev/null
+++ b/node_modules/core-js/full/string/virtual/strike.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/string/virtual/strike');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/virtual/sub.js b/node_modules/core-js/full/string/virtual/sub.js
new file mode 100644
index 0000000..10cb6c2
--- /dev/null
+++ b/node_modules/core-js/full/string/virtual/sub.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/string/virtual/sub');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/virtual/substr.js b/node_modules/core-js/full/string/virtual/substr.js
new file mode 100644
index 0000000..5870366
--- /dev/null
+++ b/node_modules/core-js/full/string/virtual/substr.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/string/virtual/substr');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/virtual/sup.js b/node_modules/core-js/full/string/virtual/sup.js
new file mode 100644
index 0000000..132152b
--- /dev/null
+++ b/node_modules/core-js/full/string/virtual/sup.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/string/virtual/sup');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/virtual/to-well-formed.js b/node_modules/core-js/full/string/virtual/to-well-formed.js
new file mode 100644
index 0000000..f4f5d71
--- /dev/null
+++ b/node_modules/core-js/full/string/virtual/to-well-formed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/string/virtual/to-well-formed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/virtual/trim-end.js b/node_modules/core-js/full/string/virtual/trim-end.js
new file mode 100644
index 0000000..961704f
--- /dev/null
+++ b/node_modules/core-js/full/string/virtual/trim-end.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/string/virtual/trim-end');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/virtual/trim-left.js b/node_modules/core-js/full/string/virtual/trim-left.js
new file mode 100644
index 0000000..59bb506
--- /dev/null
+++ b/node_modules/core-js/full/string/virtual/trim-left.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/string/virtual/trim-left');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/virtual/trim-right.js b/node_modules/core-js/full/string/virtual/trim-right.js
new file mode 100644
index 0000000..69fe2c9
--- /dev/null
+++ b/node_modules/core-js/full/string/virtual/trim-right.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/string/virtual/trim-right');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/virtual/trim-start.js b/node_modules/core-js/full/string/virtual/trim-start.js
new file mode 100644
index 0000000..fce3e89
--- /dev/null
+++ b/node_modules/core-js/full/string/virtual/trim-start.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/string/virtual/trim-start');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/string/virtual/trim.js b/node_modules/core-js/full/string/virtual/trim.js
new file mode 100644
index 0000000..af5fa18
--- /dev/null
+++ b/node_modules/core-js/full/string/virtual/trim.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../actual/string/virtual/trim');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/structured-clone.js b/node_modules/core-js/full/structured-clone.js
new file mode 100644
index 0000000..e79f18f
--- /dev/null
+++ b/node_modules/core-js/full/structured-clone.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../actual/structured-clone');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/suppressed-error.js b/node_modules/core-js/full/suppressed-error.js
new file mode 100644
index 0000000..4b2905a
--- /dev/null
+++ b/node_modules/core-js/full/suppressed-error.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../actual/suppressed-error');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/symbol/async-dispose.js b/node_modules/core-js/full/symbol/async-dispose.js
new file mode 100644
index 0000000..badcbcf
--- /dev/null
+++ b/node_modules/core-js/full/symbol/async-dispose.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/symbol/async-dispose');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/symbol/async-iterator.js b/node_modules/core-js/full/symbol/async-iterator.js
new file mode 100644
index 0000000..fd7aa54
--- /dev/null
+++ b/node_modules/core-js/full/symbol/async-iterator.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/symbol/async-iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/symbol/custom-matcher.js b/node_modules/core-js/full/symbol/custom-matcher.js
new file mode 100644
index 0000000..7b6dad3
--- /dev/null
+++ b/node_modules/core-js/full/symbol/custom-matcher.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.symbol.custom-matcher');
+var WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');
+
+module.exports = WrappedWellKnownSymbolModule.f('customMatcher');
diff --git a/node_modules/core-js/full/symbol/description.js b/node_modules/core-js/full/symbol/description.js
new file mode 100644
index 0000000..01ce17a
--- /dev/null
+++ b/node_modules/core-js/full/symbol/description.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/es.symbol.description');
diff --git a/node_modules/core-js/full/symbol/dispose.js b/node_modules/core-js/full/symbol/dispose.js
new file mode 100644
index 0000000..153ed52
--- /dev/null
+++ b/node_modules/core-js/full/symbol/dispose.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/symbol/dispose');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/symbol/for.js b/node_modules/core-js/full/symbol/for.js
new file mode 100644
index 0000000..6e5e5c6
--- /dev/null
+++ b/node_modules/core-js/full/symbol/for.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/symbol/for');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/symbol/has-instance.js b/node_modules/core-js/full/symbol/has-instance.js
new file mode 100644
index 0000000..b70ed03
--- /dev/null
+++ b/node_modules/core-js/full/symbol/has-instance.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/symbol/has-instance');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/symbol/index.js b/node_modules/core-js/full/symbol/index.js
new file mode 100644
index 0000000..8366813
--- /dev/null
+++ b/node_modules/core-js/full/symbol/index.js
@@ -0,0 +1,15 @@
+'use strict';
+var parent = require('../../actual/symbol');
+require('../../modules/esnext.symbol.is-registered-symbol');
+require('../../modules/esnext.symbol.is-well-known-symbol');
+require('../../modules/esnext.symbol.custom-matcher');
+require('../../modules/esnext.symbol.observable');
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.symbol.is-registered');
+require('../../modules/esnext.symbol.is-well-known');
+require('../../modules/esnext.symbol.matcher');
+require('../../modules/esnext.symbol.metadata-key');
+require('../../modules/esnext.symbol.pattern-match');
+require('../../modules/esnext.symbol.replace-all');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/symbol/is-concat-spreadable.js b/node_modules/core-js/full/symbol/is-concat-spreadable.js
new file mode 100644
index 0000000..606e169
--- /dev/null
+++ b/node_modules/core-js/full/symbol/is-concat-spreadable.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/symbol/is-concat-spreadable');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/symbol/is-registered-symbol.js b/node_modules/core-js/full/symbol/is-registered-symbol.js
new file mode 100644
index 0000000..7ef1f02
--- /dev/null
+++ b/node_modules/core-js/full/symbol/is-registered-symbol.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.symbol');
+require('../../modules/esnext.symbol.is-registered-symbol');
+var path = require('../../internals/path');
+
+module.exports = path.Symbol.isRegisteredSymbol;
diff --git a/node_modules/core-js/full/symbol/is-registered.js b/node_modules/core-js/full/symbol/is-registered.js
new file mode 100644
index 0000000..7a2e6d2
--- /dev/null
+++ b/node_modules/core-js/full/symbol/is-registered.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.symbol');
+require('../../modules/esnext.symbol.is-registered');
+var path = require('../../internals/path');
+
+module.exports = path.Symbol.isRegistered;
diff --git a/node_modules/core-js/full/symbol/is-well-known-symbol.js b/node_modules/core-js/full/symbol/is-well-known-symbol.js
new file mode 100644
index 0000000..5106242
--- /dev/null
+++ b/node_modules/core-js/full/symbol/is-well-known-symbol.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.symbol');
+require('../../modules/esnext.symbol.is-well-known-symbol');
+var path = require('../../internals/path');
+
+module.exports = path.Symbol.isWellKnownSymbol;
diff --git a/node_modules/core-js/full/symbol/is-well-known.js b/node_modules/core-js/full/symbol/is-well-known.js
new file mode 100644
index 0000000..9e9f648
--- /dev/null
+++ b/node_modules/core-js/full/symbol/is-well-known.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.symbol');
+require('../../modules/esnext.symbol.is-well-known');
+var path = require('../../internals/path');
+
+module.exports = path.Symbol.isWellKnown;
diff --git a/node_modules/core-js/full/symbol/iterator.js b/node_modules/core-js/full/symbol/iterator.js
new file mode 100644
index 0000000..5ed48cc
--- /dev/null
+++ b/node_modules/core-js/full/symbol/iterator.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/symbol/iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/symbol/key-for.js b/node_modules/core-js/full/symbol/key-for.js
new file mode 100644
index 0000000..a959f7f
--- /dev/null
+++ b/node_modules/core-js/full/symbol/key-for.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/symbol/key-for');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/symbol/match-all.js b/node_modules/core-js/full/symbol/match-all.js
new file mode 100644
index 0000000..6ee8474
--- /dev/null
+++ b/node_modules/core-js/full/symbol/match-all.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/symbol/match-all');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/symbol/match.js b/node_modules/core-js/full/symbol/match.js
new file mode 100644
index 0000000..29f668e
--- /dev/null
+++ b/node_modules/core-js/full/symbol/match.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/symbol/match');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/symbol/matcher.js b/node_modules/core-js/full/symbol/matcher.js
new file mode 100644
index 0000000..8ae8bd1
--- /dev/null
+++ b/node_modules/core-js/full/symbol/matcher.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.symbol.matcher');
+var WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');
+
+module.exports = WrappedWellKnownSymbolModule.f('matcher');
diff --git a/node_modules/core-js/full/symbol/metadata-key.js b/node_modules/core-js/full/symbol/metadata-key.js
new file mode 100644
index 0000000..a6fcd00
--- /dev/null
+++ b/node_modules/core-js/full/symbol/metadata-key.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.symbol.metadata-key');
+var WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');
+
+module.exports = WrappedWellKnownSymbolModule.f('metadataKey');
diff --git a/node_modules/core-js/full/symbol/metadata.js b/node_modules/core-js/full/symbol/metadata.js
new file mode 100644
index 0000000..b44c1a5
--- /dev/null
+++ b/node_modules/core-js/full/symbol/metadata.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/symbol/metadata');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/symbol/observable.js b/node_modules/core-js/full/symbol/observable.js
new file mode 100644
index 0000000..3f05b28
--- /dev/null
+++ b/node_modules/core-js/full/symbol/observable.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/esnext.symbol.observable');
+var WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');
+
+module.exports = WrappedWellKnownSymbolModule.f('observable');
diff --git a/node_modules/core-js/full/symbol/pattern-match.js b/node_modules/core-js/full/symbol/pattern-match.js
new file mode 100644
index 0000000..3bd8489
--- /dev/null
+++ b/node_modules/core-js/full/symbol/pattern-match.js
@@ -0,0 +1,6 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.symbol.pattern-match');
+var WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');
+
+module.exports = WrappedWellKnownSymbolModule.f('patternMatch');
diff --git a/node_modules/core-js/full/symbol/replace-all.js b/node_modules/core-js/full/symbol/replace-all.js
new file mode 100644
index 0000000..76a360a
--- /dev/null
+++ b/node_modules/core-js/full/symbol/replace-all.js
@@ -0,0 +1,6 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.symbol.replace-all');
+var WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');
+
+module.exports = WrappedWellKnownSymbolModule.f('replaceAll');
diff --git a/node_modules/core-js/full/symbol/replace.js b/node_modules/core-js/full/symbol/replace.js
new file mode 100644
index 0000000..749b2c1
--- /dev/null
+++ b/node_modules/core-js/full/symbol/replace.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/symbol/replace');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/symbol/search.js b/node_modules/core-js/full/symbol/search.js
new file mode 100644
index 0000000..4259531
--- /dev/null
+++ b/node_modules/core-js/full/symbol/search.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/symbol/search');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/symbol/species.js b/node_modules/core-js/full/symbol/species.js
new file mode 100644
index 0000000..970e526
--- /dev/null
+++ b/node_modules/core-js/full/symbol/species.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/symbol/species');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/symbol/split.js b/node_modules/core-js/full/symbol/split.js
new file mode 100644
index 0000000..07c221d
--- /dev/null
+++ b/node_modules/core-js/full/symbol/split.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/symbol/split');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/symbol/to-primitive.js b/node_modules/core-js/full/symbol/to-primitive.js
new file mode 100644
index 0000000..4775a13
--- /dev/null
+++ b/node_modules/core-js/full/symbol/to-primitive.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/symbol/to-primitive');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/symbol/to-string-tag.js b/node_modules/core-js/full/symbol/to-string-tag.js
new file mode 100644
index 0000000..3a1918b
--- /dev/null
+++ b/node_modules/core-js/full/symbol/to-string-tag.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/symbol/to-string-tag');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/symbol/unscopables.js b/node_modules/core-js/full/symbol/unscopables.js
new file mode 100644
index 0000000..379e8b3
--- /dev/null
+++ b/node_modules/core-js/full/symbol/unscopables.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/symbol/unscopables');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/at.js b/node_modules/core-js/full/typed-array/at.js
new file mode 100644
index 0000000..ee0919f
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/at.js
@@ -0,0 +1,7 @@
+'use strict';
+var parent = require('../../actual/typed-array/at');
+
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.typed-array.at');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/copy-within.js b/node_modules/core-js/full/typed-array/copy-within.js
new file mode 100644
index 0000000..c2228f8
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/copy-within.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/copy-within');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/entries.js b/node_modules/core-js/full/typed-array/entries.js
new file mode 100644
index 0000000..cf3edb6
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/entries.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/entries');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/every.js b/node_modules/core-js/full/typed-array/every.js
new file mode 100644
index 0000000..4d40f03
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/every.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/every');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/fill.js b/node_modules/core-js/full/typed-array/fill.js
new file mode 100644
index 0000000..50b2d54
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/fill.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/fill');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/filter-out.js b/node_modules/core-js/full/typed-array/filter-out.js
new file mode 100644
index 0000000..a6726b7
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/filter-out.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.typed-array.filter-out');
diff --git a/node_modules/core-js/full/typed-array/filter-reject.js b/node_modules/core-js/full/typed-array/filter-reject.js
new file mode 100644
index 0000000..c9d3275
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/filter-reject.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/esnext.typed-array.filter-reject');
diff --git a/node_modules/core-js/full/typed-array/filter.js b/node_modules/core-js/full/typed-array/filter.js
new file mode 100644
index 0000000..0e5b349
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/filter.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/filter');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/find-index.js b/node_modules/core-js/full/typed-array/find-index.js
new file mode 100644
index 0000000..f770e7d
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/find-index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/find-index');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/find-last-index.js b/node_modules/core-js/full/typed-array/find-last-index.js
new file mode 100644
index 0000000..1c8ade6
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/find-last-index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/find-last-index');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/find-last.js b/node_modules/core-js/full/typed-array/find-last.js
new file mode 100644
index 0000000..5279720
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/find-last.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/find-last');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/find.js b/node_modules/core-js/full/typed-array/find.js
new file mode 100644
index 0000000..c78edee
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/find.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/find');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/float32-array.js b/node_modules/core-js/full/typed-array/float32-array.js
new file mode 100644
index 0000000..94de0e7
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/float32-array.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../actual/typed-array/float32-array');
+require('../../full/typed-array/methods');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/float64-array.js b/node_modules/core-js/full/typed-array/float64-array.js
new file mode 100644
index 0000000..8837577
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/float64-array.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../actual/typed-array/float64-array');
+require('../../full/typed-array/methods');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/for-each.js b/node_modules/core-js/full/typed-array/for-each.js
new file mode 100644
index 0000000..8ceca88
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/for-each.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/for-each');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/from-async.js b/node_modules/core-js/full/typed-array/from-async.js
new file mode 100644
index 0000000..f78f4a8
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/from-async.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/esnext.typed-array.from-async');
diff --git a/node_modules/core-js/full/typed-array/from-base64.js b/node_modules/core-js/full/typed-array/from-base64.js
new file mode 100644
index 0000000..7338700
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/from-base64.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/from-base64');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/from-hex.js b/node_modules/core-js/full/typed-array/from-hex.js
new file mode 100644
index 0000000..4d329ec
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/from-hex.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/from-hex');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/from.js b/node_modules/core-js/full/typed-array/from.js
new file mode 100644
index 0000000..a1693c8
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/from.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/from');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/group-by.js b/node_modules/core-js/full/typed-array/group-by.js
new file mode 100644
index 0000000..cea8d66
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/group-by.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/esnext.typed-array.group-by');
diff --git a/node_modules/core-js/full/typed-array/includes.js b/node_modules/core-js/full/typed-array/includes.js
new file mode 100644
index 0000000..d901103
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/includes.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/includes');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/index-of.js b/node_modules/core-js/full/typed-array/index-of.js
new file mode 100644
index 0000000..89a1fd9
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/index-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/index-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/index.js b/node_modules/core-js/full/typed-array/index.js
new file mode 100644
index 0000000..2a1f043
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/index.js
@@ -0,0 +1,14 @@
+'use strict';
+var parent = require('../../actual/typed-array');
+require('../../modules/es.map');
+require('../../modules/es.promise');
+require('../../modules/esnext.typed-array.from-async');
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.typed-array.at');
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.typed-array.filter-out');
+require('../../modules/esnext.typed-array.filter-reject');
+require('../../modules/esnext.typed-array.group-by');
+require('../../modules/esnext.typed-array.unique-by');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/int16-array.js b/node_modules/core-js/full/typed-array/int16-array.js
new file mode 100644
index 0000000..b9473c6
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/int16-array.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../actual/typed-array/int16-array');
+require('../../full/typed-array/methods');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/int32-array.js b/node_modules/core-js/full/typed-array/int32-array.js
new file mode 100644
index 0000000..283854b
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/int32-array.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../actual/typed-array/int32-array');
+require('../../full/typed-array/methods');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/int8-array.js b/node_modules/core-js/full/typed-array/int8-array.js
new file mode 100644
index 0000000..37ab3fb
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/int8-array.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../actual/typed-array/int8-array');
+require('../../full/typed-array/methods');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/iterator.js b/node_modules/core-js/full/typed-array/iterator.js
new file mode 100644
index 0000000..a7c10a3
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/iterator.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/join.js b/node_modules/core-js/full/typed-array/join.js
new file mode 100644
index 0000000..cbfce88
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/join.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/join');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/keys.js b/node_modules/core-js/full/typed-array/keys.js
new file mode 100644
index 0000000..369e7d4
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/keys.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/keys');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/last-index-of.js b/node_modules/core-js/full/typed-array/last-index-of.js
new file mode 100644
index 0000000..940fb2d
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/last-index-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/last-index-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/map.js b/node_modules/core-js/full/typed-array/map.js
new file mode 100644
index 0000000..a979363
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/map.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/methods.js b/node_modules/core-js/full/typed-array/methods.js
new file mode 100644
index 0000000..1e85c5f
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/methods.js
@@ -0,0 +1,14 @@
+'use strict';
+var parent = require('../../actual/typed-array/methods');
+require('../../modules/es.map');
+require('../../modules/es.promise');
+require('../../modules/esnext.typed-array.from-async');
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.typed-array.at');
+// TODO: Remove from `core-js@4`
+require('../../modules/esnext.typed-array.filter-out');
+require('../../modules/esnext.typed-array.filter-reject');
+require('../../modules/esnext.typed-array.group-by');
+require('../../modules/esnext.typed-array.unique-by');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/of.js b/node_modules/core-js/full/typed-array/of.js
new file mode 100644
index 0000000..8b4d096
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/reduce-right.js b/node_modules/core-js/full/typed-array/reduce-right.js
new file mode 100644
index 0000000..350a25c
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/reduce-right.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/reduce-right');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/reduce.js b/node_modules/core-js/full/typed-array/reduce.js
new file mode 100644
index 0000000..dc2ca2d
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/reduce.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/reduce');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/reverse.js b/node_modules/core-js/full/typed-array/reverse.js
new file mode 100644
index 0000000..c6d6242
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/reverse.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/reverse');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/set-from-base64.js b/node_modules/core-js/full/typed-array/set-from-base64.js
new file mode 100644
index 0000000..78bf569
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/set-from-base64.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/set-from-base64');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/set-from-hex.js b/node_modules/core-js/full/typed-array/set-from-hex.js
new file mode 100644
index 0000000..9b112f5
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/set-from-hex.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/set-from-hex');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/set.js b/node_modules/core-js/full/typed-array/set.js
new file mode 100644
index 0000000..d1cf8f2
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/set.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/set');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/slice.js b/node_modules/core-js/full/typed-array/slice.js
new file mode 100644
index 0000000..264ae0f
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/slice.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/slice');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/some.js b/node_modules/core-js/full/typed-array/some.js
new file mode 100644
index 0000000..32d17c2
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/some.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/some');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/sort.js b/node_modules/core-js/full/typed-array/sort.js
new file mode 100644
index 0000000..cdc3de3
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/sort.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/sort');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/subarray.js b/node_modules/core-js/full/typed-array/subarray.js
new file mode 100644
index 0000000..a638b2a
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/subarray.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/subarray');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/to-base64.js b/node_modules/core-js/full/typed-array/to-base64.js
new file mode 100644
index 0000000..065c3a6
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/to-base64.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/to-base64');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/to-hex.js b/node_modules/core-js/full/typed-array/to-hex.js
new file mode 100644
index 0000000..2d15510
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/to-hex.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/to-hex');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/to-locale-string.js b/node_modules/core-js/full/typed-array/to-locale-string.js
new file mode 100644
index 0000000..fbc9f6f
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/to-locale-string.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/to-locale-string');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/to-reversed.js b/node_modules/core-js/full/typed-array/to-reversed.js
new file mode 100644
index 0000000..9fa431a
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/to-reversed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/to-reversed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/to-sorted.js b/node_modules/core-js/full/typed-array/to-sorted.js
new file mode 100644
index 0000000..0445376
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/to-sorted.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/to-sorted');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/to-spliced.js b/node_modules/core-js/full/typed-array/to-spliced.js
new file mode 100644
index 0000000..a21aff3
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/to-spliced.js
@@ -0,0 +1,5 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+var parent = require('../../actual/typed-array/to-spliced');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/to-string.js b/node_modules/core-js/full/typed-array/to-string.js
new file mode 100644
index 0000000..0c9f331
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/to-string.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/to-string');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/uint16-array.js b/node_modules/core-js/full/typed-array/uint16-array.js
new file mode 100644
index 0000000..53fa819
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/uint16-array.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../actual/typed-array/uint16-array');
+require('../../full/typed-array/methods');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/uint32-array.js b/node_modules/core-js/full/typed-array/uint32-array.js
new file mode 100644
index 0000000..f577d7f
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/uint32-array.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../actual/typed-array/uint32-array');
+require('../../full/typed-array/methods');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/uint8-array.js b/node_modules/core-js/full/typed-array/uint8-array.js
new file mode 100644
index 0000000..3eb28d7
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/uint8-array.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../actual/typed-array/uint8-array');
+require('../../full/typed-array/methods');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/uint8-clamped-array.js b/node_modules/core-js/full/typed-array/uint8-clamped-array.js
new file mode 100644
index 0000000..493d611
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/uint8-clamped-array.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../actual/typed-array/uint8-clamped-array');
+require('../../full/typed-array/methods');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/unique-by.js b/node_modules/core-js/full/typed-array/unique-by.js
new file mode 100644
index 0000000..43a46a7
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/unique-by.js
@@ -0,0 +1,3 @@
+'use strict';
+require('../../modules/es.map');
+require('../../modules/esnext.typed-array.unique-by');
diff --git a/node_modules/core-js/full/typed-array/values.js b/node_modules/core-js/full/typed-array/values.js
new file mode 100644
index 0000000..4ef9b9d
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/values.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/values');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/typed-array/with.js b/node_modules/core-js/full/typed-array/with.js
new file mode 100644
index 0000000..ec01ee5
--- /dev/null
+++ b/node_modules/core-js/full/typed-array/with.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/typed-array/with');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/unescape.js b/node_modules/core-js/full/unescape.js
new file mode 100644
index 0000000..c9d614a
--- /dev/null
+++ b/node_modules/core-js/full/unescape.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../actual/unescape');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/url-search-params/index.js b/node_modules/core-js/full/url-search-params/index.js
new file mode 100644
index 0000000..d6e6df5
--- /dev/null
+++ b/node_modules/core-js/full/url-search-params/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/url-search-params');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/url/can-parse.js b/node_modules/core-js/full/url/can-parse.js
new file mode 100644
index 0000000..5b083b0
--- /dev/null
+++ b/node_modules/core-js/full/url/can-parse.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/url/can-parse');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/url/index.js b/node_modules/core-js/full/url/index.js
new file mode 100644
index 0000000..59c378f
--- /dev/null
+++ b/node_modules/core-js/full/url/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/url');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/url/parse.js b/node_modules/core-js/full/url/parse.js
new file mode 100644
index 0000000..7105032
--- /dev/null
+++ b/node_modules/core-js/full/url/parse.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/url/parse');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/url/to-json.js b/node_modules/core-js/full/url/to-json.js
new file mode 100644
index 0000000..c26ef4a
--- /dev/null
+++ b/node_modules/core-js/full/url/to-json.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../actual/url/to-json');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/weak-map/delete-all.js b/node_modules/core-js/full/weak-map/delete-all.js
new file mode 100644
index 0000000..76f854b
--- /dev/null
+++ b/node_modules/core-js/full/weak-map/delete-all.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.weak-map');
+require('../../modules/esnext.weak-map.delete-all');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('WeakMap', 'deleteAll');
diff --git a/node_modules/core-js/full/weak-map/emplace.js b/node_modules/core-js/full/weak-map/emplace.js
new file mode 100644
index 0000000..fc3844a
--- /dev/null
+++ b/node_modules/core-js/full/weak-map/emplace.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.weak-map');
+require('../../modules/esnext.weak-map.emplace');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('WeakMap', 'emplace');
diff --git a/node_modules/core-js/full/weak-map/from.js b/node_modules/core-js/full/weak-map/from.js
new file mode 100644
index 0000000..443fd8f
--- /dev/null
+++ b/node_modules/core-js/full/weak-map/from.js
@@ -0,0 +1,14 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.array.iterator');
+require('../../modules/es.string.iterator');
+require('../../modules/es.weak-map');
+require('../../modules/esnext.weak-map.from');
+require('../../modules/esnext.weak-map.delete-all');
+require('../../modules/esnext.weak-map.emplace');
+require('../../modules/esnext.weak-map.get-or-insert');
+require('../../modules/esnext.weak-map.get-or-insert-computed');
+require('../../modules/web.dom-collections.iterator');
+var path = require('../../internals/path');
+
+module.exports = path.WeakMap.from;
diff --git a/node_modules/core-js/full/weak-map/get-or-insert-computed.js b/node_modules/core-js/full/weak-map/get-or-insert-computed.js
new file mode 100644
index 0000000..b8dcd09
--- /dev/null
+++ b/node_modules/core-js/full/weak-map/get-or-insert-computed.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.weak-map');
+require('../../modules/esnext.weak-map.get-or-insert-computed');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('WeakMap', 'getOrInsertComputed');
diff --git a/node_modules/core-js/full/weak-map/get-or-insert.js b/node_modules/core-js/full/weak-map/get-or-insert.js
new file mode 100644
index 0000000..6bb549f
--- /dev/null
+++ b/node_modules/core-js/full/weak-map/get-or-insert.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.weak-map');
+require('../../modules/esnext.weak-map.get-or-insert');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('WeakMap', 'getOrInsert');
diff --git a/node_modules/core-js/full/weak-map/index.js b/node_modules/core-js/full/weak-map/index.js
new file mode 100644
index 0000000..0710b89
--- /dev/null
+++ b/node_modules/core-js/full/weak-map/index.js
@@ -0,0 +1,13 @@
+'use strict';
+var parent = require('../../actual/weak-map');
+require('../../modules/es.string.iterator');
+require('../../modules/esnext.weak-map.from');
+require('../../modules/esnext.weak-map.of');
+require('../../modules/esnext.weak-map.emplace');
+require('../../modules/esnext.weak-map.get-or-insert');
+require('../../modules/esnext.weak-map.get-or-insert-computed');
+require('../../modules/esnext.weak-map.delete-all');
+// TODO: remove from `core-js@4`
+require('../../modules/esnext.weak-map.upsert');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/weak-map/of.js b/node_modules/core-js/full/weak-map/of.js
new file mode 100644
index 0000000..66d3063
--- /dev/null
+++ b/node_modules/core-js/full/weak-map/of.js
@@ -0,0 +1,12 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.array.iterator');
+require('../../modules/es.weak-map');
+require('../../modules/esnext.weak-map.of');
+require('../../modules/esnext.weak-map.delete-all');
+require('../../modules/esnext.weak-map.emplace');
+require('../../modules/esnext.weak-map.get-or-insert');
+require('../../modules/esnext.weak-map.get-or-insert-computed');
+var path = require('../../internals/path');
+
+module.exports = path.WeakMap.of;
diff --git a/node_modules/core-js/full/weak-map/upsert.js b/node_modules/core-js/full/weak-map/upsert.js
new file mode 100644
index 0000000..003098f
--- /dev/null
+++ b/node_modules/core-js/full/weak-map/upsert.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.weak-map');
+require('../../modules/esnext.weak-map.upsert');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('WeakMap', 'upsert');
diff --git a/node_modules/core-js/full/weak-set/add-all.js b/node_modules/core-js/full/weak-set/add-all.js
new file mode 100644
index 0000000..4ecd10f
--- /dev/null
+++ b/node_modules/core-js/full/weak-set/add-all.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.weak-set');
+require('../../modules/esnext.weak-set.add-all');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('WeakSet', 'addAll');
diff --git a/node_modules/core-js/full/weak-set/delete-all.js b/node_modules/core-js/full/weak-set/delete-all.js
new file mode 100644
index 0000000..5ddc14a
--- /dev/null
+++ b/node_modules/core-js/full/weak-set/delete-all.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.weak-set');
+require('../../modules/esnext.weak-set.delete-all');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('WeakSet', 'deleteAll');
diff --git a/node_modules/core-js/full/weak-set/from.js b/node_modules/core-js/full/weak-set/from.js
new file mode 100644
index 0000000..5d7a4f9
--- /dev/null
+++ b/node_modules/core-js/full/weak-set/from.js
@@ -0,0 +1,12 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.array.iterator');
+require('../../modules/es.string.iterator');
+require('../../modules/es.weak-set');
+require('../../modules/esnext.weak-set.from');
+require('../../modules/esnext.weak-set.add-all');
+require('../../modules/esnext.weak-set.delete-all');
+require('../../modules/web.dom-collections.iterator');
+var path = require('../../internals/path');
+
+module.exports = path.WeakSet.from;
diff --git a/node_modules/core-js/full/weak-set/index.js b/node_modules/core-js/full/weak-set/index.js
new file mode 100644
index 0000000..9d9ac8d
--- /dev/null
+++ b/node_modules/core-js/full/weak-set/index.js
@@ -0,0 +1,9 @@
+'use strict';
+var parent = require('../../actual/weak-set');
+require('../../modules/es.string.iterator');
+require('../../modules/esnext.weak-set.add-all');
+require('../../modules/esnext.weak-set.delete-all');
+require('../../modules/esnext.weak-set.from');
+require('../../modules/esnext.weak-set.of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/full/weak-set/of.js b/node_modules/core-js/full/weak-set/of.js
new file mode 100644
index 0000000..79b4523
--- /dev/null
+++ b/node_modules/core-js/full/weak-set/of.js
@@ -0,0 +1,10 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/es.array.iterator');
+require('../../modules/es.weak-set');
+require('../../modules/esnext.weak-set.of');
+require('../../modules/esnext.weak-set.add-all');
+require('../../modules/esnext.weak-set.delete-all');
+var path = require('../../internals/path');
+
+module.exports = path.WeakSet.of;
diff --git a/node_modules/core-js/index.js b/node_modules/core-js/index.js
new file mode 100644
index 0000000..b4eca7e
--- /dev/null
+++ b/node_modules/core-js/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('./full');
diff --git a/node_modules/core-js/internals/README.md b/node_modules/core-js/internals/README.md
new file mode 100644
index 0000000..f5cca30
--- /dev/null
+++ b/node_modules/core-js/internals/README.md
@@ -0,0 +1 @@
+This folder contains internal parts of `core-js` like helpers.
diff --git a/node_modules/core-js/internals/a-callable.js b/node_modules/core-js/internals/a-callable.js
new file mode 100644
index 0000000..0aae1ad
--- /dev/null
+++ b/node_modules/core-js/internals/a-callable.js
@@ -0,0 +1,11 @@
+'use strict';
+var isCallable = require('../internals/is-callable');
+var tryToString = require('../internals/try-to-string');
+
+var $TypeError = TypeError;
+
+// `Assert: IsCallable(argument) is true`
+module.exports = function (argument) {
+  if (isCallable(argument)) return argument;
+  throw new $TypeError(tryToString(argument) + ' is not a function');
+};
diff --git a/node_modules/core-js/internals/a-constructor.js b/node_modules/core-js/internals/a-constructor.js
new file mode 100644
index 0000000..efede0f
--- /dev/null
+++ b/node_modules/core-js/internals/a-constructor.js
@@ -0,0 +1,11 @@
+'use strict';
+var isConstructor = require('../internals/is-constructor');
+var tryToString = require('../internals/try-to-string');
+
+var $TypeError = TypeError;
+
+// `Assert: IsConstructor(argument) is true`
+module.exports = function (argument) {
+  if (isConstructor(argument)) return argument;
+  throw new $TypeError(tryToString(argument) + ' is not a constructor');
+};
diff --git a/node_modules/core-js/internals/a-data-view.js b/node_modules/core-js/internals/a-data-view.js
new file mode 100644
index 0000000..12ed3e5
--- /dev/null
+++ b/node_modules/core-js/internals/a-data-view.js
@@ -0,0 +1,9 @@
+'use strict';
+var classof = require('../internals/classof');
+
+var $TypeError = TypeError;
+
+module.exports = function (argument) {
+  if (classof(argument) === 'DataView') return argument;
+  throw new $TypeError('Argument is not a DataView');
+};
diff --git a/node_modules/core-js/internals/a-map.js b/node_modules/core-js/internals/a-map.js
new file mode 100644
index 0000000..0b21a89
--- /dev/null
+++ b/node_modules/core-js/internals/a-map.js
@@ -0,0 +1,8 @@
+'use strict';
+var has = require('../internals/map-helpers').has;
+
+// Perform ? RequireInternalSlot(M, [[MapData]])
+module.exports = function (it) {
+  has(it);
+  return it;
+};
diff --git a/node_modules/core-js/internals/a-number.js b/node_modules/core-js/internals/a-number.js
new file mode 100644
index 0000000..a4d6f94
--- /dev/null
+++ b/node_modules/core-js/internals/a-number.js
@@ -0,0 +1,7 @@
+'use strict';
+var $TypeError = TypeError;
+
+module.exports = function (argument) {
+  if (typeof argument == 'number') return argument;
+  throw new $TypeError('Argument is not a number');
+};
diff --git a/node_modules/core-js/internals/a-possible-prototype.js b/node_modules/core-js/internals/a-possible-prototype.js
new file mode 100644
index 0000000..d800258
--- /dev/null
+++ b/node_modules/core-js/internals/a-possible-prototype.js
@@ -0,0 +1,10 @@
+'use strict';
+var isPossiblePrototype = require('../internals/is-possible-prototype');
+
+var $String = String;
+var $TypeError = TypeError;
+
+module.exports = function (argument) {
+  if (isPossiblePrototype(argument)) return argument;
+  throw new $TypeError("Can't set " + $String(argument) + ' as a prototype');
+};
diff --git a/node_modules/core-js/internals/a-set.js b/node_modules/core-js/internals/a-set.js
new file mode 100644
index 0000000..6df1ead
--- /dev/null
+++ b/node_modules/core-js/internals/a-set.js
@@ -0,0 +1,8 @@
+'use strict';
+var has = require('../internals/set-helpers').has;
+
+// Perform ? RequireInternalSlot(M, [[SetData]])
+module.exports = function (it) {
+  has(it);
+  return it;
+};
diff --git a/node_modules/core-js/internals/a-string.js b/node_modules/core-js/internals/a-string.js
new file mode 100644
index 0000000..ec8dff3
--- /dev/null
+++ b/node_modules/core-js/internals/a-string.js
@@ -0,0 +1,7 @@
+'use strict';
+var $TypeError = TypeError;
+
+module.exports = function (argument) {
+  if (typeof argument == 'string') return argument;
+  throw new $TypeError('Argument is not a string');
+};
diff --git a/node_modules/core-js/internals/a-weak-map.js b/node_modules/core-js/internals/a-weak-map.js
new file mode 100644
index 0000000..5d775f1
--- /dev/null
+++ b/node_modules/core-js/internals/a-weak-map.js
@@ -0,0 +1,8 @@
+'use strict';
+var has = require('../internals/weak-map-helpers').has;
+
+// Perform ? RequireInternalSlot(M, [[WeakMapData]])
+module.exports = function (it) {
+  has(it);
+  return it;
+};
diff --git a/node_modules/core-js/internals/a-weak-set.js b/node_modules/core-js/internals/a-weak-set.js
new file mode 100644
index 0000000..5b0c13c
--- /dev/null
+++ b/node_modules/core-js/internals/a-weak-set.js
@@ -0,0 +1,8 @@
+'use strict';
+var has = require('../internals/weak-set-helpers').has;
+
+// Perform ? RequireInternalSlot(M, [[WeakSetData]])
+module.exports = function (it) {
+  has(it);
+  return it;
+};
diff --git a/node_modules/core-js/internals/add-disposable-resource.js b/node_modules/core-js/internals/add-disposable-resource.js
new file mode 100644
index 0000000..78d5c18
--- /dev/null
+++ b/node_modules/core-js/internals/add-disposable-resource.js
@@ -0,0 +1,62 @@
+'use strict';
+var getBuiltIn = require('../internals/get-built-in');
+var call = require('../internals/function-call');
+var uncurryThis = require('../internals/function-uncurry-this');
+var bind = require('../internals/function-bind-context');
+var anObject = require('../internals/an-object');
+var aCallable = require('../internals/a-callable');
+var isNullOrUndefined = require('../internals/is-null-or-undefined');
+var getMethod = require('../internals/get-method');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+var ASYNC_DISPOSE = wellKnownSymbol('asyncDispose');
+var DISPOSE = wellKnownSymbol('dispose');
+
+var push = uncurryThis([].push);
+
+// `GetDisposeMethod` abstract operation
+// https://tc39.es/proposal-explicit-resource-management/#sec-getdisposemethod
+var getDisposeMethod = function (V, hint) {
+  if (hint === 'async-dispose') {
+    var method = getMethod(V, ASYNC_DISPOSE);
+    if (method !== undefined) return method;
+    method = getMethod(V, DISPOSE);
+    if (method === undefined) return method;
+    return function () {
+      var O = this;
+      var Promise = getBuiltIn('Promise');
+      return new Promise(function (resolve) {
+        call(method, O);
+        resolve(undefined);
+      });
+    };
+  } return getMethod(V, DISPOSE);
+};
+
+// `CreateDisposableResource` abstract operation
+// https://tc39.es/proposal-explicit-resource-management/#sec-createdisposableresource
+var createDisposableResource = function (V, hint, method) {
+  if (arguments.length < 3 && !isNullOrUndefined(V)) {
+    method = aCallable(getDisposeMethod(anObject(V), hint));
+  }
+
+  return method === undefined ? function () {
+    return undefined;
+  } : bind(method, V);
+};
+
+// `AddDisposableResource` abstract operation
+// https://tc39.es/proposal-explicit-resource-management/#sec-adddisposableresource
+module.exports = function (disposable, V, hint, method) {
+  var resource;
+  if (arguments.length < 4) {
+    // When `V`` is either `null` or `undefined` and hint is `async-dispose`,
+    // we record that the resource was evaluated to ensure we will still perform an `Await` when resources are later disposed.
+    if (isNullOrUndefined(V) && hint === 'sync-dispose') return;
+    resource = createDisposableResource(V, hint);
+  } else {
+    resource = createDisposableResource(undefined, hint, method);
+  }
+
+  push(disposable.stack, resource);
+};
diff --git a/node_modules/core-js/internals/add-to-unscopables.js b/node_modules/core-js/internals/add-to-unscopables.js
new file mode 100644
index 0000000..c0908db
--- /dev/null
+++ b/node_modules/core-js/internals/add-to-unscopables.js
@@ -0,0 +1,21 @@
+'use strict';
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var create = require('../internals/object-create');
+var defineProperty = require('../internals/object-define-property').f;
+
+var UNSCOPABLES = wellKnownSymbol('unscopables');
+var ArrayPrototype = Array.prototype;
+
+// Array.prototype[@@unscopables]
+// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
+if (ArrayPrototype[UNSCOPABLES] === undefined) {
+  defineProperty(ArrayPrototype, UNSCOPABLES, {
+    configurable: true,
+    value: create(null)
+  });
+}
+
+// add a key to Array.prototype[@@unscopables]
+module.exports = function (key) {
+  ArrayPrototype[UNSCOPABLES][key] = true;
+};
diff --git a/node_modules/core-js/internals/advance-string-index.js b/node_modules/core-js/internals/advance-string-index.js
new file mode 100644
index 0000000..f104d53
--- /dev/null
+++ b/node_modules/core-js/internals/advance-string-index.js
@@ -0,0 +1,8 @@
+'use strict';
+var charAt = require('../internals/string-multibyte').charAt;
+
+// `AdvanceStringIndex` abstract operation
+// https://tc39.es/ecma262/#sec-advancestringindex
+module.exports = function (S, index, unicode) {
+  return index + (unicode ? charAt(S, index).length : 1);
+};
diff --git a/node_modules/core-js/internals/an-instance.js b/node_modules/core-js/internals/an-instance.js
new file mode 100644
index 0000000..ba3422d
--- /dev/null
+++ b/node_modules/core-js/internals/an-instance.js
@@ -0,0 +1,9 @@
+'use strict';
+var isPrototypeOf = require('../internals/object-is-prototype-of');
+
+var $TypeError = TypeError;
+
+module.exports = function (it, Prototype) {
+  if (isPrototypeOf(Prototype, it)) return it;
+  throw new $TypeError('Incorrect invocation');
+};
diff --git a/node_modules/core-js/internals/an-object-or-undefined.js b/node_modules/core-js/internals/an-object-or-undefined.js
new file mode 100644
index 0000000..3138e11
--- /dev/null
+++ b/node_modules/core-js/internals/an-object-or-undefined.js
@@ -0,0 +1,10 @@
+'use strict';
+var isObject = require('../internals/is-object');
+
+var $String = String;
+var $TypeError = TypeError;
+
+module.exports = function (argument) {
+  if (argument === undefined || isObject(argument)) return argument;
+  throw new $TypeError($String(argument) + ' is not an object or undefined');
+};
diff --git a/node_modules/core-js/internals/an-object.js b/node_modules/core-js/internals/an-object.js
new file mode 100644
index 0000000..c782e78
--- /dev/null
+++ b/node_modules/core-js/internals/an-object.js
@@ -0,0 +1,11 @@
+'use strict';
+var isObject = require('../internals/is-object');
+
+var $String = String;
+var $TypeError = TypeError;
+
+// `Assert: Type(argument) is Object`
+module.exports = function (argument) {
+  if (isObject(argument)) return argument;
+  throw new $TypeError($String(argument) + ' is not an object');
+};
diff --git a/node_modules/core-js/internals/an-uint8-array.js b/node_modules/core-js/internals/an-uint8-array.js
new file mode 100644
index 0000000..7f162f6
--- /dev/null
+++ b/node_modules/core-js/internals/an-uint8-array.js
@@ -0,0 +1,11 @@
+'use strict';
+var classof = require('../internals/classof');
+
+var $TypeError = TypeError;
+
+// Perform ? RequireInternalSlot(argument, [[TypedArrayName]])
+// If argument.[[TypedArrayName]] is not "Uint8Array", throw a TypeError exception
+module.exports = function (argument) {
+  if (classof(argument) === 'Uint8Array') return argument;
+  throw new $TypeError('Argument is not an Uint8Array');
+};
diff --git a/node_modules/core-js/internals/array-buffer-basic-detection.js b/node_modules/core-js/internals/array-buffer-basic-detection.js
new file mode 100644
index 0000000..8ae7d9b
--- /dev/null
+++ b/node_modules/core-js/internals/array-buffer-basic-detection.js
@@ -0,0 +1,3 @@
+'use strict';
+// eslint-disable-next-line es/no-typed-arrays -- safe
+module.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';
diff --git a/node_modules/core-js/internals/array-buffer-byte-length.js b/node_modules/core-js/internals/array-buffer-byte-length.js
new file mode 100644
index 0000000..56ffa87
--- /dev/null
+++ b/node_modules/core-js/internals/array-buffer-byte-length.js
@@ -0,0 +1,15 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+var uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');
+var classof = require('../internals/classof-raw');
+
+var ArrayBuffer = globalThis.ArrayBuffer;
+var TypeError = globalThis.TypeError;
+
+// Includes
+// - Perform ? RequireInternalSlot(O, [[ArrayBufferData]]).
+// - If IsSharedArrayBuffer(O) is true, throw a TypeError exception.
+module.exports = ArrayBuffer && uncurryThisAccessor(ArrayBuffer.prototype, 'byteLength', 'get') || function (O) {
+  if (classof(O) !== 'ArrayBuffer') throw new TypeError('ArrayBuffer expected');
+  return O.byteLength;
+};
diff --git a/node_modules/core-js/internals/array-buffer-is-detached.js b/node_modules/core-js/internals/array-buffer-is-detached.js
new file mode 100644
index 0000000..b6bbe68
--- /dev/null
+++ b/node_modules/core-js/internals/array-buffer-is-detached.js
@@ -0,0 +1,17 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+var NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');
+var arrayBufferByteLength = require('../internals/array-buffer-byte-length');
+
+var DataView = globalThis.DataView;
+
+module.exports = function (O) {
+  if (!NATIVE_ARRAY_BUFFER || arrayBufferByteLength(O) !== 0) return false;
+  try {
+    // eslint-disable-next-line no-new -- thrower
+    new DataView(O);
+    return false;
+  } catch (error) {
+    return true;
+  }
+};
diff --git a/node_modules/core-js/internals/array-buffer-non-extensible.js b/node_modules/core-js/internals/array-buffer-non-extensible.js
new file mode 100644
index 0000000..968b2d0
--- /dev/null
+++ b/node_modules/core-js/internals/array-buffer-non-extensible.js
@@ -0,0 +1,11 @@
+'use strict';
+// FF26- bug: ArrayBuffers are non-extensible, but Object.isExtensible does not report it
+var fails = require('../internals/fails');
+
+module.exports = fails(function () {
+  if (typeof ArrayBuffer == 'function') {
+    var buffer = new ArrayBuffer(8);
+    // eslint-disable-next-line es/no-object-isextensible, es/no-object-defineproperty -- safe
+    if (Object.isExtensible(buffer)) Object.defineProperty(buffer, 'a', { value: 8 });
+  }
+});
diff --git a/node_modules/core-js/internals/array-buffer-not-detached.js b/node_modules/core-js/internals/array-buffer-not-detached.js
new file mode 100644
index 0000000..be5aff3
--- /dev/null
+++ b/node_modules/core-js/internals/array-buffer-not-detached.js
@@ -0,0 +1,9 @@
+'use strict';
+var isDetached = require('../internals/array-buffer-is-detached');
+
+var $TypeError = TypeError;
+
+module.exports = function (it) {
+  if (isDetached(it)) throw new $TypeError('ArrayBuffer is detached');
+  return it;
+};
diff --git a/node_modules/core-js/internals/array-buffer-transfer.js b/node_modules/core-js/internals/array-buffer-transfer.js
new file mode 100644
index 0000000..26ae9d0
--- /dev/null
+++ b/node_modules/core-js/internals/array-buffer-transfer.js
@@ -0,0 +1,45 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+var uncurryThis = require('../internals/function-uncurry-this');
+var uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');
+var toIndex = require('../internals/to-index');
+var notDetached = require('../internals/array-buffer-not-detached');
+var arrayBufferByteLength = require('../internals/array-buffer-byte-length');
+var detachTransferable = require('../internals/detach-transferable');
+var PROPER_STRUCTURED_CLONE_TRANSFER = require('../internals/structured-clone-proper-transfer');
+
+var structuredClone = globalThis.structuredClone;
+var ArrayBuffer = globalThis.ArrayBuffer;
+var DataView = globalThis.DataView;
+var min = Math.min;
+var ArrayBufferPrototype = ArrayBuffer.prototype;
+var DataViewPrototype = DataView.prototype;
+var slice = uncurryThis(ArrayBufferPrototype.slice);
+var isResizable = uncurryThisAccessor(ArrayBufferPrototype, 'resizable', 'get');
+var maxByteLength = uncurryThisAccessor(ArrayBufferPrototype, 'maxByteLength', 'get');
+var getInt8 = uncurryThis(DataViewPrototype.getInt8);
+var setInt8 = uncurryThis(DataViewPrototype.setInt8);
+
+module.exports = (PROPER_STRUCTURED_CLONE_TRANSFER || detachTransferable) && function (arrayBuffer, newLength, preserveResizability) {
+  var byteLength = arrayBufferByteLength(arrayBuffer);
+  var newByteLength = newLength === undefined ? byteLength : toIndex(newLength);
+  var fixedLength = !isResizable || !isResizable(arrayBuffer);
+  var newBuffer;
+  notDetached(arrayBuffer);
+  if (PROPER_STRUCTURED_CLONE_TRANSFER) {
+    arrayBuffer = structuredClone(arrayBuffer, { transfer: [arrayBuffer] });
+    if (byteLength === newByteLength && (preserveResizability || fixedLength)) return arrayBuffer;
+  }
+  if (byteLength >= newByteLength && (!preserveResizability || fixedLength)) {
+    newBuffer = slice(arrayBuffer, 0, newByteLength);
+  } else {
+    var options = preserveResizability && !fixedLength && maxByteLength ? { maxByteLength: maxByteLength(arrayBuffer) } : undefined;
+    newBuffer = new ArrayBuffer(newByteLength, options);
+    var a = new DataView(arrayBuffer);
+    var b = new DataView(newBuffer);
+    var copyLength = min(newByteLength, byteLength);
+    for (var i = 0; i < copyLength; i++) setInt8(b, i, getInt8(a, i));
+  }
+  if (!PROPER_STRUCTURED_CLONE_TRANSFER) detachTransferable(arrayBuffer);
+  return newBuffer;
+};
diff --git a/node_modules/core-js/internals/array-buffer-view-core.js b/node_modules/core-js/internals/array-buffer-view-core.js
new file mode 100644
index 0000000..14d2d1c
--- /dev/null
+++ b/node_modules/core-js/internals/array-buffer-view-core.js
@@ -0,0 +1,193 @@
+'use strict';
+var NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');
+var DESCRIPTORS = require('../internals/descriptors');
+var globalThis = require('../internals/global-this');
+var isCallable = require('../internals/is-callable');
+var isObject = require('../internals/is-object');
+var hasOwn = require('../internals/has-own-property');
+var classof = require('../internals/classof');
+var tryToString = require('../internals/try-to-string');
+var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
+var defineBuiltIn = require('../internals/define-built-in');
+var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
+var isPrototypeOf = require('../internals/object-is-prototype-of');
+var getPrototypeOf = require('../internals/object-get-prototype-of');
+var setPrototypeOf = require('../internals/object-set-prototype-of');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var uid = require('../internals/uid');
+var InternalStateModule = require('../internals/internal-state');
+
+var enforceInternalState = InternalStateModule.enforce;
+var getInternalState = InternalStateModule.get;
+var Int8Array = globalThis.Int8Array;
+var Int8ArrayPrototype = Int8Array && Int8Array.prototype;
+var Uint8ClampedArray = globalThis.Uint8ClampedArray;
+var Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;
+var TypedArray = Int8Array && getPrototypeOf(Int8Array);
+var TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);
+var ObjectPrototype = Object.prototype;
+var TypeError = globalThis.TypeError;
+
+var TO_STRING_TAG = wellKnownSymbol('toStringTag');
+var TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');
+var TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor';
+// Fixing native typed arrays in Opera Presto crashes the browser, see #595
+var NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(globalThis.opera) !== 'Opera';
+var TYPED_ARRAY_TAG_REQUIRED = false;
+var NAME, Constructor, Prototype;
+
+var TypedArrayConstructorsList = {
+  Int8Array: 1,
+  Uint8Array: 1,
+  Uint8ClampedArray: 1,
+  Int16Array: 2,
+  Uint16Array: 2,
+  Int32Array: 4,
+  Uint32Array: 4,
+  Float32Array: 4,
+  Float64Array: 8
+};
+
+var BigIntArrayConstructorsList = {
+  BigInt64Array: 8,
+  BigUint64Array: 8
+};
+
+var isView = function isView(it) {
+  if (!isObject(it)) return false;
+  var klass = classof(it);
+  return klass === 'DataView'
+    || hasOwn(TypedArrayConstructorsList, klass)
+    || hasOwn(BigIntArrayConstructorsList, klass);
+};
+
+var getTypedArrayConstructor = function (it) {
+  var proto = getPrototypeOf(it);
+  if (!isObject(proto)) return;
+  var state = getInternalState(proto);
+  return (state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto);
+};
+
+var isTypedArray = function (it) {
+  if (!isObject(it)) return false;
+  var klass = classof(it);
+  return hasOwn(TypedArrayConstructorsList, klass)
+    || hasOwn(BigIntArrayConstructorsList, klass);
+};
+
+var aTypedArray = function (it) {
+  if (isTypedArray(it)) return it;
+  throw new TypeError('Target is not a typed array');
+};
+
+var aTypedArrayConstructor = function (C) {
+  if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;
+  throw new TypeError(tryToString(C) + ' is not a typed array constructor');
+};
+
+var exportTypedArrayMethod = function (KEY, property, forced, options) {
+  if (!DESCRIPTORS) return;
+  if (forced) for (var ARRAY in TypedArrayConstructorsList) {
+    var TypedArrayConstructor = globalThis[ARRAY];
+    if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {
+      delete TypedArrayConstructor.prototype[KEY];
+    } catch (error) {
+      // old WebKit bug - some methods are non-configurable
+      try {
+        TypedArrayConstructor.prototype[KEY] = property;
+      } catch (error2) { /* empty */ }
+    }
+  }
+  if (!TypedArrayPrototype[KEY] || forced) {
+    defineBuiltIn(TypedArrayPrototype, KEY, forced ? property
+      : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);
+  }
+};
+
+var exportTypedArrayStaticMethod = function (KEY, property, forced) {
+  var ARRAY, TypedArrayConstructor;
+  if (!DESCRIPTORS) return;
+  if (setPrototypeOf) {
+    if (forced) for (ARRAY in TypedArrayConstructorsList) {
+      TypedArrayConstructor = globalThis[ARRAY];
+      if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {
+        delete TypedArrayConstructor[KEY];
+      } catch (error) { /* empty */ }
+    }
+    if (!TypedArray[KEY] || forced) {
+      // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable
+      try {
+        return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);
+      } catch (error) { /* empty */ }
+    } else return;
+  }
+  for (ARRAY in TypedArrayConstructorsList) {
+    TypedArrayConstructor = globalThis[ARRAY];
+    if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {
+      defineBuiltIn(TypedArrayConstructor, KEY, property);
+    }
+  }
+};
+
+for (NAME in TypedArrayConstructorsList) {
+  Constructor = globalThis[NAME];
+  Prototype = Constructor && Constructor.prototype;
+  if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;
+  else NATIVE_ARRAY_BUFFER_VIEWS = false;
+}
+
+for (NAME in BigIntArrayConstructorsList) {
+  Constructor = globalThis[NAME];
+  Prototype = Constructor && Constructor.prototype;
+  if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;
+}
+
+// WebKit bug - typed arrays constructors prototype is Object.prototype
+if (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {
+  // eslint-disable-next-line no-shadow -- safe
+  TypedArray = function TypedArray() {
+    throw new TypeError('Incorrect invocation');
+  };
+  if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {
+    if (globalThis[NAME]) setPrototypeOf(globalThis[NAME], TypedArray);
+  }
+}
+
+if (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {
+  TypedArrayPrototype = TypedArray.prototype;
+  if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {
+    if (globalThis[NAME]) setPrototypeOf(globalThis[NAME].prototype, TypedArrayPrototype);
+  }
+}
+
+// WebKit bug - one more object in Uint8ClampedArray prototype chain
+if (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {
+  setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);
+}
+
+if (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {
+  TYPED_ARRAY_TAG_REQUIRED = true;
+  defineBuiltInAccessor(TypedArrayPrototype, TO_STRING_TAG, {
+    configurable: true,
+    get: function () {
+      return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;
+    }
+  });
+  for (NAME in TypedArrayConstructorsList) if (globalThis[NAME]) {
+    createNonEnumerableProperty(globalThis[NAME], TYPED_ARRAY_TAG, NAME);
+  }
+}
+
+module.exports = {
+  NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,
+  TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,
+  aTypedArray: aTypedArray,
+  aTypedArrayConstructor: aTypedArrayConstructor,
+  exportTypedArrayMethod: exportTypedArrayMethod,
+  exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,
+  getTypedArrayConstructor: getTypedArrayConstructor,
+  isView: isView,
+  isTypedArray: isTypedArray,
+  TypedArray: TypedArray,
+  TypedArrayPrototype: TypedArrayPrototype
+};
diff --git a/node_modules/core-js/internals/array-buffer.js b/node_modules/core-js/internals/array-buffer.js
new file mode 100644
index 0000000..6cd44ac
--- /dev/null
+++ b/node_modules/core-js/internals/array-buffer.js
@@ -0,0 +1,260 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+var uncurryThis = require('../internals/function-uncurry-this');
+var DESCRIPTORS = require('../internals/descriptors');
+var NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');
+var FunctionName = require('../internals/function-name');
+var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
+var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
+var defineBuiltIns = require('../internals/define-built-ins');
+var fails = require('../internals/fails');
+var anInstance = require('../internals/an-instance');
+var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
+var toLength = require('../internals/to-length');
+var toIndex = require('../internals/to-index');
+var fround = require('../internals/math-fround');
+var IEEE754 = require('../internals/ieee754');
+var getPrototypeOf = require('../internals/object-get-prototype-of');
+var setPrototypeOf = require('../internals/object-set-prototype-of');
+var arrayFill = require('../internals/array-fill');
+var arraySlice = require('../internals/array-slice');
+var inheritIfRequired = require('../internals/inherit-if-required');
+var copyConstructorProperties = require('../internals/copy-constructor-properties');
+var setToStringTag = require('../internals/set-to-string-tag');
+var InternalStateModule = require('../internals/internal-state');
+
+var PROPER_FUNCTION_NAME = FunctionName.PROPER;
+var CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;
+var ARRAY_BUFFER = 'ArrayBuffer';
+var DATA_VIEW = 'DataView';
+var PROTOTYPE = 'prototype';
+var WRONG_LENGTH = 'Wrong length';
+var WRONG_INDEX = 'Wrong index';
+var getInternalArrayBufferState = InternalStateModule.getterFor(ARRAY_BUFFER);
+var getInternalDataViewState = InternalStateModule.getterFor(DATA_VIEW);
+var setInternalState = InternalStateModule.set;
+var NativeArrayBuffer = globalThis[ARRAY_BUFFER];
+var $ArrayBuffer = NativeArrayBuffer;
+var ArrayBufferPrototype = $ArrayBuffer && $ArrayBuffer[PROTOTYPE];
+var $DataView = globalThis[DATA_VIEW];
+var DataViewPrototype = $DataView && $DataView[PROTOTYPE];
+var ObjectPrototype = Object.prototype;
+var Array = globalThis.Array;
+var RangeError = globalThis.RangeError;
+var fill = uncurryThis(arrayFill);
+var reverse = uncurryThis([].reverse);
+
+var packIEEE754 = IEEE754.pack;
+var unpackIEEE754 = IEEE754.unpack;
+
+var packInt8 = function (number) {
+  return [number & 0xFF];
+};
+
+var packInt16 = function (number) {
+  return [number & 0xFF, number >> 8 & 0xFF];
+};
+
+var packInt32 = function (number) {
+  return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];
+};
+
+var unpackInt32 = function (buffer) {
+  return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];
+};
+
+var packFloat32 = function (number) {
+  return packIEEE754(fround(number), 23, 4);
+};
+
+var packFloat64 = function (number) {
+  return packIEEE754(number, 52, 8);
+};
+
+var addGetter = function (Constructor, key, getInternalState) {
+  defineBuiltInAccessor(Constructor[PROTOTYPE], key, {
+    configurable: true,
+    get: function () {
+      return getInternalState(this)[key];
+    }
+  });
+};
+
+var get = function (view, count, index, isLittleEndian) {
+  var store = getInternalDataViewState(view);
+  var intIndex = toIndex(index);
+  var boolIsLittleEndian = !!isLittleEndian;
+  if (intIndex + count > store.byteLength) throw new RangeError(WRONG_INDEX);
+  var bytes = store.bytes;
+  var start = intIndex + store.byteOffset;
+  var pack = arraySlice(bytes, start, start + count);
+  return boolIsLittleEndian ? pack : reverse(pack);
+};
+
+var set = function (view, count, index, conversion, value, isLittleEndian) {
+  var store = getInternalDataViewState(view);
+  var intIndex = toIndex(index);
+  var pack = conversion(+value);
+  var boolIsLittleEndian = !!isLittleEndian;
+  if (intIndex + count > store.byteLength) throw new RangeError(WRONG_INDEX);
+  var bytes = store.bytes;
+  var start = intIndex + store.byteOffset;
+  for (var i = 0; i < count; i++) bytes[start + i] = pack[boolIsLittleEndian ? i : count - i - 1];
+};
+
+if (!NATIVE_ARRAY_BUFFER) {
+  $ArrayBuffer = function ArrayBuffer(length) {
+    anInstance(this, ArrayBufferPrototype);
+    var byteLength = toIndex(length);
+    setInternalState(this, {
+      type: ARRAY_BUFFER,
+      bytes: fill(Array(byteLength), 0),
+      byteLength: byteLength
+    });
+    if (!DESCRIPTORS) {
+      this.byteLength = byteLength;
+      this.detached = false;
+    }
+  };
+
+  ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE];
+
+  $DataView = function DataView(buffer, byteOffset, byteLength) {
+    anInstance(this, DataViewPrototype);
+    anInstance(buffer, ArrayBufferPrototype);
+    var bufferState = getInternalArrayBufferState(buffer);
+    var bufferLength = bufferState.byteLength;
+    var offset = toIntegerOrInfinity(byteOffset);
+    if (offset < 0 || offset > bufferLength) throw new RangeError('Wrong offset');
+    byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);
+    if (offset + byteLength > bufferLength) throw new RangeError(WRONG_LENGTH);
+    setInternalState(this, {
+      type: DATA_VIEW,
+      buffer: buffer,
+      byteLength: byteLength,
+      byteOffset: offset,
+      bytes: bufferState.bytes
+    });
+    if (!DESCRIPTORS) {
+      this.buffer = buffer;
+      this.byteLength = byteLength;
+      this.byteOffset = offset;
+    }
+  };
+
+  DataViewPrototype = $DataView[PROTOTYPE];
+
+  if (DESCRIPTORS) {
+    addGetter($ArrayBuffer, 'byteLength', getInternalArrayBufferState);
+    addGetter($DataView, 'buffer', getInternalDataViewState);
+    addGetter($DataView, 'byteLength', getInternalDataViewState);
+    addGetter($DataView, 'byteOffset', getInternalDataViewState);
+  }
+
+  defineBuiltIns(DataViewPrototype, {
+    getInt8: function getInt8(byteOffset) {
+      return get(this, 1, byteOffset)[0] << 24 >> 24;
+    },
+    getUint8: function getUint8(byteOffset) {
+      return get(this, 1, byteOffset)[0];
+    },
+    getInt16: function getInt16(byteOffset /* , littleEndian */) {
+      var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : false);
+      return (bytes[1] << 8 | bytes[0]) << 16 >> 16;
+    },
+    getUint16: function getUint16(byteOffset /* , littleEndian */) {
+      var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : false);
+      return bytes[1] << 8 | bytes[0];
+    },
+    getInt32: function getInt32(byteOffset /* , littleEndian */) {
+      return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false));
+    },
+    getUint32: function getUint32(byteOffset /* , littleEndian */) {
+      return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false)) >>> 0;
+    },
+    getFloat32: function getFloat32(byteOffset /* , littleEndian */) {
+      return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false), 23);
+    },
+    getFloat64: function getFloat64(byteOffset /* , littleEndian */) {
+      return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : false), 52);
+    },
+    setInt8: function setInt8(byteOffset, value) {
+      set(this, 1, byteOffset, packInt8, value);
+    },
+    setUint8: function setUint8(byteOffset, value) {
+      set(this, 1, byteOffset, packInt8, value);
+    },
+    setInt16: function setInt16(byteOffset, value /* , littleEndian */) {
+      set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : false);
+    },
+    setUint16: function setUint16(byteOffset, value /* , littleEndian */) {
+      set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : false);
+    },
+    setInt32: function setInt32(byteOffset, value /* , littleEndian */) {
+      set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : false);
+    },
+    setUint32: function setUint32(byteOffset, value /* , littleEndian */) {
+      set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : false);
+    },
+    setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {
+      set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : false);
+    },
+    setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {
+      set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : false);
+    }
+  });
+} else {
+  var INCORRECT_ARRAY_BUFFER_NAME = PROPER_FUNCTION_NAME && NativeArrayBuffer.name !== ARRAY_BUFFER;
+  /* eslint-disable no-new, sonarjs/inconsistent-function-call -- required for testing */
+  if (!fails(function () {
+    NativeArrayBuffer(1);
+  }) || !fails(function () {
+    new NativeArrayBuffer(-1);
+  }) || fails(function () {
+    new NativeArrayBuffer();
+    new NativeArrayBuffer(1.5);
+    new NativeArrayBuffer(NaN);
+    return NativeArrayBuffer.length !== 1 || INCORRECT_ARRAY_BUFFER_NAME && !CONFIGURABLE_FUNCTION_NAME;
+  })) {
+    /* eslint-enable no-new, sonarjs/inconsistent-function-call -- required for testing */
+    $ArrayBuffer = function ArrayBuffer(length) {
+      anInstance(this, ArrayBufferPrototype);
+      return inheritIfRequired(new NativeArrayBuffer(toIndex(length)), this, $ArrayBuffer);
+    };
+
+    $ArrayBuffer[PROTOTYPE] = ArrayBufferPrototype;
+
+    ArrayBufferPrototype.constructor = $ArrayBuffer;
+
+    copyConstructorProperties($ArrayBuffer, NativeArrayBuffer);
+  } else if (INCORRECT_ARRAY_BUFFER_NAME && CONFIGURABLE_FUNCTION_NAME) {
+    createNonEnumerableProperty(NativeArrayBuffer, 'name', ARRAY_BUFFER);
+  }
+
+  // WebKit bug - the same parent prototype for typed arrays and data view
+  if (setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) {
+    setPrototypeOf(DataViewPrototype, ObjectPrototype);
+  }
+
+  // iOS Safari 7.x bug
+  var testView = new $DataView(new $ArrayBuffer(2));
+  var $setInt8 = uncurryThis(DataViewPrototype.setInt8);
+  testView.setInt8(0, 2147483648);
+  testView.setInt8(1, 2147483649);
+  if (testView.getInt8(0) || !testView.getInt8(1)) defineBuiltIns(DataViewPrototype, {
+    setInt8: function setInt8(byteOffset, value) {
+      $setInt8(this, byteOffset, value << 24 >> 24);
+    },
+    setUint8: function setUint8(byteOffset, value) {
+      $setInt8(this, byteOffset, value << 24 >> 24);
+    }
+  }, { unsafe: true });
+}
+
+setToStringTag($ArrayBuffer, ARRAY_BUFFER);
+setToStringTag($DataView, DATA_VIEW);
+
+module.exports = {
+  ArrayBuffer: $ArrayBuffer,
+  DataView: $DataView
+};
diff --git a/node_modules/core-js/internals/array-copy-within.js b/node_modules/core-js/internals/array-copy-within.js
new file mode 100644
index 0000000..e199714
--- /dev/null
+++ b/node_modules/core-js/internals/array-copy-within.js
@@ -0,0 +1,31 @@
+'use strict';
+var toObject = require('../internals/to-object');
+var toAbsoluteIndex = require('../internals/to-absolute-index');
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+var deletePropertyOrThrow = require('../internals/delete-property-or-throw');
+
+var min = Math.min;
+
+// `Array.prototype.copyWithin` method implementation
+// https://tc39.es/ecma262/#sec-array.prototype.copywithin
+// eslint-disable-next-line es/no-array-prototype-copywithin -- safe
+module.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {
+  var O = toObject(this);
+  var len = lengthOfArrayLike(O);
+  var to = toAbsoluteIndex(target, len);
+  var from = toAbsoluteIndex(start, len);
+  var end = arguments.length > 2 ? arguments[2] : undefined;
+  var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);
+  var inc = 1;
+  if (from < to && to < from + count) {
+    inc = -1;
+    from += count - 1;
+    to += count - 1;
+  }
+  while (count-- > 0) {
+    if (from in O) O[to] = O[from];
+    else deletePropertyOrThrow(O, to);
+    to += inc;
+    from += inc;
+  } return O;
+};
diff --git a/node_modules/core-js/internals/array-fill.js b/node_modules/core-js/internals/array-fill.js
new file mode 100644
index 0000000..c6b16cd
--- /dev/null
+++ b/node_modules/core-js/internals/array-fill.js
@@ -0,0 +1,17 @@
+'use strict';
+var toObject = require('../internals/to-object');
+var toAbsoluteIndex = require('../internals/to-absolute-index');
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+
+// `Array.prototype.fill` method implementation
+// https://tc39.es/ecma262/#sec-array.prototype.fill
+module.exports = function fill(value /* , start = 0, end = @length */) {
+  var O = toObject(this);
+  var length = lengthOfArrayLike(O);
+  var argumentsLength = arguments.length;
+  var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);
+  var end = argumentsLength > 2 ? arguments[2] : undefined;
+  var endPos = end === undefined ? length : toAbsoluteIndex(end, length);
+  while (endPos > index) O[index++] = value;
+  return O;
+};
diff --git a/node_modules/core-js/internals/array-for-each.js b/node_modules/core-js/internals/array-for-each.js
new file mode 100644
index 0000000..22477f4
--- /dev/null
+++ b/node_modules/core-js/internals/array-for-each.js
@@ -0,0 +1,12 @@
+'use strict';
+var $forEach = require('../internals/array-iteration').forEach;
+var arrayMethodIsStrict = require('../internals/array-method-is-strict');
+
+var STRICT_METHOD = arrayMethodIsStrict('forEach');
+
+// `Array.prototype.forEach` method implementation
+// https://tc39.es/ecma262/#sec-array.prototype.foreach
+module.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {
+  return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+// eslint-disable-next-line es/no-array-prototype-foreach -- safe
+} : [].forEach;
diff --git a/node_modules/core-js/internals/array-from-async.js b/node_modules/core-js/internals/array-from-async.js
new file mode 100644
index 0000000..6cca999
--- /dev/null
+++ b/node_modules/core-js/internals/array-from-async.js
@@ -0,0 +1,51 @@
+'use strict';
+var bind = require('../internals/function-bind-context');
+var uncurryThis = require('../internals/function-uncurry-this');
+var toObject = require('../internals/to-object');
+var isConstructor = require('../internals/is-constructor');
+var getAsyncIterator = require('../internals/get-async-iterator');
+var getIterator = require('../internals/get-iterator');
+var getIteratorDirect = require('../internals/get-iterator-direct');
+var getIteratorMethod = require('../internals/get-iterator-method');
+var getMethod = require('../internals/get-method');
+var getBuiltIn = require('../internals/get-built-in');
+var getBuiltInPrototypeMethod = require('../internals/get-built-in-prototype-method');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var AsyncFromSyncIterator = require('../internals/async-from-sync-iterator');
+var toArray = require('../internals/async-iterator-iteration').toArray;
+
+var ASYNC_ITERATOR = wellKnownSymbol('asyncIterator');
+var arrayIterator = uncurryThis(getBuiltInPrototypeMethod('Array', 'values'));
+var arrayIteratorNext = uncurryThis(arrayIterator([]).next);
+
+var safeArrayIterator = function () {
+  return new SafeArrayIterator(this);
+};
+
+var SafeArrayIterator = function (O) {
+  this.iterator = arrayIterator(O);
+};
+
+SafeArrayIterator.prototype.next = function () {
+  return arrayIteratorNext(this.iterator);
+};
+
+// `Array.fromAsync` method implementation
+// https://github.com/tc39/proposal-array-from-async
+module.exports = function fromAsync(asyncItems /* , mapfn = undefined, thisArg = undefined */) {
+  var C = this;
+  var argumentsLength = arguments.length;
+  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;
+  var thisArg = argumentsLength > 2 ? arguments[2] : undefined;
+  return new (getBuiltIn('Promise'))(function (resolve) {
+    var O = toObject(asyncItems);
+    if (mapfn !== undefined) mapfn = bind(mapfn, thisArg);
+    var usingAsyncIterator = getMethod(O, ASYNC_ITERATOR);
+    var usingSyncIterator = usingAsyncIterator ? undefined : getIteratorMethod(O) || safeArrayIterator;
+    var A = isConstructor(C) ? new C() : [];
+    var iterator = usingAsyncIterator
+      ? getAsyncIterator(O, usingAsyncIterator)
+      : new AsyncFromSyncIterator(getIteratorDirect(getIterator(O, usingSyncIterator)));
+    resolve(toArray(iterator, mapfn, A));
+  });
+};
diff --git a/node_modules/core-js/internals/array-from-constructor-and-list.js b/node_modules/core-js/internals/array-from-constructor-and-list.js
new file mode 100644
index 0000000..d6c8ae2
--- /dev/null
+++ b/node_modules/core-js/internals/array-from-constructor-and-list.js
@@ -0,0 +1,10 @@
+'use strict';
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+
+module.exports = function (Constructor, list, $length) {
+  var index = 0;
+  var length = arguments.length > 2 ? $length : lengthOfArrayLike(list);
+  var result = new Constructor(length);
+  while (length > index) result[index] = list[index++];
+  return result;
+};
diff --git a/node_modules/core-js/internals/array-from.js b/node_modules/core-js/internals/array-from.js
new file mode 100644
index 0000000..e187939
--- /dev/null
+++ b/node_modules/core-js/internals/array-from.js
@@ -0,0 +1,46 @@
+'use strict';
+var bind = require('../internals/function-bind-context');
+var call = require('../internals/function-call');
+var toObject = require('../internals/to-object');
+var callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');
+var isArrayIteratorMethod = require('../internals/is-array-iterator-method');
+var isConstructor = require('../internals/is-constructor');
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+var createProperty = require('../internals/create-property');
+var getIterator = require('../internals/get-iterator');
+var getIteratorMethod = require('../internals/get-iterator-method');
+
+var $Array = Array;
+
+// `Array.from` method implementation
+// https://tc39.es/ecma262/#sec-array.from
+module.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {
+  var O = toObject(arrayLike);
+  var IS_CONSTRUCTOR = isConstructor(this);
+  var argumentsLength = arguments.length;
+  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;
+  var mapping = mapfn !== undefined;
+  if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);
+  var iteratorMethod = getIteratorMethod(O);
+  var index = 0;
+  var length, result, step, iterator, next, value;
+  // if the target is not iterable or it's an array with the default iterator - use a simple case
+  if (iteratorMethod && !(this === $Array && isArrayIteratorMethod(iteratorMethod))) {
+    result = IS_CONSTRUCTOR ? new this() : [];
+    iterator = getIterator(O, iteratorMethod);
+    next = iterator.next;
+    for (;!(step = call(next, iterator)).done; index++) {
+      value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;
+      createProperty(result, index, value);
+    }
+  } else {
+    length = lengthOfArrayLike(O);
+    result = IS_CONSTRUCTOR ? new this(length) : $Array(length);
+    for (;length > index; index++) {
+      value = mapping ? mapfn(O[index], index) : O[index];
+      createProperty(result, index, value);
+    }
+  }
+  result.length = index;
+  return result;
+};
diff --git a/node_modules/core-js/internals/array-group-to-map.js b/node_modules/core-js/internals/array-group-to-map.js
new file mode 100644
index 0000000..608d45a
--- /dev/null
+++ b/node_modules/core-js/internals/array-group-to-map.js
@@ -0,0 +1,31 @@
+'use strict';
+var bind = require('../internals/function-bind-context');
+var uncurryThis = require('../internals/function-uncurry-this');
+var IndexedObject = require('../internals/indexed-object');
+var toObject = require('../internals/to-object');
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+var MapHelpers = require('../internals/map-helpers');
+
+var Map = MapHelpers.Map;
+var mapGet = MapHelpers.get;
+var mapHas = MapHelpers.has;
+var mapSet = MapHelpers.set;
+var push = uncurryThis([].push);
+
+// `Array.prototype.groupToMap` method
+// https://github.com/tc39/proposal-array-grouping
+module.exports = function groupToMap(callbackfn /* , thisArg */) {
+  var O = toObject(this);
+  var self = IndexedObject(O);
+  var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+  var map = new Map();
+  var length = lengthOfArrayLike(self);
+  var index = 0;
+  var key, value;
+  for (;length > index; index++) {
+    value = self[index];
+    key = boundFunction(value, index, O);
+    if (mapHas(map, key)) push(mapGet(map, key), value);
+    else mapSet(map, key, [value]);
+  } return map;
+};
diff --git a/node_modules/core-js/internals/array-group.js b/node_modules/core-js/internals/array-group.js
new file mode 100644
index 0000000..dbec5a4
--- /dev/null
+++ b/node_modules/core-js/internals/array-group.js
@@ -0,0 +1,37 @@
+'use strict';
+var bind = require('../internals/function-bind-context');
+var uncurryThis = require('../internals/function-uncurry-this');
+var IndexedObject = require('../internals/indexed-object');
+var toObject = require('../internals/to-object');
+var toPropertyKey = require('../internals/to-property-key');
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+var objectCreate = require('../internals/object-create');
+var arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');
+
+var $Array = Array;
+var push = uncurryThis([].push);
+
+module.exports = function ($this, callbackfn, that, specificConstructor) {
+  var O = toObject($this);
+  var self = IndexedObject(O);
+  var boundFunction = bind(callbackfn, that);
+  var target = objectCreate(null);
+  var length = lengthOfArrayLike(self);
+  var index = 0;
+  var Constructor, key, value;
+  for (;length > index; index++) {
+    value = self[index];
+    key = toPropertyKey(boundFunction(value, index, O));
+    // in some IE versions, `hasOwnProperty` returns incorrect result on integer keys
+    // but since it's a `null` prototype object, we can safely use `in`
+    if (key in target) push(target[key], value);
+    else target[key] = [value];
+  }
+  // TODO: Remove this block from `core-js@4`
+  if (specificConstructor) {
+    Constructor = specificConstructor(O);
+    if (Constructor !== $Array) {
+      for (key in target) target[key] = arrayFromConstructorAndList(Constructor, target[key]);
+    }
+  } return target;
+};
diff --git a/node_modules/core-js/internals/array-includes.js b/node_modules/core-js/internals/array-includes.js
new file mode 100644
index 0000000..556d54a
--- /dev/null
+++ b/node_modules/core-js/internals/array-includes.js
@@ -0,0 +1,34 @@
+'use strict';
+var toIndexedObject = require('../internals/to-indexed-object');
+var toAbsoluteIndex = require('../internals/to-absolute-index');
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+
+// `Array.prototype.{ indexOf, includes }` methods implementation
+var createMethod = function (IS_INCLUDES) {
+  return function ($this, el, fromIndex) {
+    var O = toIndexedObject($this);
+    var length = lengthOfArrayLike(O);
+    if (length === 0) return !IS_INCLUDES && -1;
+    var index = toAbsoluteIndex(fromIndex, length);
+    var value;
+    // Array#includes uses SameValueZero equality algorithm
+    // eslint-disable-next-line no-self-compare -- NaN check
+    if (IS_INCLUDES && el !== el) while (length > index) {
+      value = O[index++];
+      // eslint-disable-next-line no-self-compare -- NaN check
+      if (value !== value) return true;
+    // Array#indexOf ignores holes, Array#includes - not
+    } else for (;length > index; index++) {
+      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;
+    } return !IS_INCLUDES && -1;
+  };
+};
+
+module.exports = {
+  // `Array.prototype.includes` method
+  // https://tc39.es/ecma262/#sec-array.prototype.includes
+  includes: createMethod(true),
+  // `Array.prototype.indexOf` method
+  // https://tc39.es/ecma262/#sec-array.prototype.indexof
+  indexOf: createMethod(false)
+};
diff --git a/node_modules/core-js/internals/array-iteration-from-last.js b/node_modules/core-js/internals/array-iteration-from-last.js
new file mode 100644
index 0000000..aa79724
--- /dev/null
+++ b/node_modules/core-js/internals/array-iteration-from-last.js
@@ -0,0 +1,35 @@
+'use strict';
+var bind = require('../internals/function-bind-context');
+var IndexedObject = require('../internals/indexed-object');
+var toObject = require('../internals/to-object');
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+
+// `Array.prototype.{ findLast, findLastIndex }` methods implementation
+var createMethod = function (TYPE) {
+  var IS_FIND_LAST_INDEX = TYPE === 1;
+  return function ($this, callbackfn, that) {
+    var O = toObject($this);
+    var self = IndexedObject(O);
+    var index = lengthOfArrayLike(self);
+    var boundFunction = bind(callbackfn, that);
+    var value, result;
+    while (index-- > 0) {
+      value = self[index];
+      result = boundFunction(value, index, O);
+      if (result) switch (TYPE) {
+        case 0: return value; // findLast
+        case 1: return index; // findLastIndex
+      }
+    }
+    return IS_FIND_LAST_INDEX ? -1 : undefined;
+  };
+};
+
+module.exports = {
+  // `Array.prototype.findLast` method
+  // https://github.com/tc39/proposal-array-find-from-last
+  findLast: createMethod(0),
+  // `Array.prototype.findLastIndex` method
+  // https://github.com/tc39/proposal-array-find-from-last
+  findLastIndex: createMethod(1)
+};
diff --git a/node_modules/core-js/internals/array-iteration.js b/node_modules/core-js/internals/array-iteration.js
new file mode 100644
index 0000000..689c885
--- /dev/null
+++ b/node_modules/core-js/internals/array-iteration.js
@@ -0,0 +1,74 @@
+'use strict';
+var bind = require('../internals/function-bind-context');
+var uncurryThis = require('../internals/function-uncurry-this');
+var IndexedObject = require('../internals/indexed-object');
+var toObject = require('../internals/to-object');
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+var arraySpeciesCreate = require('../internals/array-species-create');
+
+var push = uncurryThis([].push);
+
+// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation
+var createMethod = function (TYPE) {
+  var IS_MAP = TYPE === 1;
+  var IS_FILTER = TYPE === 2;
+  var IS_SOME = TYPE === 3;
+  var IS_EVERY = TYPE === 4;
+  var IS_FIND_INDEX = TYPE === 6;
+  var IS_FILTER_REJECT = TYPE === 7;
+  var NO_HOLES = TYPE === 5 || IS_FIND_INDEX;
+  return function ($this, callbackfn, that, specificCreate) {
+    var O = toObject($this);
+    var self = IndexedObject(O);
+    var length = lengthOfArrayLike(self);
+    var boundFunction = bind(callbackfn, that);
+    var index = 0;
+    var create = specificCreate || arraySpeciesCreate;
+    var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;
+    var value, result;
+    for (;length > index; index++) if (NO_HOLES || index in self) {
+      value = self[index];
+      result = boundFunction(value, index, O);
+      if (TYPE) {
+        if (IS_MAP) target[index] = result; // map
+        else if (result) switch (TYPE) {
+          case 3: return true;              // some
+          case 5: return value;             // find
+          case 6: return index;             // findIndex
+          case 2: push(target, value);      // filter
+        } else switch (TYPE) {
+          case 4: return false;             // every
+          case 7: push(target, value);      // filterReject
+        }
+      }
+    }
+    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;
+  };
+};
+
+module.exports = {
+  // `Array.prototype.forEach` method
+  // https://tc39.es/ecma262/#sec-array.prototype.foreach
+  forEach: createMethod(0),
+  // `Array.prototype.map` method
+  // https://tc39.es/ecma262/#sec-array.prototype.map
+  map: createMethod(1),
+  // `Array.prototype.filter` method
+  // https://tc39.es/ecma262/#sec-array.prototype.filter
+  filter: createMethod(2),
+  // `Array.prototype.some` method
+  // https://tc39.es/ecma262/#sec-array.prototype.some
+  some: createMethod(3),
+  // `Array.prototype.every` method
+  // https://tc39.es/ecma262/#sec-array.prototype.every
+  every: createMethod(4),
+  // `Array.prototype.find` method
+  // https://tc39.es/ecma262/#sec-array.prototype.find
+  find: createMethod(5),
+  // `Array.prototype.findIndex` method
+  // https://tc39.es/ecma262/#sec-array.prototype.findIndex
+  findIndex: createMethod(6),
+  // `Array.prototype.filterReject` method
+  // https://github.com/tc39/proposal-array-filtering
+  filterReject: createMethod(7)
+};
diff --git a/node_modules/core-js/internals/array-last-index-of.js b/node_modules/core-js/internals/array-last-index-of.js
new file mode 100644
index 0000000..84eaaa3
--- /dev/null
+++ b/node_modules/core-js/internals/array-last-index-of.js
@@ -0,0 +1,28 @@
+'use strict';
+/* eslint-disable es/no-array-prototype-lastindexof -- safe */
+var apply = require('../internals/function-apply');
+var toIndexedObject = require('../internals/to-indexed-object');
+var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+var arrayMethodIsStrict = require('../internals/array-method-is-strict');
+
+var min = Math.min;
+var $lastIndexOf = [].lastIndexOf;
+var NEGATIVE_ZERO = !!$lastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;
+var STRICT_METHOD = arrayMethodIsStrict('lastIndexOf');
+var FORCED = NEGATIVE_ZERO || !STRICT_METHOD;
+
+// `Array.prototype.lastIndexOf` method implementation
+// https://tc39.es/ecma262/#sec-array.prototype.lastindexof
+module.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {
+  // convert -0 to +0
+  if (NEGATIVE_ZERO) return apply($lastIndexOf, this, arguments) || 0;
+  var O = toIndexedObject(this);
+  var length = lengthOfArrayLike(O);
+  if (length === 0) return -1;
+  var index = length - 1;
+  if (arguments.length > 1) index = min(index, toIntegerOrInfinity(arguments[1]));
+  if (index < 0) index = length + index;
+  for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;
+  return -1;
+} : $lastIndexOf;
diff --git a/node_modules/core-js/internals/array-method-has-species-support.js b/node_modules/core-js/internals/array-method-has-species-support.js
new file mode 100644
index 0000000..83fafe0
--- /dev/null
+++ b/node_modules/core-js/internals/array-method-has-species-support.js
@@ -0,0 +1,20 @@
+'use strict';
+var fails = require('../internals/fails');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var V8_VERSION = require('../internals/environment-v8-version');
+
+var SPECIES = wellKnownSymbol('species');
+
+module.exports = function (METHOD_NAME) {
+  // We can't use this feature detection in V8 since it causes
+  // deoptimization and serious performance degradation
+  // https://github.com/zloirock/core-js/issues/677
+  return V8_VERSION >= 51 || !fails(function () {
+    var array = [];
+    var constructor = array.constructor = {};
+    constructor[SPECIES] = function () {
+      return { foo: 1 };
+    };
+    return array[METHOD_NAME](Boolean).foo !== 1;
+  });
+};
diff --git a/node_modules/core-js/internals/array-method-is-strict.js b/node_modules/core-js/internals/array-method-is-strict.js
new file mode 100644
index 0000000..8259c2f
--- /dev/null
+++ b/node_modules/core-js/internals/array-method-is-strict.js
@@ -0,0 +1,10 @@
+'use strict';
+var fails = require('../internals/fails');
+
+module.exports = function (METHOD_NAME, argument) {
+  var method = [][METHOD_NAME];
+  return !!method && fails(function () {
+    // eslint-disable-next-line no-useless-call -- required for testing
+    method.call(null, argument || function () { return 1; }, 1);
+  });
+};
diff --git a/node_modules/core-js/internals/array-reduce.js b/node_modules/core-js/internals/array-reduce.js
new file mode 100644
index 0000000..0c6b689
--- /dev/null
+++ b/node_modules/core-js/internals/array-reduce.js
@@ -0,0 +1,46 @@
+'use strict';
+var aCallable = require('../internals/a-callable');
+var toObject = require('../internals/to-object');
+var IndexedObject = require('../internals/indexed-object');
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+
+var $TypeError = TypeError;
+
+var REDUCE_EMPTY = 'Reduce of empty array with no initial value';
+
+// `Array.prototype.{ reduce, reduceRight }` methods implementation
+var createMethod = function (IS_RIGHT) {
+  return function (that, callbackfn, argumentsLength, memo) {
+    var O = toObject(that);
+    var self = IndexedObject(O);
+    var length = lengthOfArrayLike(O);
+    aCallable(callbackfn);
+    if (length === 0 && argumentsLength < 2) throw new $TypeError(REDUCE_EMPTY);
+    var index = IS_RIGHT ? length - 1 : 0;
+    var i = IS_RIGHT ? -1 : 1;
+    if (argumentsLength < 2) while (true) {
+      if (index in self) {
+        memo = self[index];
+        index += i;
+        break;
+      }
+      index += i;
+      if (IS_RIGHT ? index < 0 : length <= index) {
+        throw new $TypeError(REDUCE_EMPTY);
+      }
+    }
+    for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {
+      memo = callbackfn(memo, self[index], index, O);
+    }
+    return memo;
+  };
+};
+
+module.exports = {
+  // `Array.prototype.reduce` method
+  // https://tc39.es/ecma262/#sec-array.prototype.reduce
+  left: createMethod(false),
+  // `Array.prototype.reduceRight` method
+  // https://tc39.es/ecma262/#sec-array.prototype.reduceright
+  right: createMethod(true)
+};
diff --git a/node_modules/core-js/internals/array-set-length.js b/node_modules/core-js/internals/array-set-length.js
new file mode 100644
index 0000000..5324280
--- /dev/null
+++ b/node_modules/core-js/internals/array-set-length.js
@@ -0,0 +1,27 @@
+'use strict';
+var DESCRIPTORS = require('../internals/descriptors');
+var isArray = require('../internals/is-array');
+
+var $TypeError = TypeError;
+// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
+var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
+
+// Safari < 13 does not throw an error in this case
+var SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {
+  // makes no sense without proper strict mode support
+  if (this !== undefined) return true;
+  try {
+    // eslint-disable-next-line es/no-object-defineproperty -- safe
+    Object.defineProperty([], 'length', { writable: false }).length = 1;
+  } catch (error) {
+    return error instanceof TypeError;
+  }
+}();
+
+module.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {
+  if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {
+    throw new $TypeError('Cannot set read only .length');
+  } return O.length = length;
+} : function (O, length) {
+  return O.length = length;
+};
diff --git a/node_modules/core-js/internals/array-slice.js b/node_modules/core-js/internals/array-slice.js
new file mode 100644
index 0000000..b18786f
--- /dev/null
+++ b/node_modules/core-js/internals/array-slice.js
@@ -0,0 +1,4 @@
+'use strict';
+var uncurryThis = require('../internals/function-uncurry-this');
+
+module.exports = uncurryThis([].slice);
diff --git a/node_modules/core-js/internals/array-sort.js b/node_modules/core-js/internals/array-sort.js
new file mode 100644
index 0000000..c12faf1
--- /dev/null
+++ b/node_modules/core-js/internals/array-sort.js
@@ -0,0 +1,42 @@
+'use strict';
+var arraySlice = require('../internals/array-slice');
+
+var floor = Math.floor;
+
+var sort = function (array, comparefn) {
+  var length = array.length;
+
+  if (length < 8) {
+    // insertion sort
+    var i = 1;
+    var element, j;
+
+    while (i < length) {
+      j = i;
+      element = array[i];
+      while (j && comparefn(array[j - 1], element) > 0) {
+        array[j] = array[--j];
+      }
+      if (j !== i++) array[j] = element;
+    }
+  } else {
+    // merge sort
+    var middle = floor(length / 2);
+    var left = sort(arraySlice(array, 0, middle), comparefn);
+    var right = sort(arraySlice(array, middle), comparefn);
+    var llength = left.length;
+    var rlength = right.length;
+    var lindex = 0;
+    var rindex = 0;
+
+    while (lindex < llength || rindex < rlength) {
+      array[lindex + rindex] = (lindex < llength && rindex < rlength)
+        ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]
+        : lindex < llength ? left[lindex++] : right[rindex++];
+    }
+  }
+
+  return array;
+};
+
+module.exports = sort;
diff --git a/node_modules/core-js/internals/array-species-constructor.js b/node_modules/core-js/internals/array-species-constructor.js
new file mode 100644
index 0000000..db2f18c
--- /dev/null
+++ b/node_modules/core-js/internals/array-species-constructor.js
@@ -0,0 +1,23 @@
+'use strict';
+var isArray = require('../internals/is-array');
+var isConstructor = require('../internals/is-constructor');
+var isObject = require('../internals/is-object');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+var SPECIES = wellKnownSymbol('species');
+var $Array = Array;
+
+// a part of `ArraySpeciesCreate` abstract operation
+// https://tc39.es/ecma262/#sec-arrayspeciescreate
+module.exports = function (originalArray) {
+  var C;
+  if (isArray(originalArray)) {
+    C = originalArray.constructor;
+    // cross-realm fallback
+    if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;
+    else if (isObject(C)) {
+      C = C[SPECIES];
+      if (C === null) C = undefined;
+    }
+  } return C === undefined ? $Array : C;
+};
diff --git a/node_modules/core-js/internals/array-species-create.js b/node_modules/core-js/internals/array-species-create.js
new file mode 100644
index 0000000..35d0291
--- /dev/null
+++ b/node_modules/core-js/internals/array-species-create.js
@@ -0,0 +1,8 @@
+'use strict';
+var arraySpeciesConstructor = require('../internals/array-species-constructor');
+
+// `ArraySpeciesCreate` abstract operation
+// https://tc39.es/ecma262/#sec-arrayspeciescreate
+module.exports = function (originalArray, length) {
+  return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);
+};
diff --git a/node_modules/core-js/internals/array-to-reversed.js b/node_modules/core-js/internals/array-to-reversed.js
new file mode 100644
index 0000000..0a1e9c7
--- /dev/null
+++ b/node_modules/core-js/internals/array-to-reversed.js
@@ -0,0 +1,12 @@
+'use strict';
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+
+// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.toReversed
+// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.toReversed
+module.exports = function (O, C) {
+  var len = lengthOfArrayLike(O);
+  var A = new C(len);
+  var k = 0;
+  for (; k < len; k++) A[k] = O[len - k - 1];
+  return A;
+};
diff --git a/node_modules/core-js/internals/array-unique-by.js b/node_modules/core-js/internals/array-unique-by.js
new file mode 100644
index 0000000..42f2425
--- /dev/null
+++ b/node_modules/core-js/internals/array-unique-by.js
@@ -0,0 +1,35 @@
+'use strict';
+var uncurryThis = require('../internals/function-uncurry-this');
+var aCallable = require('../internals/a-callable');
+var isNullOrUndefined = require('../internals/is-null-or-undefined');
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+var toObject = require('../internals/to-object');
+var MapHelpers = require('../internals/map-helpers');
+var iterate = require('../internals/map-iterate');
+
+var Map = MapHelpers.Map;
+var mapHas = MapHelpers.has;
+var mapSet = MapHelpers.set;
+var push = uncurryThis([].push);
+
+// `Array.prototype.uniqueBy` method
+// https://github.com/tc39/proposal-array-unique
+module.exports = function uniqueBy(resolver) {
+  var that = toObject(this);
+  var length = lengthOfArrayLike(that);
+  var result = [];
+  var map = new Map();
+  var resolverFunction = !isNullOrUndefined(resolver) ? aCallable(resolver) : function (value) {
+    return value;
+  };
+  var index, item, key;
+  for (index = 0; index < length; index++) {
+    item = that[index];
+    key = resolverFunction(item);
+    if (!mapHas(map, key)) mapSet(map, key, item);
+  }
+  iterate(map, function (value) {
+    push(result, value);
+  });
+  return result;
+};
diff --git a/node_modules/core-js/internals/array-with.js b/node_modules/core-js/internals/array-with.js
new file mode 100644
index 0000000..e4a825e
--- /dev/null
+++ b/node_modules/core-js/internals/array-with.js
@@ -0,0 +1,18 @@
+'use strict';
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
+
+var $RangeError = RangeError;
+
+// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.with
+// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.with
+module.exports = function (O, C, index, value) {
+  var len = lengthOfArrayLike(O);
+  var relativeIndex = toIntegerOrInfinity(index);
+  var actualIndex = relativeIndex < 0 ? len + relativeIndex : relativeIndex;
+  if (actualIndex >= len || actualIndex < 0) throw new $RangeError('Incorrect index');
+  var A = new C(len);
+  var k = 0;
+  for (; k < len; k++) A[k] = k === actualIndex ? value : O[k];
+  return A;
+};
diff --git a/node_modules/core-js/internals/async-from-sync-iterator.js b/node_modules/core-js/internals/async-from-sync-iterator.js
new file mode 100644
index 0000000..b4ab017
--- /dev/null
+++ b/node_modules/core-js/internals/async-from-sync-iterator.js
@@ -0,0 +1,49 @@
+'use strict';
+var call = require('../internals/function-call');
+var anObject = require('../internals/an-object');
+var create = require('../internals/object-create');
+var getMethod = require('../internals/get-method');
+var defineBuiltIns = require('../internals/define-built-ins');
+var InternalStateModule = require('../internals/internal-state');
+var getBuiltIn = require('../internals/get-built-in');
+var AsyncIteratorPrototype = require('../internals/async-iterator-prototype');
+var createIterResultObject = require('../internals/create-iter-result-object');
+
+var Promise = getBuiltIn('Promise');
+
+var ASYNC_FROM_SYNC_ITERATOR = 'AsyncFromSyncIterator';
+var setInternalState = InternalStateModule.set;
+var getInternalState = InternalStateModule.getterFor(ASYNC_FROM_SYNC_ITERATOR);
+
+var asyncFromSyncIteratorContinuation = function (result, resolve, reject) {
+  var done = result.done;
+  Promise.resolve(result.value).then(function (value) {
+    resolve(createIterResultObject(value, done));
+  }, reject);
+};
+
+var AsyncFromSyncIterator = function AsyncIterator(iteratorRecord) {
+  iteratorRecord.type = ASYNC_FROM_SYNC_ITERATOR;
+  setInternalState(this, iteratorRecord);
+};
+
+AsyncFromSyncIterator.prototype = defineBuiltIns(create(AsyncIteratorPrototype), {
+  next: function next() {
+    var state = getInternalState(this);
+    return new Promise(function (resolve, reject) {
+      var result = anObject(call(state.next, state.iterator));
+      asyncFromSyncIteratorContinuation(result, resolve, reject);
+    });
+  },
+  'return': function () {
+    var iterator = getInternalState(this).iterator;
+    return new Promise(function (resolve, reject) {
+      var $return = getMethod(iterator, 'return');
+      if ($return === undefined) return resolve(createIterResultObject(undefined, true));
+      var result = anObject(call($return, iterator));
+      asyncFromSyncIteratorContinuation(result, resolve, reject);
+    });
+  }
+});
+
+module.exports = AsyncFromSyncIterator;
diff --git a/node_modules/core-js/internals/async-iterator-close.js b/node_modules/core-js/internals/async-iterator-close.js
new file mode 100644
index 0000000..30cc91a
--- /dev/null
+++ b/node_modules/core-js/internals/async-iterator-close.js
@@ -0,0 +1,19 @@
+'use strict';
+var call = require('../internals/function-call');
+var getBuiltIn = require('../internals/get-built-in');
+var getMethod = require('../internals/get-method');
+
+module.exports = function (iterator, method, argument, reject) {
+  try {
+    var returnMethod = getMethod(iterator, 'return');
+    if (returnMethod) {
+      return getBuiltIn('Promise').resolve(call(returnMethod, iterator)).then(function () {
+        method(argument);
+      }, function (error) {
+        reject(error);
+      });
+    }
+  } catch (error2) {
+    return reject(error2);
+  } method(argument);
+};
diff --git a/node_modules/core-js/internals/async-iterator-create-proxy.js b/node_modules/core-js/internals/async-iterator-create-proxy.js
new file mode 100644
index 0000000..12f7c2d
--- /dev/null
+++ b/node_modules/core-js/internals/async-iterator-create-proxy.js
@@ -0,0 +1,105 @@
+'use strict';
+var call = require('../internals/function-call');
+var perform = require('../internals/perform');
+var anObject = require('../internals/an-object');
+var create = require('../internals/object-create');
+var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
+var defineBuiltIns = require('../internals/define-built-ins');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var InternalStateModule = require('../internals/internal-state');
+var getBuiltIn = require('../internals/get-built-in');
+var getMethod = require('../internals/get-method');
+var AsyncIteratorPrototype = require('../internals/async-iterator-prototype');
+var createIterResultObject = require('../internals/create-iter-result-object');
+var iteratorClose = require('../internals/iterator-close');
+
+var Promise = getBuiltIn('Promise');
+
+var TO_STRING_TAG = wellKnownSymbol('toStringTag');
+var ASYNC_ITERATOR_HELPER = 'AsyncIteratorHelper';
+var WRAP_FOR_VALID_ASYNC_ITERATOR = 'WrapForValidAsyncIterator';
+var setInternalState = InternalStateModule.set;
+
+var createAsyncIteratorProxyPrototype = function (IS_ITERATOR) {
+  var IS_GENERATOR = !IS_ITERATOR;
+  var getInternalState = InternalStateModule.getterFor(IS_ITERATOR ? WRAP_FOR_VALID_ASYNC_ITERATOR : ASYNC_ITERATOR_HELPER);
+
+  var getStateOrEarlyExit = function (that) {
+    var stateCompletion = perform(function () {
+      return getInternalState(that);
+    });
+
+    var stateError = stateCompletion.error;
+    var state = stateCompletion.value;
+
+    if (stateError || (IS_GENERATOR && state.done)) {
+      return { exit: true, value: stateError ? Promise.reject(state) : Promise.resolve(createIterResultObject(undefined, true)) };
+    } return { exit: false, value: state };
+  };
+
+  return defineBuiltIns(create(AsyncIteratorPrototype), {
+    next: function next() {
+      var stateCompletion = getStateOrEarlyExit(this);
+      var state = stateCompletion.value;
+      if (stateCompletion.exit) return state;
+      var handlerCompletion = perform(function () {
+        return anObject(state.nextHandler(Promise));
+      });
+      var handlerError = handlerCompletion.error;
+      var value = handlerCompletion.value;
+      if (handlerError) state.done = true;
+      return handlerError ? Promise.reject(value) : Promise.resolve(value);
+    },
+    'return': function () {
+      var stateCompletion = getStateOrEarlyExit(this);
+      var state = stateCompletion.value;
+      if (stateCompletion.exit) return state;
+      state.done = true;
+      var iterator = state.iterator;
+      var returnMethod, result;
+      var completion = perform(function () {
+        if (state.inner) try {
+          iteratorClose(state.inner.iterator, 'normal');
+        } catch (error) {
+          return iteratorClose(iterator, 'throw', error);
+        }
+        return getMethod(iterator, 'return');
+      });
+      returnMethod = result = completion.value;
+      if (completion.error) return Promise.reject(result);
+      if (returnMethod === undefined) return Promise.resolve(createIterResultObject(undefined, true));
+      completion = perform(function () {
+        return call(returnMethod, iterator);
+      });
+      result = completion.value;
+      if (completion.error) return Promise.reject(result);
+      return IS_ITERATOR ? Promise.resolve(result) : Promise.resolve(result).then(function (resolved) {
+        anObject(resolved);
+        return createIterResultObject(undefined, true);
+      });
+    }
+  });
+};
+
+var WrapForValidAsyncIteratorPrototype = createAsyncIteratorProxyPrototype(true);
+var AsyncIteratorHelperPrototype = createAsyncIteratorProxyPrototype(false);
+
+createNonEnumerableProperty(AsyncIteratorHelperPrototype, TO_STRING_TAG, 'Async Iterator Helper');
+
+module.exports = function (nextHandler, IS_ITERATOR) {
+  var AsyncIteratorProxy = function AsyncIterator(record, state) {
+    if (state) {
+      state.iterator = record.iterator;
+      state.next = record.next;
+    } else state = record;
+    state.type = IS_ITERATOR ? WRAP_FOR_VALID_ASYNC_ITERATOR : ASYNC_ITERATOR_HELPER;
+    state.nextHandler = nextHandler;
+    state.counter = 0;
+    state.done = false;
+    setInternalState(this, state);
+  };
+
+  AsyncIteratorProxy.prototype = IS_ITERATOR ? WrapForValidAsyncIteratorPrototype : AsyncIteratorHelperPrototype;
+
+  return AsyncIteratorProxy;
+};
diff --git a/node_modules/core-js/internals/async-iterator-indexed.js b/node_modules/core-js/internals/async-iterator-indexed.js
new file mode 100644
index 0000000..8ed6671
--- /dev/null
+++ b/node_modules/core-js/internals/async-iterator-indexed.js
@@ -0,0 +1,13 @@
+'use strict';
+var call = require('../internals/function-call');
+var map = require('../internals/async-iterator-map');
+
+var callback = function (value, counter) {
+  return [counter, value];
+};
+
+// `AsyncIterator.prototype.indexed` method
+// https://github.com/tc39/proposal-iterator-helpers
+module.exports = function indexed() {
+  return call(map, this, callback);
+};
diff --git a/node_modules/core-js/internals/async-iterator-iteration.js b/node_modules/core-js/internals/async-iterator-iteration.js
new file mode 100644
index 0000000..684c0bf
--- /dev/null
+++ b/node_modules/core-js/internals/async-iterator-iteration.js
@@ -0,0 +1,90 @@
+'use strict';
+// https://github.com/tc39/proposal-iterator-helpers
+// https://github.com/tc39/proposal-array-from-async
+var call = require('../internals/function-call');
+var aCallable = require('../internals/a-callable');
+var anObject = require('../internals/an-object');
+var isObject = require('../internals/is-object');
+var doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');
+var getBuiltIn = require('../internals/get-built-in');
+var getIteratorDirect = require('../internals/get-iterator-direct');
+var closeAsyncIteration = require('../internals/async-iterator-close');
+
+var createMethod = function (TYPE) {
+  var IS_TO_ARRAY = TYPE === 0;
+  var IS_FOR_EACH = TYPE === 1;
+  var IS_EVERY = TYPE === 2;
+  var IS_SOME = TYPE === 3;
+  return function (object, fn, target) {
+    anObject(object);
+    var MAPPING = fn !== undefined;
+    if (MAPPING || !IS_TO_ARRAY) aCallable(fn);
+    var record = getIteratorDirect(object);
+    var Promise = getBuiltIn('Promise');
+    var iterator = record.iterator;
+    var next = record.next;
+    var counter = 0;
+
+    return new Promise(function (resolve, reject) {
+      var ifAbruptCloseAsyncIterator = function (error) {
+        closeAsyncIteration(iterator, reject, error, reject);
+      };
+
+      var loop = function () {
+        try {
+          if (MAPPING) try {
+            doesNotExceedSafeInteger(counter);
+          } catch (error5) { ifAbruptCloseAsyncIterator(error5); }
+          Promise.resolve(anObject(call(next, iterator))).then(function (step) {
+            try {
+              if (anObject(step).done) {
+                if (IS_TO_ARRAY) {
+                  target.length = counter;
+                  resolve(target);
+                } else resolve(IS_SOME ? false : IS_EVERY || undefined);
+              } else {
+                var value = step.value;
+                try {
+                  if (MAPPING) {
+                    var result = fn(value, counter);
+
+                    var handler = function ($result) {
+                      if (IS_FOR_EACH) {
+                        loop();
+                      } else if (IS_EVERY) {
+                        $result ? loop() : closeAsyncIteration(iterator, resolve, false, reject);
+                      } else if (IS_TO_ARRAY) {
+                        try {
+                          target[counter++] = $result;
+                          loop();
+                        } catch (error4) { ifAbruptCloseAsyncIterator(error4); }
+                      } else {
+                        $result ? closeAsyncIteration(iterator, resolve, IS_SOME || value, reject) : loop();
+                      }
+                    };
+
+                    if (isObject(result)) Promise.resolve(result).then(handler, ifAbruptCloseAsyncIterator);
+                    else handler(result);
+                  } else {
+                    target[counter++] = value;
+                    loop();
+                  }
+                } catch (error3) { ifAbruptCloseAsyncIterator(error3); }
+              }
+            } catch (error2) { reject(error2); }
+          }, reject);
+        } catch (error) { reject(error); }
+      };
+
+      loop();
+    });
+  };
+};
+
+module.exports = {
+  toArray: createMethod(0),
+  forEach: createMethod(1),
+  every: createMethod(2),
+  some: createMethod(3),
+  find: createMethod(4)
+};
diff --git a/node_modules/core-js/internals/async-iterator-map.js b/node_modules/core-js/internals/async-iterator-map.js
new file mode 100644
index 0000000..6e333f9
--- /dev/null
+++ b/node_modules/core-js/internals/async-iterator-map.js
@@ -0,0 +1,57 @@
+'use strict';
+var call = require('../internals/function-call');
+var aCallable = require('../internals/a-callable');
+var anObject = require('../internals/an-object');
+var isObject = require('../internals/is-object');
+var getIteratorDirect = require('../internals/get-iterator-direct');
+var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');
+var createIterResultObject = require('../internals/create-iter-result-object');
+var closeAsyncIteration = require('../internals/async-iterator-close');
+
+var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise) {
+  var state = this;
+  var iterator = state.iterator;
+  var mapper = state.mapper;
+
+  return new Promise(function (resolve, reject) {
+    var doneAndReject = function (error) {
+      state.done = true;
+      reject(error);
+    };
+
+    var ifAbruptCloseAsyncIterator = function (error) {
+      closeAsyncIteration(iterator, doneAndReject, error, doneAndReject);
+    };
+
+    Promise.resolve(anObject(call(state.next, iterator))).then(function (step) {
+      try {
+        if (anObject(step).done) {
+          state.done = true;
+          resolve(createIterResultObject(undefined, true));
+        } else {
+          var value = step.value;
+          try {
+            var result = mapper(value, state.counter++);
+
+            var handler = function (mapped) {
+              resolve(createIterResultObject(mapped, false));
+            };
+
+            if (isObject(result)) Promise.resolve(result).then(handler, ifAbruptCloseAsyncIterator);
+            else handler(result);
+          } catch (error2) { ifAbruptCloseAsyncIterator(error2); }
+        }
+      } catch (error) { doneAndReject(error); }
+    }, doneAndReject);
+  });
+});
+
+// `AsyncIterator.prototype.map` method
+// https://github.com/tc39/proposal-iterator-helpers
+module.exports = function map(mapper) {
+  anObject(this);
+  aCallable(mapper);
+  return new AsyncIteratorProxy(getIteratorDirect(this), {
+    mapper: mapper
+  });
+};
diff --git a/node_modules/core-js/internals/async-iterator-prototype.js b/node_modules/core-js/internals/async-iterator-prototype.js
new file mode 100644
index 0000000..1fed135
--- /dev/null
+++ b/node_modules/core-js/internals/async-iterator-prototype.js
@@ -0,0 +1,38 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+var shared = require('../internals/shared-store');
+var isCallable = require('../internals/is-callable');
+var create = require('../internals/object-create');
+var getPrototypeOf = require('../internals/object-get-prototype-of');
+var defineBuiltIn = require('../internals/define-built-in');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var IS_PURE = require('../internals/is-pure');
+
+var USE_FUNCTION_CONSTRUCTOR = 'USE_FUNCTION_CONSTRUCTOR';
+var ASYNC_ITERATOR = wellKnownSymbol('asyncIterator');
+var AsyncIterator = globalThis.AsyncIterator;
+var PassedAsyncIteratorPrototype = shared.AsyncIteratorPrototype;
+var AsyncIteratorPrototype, prototype;
+
+if (PassedAsyncIteratorPrototype) {
+  AsyncIteratorPrototype = PassedAsyncIteratorPrototype;
+} else if (isCallable(AsyncIterator)) {
+  AsyncIteratorPrototype = AsyncIterator.prototype;
+} else if (shared[USE_FUNCTION_CONSTRUCTOR] || globalThis[USE_FUNCTION_CONSTRUCTOR]) {
+  try {
+    // eslint-disable-next-line no-new-func -- we have no alternatives without usage of modern syntax
+    prototype = getPrototypeOf(getPrototypeOf(getPrototypeOf(Function('return async function*(){}()')())));
+    if (getPrototypeOf(prototype) === Object.prototype) AsyncIteratorPrototype = prototype;
+  } catch (error) { /* empty */ }
+}
+
+if (!AsyncIteratorPrototype) AsyncIteratorPrototype = {};
+else if (IS_PURE) AsyncIteratorPrototype = create(AsyncIteratorPrototype);
+
+if (!isCallable(AsyncIteratorPrototype[ASYNC_ITERATOR])) {
+  defineBuiltIn(AsyncIteratorPrototype, ASYNC_ITERATOR, function () {
+    return this;
+  });
+}
+
+module.exports = AsyncIteratorPrototype;
diff --git a/node_modules/core-js/internals/async-iterator-wrap.js b/node_modules/core-js/internals/async-iterator-wrap.js
new file mode 100644
index 0000000..5836316
--- /dev/null
+++ b/node_modules/core-js/internals/async-iterator-wrap.js
@@ -0,0 +1,7 @@
+'use strict';
+var call = require('../internals/function-call');
+var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');
+
+module.exports = createAsyncIteratorProxy(function () {
+  return call(this.next, this.iterator);
+}, true);
diff --git a/node_modules/core-js/internals/base64-map.js b/node_modules/core-js/internals/base64-map.js
new file mode 100644
index 0000000..2bda13a
--- /dev/null
+++ b/node_modules/core-js/internals/base64-map.js
@@ -0,0 +1,19 @@
+'use strict';
+var commonAlphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
+var base64Alphabet = commonAlphabet + '+/';
+var base64UrlAlphabet = commonAlphabet + '-_';
+
+var inverse = function (characters) {
+  // TODO: use `Object.create(null)` in `core-js@4`
+  var result = {};
+  var index = 0;
+  for (; index < 64; index++) result[characters.charAt(index)] = index;
+  return result;
+};
+
+module.exports = {
+  i2c: base64Alphabet,
+  c2i: inverse(base64Alphabet),
+  i2cUrl: base64UrlAlphabet,
+  c2iUrl: inverse(base64UrlAlphabet)
+};
diff --git a/node_modules/core-js/internals/call-with-safe-iteration-closing.js b/node_modules/core-js/internals/call-with-safe-iteration-closing.js
new file mode 100644
index 0000000..b468c8f
--- /dev/null
+++ b/node_modules/core-js/internals/call-with-safe-iteration-closing.js
@@ -0,0 +1,12 @@
+'use strict';
+var anObject = require('../internals/an-object');
+var iteratorClose = require('../internals/iterator-close');
+
+// call something on iterator step with safe closing on error
+module.exports = function (iterator, fn, value, ENTRIES) {
+  try {
+    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);
+  } catch (error) {
+    iteratorClose(iterator, 'throw', error);
+  }
+};
diff --git a/node_modules/core-js/internals/caller.js b/node_modules/core-js/internals/caller.js
new file mode 100644
index 0000000..c37987e
--- /dev/null
+++ b/node_modules/core-js/internals/caller.js
@@ -0,0 +1,8 @@
+'use strict';
+module.exports = function (methodName, numArgs) {
+  return numArgs === 1 ? function (object, arg) {
+    return object[methodName](arg);
+  } : function (object, arg1, arg2) {
+    return object[methodName](arg1, arg2);
+  };
+};
diff --git a/node_modules/core-js/internals/check-correctness-of-iteration.js b/node_modules/core-js/internals/check-correctness-of-iteration.js
new file mode 100644
index 0000000..ee9f092
--- /dev/null
+++ b/node_modules/core-js/internals/check-correctness-of-iteration.js
@@ -0,0 +1,41 @@
+'use strict';
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+var ITERATOR = wellKnownSymbol('iterator');
+var SAFE_CLOSING = false;
+
+try {
+  var called = 0;
+  var iteratorWithReturn = {
+    next: function () {
+      return { done: !!called++ };
+    },
+    'return': function () {
+      SAFE_CLOSING = true;
+    }
+  };
+  iteratorWithReturn[ITERATOR] = function () {
+    return this;
+  };
+  // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing
+  Array.from(iteratorWithReturn, function () { throw 2; });
+} catch (error) { /* empty */ }
+
+module.exports = function (exec, SKIP_CLOSING) {
+  try {
+    if (!SKIP_CLOSING && !SAFE_CLOSING) return false;
+  } catch (error) { return false; } // workaround of old WebKit + `eval` bug
+  var ITERATION_SUPPORT = false;
+  try {
+    var object = {};
+    object[ITERATOR] = function () {
+      return {
+        next: function () {
+          return { done: ITERATION_SUPPORT = true };
+        }
+      };
+    };
+    exec(object);
+  } catch (error) { /* empty */ }
+  return ITERATION_SUPPORT;
+};
diff --git a/node_modules/core-js/internals/classof-raw.js b/node_modules/core-js/internals/classof-raw.js
new file mode 100644
index 0000000..3c3d430
--- /dev/null
+++ b/node_modules/core-js/internals/classof-raw.js
@@ -0,0 +1,9 @@
+'use strict';
+var uncurryThis = require('../internals/function-uncurry-this');
+
+var toString = uncurryThis({}.toString);
+var stringSlice = uncurryThis(''.slice);
+
+module.exports = function (it) {
+  return stringSlice(toString(it), 8, -1);
+};
diff --git a/node_modules/core-js/internals/classof.js b/node_modules/core-js/internals/classof.js
new file mode 100644
index 0000000..8c0fae6
--- /dev/null
+++ b/node_modules/core-js/internals/classof.js
@@ -0,0 +1,30 @@
+'use strict';
+var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');
+var isCallable = require('../internals/is-callable');
+var classofRaw = require('../internals/classof-raw');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+var TO_STRING_TAG = wellKnownSymbol('toStringTag');
+var $Object = Object;
+
+// ES3 wrong here
+var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';
+
+// fallback for IE11 Script Access Denied error
+var tryGet = function (it, key) {
+  try {
+    return it[key];
+  } catch (error) { /* empty */ }
+};
+
+// getting tag from ES6+ `Object.prototype.toString`
+module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {
+  var O, tag, result;
+  return it === undefined ? 'Undefined' : it === null ? 'Null'
+    // @@toStringTag case
+    : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag
+    // builtinTag case
+    : CORRECT_ARGUMENTS ? classofRaw(O)
+    // ES3 arguments fallback
+    : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;
+};
diff --git a/node_modules/core-js/internals/collection-from.js b/node_modules/core-js/internals/collection-from.js
new file mode 100644
index 0000000..06d7f98
--- /dev/null
+++ b/node_modules/core-js/internals/collection-from.js
@@ -0,0 +1,24 @@
+'use strict';
+// https://tc39.github.io/proposal-setmap-offrom/
+var bind = require('../internals/function-bind-context');
+var anObject = require('../internals/an-object');
+var toObject = require('../internals/to-object');
+var iterate = require('../internals/iterate');
+
+module.exports = function (C, adder, ENTRY) {
+  return function from(source /* , mapFn, thisArg */) {
+    var O = toObject(source);
+    var length = arguments.length;
+    var mapFn = length > 1 ? arguments[1] : undefined;
+    var mapping = mapFn !== undefined;
+    var boundFunction = mapping ? bind(mapFn, length > 2 ? arguments[2] : undefined) : undefined;
+    var result = new C();
+    var n = 0;
+    iterate(O, function (nextItem) {
+      var entry = mapping ? boundFunction(nextItem, n++) : nextItem;
+      if (ENTRY) adder(result, anObject(entry)[0], entry[1]);
+      else adder(result, entry);
+    });
+    return result;
+  };
+};
diff --git a/node_modules/core-js/internals/collection-of.js b/node_modules/core-js/internals/collection-of.js
new file mode 100644
index 0000000..b23f18b
--- /dev/null
+++ b/node_modules/core-js/internals/collection-of.js
@@ -0,0 +1,15 @@
+'use strict';
+var anObject = require('../internals/an-object');
+
+// https://tc39.github.io/proposal-setmap-offrom/
+module.exports = function (C, adder, ENTRY) {
+  return function of() {
+    var result = new C();
+    var length = arguments.length;
+    for (var index = 0; index < length; index++) {
+      var entry = arguments[index];
+      if (ENTRY) adder(result, anObject(entry)[0], entry[1]);
+      else adder(result, entry);
+    } return result;
+  };
+};
diff --git a/node_modules/core-js/internals/collection-strong.js b/node_modules/core-js/internals/collection-strong.js
new file mode 100644
index 0000000..cea1107
--- /dev/null
+++ b/node_modules/core-js/internals/collection-strong.js
@@ -0,0 +1,206 @@
+'use strict';
+var create = require('../internals/object-create');
+var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
+var defineBuiltIns = require('../internals/define-built-ins');
+var bind = require('../internals/function-bind-context');
+var anInstance = require('../internals/an-instance');
+var isNullOrUndefined = require('../internals/is-null-or-undefined');
+var iterate = require('../internals/iterate');
+var defineIterator = require('../internals/iterator-define');
+var createIterResultObject = require('../internals/create-iter-result-object');
+var setSpecies = require('../internals/set-species');
+var DESCRIPTORS = require('../internals/descriptors');
+var fastKey = require('../internals/internal-metadata').fastKey;
+var InternalStateModule = require('../internals/internal-state');
+
+var setInternalState = InternalStateModule.set;
+var internalStateGetterFor = InternalStateModule.getterFor;
+
+module.exports = {
+  getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {
+    var Constructor = wrapper(function (that, iterable) {
+      anInstance(that, Prototype);
+      setInternalState(that, {
+        type: CONSTRUCTOR_NAME,
+        index: create(null),
+        first: null,
+        last: null,
+        size: 0
+      });
+      if (!DESCRIPTORS) that.size = 0;
+      if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });
+    });
+
+    var Prototype = Constructor.prototype;
+
+    var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);
+
+    var define = function (that, key, value) {
+      var state = getInternalState(that);
+      var entry = getEntry(that, key);
+      var previous, index;
+      // change existing entry
+      if (entry) {
+        entry.value = value;
+      // create new entry
+      } else {
+        state.last = entry = {
+          index: index = fastKey(key, true),
+          key: key,
+          value: value,
+          previous: previous = state.last,
+          next: null,
+          removed: false
+        };
+        if (!state.first) state.first = entry;
+        if (previous) previous.next = entry;
+        if (DESCRIPTORS) state.size++;
+        else that.size++;
+        // add to index
+        if (index !== 'F') state.index[index] = entry;
+      } return that;
+    };
+
+    var getEntry = function (that, key) {
+      var state = getInternalState(that);
+      // fast case
+      var index = fastKey(key);
+      var entry;
+      if (index !== 'F') return state.index[index];
+      // frozen object case
+      for (entry = state.first; entry; entry = entry.next) {
+        if (entry.key === key) return entry;
+      }
+    };
+
+    defineBuiltIns(Prototype, {
+      // `{ Map, Set }.prototype.clear()` methods
+      // https://tc39.es/ecma262/#sec-map.prototype.clear
+      // https://tc39.es/ecma262/#sec-set.prototype.clear
+      clear: function clear() {
+        var that = this;
+        var state = getInternalState(that);
+        var entry = state.first;
+        while (entry) {
+          entry.removed = true;
+          if (entry.previous) entry.previous = entry.previous.next = null;
+          entry = entry.next;
+        }
+        state.first = state.last = null;
+        state.index = create(null);
+        if (DESCRIPTORS) state.size = 0;
+        else that.size = 0;
+      },
+      // `{ Map, Set }.prototype.delete(key)` methods
+      // https://tc39.es/ecma262/#sec-map.prototype.delete
+      // https://tc39.es/ecma262/#sec-set.prototype.delete
+      'delete': function (key) {
+        var that = this;
+        var state = getInternalState(that);
+        var entry = getEntry(that, key);
+        if (entry) {
+          var next = entry.next;
+          var prev = entry.previous;
+          delete state.index[entry.index];
+          entry.removed = true;
+          if (prev) prev.next = next;
+          if (next) next.previous = prev;
+          if (state.first === entry) state.first = next;
+          if (state.last === entry) state.last = prev;
+          if (DESCRIPTORS) state.size--;
+          else that.size--;
+        } return !!entry;
+      },
+      // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods
+      // https://tc39.es/ecma262/#sec-map.prototype.foreach
+      // https://tc39.es/ecma262/#sec-set.prototype.foreach
+      forEach: function forEach(callbackfn /* , that = undefined */) {
+        var state = getInternalState(this);
+        var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+        var entry;
+        while (entry = entry ? entry.next : state.first) {
+          boundFunction(entry.value, entry.key, this);
+          // revert to the last existing entry
+          while (entry && entry.removed) entry = entry.previous;
+        }
+      },
+      // `{ Map, Set}.prototype.has(key)` methods
+      // https://tc39.es/ecma262/#sec-map.prototype.has
+      // https://tc39.es/ecma262/#sec-set.prototype.has
+      has: function has(key) {
+        return !!getEntry(this, key);
+      }
+    });
+
+    defineBuiltIns(Prototype, IS_MAP ? {
+      // `Map.prototype.get(key)` method
+      // https://tc39.es/ecma262/#sec-map.prototype.get
+      get: function get(key) {
+        var entry = getEntry(this, key);
+        return entry && entry.value;
+      },
+      // `Map.prototype.set(key, value)` method
+      // https://tc39.es/ecma262/#sec-map.prototype.set
+      set: function set(key, value) {
+        return define(this, key === 0 ? 0 : key, value);
+      }
+    } : {
+      // `Set.prototype.add(value)` method
+      // https://tc39.es/ecma262/#sec-set.prototype.add
+      add: function add(value) {
+        return define(this, value = value === 0 ? 0 : value, value);
+      }
+    });
+    if (DESCRIPTORS) defineBuiltInAccessor(Prototype, 'size', {
+      configurable: true,
+      get: function () {
+        return getInternalState(this).size;
+      }
+    });
+    return Constructor;
+  },
+  setStrong: function (Constructor, CONSTRUCTOR_NAME, IS_MAP) {
+    var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';
+    var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);
+    var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);
+    // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods
+    // https://tc39.es/ecma262/#sec-map.prototype.entries
+    // https://tc39.es/ecma262/#sec-map.prototype.keys
+    // https://tc39.es/ecma262/#sec-map.prototype.values
+    // https://tc39.es/ecma262/#sec-map.prototype-@@iterator
+    // https://tc39.es/ecma262/#sec-set.prototype.entries
+    // https://tc39.es/ecma262/#sec-set.prototype.keys
+    // https://tc39.es/ecma262/#sec-set.prototype.values
+    // https://tc39.es/ecma262/#sec-set.prototype-@@iterator
+    defineIterator(Constructor, CONSTRUCTOR_NAME, function (iterated, kind) {
+      setInternalState(this, {
+        type: ITERATOR_NAME,
+        target: iterated,
+        state: getInternalCollectionState(iterated),
+        kind: kind,
+        last: null
+      });
+    }, function () {
+      var state = getInternalIteratorState(this);
+      var kind = state.kind;
+      var entry = state.last;
+      // revert to the last existing entry
+      while (entry && entry.removed) entry = entry.previous;
+      // get next entry
+      if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {
+        // or finish the iteration
+        state.target = null;
+        return createIterResultObject(undefined, true);
+      }
+      // return step by kind
+      if (kind === 'keys') return createIterResultObject(entry.key, false);
+      if (kind === 'values') return createIterResultObject(entry.value, false);
+      return createIterResultObject([entry.key, entry.value], false);
+    }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);
+
+    // `{ Map, Set }.prototype[@@species]` accessors
+    // https://tc39.es/ecma262/#sec-get-map-@@species
+    // https://tc39.es/ecma262/#sec-get-set-@@species
+    setSpecies(CONSTRUCTOR_NAME);
+  }
+};
diff --git a/node_modules/core-js/internals/collection-weak.js b/node_modules/core-js/internals/collection-weak.js
new file mode 100644
index 0000000..d13b7bc
--- /dev/null
+++ b/node_modules/core-js/internals/collection-weak.js
@@ -0,0 +1,131 @@
+'use strict';
+var uncurryThis = require('../internals/function-uncurry-this');
+var defineBuiltIns = require('../internals/define-built-ins');
+var getWeakData = require('../internals/internal-metadata').getWeakData;
+var anInstance = require('../internals/an-instance');
+var anObject = require('../internals/an-object');
+var isNullOrUndefined = require('../internals/is-null-or-undefined');
+var isObject = require('../internals/is-object');
+var iterate = require('../internals/iterate');
+var ArrayIterationModule = require('../internals/array-iteration');
+var hasOwn = require('../internals/has-own-property');
+var InternalStateModule = require('../internals/internal-state');
+
+var setInternalState = InternalStateModule.set;
+var internalStateGetterFor = InternalStateModule.getterFor;
+var find = ArrayIterationModule.find;
+var findIndex = ArrayIterationModule.findIndex;
+var splice = uncurryThis([].splice);
+var id = 0;
+
+// fallback for uncaught frozen keys
+var uncaughtFrozenStore = function (state) {
+  return state.frozen || (state.frozen = new UncaughtFrozenStore());
+};
+
+var UncaughtFrozenStore = function () {
+  this.entries = [];
+};
+
+var findUncaughtFrozen = function (store, key) {
+  return find(store.entries, function (it) {
+    return it[0] === key;
+  });
+};
+
+UncaughtFrozenStore.prototype = {
+  get: function (key) {
+    var entry = findUncaughtFrozen(this, key);
+    if (entry) return entry[1];
+  },
+  has: function (key) {
+    return !!findUncaughtFrozen(this, key);
+  },
+  set: function (key, value) {
+    var entry = findUncaughtFrozen(this, key);
+    if (entry) entry[1] = value;
+    else this.entries.push([key, value]);
+  },
+  'delete': function (key) {
+    var index = findIndex(this.entries, function (it) {
+      return it[0] === key;
+    });
+    if (~index) splice(this.entries, index, 1);
+    return !!~index;
+  }
+};
+
+module.exports = {
+  getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {
+    var Constructor = wrapper(function (that, iterable) {
+      anInstance(that, Prototype);
+      setInternalState(that, {
+        type: CONSTRUCTOR_NAME,
+        id: id++,
+        frozen: null
+      });
+      if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });
+    });
+
+    var Prototype = Constructor.prototype;
+
+    var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);
+
+    var define = function (that, key, value) {
+      var state = getInternalState(that);
+      var data = getWeakData(anObject(key), true);
+      if (data === true) uncaughtFrozenStore(state).set(key, value);
+      else data[state.id] = value;
+      return that;
+    };
+
+    defineBuiltIns(Prototype, {
+      // `{ WeakMap, WeakSet }.prototype.delete(key)` methods
+      // https://tc39.es/ecma262/#sec-weakmap.prototype.delete
+      // https://tc39.es/ecma262/#sec-weakset.prototype.delete
+      'delete': function (key) {
+        var state = getInternalState(this);
+        if (!isObject(key)) return false;
+        var data = getWeakData(key);
+        if (data === true) return uncaughtFrozenStore(state)['delete'](key);
+        return data && hasOwn(data, state.id) && delete data[state.id];
+      },
+      // `{ WeakMap, WeakSet }.prototype.has(key)` methods
+      // https://tc39.es/ecma262/#sec-weakmap.prototype.has
+      // https://tc39.es/ecma262/#sec-weakset.prototype.has
+      has: function has(key) {
+        var state = getInternalState(this);
+        if (!isObject(key)) return false;
+        var data = getWeakData(key);
+        if (data === true) return uncaughtFrozenStore(state).has(key);
+        return data && hasOwn(data, state.id);
+      }
+    });
+
+    defineBuiltIns(Prototype, IS_MAP ? {
+      // `WeakMap.prototype.get(key)` method
+      // https://tc39.es/ecma262/#sec-weakmap.prototype.get
+      get: function get(key) {
+        var state = getInternalState(this);
+        if (isObject(key)) {
+          var data = getWeakData(key);
+          if (data === true) return uncaughtFrozenStore(state).get(key);
+          if (data) return data[state.id];
+        }
+      },
+      // `WeakMap.prototype.set(key, value)` method
+      // https://tc39.es/ecma262/#sec-weakmap.prototype.set
+      set: function set(key, value) {
+        return define(this, key, value);
+      }
+    } : {
+      // `WeakSet.prototype.add(value)` method
+      // https://tc39.es/ecma262/#sec-weakset.prototype.add
+      add: function add(value) {
+        return define(this, value, true);
+      }
+    });
+
+    return Constructor;
+  }
+};
diff --git a/node_modules/core-js/internals/collection.js b/node_modules/core-js/internals/collection.js
new file mode 100644
index 0000000..4961bd7
--- /dev/null
+++ b/node_modules/core-js/internals/collection.js
@@ -0,0 +1,106 @@
+'use strict';
+var $ = require('../internals/export');
+var globalThis = require('../internals/global-this');
+var uncurryThis = require('../internals/function-uncurry-this');
+var isForced = require('../internals/is-forced');
+var defineBuiltIn = require('../internals/define-built-in');
+var InternalMetadataModule = require('../internals/internal-metadata');
+var iterate = require('../internals/iterate');
+var anInstance = require('../internals/an-instance');
+var isCallable = require('../internals/is-callable');
+var isNullOrUndefined = require('../internals/is-null-or-undefined');
+var isObject = require('../internals/is-object');
+var fails = require('../internals/fails');
+var checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');
+var setToStringTag = require('../internals/set-to-string-tag');
+var inheritIfRequired = require('../internals/inherit-if-required');
+
+module.exports = function (CONSTRUCTOR_NAME, wrapper, common) {
+  var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;
+  var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;
+  var ADDER = IS_MAP ? 'set' : 'add';
+  var NativeConstructor = globalThis[CONSTRUCTOR_NAME];
+  var NativePrototype = NativeConstructor && NativeConstructor.prototype;
+  var Constructor = NativeConstructor;
+  var exported = {};
+
+  var fixMethod = function (KEY) {
+    var uncurriedNativeMethod = uncurryThis(NativePrototype[KEY]);
+    defineBuiltIn(NativePrototype, KEY,
+      KEY === 'add' ? function add(value) {
+        uncurriedNativeMethod(this, value === 0 ? 0 : value);
+        return this;
+      } : KEY === 'delete' ? function (key) {
+        return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);
+      } : KEY === 'get' ? function get(key) {
+        return IS_WEAK && !isObject(key) ? undefined : uncurriedNativeMethod(this, key === 0 ? 0 : key);
+      } : KEY === 'has' ? function has(key) {
+        return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);
+      } : function set(key, value) {
+        uncurriedNativeMethod(this, key === 0 ? 0 : key, value);
+        return this;
+      }
+    );
+  };
+
+  var REPLACE = isForced(
+    CONSTRUCTOR_NAME,
+    !isCallable(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails(function () {
+      new NativeConstructor().entries().next();
+    }))
+  );
+
+  if (REPLACE) {
+    // create collection constructor
+    Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);
+    InternalMetadataModule.enable();
+  } else if (isForced(CONSTRUCTOR_NAME, true)) {
+    var instance = new Constructor();
+    // early implementations not supports chaining
+    var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) !== instance;
+    // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false
+    var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });
+    // most early implementations doesn't supports iterables, most modern - not close it correctly
+    // eslint-disable-next-line no-new -- required for testing
+    var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });
+    // for early implementations -0 and +0 not the same
+    var BUGGY_ZERO = !IS_WEAK && fails(function () {
+      // V8 ~ Chromium 42- fails only with 5+ elements
+      var $instance = new NativeConstructor();
+      var index = 5;
+      while (index--) $instance[ADDER](index, index);
+      return !$instance.has(-0);
+    });
+
+    if (!ACCEPT_ITERABLES) {
+      Constructor = wrapper(function (dummy, iterable) {
+        anInstance(dummy, NativePrototype);
+        var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);
+        if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });
+        return that;
+      });
+      Constructor.prototype = NativePrototype;
+      NativePrototype.constructor = Constructor;
+    }
+
+    if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {
+      fixMethod('delete');
+      fixMethod('has');
+      IS_MAP && fixMethod('get');
+    }
+
+    if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);
+
+    // weak collections should not contains .clear method
+    if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;
+  }
+
+  exported[CONSTRUCTOR_NAME] = Constructor;
+  $({ global: true, constructor: true, forced: Constructor !== NativeConstructor }, exported);
+
+  setToStringTag(Constructor, CONSTRUCTOR_NAME);
+
+  if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);
+
+  return Constructor;
+};
diff --git a/node_modules/core-js/internals/composite-key.js b/node_modules/core-js/internals/composite-key.js
new file mode 100644
index 0000000..6c44f20
--- /dev/null
+++ b/node_modules/core-js/internals/composite-key.js
@@ -0,0 +1,50 @@
+'use strict';
+// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`
+require('../modules/es.map');
+require('../modules/es.weak-map');
+var getBuiltIn = require('../internals/get-built-in');
+var create = require('../internals/object-create');
+var isObject = require('../internals/is-object');
+
+var $Object = Object;
+var $TypeError = TypeError;
+var Map = getBuiltIn('Map');
+var WeakMap = getBuiltIn('WeakMap');
+
+var Node = function () {
+  // keys
+  this.object = null;
+  this.symbol = null;
+  // child nodes
+  this.primitives = null;
+  this.objectsByIndex = create(null);
+};
+
+Node.prototype.get = function (key, initializer) {
+  return this[key] || (this[key] = initializer());
+};
+
+Node.prototype.next = function (i, it, IS_OBJECT) {
+  var store = IS_OBJECT
+    ? this.objectsByIndex[i] || (this.objectsByIndex[i] = new WeakMap())
+    : this.primitives || (this.primitives = new Map());
+  var entry = store.get(it);
+  if (!entry) store.set(it, entry = new Node());
+  return entry;
+};
+
+var root = new Node();
+
+module.exports = function () {
+  var active = root;
+  var length = arguments.length;
+  var i, it;
+  // for prevent leaking, start from objects
+  for (i = 0; i < length; i++) {
+    if (isObject(it = arguments[i])) active = active.next(i, it, true);
+  }
+  if (this === $Object && active === root) throw new $TypeError('Composite keys must contain a non-primitive component');
+  for (i = 0; i < length; i++) {
+    if (!isObject(it = arguments[i])) active = active.next(i, it, false);
+  } return active;
+};
diff --git a/node_modules/core-js/internals/copy-constructor-properties.js b/node_modules/core-js/internals/copy-constructor-properties.js
new file mode 100644
index 0000000..8e73d46
--- /dev/null
+++ b/node_modules/core-js/internals/copy-constructor-properties.js
@@ -0,0 +1,17 @@
+'use strict';
+var hasOwn = require('../internals/has-own-property');
+var ownKeys = require('../internals/own-keys');
+var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');
+var definePropertyModule = require('../internals/object-define-property');
+
+module.exports = function (target, source, exceptions) {
+  var keys = ownKeys(source);
+  var defineProperty = definePropertyModule.f;
+  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
+  for (var i = 0; i < keys.length; i++) {
+    var key = keys[i];
+    if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {
+      defineProperty(target, key, getOwnPropertyDescriptor(source, key));
+    }
+  }
+};
diff --git a/node_modules/core-js/internals/correct-is-regexp-logic.js b/node_modules/core-js/internals/correct-is-regexp-logic.js
new file mode 100644
index 0000000..2eb5233
--- /dev/null
+++ b/node_modules/core-js/internals/correct-is-regexp-logic.js
@@ -0,0 +1,16 @@
+'use strict';
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+var MATCH = wellKnownSymbol('match');
+
+module.exports = function (METHOD_NAME) {
+  var regexp = /./;
+  try {
+    '/./'[METHOD_NAME](regexp);
+  } catch (error1) {
+    try {
+      regexp[MATCH] = false;
+      return '/./'[METHOD_NAME](regexp);
+    } catch (error2) { /* empty */ }
+  } return false;
+};
diff --git a/node_modules/core-js/internals/correct-prototype-getter.js b/node_modules/core-js/internals/correct-prototype-getter.js
new file mode 100644
index 0000000..e14d4af
--- /dev/null
+++ b/node_modules/core-js/internals/correct-prototype-getter.js
@@ -0,0 +1,9 @@
+'use strict';
+var fails = require('../internals/fails');
+
+module.exports = !fails(function () {
+  function F() { /* empty */ }
+  F.prototype.constructor = null;
+  // eslint-disable-next-line es/no-object-getprototypeof -- required for testing
+  return Object.getPrototypeOf(new F()) !== F.prototype;
+});
diff --git a/node_modules/core-js/internals/create-html.js b/node_modules/core-js/internals/create-html.js
new file mode 100644
index 0000000..650c2a1
--- /dev/null
+++ b/node_modules/core-js/internals/create-html.js
@@ -0,0 +1,16 @@
+'use strict';
+var uncurryThis = require('../internals/function-uncurry-this');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+var toString = require('../internals/to-string');
+
+var quot = /"/g;
+var replace = uncurryThis(''.replace);
+
+// `CreateHTML` abstract operation
+// https://tc39.es/ecma262/#sec-createhtml
+module.exports = function (string, tag, attribute, value) {
+  var S = toString(requireObjectCoercible(string));
+  var p1 = '<' + tag;
+  if (attribute !== '') p1 += ' ' + attribute + '="' + replace(toString(value), quot, '&quot;') + '"';
+  return p1 + '>' + S + '</' + tag + '>';
+};
diff --git a/node_modules/core-js/internals/create-iter-result-object.js b/node_modules/core-js/internals/create-iter-result-object.js
new file mode 100644
index 0000000..a05d2d3
--- /dev/null
+++ b/node_modules/core-js/internals/create-iter-result-object.js
@@ -0,0 +1,6 @@
+'use strict';
+// `CreateIterResultObject` abstract operation
+// https://tc39.es/ecma262/#sec-createiterresultobject
+module.exports = function (value, done) {
+  return { value: value, done: done };
+};
diff --git a/node_modules/core-js/internals/create-non-enumerable-property.js b/node_modules/core-js/internals/create-non-enumerable-property.js
new file mode 100644
index 0000000..718c3a5
--- /dev/null
+++ b/node_modules/core-js/internals/create-non-enumerable-property.js
@@ -0,0 +1,11 @@
+'use strict';
+var DESCRIPTORS = require('../internals/descriptors');
+var definePropertyModule = require('../internals/object-define-property');
+var createPropertyDescriptor = require('../internals/create-property-descriptor');
+
+module.exports = DESCRIPTORS ? function (object, key, value) {
+  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));
+} : function (object, key, value) {
+  object[key] = value;
+  return object;
+};
diff --git a/node_modules/core-js/internals/create-property-descriptor.js b/node_modules/core-js/internals/create-property-descriptor.js
new file mode 100644
index 0000000..5ef2773
--- /dev/null
+++ b/node_modules/core-js/internals/create-property-descriptor.js
@@ -0,0 +1,9 @@
+'use strict';
+module.exports = function (bitmap, value) {
+  return {
+    enumerable: !(bitmap & 1),
+    configurable: !(bitmap & 2),
+    writable: !(bitmap & 4),
+    value: value
+  };
+};
diff --git a/node_modules/core-js/internals/create-property.js b/node_modules/core-js/internals/create-property.js
new file mode 100644
index 0000000..e7f6188
--- /dev/null
+++ b/node_modules/core-js/internals/create-property.js
@@ -0,0 +1,9 @@
+'use strict';
+var DESCRIPTORS = require('../internals/descriptors');
+var definePropertyModule = require('../internals/object-define-property');
+var createPropertyDescriptor = require('../internals/create-property-descriptor');
+
+module.exports = function (object, key, value) {
+  if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor(0, value));
+  else object[key] = value;
+};
diff --git a/node_modules/core-js/internals/date-to-iso-string.js b/node_modules/core-js/internals/date-to-iso-string.js
new file mode 100644
index 0000000..4fc47a1
--- /dev/null
+++ b/node_modules/core-js/internals/date-to-iso-string.js
@@ -0,0 +1,41 @@
+'use strict';
+var uncurryThis = require('../internals/function-uncurry-this');
+var fails = require('../internals/fails');
+var padStart = require('../internals/string-pad').start;
+
+var $RangeError = RangeError;
+var $isFinite = isFinite;
+var abs = Math.abs;
+var DatePrototype = Date.prototype;
+var nativeDateToISOString = DatePrototype.toISOString;
+var thisTimeValue = uncurryThis(DatePrototype.getTime);
+var getUTCDate = uncurryThis(DatePrototype.getUTCDate);
+var getUTCFullYear = uncurryThis(DatePrototype.getUTCFullYear);
+var getUTCHours = uncurryThis(DatePrototype.getUTCHours);
+var getUTCMilliseconds = uncurryThis(DatePrototype.getUTCMilliseconds);
+var getUTCMinutes = uncurryThis(DatePrototype.getUTCMinutes);
+var getUTCMonth = uncurryThis(DatePrototype.getUTCMonth);
+var getUTCSeconds = uncurryThis(DatePrototype.getUTCSeconds);
+
+// `Date.prototype.toISOString` method implementation
+// https://tc39.es/ecma262/#sec-date.prototype.toisostring
+// PhantomJS / old WebKit fails here:
+module.exports = (fails(function () {
+  return nativeDateToISOString.call(new Date(-5e13 - 1)) !== '0385-07-25T07:06:39.999Z';
+}) || !fails(function () {
+  nativeDateToISOString.call(new Date(NaN));
+})) ? function toISOString() {
+  if (!$isFinite(thisTimeValue(this))) throw new $RangeError('Invalid time value');
+  var date = this;
+  var year = getUTCFullYear(date);
+  var milliseconds = getUTCMilliseconds(date);
+  var sign = year < 0 ? '-' : year > 9999 ? '+' : '';
+  return sign + padStart(abs(year), sign ? 6 : 4, 0) +
+    '-' + padStart(getUTCMonth(date) + 1, 2, 0) +
+    '-' + padStart(getUTCDate(date), 2, 0) +
+    'T' + padStart(getUTCHours(date), 2, 0) +
+    ':' + padStart(getUTCMinutes(date), 2, 0) +
+    ':' + padStart(getUTCSeconds(date), 2, 0) +
+    '.' + padStart(milliseconds, 3, 0) +
+    'Z';
+} : nativeDateToISOString;
diff --git a/node_modules/core-js/internals/date-to-primitive.js b/node_modules/core-js/internals/date-to-primitive.js
new file mode 100644
index 0000000..b72e5df
--- /dev/null
+++ b/node_modules/core-js/internals/date-to-primitive.js
@@ -0,0 +1,14 @@
+'use strict';
+var anObject = require('../internals/an-object');
+var ordinaryToPrimitive = require('../internals/ordinary-to-primitive');
+
+var $TypeError = TypeError;
+
+// `Date.prototype[@@toPrimitive](hint)` method implementation
+// https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive
+module.exports = function (hint) {
+  anObject(this);
+  if (hint === 'string' || hint === 'default') hint = 'string';
+  else if (hint !== 'number') throw new $TypeError('Incorrect hint');
+  return ordinaryToPrimitive(this, hint);
+};
diff --git a/node_modules/core-js/internals/define-built-in-accessor.js b/node_modules/core-js/internals/define-built-in-accessor.js
new file mode 100644
index 0000000..17c9708
--- /dev/null
+++ b/node_modules/core-js/internals/define-built-in-accessor.js
@@ -0,0 +1,9 @@
+'use strict';
+var makeBuiltIn = require('../internals/make-built-in');
+var defineProperty = require('../internals/object-define-property');
+
+module.exports = function (target, name, descriptor) {
+  if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });
+  if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });
+  return defineProperty.f(target, name, descriptor);
+};
diff --git a/node_modules/core-js/internals/define-built-in.js b/node_modules/core-js/internals/define-built-in.js
new file mode 100644
index 0000000..3594306
--- /dev/null
+++ b/node_modules/core-js/internals/define-built-in.js
@@ -0,0 +1,28 @@
+'use strict';
+var isCallable = require('../internals/is-callable');
+var definePropertyModule = require('../internals/object-define-property');
+var makeBuiltIn = require('../internals/make-built-in');
+var defineGlobalProperty = require('../internals/define-global-property');
+
+module.exports = function (O, key, value, options) {
+  if (!options) options = {};
+  var simple = options.enumerable;
+  var name = options.name !== undefined ? options.name : key;
+  if (isCallable(value)) makeBuiltIn(value, name, options);
+  if (options.global) {
+    if (simple) O[key] = value;
+    else defineGlobalProperty(key, value);
+  } else {
+    try {
+      if (!options.unsafe) delete O[key];
+      else if (O[key]) simple = true;
+    } catch (error) { /* empty */ }
+    if (simple) O[key] = value;
+    else definePropertyModule.f(O, key, {
+      value: value,
+      enumerable: false,
+      configurable: !options.nonConfigurable,
+      writable: !options.nonWritable
+    });
+  } return O;
+};
diff --git a/node_modules/core-js/internals/define-built-ins.js b/node_modules/core-js/internals/define-built-ins.js
new file mode 100644
index 0000000..1fbd53c
--- /dev/null
+++ b/node_modules/core-js/internals/define-built-ins.js
@@ -0,0 +1,7 @@
+'use strict';
+var defineBuiltIn = require('../internals/define-built-in');
+
+module.exports = function (target, src, options) {
+  for (var key in src) defineBuiltIn(target, key, src[key], options);
+  return target;
+};
diff --git a/node_modules/core-js/internals/define-global-property.js b/node_modules/core-js/internals/define-global-property.js
new file mode 100644
index 0000000..96fd4a2
--- /dev/null
+++ b/node_modules/core-js/internals/define-global-property.js
@@ -0,0 +1,13 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+
+// eslint-disable-next-line es/no-object-defineproperty -- safe
+var defineProperty = Object.defineProperty;
+
+module.exports = function (key, value) {
+  try {
+    defineProperty(globalThis, key, { value: value, configurable: true, writable: true });
+  } catch (error) {
+    globalThis[key] = value;
+  } return value;
+};
diff --git a/node_modules/core-js/internals/delete-property-or-throw.js b/node_modules/core-js/internals/delete-property-or-throw.js
new file mode 100644
index 0000000..7265f6f
--- /dev/null
+++ b/node_modules/core-js/internals/delete-property-or-throw.js
@@ -0,0 +1,8 @@
+'use strict';
+var tryToString = require('../internals/try-to-string');
+
+var $TypeError = TypeError;
+
+module.exports = function (O, P) {
+  if (!delete O[P]) throw new $TypeError('Cannot delete property ' + tryToString(P) + ' of ' + tryToString(O));
+};
diff --git a/node_modules/core-js/internals/descriptors.js b/node_modules/core-js/internals/descriptors.js
new file mode 100644
index 0000000..7d6f24a
--- /dev/null
+++ b/node_modules/core-js/internals/descriptors.js
@@ -0,0 +1,8 @@
+'use strict';
+var fails = require('../internals/fails');
+
+// Detect IE8's incomplete defineProperty implementation
+module.exports = !fails(function () {
+  // eslint-disable-next-line es/no-object-defineproperty -- required for testing
+  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;
+});
diff --git a/node_modules/core-js/internals/detach-transferable.js b/node_modules/core-js/internals/detach-transferable.js
new file mode 100644
index 0000000..8fa55c5
--- /dev/null
+++ b/node_modules/core-js/internals/detach-transferable.js
@@ -0,0 +1,37 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+var getBuiltInNodeModule = require('../internals/get-built-in-node-module');
+var PROPER_STRUCTURED_CLONE_TRANSFER = require('../internals/structured-clone-proper-transfer');
+
+var structuredClone = globalThis.structuredClone;
+var $ArrayBuffer = globalThis.ArrayBuffer;
+var $MessageChannel = globalThis.MessageChannel;
+var detach = false;
+var WorkerThreads, channel, buffer, $detach;
+
+if (PROPER_STRUCTURED_CLONE_TRANSFER) {
+  detach = function (transferable) {
+    structuredClone(transferable, { transfer: [transferable] });
+  };
+} else if ($ArrayBuffer) try {
+  if (!$MessageChannel) {
+    WorkerThreads = getBuiltInNodeModule('worker_threads');
+    if (WorkerThreads) $MessageChannel = WorkerThreads.MessageChannel;
+  }
+
+  if ($MessageChannel) {
+    channel = new $MessageChannel();
+    buffer = new $ArrayBuffer(2);
+
+    $detach = function (transferable) {
+      channel.port1.postMessage(null, [transferable]);
+    };
+
+    if (buffer.byteLength === 2) {
+      $detach(buffer);
+      if (buffer.byteLength === 0) detach = $detach;
+    }
+  }
+} catch (error) { /* empty */ }
+
+module.exports = detach;
diff --git a/node_modules/core-js/internals/document-create-element.js b/node_modules/core-js/internals/document-create-element.js
new file mode 100644
index 0000000..dd572fb
--- /dev/null
+++ b/node_modules/core-js/internals/document-create-element.js
@@ -0,0 +1,11 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+var isObject = require('../internals/is-object');
+
+var document = globalThis.document;
+// typeof document.createElement is 'object' in old IE
+var EXISTS = isObject(document) && isObject(document.createElement);
+
+module.exports = function (it) {
+  return EXISTS ? document.createElement(it) : {};
+};
diff --git a/node_modules/core-js/internals/does-not-exceed-safe-integer.js b/node_modules/core-js/internals/does-not-exceed-safe-integer.js
new file mode 100644
index 0000000..fff7beb
--- /dev/null
+++ b/node_modules/core-js/internals/does-not-exceed-safe-integer.js
@@ -0,0 +1,8 @@
+'use strict';
+var $TypeError = TypeError;
+var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991
+
+module.exports = function (it) {
+  if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');
+  return it;
+};
diff --git a/node_modules/core-js/internals/dom-exception-constants.js b/node_modules/core-js/internals/dom-exception-constants.js
new file mode 100644
index 0000000..1588953
--- /dev/null
+++ b/node_modules/core-js/internals/dom-exception-constants.js
@@ -0,0 +1,28 @@
+'use strict';
+module.exports = {
+  IndexSizeError: { s: 'INDEX_SIZE_ERR', c: 1, m: 1 },
+  DOMStringSizeError: { s: 'DOMSTRING_SIZE_ERR', c: 2, m: 0 },
+  HierarchyRequestError: { s: 'HIERARCHY_REQUEST_ERR', c: 3, m: 1 },
+  WrongDocumentError: { s: 'WRONG_DOCUMENT_ERR', c: 4, m: 1 },
+  InvalidCharacterError: { s: 'INVALID_CHARACTER_ERR', c: 5, m: 1 },
+  NoDataAllowedError: { s: 'NO_DATA_ALLOWED_ERR', c: 6, m: 0 },
+  NoModificationAllowedError: { s: 'NO_MODIFICATION_ALLOWED_ERR', c: 7, m: 1 },
+  NotFoundError: { s: 'NOT_FOUND_ERR', c: 8, m: 1 },
+  NotSupportedError: { s: 'NOT_SUPPORTED_ERR', c: 9, m: 1 },
+  InUseAttributeError: { s: 'INUSE_ATTRIBUTE_ERR', c: 10, m: 1 },
+  InvalidStateError: { s: 'INVALID_STATE_ERR', c: 11, m: 1 },
+  SyntaxError: { s: 'SYNTAX_ERR', c: 12, m: 1 },
+  InvalidModificationError: { s: 'INVALID_MODIFICATION_ERR', c: 13, m: 1 },
+  NamespaceError: { s: 'NAMESPACE_ERR', c: 14, m: 1 },
+  InvalidAccessError: { s: 'INVALID_ACCESS_ERR', c: 15, m: 1 },
+  ValidationError: { s: 'VALIDATION_ERR', c: 16, m: 0 },
+  TypeMismatchError: { s: 'TYPE_MISMATCH_ERR', c: 17, m: 1 },
+  SecurityError: { s: 'SECURITY_ERR', c: 18, m: 1 },
+  NetworkError: { s: 'NETWORK_ERR', c: 19, m: 1 },
+  AbortError: { s: 'ABORT_ERR', c: 20, m: 1 },
+  URLMismatchError: { s: 'URL_MISMATCH_ERR', c: 21, m: 1 },
+  QuotaExceededError: { s: 'QUOTA_EXCEEDED_ERR', c: 22, m: 1 },
+  TimeoutError: { s: 'TIMEOUT_ERR', c: 23, m: 1 },
+  InvalidNodeTypeError: { s: 'INVALID_NODE_TYPE_ERR', c: 24, m: 1 },
+  DataCloneError: { s: 'DATA_CLONE_ERR', c: 25, m: 1 }
+};
diff --git a/node_modules/core-js/internals/dom-iterables.js b/node_modules/core-js/internals/dom-iterables.js
new file mode 100644
index 0000000..1dbc1f7
--- /dev/null
+++ b/node_modules/core-js/internals/dom-iterables.js
@@ -0,0 +1,36 @@
+'use strict';
+// iterable DOM collections
+// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods
+module.exports = {
+  CSSRuleList: 0,
+  CSSStyleDeclaration: 0,
+  CSSValueList: 0,
+  ClientRectList: 0,
+  DOMRectList: 0,
+  DOMStringList: 0,
+  DOMTokenList: 1,
+  DataTransferItemList: 0,
+  FileList: 0,
+  HTMLAllCollection: 0,
+  HTMLCollection: 0,
+  HTMLFormElement: 0,
+  HTMLSelectElement: 0,
+  MediaList: 0,
+  MimeTypeArray: 0,
+  NamedNodeMap: 0,
+  NodeList: 1,
+  PaintRequestList: 0,
+  Plugin: 0,
+  PluginArray: 0,
+  SVGLengthList: 0,
+  SVGNumberList: 0,
+  SVGPathSegList: 0,
+  SVGPointList: 0,
+  SVGStringList: 0,
+  SVGTransformList: 0,
+  SourceBufferList: 0,
+  StyleSheetList: 0,
+  TextTrackCueList: 0,
+  TextTrackList: 0,
+  TouchList: 0
+};
diff --git a/node_modules/core-js/internals/dom-token-list-prototype.js b/node_modules/core-js/internals/dom-token-list-prototype.js
new file mode 100644
index 0000000..a0c4071
--- /dev/null
+++ b/node_modules/core-js/internals/dom-token-list-prototype.js
@@ -0,0 +1,8 @@
+'use strict';
+// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`
+var documentCreateElement = require('../internals/document-create-element');
+
+var classList = documentCreateElement('span').classList;
+var DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;
+
+module.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;
diff --git a/node_modules/core-js/internals/entry-unbind.js b/node_modules/core-js/internals/entry-unbind.js
new file mode 100644
index 0000000..3ec17cd
--- /dev/null
+++ b/node_modules/core-js/internals/entry-unbind.js
@@ -0,0 +1,7 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+var uncurryThis = require('../internals/function-uncurry-this');
+
+module.exports = function (CONSTRUCTOR, METHOD) {
+  return uncurryThis(globalThis[CONSTRUCTOR].prototype[METHOD]);
+};
diff --git a/node_modules/core-js/internals/entry-virtual.js b/node_modules/core-js/internals/entry-virtual.js
new file mode 100644
index 0000000..948d83f
--- /dev/null
+++ b/node_modules/core-js/internals/entry-virtual.js
@@ -0,0 +1,6 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+
+module.exports = function (CONSTRUCTOR) {
+  return globalThis[CONSTRUCTOR].prototype;
+};
diff --git a/node_modules/core-js/internals/enum-bug-keys.js b/node_modules/core-js/internals/enum-bug-keys.js
new file mode 100644
index 0000000..a99e8a0
--- /dev/null
+++ b/node_modules/core-js/internals/enum-bug-keys.js
@@ -0,0 +1,11 @@
+'use strict';
+// IE8- don't enum bug keys
+module.exports = [
+  'constructor',
+  'hasOwnProperty',
+  'isPrototypeOf',
+  'propertyIsEnumerable',
+  'toLocaleString',
+  'toString',
+  'valueOf'
+];
diff --git a/node_modules/core-js/internals/environment-ff-version.js b/node_modules/core-js/internals/environment-ff-version.js
new file mode 100644
index 0000000..dd72d7e
--- /dev/null
+++ b/node_modules/core-js/internals/environment-ff-version.js
@@ -0,0 +1,6 @@
+'use strict';
+var userAgent = require('../internals/environment-user-agent');
+
+var firefox = userAgent.match(/firefox\/(\d+)/i);
+
+module.exports = !!firefox && +firefox[1];
diff --git a/node_modules/core-js/internals/environment-is-ie-or-edge.js b/node_modules/core-js/internals/environment-is-ie-or-edge.js
new file mode 100644
index 0000000..7c64cb7
--- /dev/null
+++ b/node_modules/core-js/internals/environment-is-ie-or-edge.js
@@ -0,0 +1,4 @@
+'use strict';
+var UA = require('../internals/environment-user-agent');
+
+module.exports = /MSIE|Trident/.test(UA);
diff --git a/node_modules/core-js/internals/environment-is-ios-pebble.js b/node_modules/core-js/internals/environment-is-ios-pebble.js
new file mode 100644
index 0000000..c411fa7
--- /dev/null
+++ b/node_modules/core-js/internals/environment-is-ios-pebble.js
@@ -0,0 +1,4 @@
+'use strict';
+var userAgent = require('../internals/environment-user-agent');
+
+module.exports = /ipad|iphone|ipod/i.test(userAgent) && typeof Pebble != 'undefined';
diff --git a/node_modules/core-js/internals/environment-is-ios.js b/node_modules/core-js/internals/environment-is-ios.js
new file mode 100644
index 0000000..100367d
--- /dev/null
+++ b/node_modules/core-js/internals/environment-is-ios.js
@@ -0,0 +1,5 @@
+'use strict';
+var userAgent = require('../internals/environment-user-agent');
+
+// eslint-disable-next-line redos/no-vulnerable -- safe
+module.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);
diff --git a/node_modules/core-js/internals/environment-is-node.js b/node_modules/core-js/internals/environment-is-node.js
new file mode 100644
index 0000000..eb6eeda
--- /dev/null
+++ b/node_modules/core-js/internals/environment-is-node.js
@@ -0,0 +1,4 @@
+'use strict';
+var ENVIRONMENT = require('../internals/environment');
+
+module.exports = ENVIRONMENT === 'NODE';
diff --git a/node_modules/core-js/internals/environment-is-webos-webkit.js b/node_modules/core-js/internals/environment-is-webos-webkit.js
new file mode 100644
index 0000000..16d9abb
--- /dev/null
+++ b/node_modules/core-js/internals/environment-is-webos-webkit.js
@@ -0,0 +1,4 @@
+'use strict';
+var userAgent = require('../internals/environment-user-agent');
+
+module.exports = /web0s(?!.*chrome)/i.test(userAgent);
diff --git a/node_modules/core-js/internals/environment-user-agent.js b/node_modules/core-js/internals/environment-user-agent.js
new file mode 100644
index 0000000..31b1067
--- /dev/null
+++ b/node_modules/core-js/internals/environment-user-agent.js
@@ -0,0 +1,7 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+
+var navigator = globalThis.navigator;
+var userAgent = navigator && navigator.userAgent;
+
+module.exports = userAgent ? String(userAgent) : '';
diff --git a/node_modules/core-js/internals/environment-v8-version.js b/node_modules/core-js/internals/environment-v8-version.js
new file mode 100644
index 0000000..6b083aa
--- /dev/null
+++ b/node_modules/core-js/internals/environment-v8-version.js
@@ -0,0 +1,28 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+var userAgent = require('../internals/environment-user-agent');
+
+var process = globalThis.process;
+var Deno = globalThis.Deno;
+var versions = process && process.versions || Deno && Deno.version;
+var v8 = versions && versions.v8;
+var match, version;
+
+if (v8) {
+  match = v8.split('.');
+  // in old Chrome, versions of V8 isn't V8 = Chrome / 10
+  // but their correct versions are not interesting for us
+  version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);
+}
+
+// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`
+// so check `userAgent` even if `.v8` exists, but 0
+if (!version && userAgent) {
+  match = userAgent.match(/Edge\/(\d+)/);
+  if (!match || match[1] >= 74) {
+    match = userAgent.match(/Chrome\/(\d+)/);
+    if (match) version = +match[1];
+  }
+}
+
+module.exports = version;
diff --git a/node_modules/core-js/internals/environment-webkit-version.js b/node_modules/core-js/internals/environment-webkit-version.js
new file mode 100644
index 0000000..207b151
--- /dev/null
+++ b/node_modules/core-js/internals/environment-webkit-version.js
@@ -0,0 +1,6 @@
+'use strict';
+var userAgent = require('../internals/environment-user-agent');
+
+var webkit = userAgent.match(/AppleWebKit\/(\d+)\./);
+
+module.exports = !!webkit && +webkit[1];
diff --git a/node_modules/core-js/internals/environment.js b/node_modules/core-js/internals/environment.js
new file mode 100644
index 0000000..1c6fdd8
--- /dev/null
+++ b/node_modules/core-js/internals/environment.js
@@ -0,0 +1,21 @@
+'use strict';
+/* global Bun, Deno -- detection */
+var globalThis = require('../internals/global-this');
+var userAgent = require('../internals/environment-user-agent');
+var classof = require('../internals/classof-raw');
+
+var userAgentStartsWith = function (string) {
+  return userAgent.slice(0, string.length) === string;
+};
+
+module.exports = (function () {
+  if (userAgentStartsWith('Bun/')) return 'BUN';
+  if (userAgentStartsWith('Cloudflare-Workers')) return 'CLOUDFLARE';
+  if (userAgentStartsWith('Deno/')) return 'DENO';
+  if (userAgentStartsWith('Node.js/')) return 'NODE';
+  if (globalThis.Bun && typeof Bun.version == 'string') return 'BUN';
+  if (globalThis.Deno && typeof Deno.version == 'object') return 'DENO';
+  if (classof(globalThis.process) === 'process') return 'NODE';
+  if (globalThis.window && globalThis.document) return 'BROWSER';
+  return 'REST';
+})();
diff --git a/node_modules/core-js/internals/error-stack-clear.js b/node_modules/core-js/internals/error-stack-clear.js
new file mode 100644
index 0000000..fa66aab
--- /dev/null
+++ b/node_modules/core-js/internals/error-stack-clear.js
@@ -0,0 +1,16 @@
+'use strict';
+var uncurryThis = require('../internals/function-uncurry-this');
+
+var $Error = Error;
+var replace = uncurryThis(''.replace);
+
+var TEST = (function (arg) { return String(new $Error(arg).stack); })('zxcasd');
+// eslint-disable-next-line redos/no-vulnerable, sonarjs/slow-regex -- safe
+var V8_OR_CHAKRA_STACK_ENTRY = /\n\s*at [^:]*:[^\n]*/;
+var IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);
+
+module.exports = function (stack, dropEntries) {
+  if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {
+    while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');
+  } return stack;
+};
diff --git a/node_modules/core-js/internals/error-stack-install.js b/node_modules/core-js/internals/error-stack-install.js
new file mode 100644
index 0000000..eef057b
--- /dev/null
+++ b/node_modules/core-js/internals/error-stack-install.js
@@ -0,0 +1,14 @@
+'use strict';
+var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
+var clearErrorStack = require('../internals/error-stack-clear');
+var ERROR_STACK_INSTALLABLE = require('../internals/error-stack-installable');
+
+// non-standard V8
+var captureStackTrace = Error.captureStackTrace;
+
+module.exports = function (error, C, stack, dropEntries) {
+  if (ERROR_STACK_INSTALLABLE) {
+    if (captureStackTrace) captureStackTrace(error, C);
+    else createNonEnumerableProperty(error, 'stack', clearErrorStack(stack, dropEntries));
+  }
+};
diff --git a/node_modules/core-js/internals/error-stack-installable.js b/node_modules/core-js/internals/error-stack-installable.js
new file mode 100644
index 0000000..96b987f
--- /dev/null
+++ b/node_modules/core-js/internals/error-stack-installable.js
@@ -0,0 +1,11 @@
+'use strict';
+var fails = require('../internals/fails');
+var createPropertyDescriptor = require('../internals/create-property-descriptor');
+
+module.exports = !fails(function () {
+  var error = new Error('a');
+  if (!('stack' in error)) return true;
+  // eslint-disable-next-line es/no-object-defineproperty -- safe
+  Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));
+  return error.stack !== 7;
+});
diff --git a/node_modules/core-js/internals/error-to-string.js b/node_modules/core-js/internals/error-to-string.js
new file mode 100644
index 0000000..0fdb8ee
--- /dev/null
+++ b/node_modules/core-js/internals/error-to-string.js
@@ -0,0 +1,29 @@
+'use strict';
+var DESCRIPTORS = require('../internals/descriptors');
+var fails = require('../internals/fails');
+var anObject = require('../internals/an-object');
+var normalizeStringArgument = require('../internals/normalize-string-argument');
+
+var nativeErrorToString = Error.prototype.toString;
+
+var INCORRECT_TO_STRING = fails(function () {
+  if (DESCRIPTORS) {
+    // Chrome 32- incorrectly call accessor
+    // eslint-disable-next-line es/no-object-create, es/no-object-defineproperty -- safe
+    var object = Object.create(Object.defineProperty({}, 'name', { get: function () {
+      return this === object;
+    } }));
+    if (nativeErrorToString.call(object) !== 'true') return true;
+  }
+  // FF10- does not properly handle non-strings
+  return nativeErrorToString.call({ message: 1, name: 2 }) !== '2: 1'
+    // IE8 does not properly handle defaults
+    || nativeErrorToString.call({}) !== 'Error';
+});
+
+module.exports = INCORRECT_TO_STRING ? function toString() {
+  var O = anObject(this);
+  var name = normalizeStringArgument(O.name, 'Error');
+  var message = normalizeStringArgument(O.message);
+  return !name ? message : !message ? name : name + ': ' + message;
+} : nativeErrorToString;
diff --git a/node_modules/core-js/internals/export.js b/node_modules/core-js/internals/export.js
new file mode 100644
index 0000000..b175366
--- /dev/null
+++ b/node_modules/core-js/internals/export.js
@@ -0,0 +1,55 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;
+var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
+var defineBuiltIn = require('../internals/define-built-in');
+var defineGlobalProperty = require('../internals/define-global-property');
+var copyConstructorProperties = require('../internals/copy-constructor-properties');
+var isForced = require('../internals/is-forced');
+
+/*
+  options.target         - name of the target object
+  options.global         - target is the global object
+  options.stat           - export as static methods of target
+  options.proto          - export as prototype methods of target
+  options.real           - real prototype method for the `pure` version
+  options.forced         - export even if the native feature is available
+  options.bind           - bind methods to the target, required for the `pure` version
+  options.wrap           - wrap constructors to preventing global pollution, required for the `pure` version
+  options.unsafe         - use the simple assignment of property instead of delete + defineProperty
+  options.sham           - add a flag to not completely full polyfills
+  options.enumerable     - export as enumerable property
+  options.dontCallGetSet - prevent calling a getter on target
+  options.name           - the .name of the function if it does not match the key
+*/
+module.exports = function (options, source) {
+  var TARGET = options.target;
+  var GLOBAL = options.global;
+  var STATIC = options.stat;
+  var FORCED, target, key, targetProperty, sourceProperty, descriptor;
+  if (GLOBAL) {
+    target = globalThis;
+  } else if (STATIC) {
+    target = globalThis[TARGET] || defineGlobalProperty(TARGET, {});
+  } else {
+    target = globalThis[TARGET] && globalThis[TARGET].prototype;
+  }
+  if (target) for (key in source) {
+    sourceProperty = source[key];
+    if (options.dontCallGetSet) {
+      descriptor = getOwnPropertyDescriptor(target, key);
+      targetProperty = descriptor && descriptor.value;
+    } else targetProperty = target[key];
+    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);
+    // contained in target
+    if (!FORCED && targetProperty !== undefined) {
+      if (typeof sourceProperty == typeof targetProperty) continue;
+      copyConstructorProperties(sourceProperty, targetProperty);
+    }
+    // add a flag to not completely full polyfills
+    if (options.sham || (targetProperty && targetProperty.sham)) {
+      createNonEnumerableProperty(sourceProperty, 'sham', true);
+    }
+    defineBuiltIn(target, key, sourceProperty, options);
+  }
+};
diff --git a/node_modules/core-js/internals/fails.js b/node_modules/core-js/internals/fails.js
new file mode 100644
index 0000000..7880c82
--- /dev/null
+++ b/node_modules/core-js/internals/fails.js
@@ -0,0 +1,8 @@
+'use strict';
+module.exports = function (exec) {
+  try {
+    return !!exec();
+  } catch (error) {
+    return true;
+  }
+};
diff --git a/node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js b/node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js
new file mode 100644
index 0000000..816a5b3
--- /dev/null
+++ b/node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js
@@ -0,0 +1,76 @@
+'use strict';
+// TODO: Remove from `core-js@4` since it's moved to entry points
+require('../modules/es.regexp.exec');
+var call = require('../internals/function-call');
+var defineBuiltIn = require('../internals/define-built-in');
+var regexpExec = require('../internals/regexp-exec');
+var fails = require('../internals/fails');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
+
+var SPECIES = wellKnownSymbol('species');
+var RegExpPrototype = RegExp.prototype;
+
+module.exports = function (KEY, exec, FORCED, SHAM) {
+  var SYMBOL = wellKnownSymbol(KEY);
+
+  var DELEGATES_TO_SYMBOL = !fails(function () {
+    // String methods call symbol-named RegExp methods
+    var O = {};
+    O[SYMBOL] = function () { return 7; };
+    return ''[KEY](O) !== 7;
+  });
+
+  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {
+    // Symbol-named RegExp methods call .exec
+    var execCalled = false;
+    var re = /a/;
+
+    if (KEY === 'split') {
+      // We can't use real regex here since it causes deoptimization
+      // and serious performance degradation in V8
+      // https://github.com/zloirock/core-js/issues/306
+      re = {};
+      // RegExp[@@split] doesn't call the regex's exec method, but first creates
+      // a new one. We need to return the patched regex when creating the new one.
+      re.constructor = {};
+      re.constructor[SPECIES] = function () { return re; };
+      re.flags = '';
+      re[SYMBOL] = /./[SYMBOL];
+    }
+
+    re.exec = function () {
+      execCalled = true;
+      return null;
+    };
+
+    re[SYMBOL]('');
+    return !execCalled;
+  });
+
+  if (
+    !DELEGATES_TO_SYMBOL ||
+    !DELEGATES_TO_EXEC ||
+    FORCED
+  ) {
+    var nativeRegExpMethod = /./[SYMBOL];
+    var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {
+      var $exec = regexp.exec;
+      if ($exec === regexpExec || $exec === RegExpPrototype.exec) {
+        if (DELEGATES_TO_SYMBOL && !forceStringMethod) {
+          // The native String method already delegates to @@method (this
+          // polyfilled function), leasing to infinite recursion.
+          // We avoid it by directly calling the native @@method method.
+          return { done: true, value: call(nativeRegExpMethod, regexp, str, arg2) };
+        }
+        return { done: true, value: call(nativeMethod, str, regexp, arg2) };
+      }
+      return { done: false };
+    });
+
+    defineBuiltIn(String.prototype, KEY, methods[0]);
+    defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]);
+  }
+
+  if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);
+};
diff --git a/node_modules/core-js/internals/flatten-into-array.js b/node_modules/core-js/internals/flatten-into-array.js
new file mode 100644
index 0000000..04b2030
--- /dev/null
+++ b/node_modules/core-js/internals/flatten-into-array.js
@@ -0,0 +1,34 @@
+'use strict';
+var isArray = require('../internals/is-array');
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+var doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');
+var bind = require('../internals/function-bind-context');
+
+// `FlattenIntoArray` abstract operation
+// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray
+var flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {
+  var targetIndex = start;
+  var sourceIndex = 0;
+  var mapFn = mapper ? bind(mapper, thisArg) : false;
+  var element, elementLen;
+
+  while (sourceIndex < sourceLen) {
+    if (sourceIndex in source) {
+      element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];
+
+      if (depth > 0 && isArray(element)) {
+        elementLen = lengthOfArrayLike(element);
+        targetIndex = flattenIntoArray(target, original, element, elementLen, targetIndex, depth - 1) - 1;
+      } else {
+        doesNotExceedSafeInteger(targetIndex + 1);
+        target[targetIndex] = element;
+      }
+
+      targetIndex++;
+    }
+    sourceIndex++;
+  }
+  return targetIndex;
+};
+
+module.exports = flattenIntoArray;
diff --git a/node_modules/core-js/internals/freezing.js b/node_modules/core-js/internals/freezing.js
new file mode 100644
index 0000000..17212ad
--- /dev/null
+++ b/node_modules/core-js/internals/freezing.js
@@ -0,0 +1,7 @@
+'use strict';
+var fails = require('../internals/fails');
+
+module.exports = !fails(function () {
+  // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing
+  return Object.isExtensible(Object.preventExtensions({}));
+});
diff --git a/node_modules/core-js/internals/function-apply.js b/node_modules/core-js/internals/function-apply.js
new file mode 100644
index 0000000..ad3faca
--- /dev/null
+++ b/node_modules/core-js/internals/function-apply.js
@@ -0,0 +1,11 @@
+'use strict';
+var NATIVE_BIND = require('../internals/function-bind-native');
+
+var FunctionPrototype = Function.prototype;
+var apply = FunctionPrototype.apply;
+var call = FunctionPrototype.call;
+
+// eslint-disable-next-line es/no-function-prototype-bind, es/no-reflect -- safe
+module.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {
+  return call.apply(apply, arguments);
+});
diff --git a/node_modules/core-js/internals/function-bind-context.js b/node_modules/core-js/internals/function-bind-context.js
new file mode 100644
index 0000000..73378e8
--- /dev/null
+++ b/node_modules/core-js/internals/function-bind-context.js
@@ -0,0 +1,14 @@
+'use strict';
+var uncurryThis = require('../internals/function-uncurry-this-clause');
+var aCallable = require('../internals/a-callable');
+var NATIVE_BIND = require('../internals/function-bind-native');
+
+var bind = uncurryThis(uncurryThis.bind);
+
+// optional / simple context binding
+module.exports = function (fn, that) {
+  aCallable(fn);
+  return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {
+    return fn.apply(that, arguments);
+  };
+};
diff --git a/node_modules/core-js/internals/function-bind-native.js b/node_modules/core-js/internals/function-bind-native.js
new file mode 100644
index 0000000..424f934
--- /dev/null
+++ b/node_modules/core-js/internals/function-bind-native.js
@@ -0,0 +1,9 @@
+'use strict';
+var fails = require('../internals/fails');
+
+module.exports = !fails(function () {
+  // eslint-disable-next-line es/no-function-prototype-bind -- safe
+  var test = (function () { /* empty */ }).bind();
+  // eslint-disable-next-line no-prototype-builtins -- safe
+  return typeof test != 'function' || test.hasOwnProperty('prototype');
+});
diff --git a/node_modules/core-js/internals/function-bind.js b/node_modules/core-js/internals/function-bind.js
new file mode 100644
index 0000000..fe22ec5
--- /dev/null
+++ b/node_modules/core-js/internals/function-bind.js
@@ -0,0 +1,36 @@
+'use strict';
+var uncurryThis = require('../internals/function-uncurry-this');
+var aCallable = require('../internals/a-callable');
+var isObject = require('../internals/is-object');
+var hasOwn = require('../internals/has-own-property');
+var arraySlice = require('../internals/array-slice');
+var NATIVE_BIND = require('../internals/function-bind-native');
+
+var $Function = Function;
+var concat = uncurryThis([].concat);
+var join = uncurryThis([].join);
+var factories = {};
+
+var construct = function (C, argsLength, args) {
+  if (!hasOwn(factories, argsLength)) {
+    var list = [];
+    var i = 0;
+    for (; i < argsLength; i++) list[i] = 'a[' + i + ']';
+    factories[argsLength] = $Function('C,a', 'return new C(' + join(list, ',') + ')');
+  } return factories[argsLength](C, args);
+};
+
+// `Function.prototype.bind` method implementation
+// https://tc39.es/ecma262/#sec-function.prototype.bind
+// eslint-disable-next-line es/no-function-prototype-bind -- detection
+module.exports = NATIVE_BIND ? $Function.bind : function bind(that /* , ...args */) {
+  var F = aCallable(this);
+  var Prototype = F.prototype;
+  var partArgs = arraySlice(arguments, 1);
+  var boundFunction = function bound(/* args... */) {
+    var args = concat(partArgs, arraySlice(arguments));
+    return this instanceof boundFunction ? construct(F, args.length, args) : F.apply(that, args);
+  };
+  if (isObject(Prototype)) boundFunction.prototype = Prototype;
+  return boundFunction;
+};
diff --git a/node_modules/core-js/internals/function-call.js b/node_modules/core-js/internals/function-call.js
new file mode 100644
index 0000000..122c3f4
--- /dev/null
+++ b/node_modules/core-js/internals/function-call.js
@@ -0,0 +1,8 @@
+'use strict';
+var NATIVE_BIND = require('../internals/function-bind-native');
+
+var call = Function.prototype.call;
+// eslint-disable-next-line es/no-function-prototype-bind -- safe
+module.exports = NATIVE_BIND ? call.bind(call) : function () {
+  return call.apply(call, arguments);
+};
diff --git a/node_modules/core-js/internals/function-demethodize.js b/node_modules/core-js/internals/function-demethodize.js
new file mode 100644
index 0000000..0ba9d43
--- /dev/null
+++ b/node_modules/core-js/internals/function-demethodize.js
@@ -0,0 +1,7 @@
+'use strict';
+var uncurryThis = require('../internals/function-uncurry-this');
+var aCallable = require('../internals/a-callable');
+
+module.exports = function demethodize() {
+  return uncurryThis(aCallable(this));
+};
diff --git a/node_modules/core-js/internals/function-name.js b/node_modules/core-js/internals/function-name.js
new file mode 100644
index 0000000..ce6fdd9
--- /dev/null
+++ b/node_modules/core-js/internals/function-name.js
@@ -0,0 +1,18 @@
+'use strict';
+var DESCRIPTORS = require('../internals/descriptors');
+var hasOwn = require('../internals/has-own-property');
+
+var FunctionPrototype = Function.prototype;
+// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
+var getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;
+
+var EXISTS = hasOwn(FunctionPrototype, 'name');
+// additional protection from minified / mangled / dropped function names
+var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';
+var CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));
+
+module.exports = {
+  EXISTS: EXISTS,
+  PROPER: PROPER,
+  CONFIGURABLE: CONFIGURABLE
+};
diff --git a/node_modules/core-js/internals/function-uncurry-this-accessor.js b/node_modules/core-js/internals/function-uncurry-this-accessor.js
new file mode 100644
index 0000000..4d5ef18
--- /dev/null
+++ b/node_modules/core-js/internals/function-uncurry-this-accessor.js
@@ -0,0 +1,10 @@
+'use strict';
+var uncurryThis = require('../internals/function-uncurry-this');
+var aCallable = require('../internals/a-callable');
+
+module.exports = function (object, key, method) {
+  try {
+    // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
+    return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));
+  } catch (error) { /* empty */ }
+};
diff --git a/node_modules/core-js/internals/function-uncurry-this-clause.js b/node_modules/core-js/internals/function-uncurry-this-clause.js
new file mode 100644
index 0000000..7589e4b
--- /dev/null
+++ b/node_modules/core-js/internals/function-uncurry-this-clause.js
@@ -0,0 +1,10 @@
+'use strict';
+var classofRaw = require('../internals/classof-raw');
+var uncurryThis = require('../internals/function-uncurry-this');
+
+module.exports = function (fn) {
+  // Nashorn bug:
+  //   https://github.com/zloirock/core-js/issues/1128
+  //   https://github.com/zloirock/core-js/issues/1130
+  if (classofRaw(fn) === 'Function') return uncurryThis(fn);
+};
diff --git a/node_modules/core-js/internals/function-uncurry-this.js b/node_modules/core-js/internals/function-uncurry-this.js
new file mode 100644
index 0000000..cd1c9ee
--- /dev/null
+++ b/node_modules/core-js/internals/function-uncurry-this.js
@@ -0,0 +1,13 @@
+'use strict';
+var NATIVE_BIND = require('../internals/function-bind-native');
+
+var FunctionPrototype = Function.prototype;
+var call = FunctionPrototype.call;
+// eslint-disable-next-line es/no-function-prototype-bind -- safe
+var uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);
+
+module.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {
+  return function () {
+    return call.apply(fn, arguments);
+  };
+};
diff --git a/node_modules/core-js/internals/get-alphabet-option.js b/node_modules/core-js/internals/get-alphabet-option.js
new file mode 100644
index 0000000..216d169
--- /dev/null
+++ b/node_modules/core-js/internals/get-alphabet-option.js
@@ -0,0 +1,8 @@
+'use strict';
+var $TypeError = TypeError;
+
+module.exports = function (options) {
+  var alphabet = options && options.alphabet;
+  if (alphabet === undefined || alphabet === 'base64' || alphabet === 'base64url') return alphabet || 'base64';
+  throw new $TypeError('Incorrect `alphabet` option');
+};
diff --git a/node_modules/core-js/internals/get-async-iterator-flattenable.js b/node_modules/core-js/internals/get-async-iterator-flattenable.js
new file mode 100644
index 0000000..4cd7d04
--- /dev/null
+++ b/node_modules/core-js/internals/get-async-iterator-flattenable.js
@@ -0,0 +1,30 @@
+'use strict';
+var call = require('../internals/function-call');
+var isCallable = require('../internals/is-callable');
+var anObject = require('../internals/an-object');
+var getIteratorDirect = require('../internals/get-iterator-direct');
+var getIteratorMethod = require('../internals/get-iterator-method');
+var getMethod = require('../internals/get-method');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var AsyncFromSyncIterator = require('../internals/async-from-sync-iterator');
+
+var ASYNC_ITERATOR = wellKnownSymbol('asyncIterator');
+
+module.exports = function (obj) {
+  var object = anObject(obj);
+  var alreadyAsync = true;
+  var method = getMethod(object, ASYNC_ITERATOR);
+  var iterator;
+  if (!isCallable(method)) {
+    method = getIteratorMethod(object);
+    alreadyAsync = false;
+  }
+  if (method !== undefined) {
+    iterator = call(method, object);
+  } else {
+    iterator = object;
+    alreadyAsync = true;
+  }
+  anObject(iterator);
+  return getIteratorDirect(alreadyAsync ? iterator : new AsyncFromSyncIterator(getIteratorDirect(iterator)));
+};
diff --git a/node_modules/core-js/internals/get-async-iterator.js b/node_modules/core-js/internals/get-async-iterator.js
new file mode 100644
index 0000000..b25b75f
--- /dev/null
+++ b/node_modules/core-js/internals/get-async-iterator.js
@@ -0,0 +1,15 @@
+'use strict';
+var call = require('../internals/function-call');
+var AsyncFromSyncIterator = require('../internals/async-from-sync-iterator');
+var anObject = require('../internals/an-object');
+var getIterator = require('../internals/get-iterator');
+var getIteratorDirect = require('../internals/get-iterator-direct');
+var getMethod = require('../internals/get-method');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+var ASYNC_ITERATOR = wellKnownSymbol('asyncIterator');
+
+module.exports = function (it, usingIterator) {
+  var method = arguments.length < 2 ? getMethod(it, ASYNC_ITERATOR) : usingIterator;
+  return method ? anObject(call(method, it)) : new AsyncFromSyncIterator(getIteratorDirect(getIterator(it)));
+};
diff --git a/node_modules/core-js/internals/get-built-in-node-module.js b/node_modules/core-js/internals/get-built-in-node-module.js
new file mode 100644
index 0000000..93ba567
--- /dev/null
+++ b/node_modules/core-js/internals/get-built-in-node-module.js
@@ -0,0 +1,15 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+var IS_NODE = require('../internals/environment-is-node');
+
+module.exports = function (name) {
+  if (IS_NODE) {
+    try {
+      return globalThis.process.getBuiltinModule(name);
+    } catch (error) { /* empty */ }
+    try {
+      // eslint-disable-next-line no-new-func -- safe
+      return Function('return require("' + name + '")')();
+    } catch (error) { /* empty */ }
+  }
+};
diff --git a/node_modules/core-js/internals/get-built-in-prototype-method.js b/node_modules/core-js/internals/get-built-in-prototype-method.js
new file mode 100644
index 0000000..ad05404
--- /dev/null
+++ b/node_modules/core-js/internals/get-built-in-prototype-method.js
@@ -0,0 +1,8 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+
+module.exports = function (CONSTRUCTOR, METHOD) {
+  var Constructor = globalThis[CONSTRUCTOR];
+  var Prototype = Constructor && Constructor.prototype;
+  return Prototype && Prototype[METHOD];
+};
diff --git a/node_modules/core-js/internals/get-built-in.js b/node_modules/core-js/internals/get-built-in.js
new file mode 100644
index 0000000..b685be5
--- /dev/null
+++ b/node_modules/core-js/internals/get-built-in.js
@@ -0,0 +1,11 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+var isCallable = require('../internals/is-callable');
+
+var aFunction = function (argument) {
+  return isCallable(argument) ? argument : undefined;
+};
+
+module.exports = function (namespace, method) {
+  return arguments.length < 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method];
+};
diff --git a/node_modules/core-js/internals/get-iterator-direct.js b/node_modules/core-js/internals/get-iterator-direct.js
new file mode 100644
index 0000000..b321956
--- /dev/null
+++ b/node_modules/core-js/internals/get-iterator-direct.js
@@ -0,0 +1,10 @@
+'use strict';
+// `GetIteratorDirect(obj)` abstract operation
+// https://tc39.es/proposal-iterator-helpers/#sec-getiteratordirect
+module.exports = function (obj) {
+  return {
+    iterator: obj,
+    next: obj.next,
+    done: false
+  };
+};
diff --git a/node_modules/core-js/internals/get-iterator-flattenable.js b/node_modules/core-js/internals/get-iterator-flattenable.js
new file mode 100644
index 0000000..e9ea9c4
--- /dev/null
+++ b/node_modules/core-js/internals/get-iterator-flattenable.js
@@ -0,0 +1,11 @@
+'use strict';
+var call = require('../internals/function-call');
+var anObject = require('../internals/an-object');
+var getIteratorDirect = require('../internals/get-iterator-direct');
+var getIteratorMethod = require('../internals/get-iterator-method');
+
+module.exports = function (obj, stringHandling) {
+  if (!stringHandling || typeof obj !== 'string') anObject(obj);
+  var method = getIteratorMethod(obj);
+  return getIteratorDirect(anObject(method !== undefined ? call(method, obj) : obj));
+};
diff --git a/node_modules/core-js/internals/get-iterator-method.js b/node_modules/core-js/internals/get-iterator-method.js
new file mode 100644
index 0000000..7c1a58b
--- /dev/null
+++ b/node_modules/core-js/internals/get-iterator-method.js
@@ -0,0 +1,14 @@
+'use strict';
+var classof = require('../internals/classof');
+var getMethod = require('../internals/get-method');
+var isNullOrUndefined = require('../internals/is-null-or-undefined');
+var Iterators = require('../internals/iterators');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+var ITERATOR = wellKnownSymbol('iterator');
+
+module.exports = function (it) {
+  if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)
+    || getMethod(it, '@@iterator')
+    || Iterators[classof(it)];
+};
diff --git a/node_modules/core-js/internals/get-iterator.js b/node_modules/core-js/internals/get-iterator.js
new file mode 100644
index 0000000..2b4c53e
--- /dev/null
+++ b/node_modules/core-js/internals/get-iterator.js
@@ -0,0 +1,14 @@
+'use strict';
+var call = require('../internals/function-call');
+var aCallable = require('../internals/a-callable');
+var anObject = require('../internals/an-object');
+var tryToString = require('../internals/try-to-string');
+var getIteratorMethod = require('../internals/get-iterator-method');
+
+var $TypeError = TypeError;
+
+module.exports = function (argument, usingIterator) {
+  var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;
+  if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));
+  throw new $TypeError(tryToString(argument) + ' is not iterable');
+};
diff --git a/node_modules/core-js/internals/get-json-replacer-function.js b/node_modules/core-js/internals/get-json-replacer-function.js
new file mode 100644
index 0000000..abfdce4
--- /dev/null
+++ b/node_modules/core-js/internals/get-json-replacer-function.js
@@ -0,0 +1,30 @@
+'use strict';
+var uncurryThis = require('../internals/function-uncurry-this');
+var isArray = require('../internals/is-array');
+var isCallable = require('../internals/is-callable');
+var classof = require('../internals/classof-raw');
+var toString = require('../internals/to-string');
+
+var push = uncurryThis([].push);
+
+module.exports = function (replacer) {
+  if (isCallable(replacer)) return replacer;
+  if (!isArray(replacer)) return;
+  var rawLength = replacer.length;
+  var keys = [];
+  for (var i = 0; i < rawLength; i++) {
+    var element = replacer[i];
+    if (typeof element == 'string') push(keys, element);
+    else if (typeof element == 'number' || classof(element) === 'Number' || classof(element) === 'String') push(keys, toString(element));
+  }
+  var keysLength = keys.length;
+  var root = true;
+  return function (key, value) {
+    if (root) {
+      root = false;
+      return value;
+    }
+    if (isArray(this)) return value;
+    for (var j = 0; j < keysLength; j++) if (keys[j] === key) return value;
+  };
+};
diff --git a/node_modules/core-js/internals/get-method.js b/node_modules/core-js/internals/get-method.js
new file mode 100644
index 0000000..dd3c10c
--- /dev/null
+++ b/node_modules/core-js/internals/get-method.js
@@ -0,0 +1,10 @@
+'use strict';
+var aCallable = require('../internals/a-callable');
+var isNullOrUndefined = require('../internals/is-null-or-undefined');
+
+// `GetMethod` abstract operation
+// https://tc39.es/ecma262/#sec-getmethod
+module.exports = function (V, P) {
+  var func = V[P];
+  return isNullOrUndefined(func) ? undefined : aCallable(func);
+};
diff --git a/node_modules/core-js/internals/get-set-record.js b/node_modules/core-js/internals/get-set-record.js
new file mode 100644
index 0000000..ab43f32
--- /dev/null
+++ b/node_modules/core-js/internals/get-set-record.js
@@ -0,0 +1,40 @@
+'use strict';
+var aCallable = require('../internals/a-callable');
+var anObject = require('../internals/an-object');
+var call = require('../internals/function-call');
+var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
+var getIteratorDirect = require('../internals/get-iterator-direct');
+
+var INVALID_SIZE = 'Invalid size';
+var $RangeError = RangeError;
+var $TypeError = TypeError;
+var max = Math.max;
+
+var SetRecord = function (set, intSize) {
+  this.set = set;
+  this.size = max(intSize, 0);
+  this.has = aCallable(set.has);
+  this.keys = aCallable(set.keys);
+};
+
+SetRecord.prototype = {
+  getIterator: function () {
+    return getIteratorDirect(anObject(call(this.keys, this.set)));
+  },
+  includes: function (it) {
+    return call(this.has, this.set, it);
+  }
+};
+
+// `GetSetRecord` abstract operation
+// https://tc39.es/proposal-set-methods/#sec-getsetrecord
+module.exports = function (obj) {
+  anObject(obj);
+  var numSize = +obj.size;
+  // NOTE: If size is undefined, then numSize will be NaN
+  // eslint-disable-next-line no-self-compare -- NaN check
+  if (numSize !== numSize) throw new $TypeError(INVALID_SIZE);
+  var intSize = toIntegerOrInfinity(numSize);
+  if (intSize < 0) throw new $RangeError(INVALID_SIZE);
+  return new SetRecord(obj, intSize);
+};
diff --git a/node_modules/core-js/internals/get-substitution.js b/node_modules/core-js/internals/get-substitution.js
new file mode 100644
index 0000000..fcb8860
--- /dev/null
+++ b/node_modules/core-js/internals/get-substitution.js
@@ -0,0 +1,46 @@
+'use strict';
+var uncurryThis = require('../internals/function-uncurry-this');
+var toObject = require('../internals/to-object');
+
+var floor = Math.floor;
+var charAt = uncurryThis(''.charAt);
+var replace = uncurryThis(''.replace);
+var stringSlice = uncurryThis(''.slice);
+// eslint-disable-next-line redos/no-vulnerable -- safe
+var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d{1,2}|<[^>]*>)/g;
+var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d{1,2})/g;
+
+// `GetSubstitution` abstract operation
+// https://tc39.es/ecma262/#sec-getsubstitution
+module.exports = function (matched, str, position, captures, namedCaptures, replacement) {
+  var tailPos = position + matched.length;
+  var m = captures.length;
+  var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;
+  if (namedCaptures !== undefined) {
+    namedCaptures = toObject(namedCaptures);
+    symbols = SUBSTITUTION_SYMBOLS;
+  }
+  return replace(replacement, symbols, function (match, ch) {
+    var capture;
+    switch (charAt(ch, 0)) {
+      case '$': return '$';
+      case '&': return matched;
+      case '`': return stringSlice(str, 0, position);
+      case "'": return stringSlice(str, tailPos);
+      case '<':
+        capture = namedCaptures[stringSlice(ch, 1, -1)];
+        break;
+      default: // \d\d?
+        var n = +ch;
+        if (n === 0) return match;
+        if (n > m) {
+          var f = floor(n / 10);
+          if (f === 0) return match;
+          if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);
+          return match;
+        }
+        capture = captures[n - 1];
+    }
+    return capture === undefined ? '' : capture;
+  });
+};
diff --git a/node_modules/core-js/internals/global-this.js b/node_modules/core-js/internals/global-this.js
new file mode 100644
index 0000000..a154678
--- /dev/null
+++ b/node_modules/core-js/internals/global-this.js
@@ -0,0 +1,16 @@
+'use strict';
+var check = function (it) {
+  return it && it.Math === Math && it;
+};
+
+// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
+module.exports =
+  // eslint-disable-next-line es/no-global-this -- safe
+  check(typeof globalThis == 'object' && globalThis) ||
+  check(typeof window == 'object' && window) ||
+  // eslint-disable-next-line no-restricted-globals -- safe
+  check(typeof self == 'object' && self) ||
+  check(typeof global == 'object' && global) ||
+  check(typeof this == 'object' && this) ||
+  // eslint-disable-next-line no-new-func -- fallback
+  (function () { return this; })() || Function('return this')();
diff --git a/node_modules/core-js/internals/has-own-property.js b/node_modules/core-js/internals/has-own-property.js
new file mode 100644
index 0000000..336d800
--- /dev/null
+++ b/node_modules/core-js/internals/has-own-property.js
@@ -0,0 +1,12 @@
+'use strict';
+var uncurryThis = require('../internals/function-uncurry-this');
+var toObject = require('../internals/to-object');
+
+var hasOwnProperty = uncurryThis({}.hasOwnProperty);
+
+// `HasOwnProperty` abstract operation
+// https://tc39.es/ecma262/#sec-hasownproperty
+// eslint-disable-next-line es/no-object-hasown -- safe
+module.exports = Object.hasOwn || function hasOwn(it, key) {
+  return hasOwnProperty(toObject(it), key);
+};
diff --git a/node_modules/core-js/internals/hidden-keys.js b/node_modules/core-js/internals/hidden-keys.js
new file mode 100644
index 0000000..648a166
--- /dev/null
+++ b/node_modules/core-js/internals/hidden-keys.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = {};
diff --git a/node_modules/core-js/internals/host-report-errors.js b/node_modules/core-js/internals/host-report-errors.js
new file mode 100644
index 0000000..1f3b26a
--- /dev/null
+++ b/node_modules/core-js/internals/host-report-errors.js
@@ -0,0 +1,7 @@
+'use strict';
+module.exports = function (a, b) {
+  try {
+    // eslint-disable-next-line no-console -- safe
+    arguments.length === 1 ? console.error(a) : console.error(a, b);
+  } catch (error) { /* empty */ }
+};
diff --git a/node_modules/core-js/internals/html.js b/node_modules/core-js/internals/html.js
new file mode 100644
index 0000000..b8da90e
--- /dev/null
+++ b/node_modules/core-js/internals/html.js
@@ -0,0 +1,4 @@
+'use strict';
+var getBuiltIn = require('../internals/get-built-in');
+
+module.exports = getBuiltIn('document', 'documentElement');
diff --git a/node_modules/core-js/internals/ie8-dom-define.js b/node_modules/core-js/internals/ie8-dom-define.js
new file mode 100644
index 0000000..22719e8
--- /dev/null
+++ b/node_modules/core-js/internals/ie8-dom-define.js
@@ -0,0 +1,12 @@
+'use strict';
+var DESCRIPTORS = require('../internals/descriptors');
+var fails = require('../internals/fails');
+var createElement = require('../internals/document-create-element');
+
+// Thanks to IE8 for its funny defineProperty
+module.exports = !DESCRIPTORS && !fails(function () {
+  // eslint-disable-next-line es/no-object-defineproperty -- required for testing
+  return Object.defineProperty(createElement('div'), 'a', {
+    get: function () { return 7; }
+  }).a !== 7;
+});
diff --git a/node_modules/core-js/internals/ieee754.js b/node_modules/core-js/internals/ieee754.js
new file mode 100644
index 0000000..ae60a47
--- /dev/null
+++ b/node_modules/core-js/internals/ieee754.js
@@ -0,0 +1,103 @@
+'use strict';
+// IEEE754 conversions based on https://github.com/feross/ieee754
+var $Array = Array;
+var abs = Math.abs;
+var pow = Math.pow;
+var floor = Math.floor;
+var log = Math.log;
+var LN2 = Math.LN2;
+
+var pack = function (number, mantissaLength, bytes) {
+  var buffer = $Array(bytes);
+  var exponentLength = bytes * 8 - mantissaLength - 1;
+  var eMax = (1 << exponentLength) - 1;
+  var eBias = eMax >> 1;
+  var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;
+  var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;
+  var index = 0;
+  var exponent, mantissa, c;
+  number = abs(number);
+  // eslint-disable-next-line no-self-compare -- NaN check
+  if (number !== number || number === Infinity) {
+    // eslint-disable-next-line no-self-compare -- NaN check
+    mantissa = number !== number ? 1 : 0;
+    exponent = eMax;
+  } else {
+    exponent = floor(log(number) / LN2);
+    c = pow(2, -exponent);
+    if (number * c < 1) {
+      exponent--;
+      c *= 2;
+    }
+    if (exponent + eBias >= 1) {
+      number += rt / c;
+    } else {
+      number += rt * pow(2, 1 - eBias);
+    }
+    if (number * c >= 2) {
+      exponent++;
+      c /= 2;
+    }
+    if (exponent + eBias >= eMax) {
+      mantissa = 0;
+      exponent = eMax;
+    } else if (exponent + eBias >= 1) {
+      mantissa = (number * c - 1) * pow(2, mantissaLength);
+      exponent += eBias;
+    } else {
+      mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);
+      exponent = 0;
+    }
+  }
+  while (mantissaLength >= 8) {
+    buffer[index++] = mantissa & 255;
+    mantissa /= 256;
+    mantissaLength -= 8;
+  }
+  exponent = exponent << mantissaLength | mantissa;
+  exponentLength += mantissaLength;
+  while (exponentLength > 0) {
+    buffer[index++] = exponent & 255;
+    exponent /= 256;
+    exponentLength -= 8;
+  }
+  buffer[index - 1] |= sign * 128;
+  return buffer;
+};
+
+var unpack = function (buffer, mantissaLength) {
+  var bytes = buffer.length;
+  var exponentLength = bytes * 8 - mantissaLength - 1;
+  var eMax = (1 << exponentLength) - 1;
+  var eBias = eMax >> 1;
+  var nBits = exponentLength - 7;
+  var index = bytes - 1;
+  var sign = buffer[index--];
+  var exponent = sign & 127;
+  var mantissa;
+  sign >>= 7;
+  while (nBits > 0) {
+    exponent = exponent * 256 + buffer[index--];
+    nBits -= 8;
+  }
+  mantissa = exponent & (1 << -nBits) - 1;
+  exponent >>= -nBits;
+  nBits += mantissaLength;
+  while (nBits > 0) {
+    mantissa = mantissa * 256 + buffer[index--];
+    nBits -= 8;
+  }
+  if (exponent === 0) {
+    exponent = 1 - eBias;
+  } else if (exponent === eMax) {
+    return mantissa ? NaN : sign ? -Infinity : Infinity;
+  } else {
+    mantissa += pow(2, mantissaLength);
+    exponent -= eBias;
+  } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);
+};
+
+module.exports = {
+  pack: pack,
+  unpack: unpack
+};
diff --git a/node_modules/core-js/internals/indexed-object.js b/node_modules/core-js/internals/indexed-object.js
new file mode 100644
index 0000000..cea2a9a
--- /dev/null
+++ b/node_modules/core-js/internals/indexed-object.js
@@ -0,0 +1,16 @@
+'use strict';
+var uncurryThis = require('../internals/function-uncurry-this');
+var fails = require('../internals/fails');
+var classof = require('../internals/classof-raw');
+
+var $Object = Object;
+var split = uncurryThis(''.split);
+
+// fallback for non-array-like ES3 and non-enumerable old V8 strings
+module.exports = fails(function () {
+  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346
+  // eslint-disable-next-line no-prototype-builtins -- safe
+  return !$Object('z').propertyIsEnumerable(0);
+}) ? function (it) {
+  return classof(it) === 'String' ? split(it, '') : $Object(it);
+} : $Object;
diff --git a/node_modules/core-js/internals/inherit-if-required.js b/node_modules/core-js/internals/inherit-if-required.js
new file mode 100644
index 0000000..248771d
--- /dev/null
+++ b/node_modules/core-js/internals/inherit-if-required.js
@@ -0,0 +1,19 @@
+'use strict';
+var isCallable = require('../internals/is-callable');
+var isObject = require('../internals/is-object');
+var setPrototypeOf = require('../internals/object-set-prototype-of');
+
+// makes subclassing work correct for wrapped built-ins
+module.exports = function ($this, dummy, Wrapper) {
+  var NewTarget, NewTargetPrototype;
+  if (
+    // it can work only with native `setPrototypeOf`
+    setPrototypeOf &&
+    // we haven't completely correct pre-ES6 way for getting `new.target`, so use this
+    isCallable(NewTarget = dummy.constructor) &&
+    NewTarget !== Wrapper &&
+    isObject(NewTargetPrototype = NewTarget.prototype) &&
+    NewTargetPrototype !== Wrapper.prototype
+  ) setPrototypeOf($this, NewTargetPrototype);
+  return $this;
+};
diff --git a/node_modules/core-js/internals/inspect-source.js b/node_modules/core-js/internals/inspect-source.js
new file mode 100644
index 0000000..eb9e80c
--- /dev/null
+++ b/node_modules/core-js/internals/inspect-source.js
@@ -0,0 +1,15 @@
+'use strict';
+var uncurryThis = require('../internals/function-uncurry-this');
+var isCallable = require('../internals/is-callable');
+var store = require('../internals/shared-store');
+
+var functionToString = uncurryThis(Function.toString);
+
+// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper
+if (!isCallable(store.inspectSource)) {
+  store.inspectSource = function (it) {
+    return functionToString(it);
+  };
+}
+
+module.exports = store.inspectSource;
diff --git a/node_modules/core-js/internals/install-error-cause.js b/node_modules/core-js/internals/install-error-cause.js
new file mode 100644
index 0000000..35f3b93
--- /dev/null
+++ b/node_modules/core-js/internals/install-error-cause.js
@@ -0,0 +1,11 @@
+'use strict';
+var isObject = require('../internals/is-object');
+var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
+
+// `InstallErrorCause` abstract operation
+// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause
+module.exports = function (O, options) {
+  if (isObject(options) && 'cause' in options) {
+    createNonEnumerableProperty(O, 'cause', options.cause);
+  }
+};
diff --git a/node_modules/core-js/internals/internal-metadata.js b/node_modules/core-js/internals/internal-metadata.js
new file mode 100644
index 0000000..df8b338
--- /dev/null
+++ b/node_modules/core-js/internals/internal-metadata.js
@@ -0,0 +1,90 @@
+'use strict';
+var $ = require('../internals/export');
+var uncurryThis = require('../internals/function-uncurry-this');
+var hiddenKeys = require('../internals/hidden-keys');
+var isObject = require('../internals/is-object');
+var hasOwn = require('../internals/has-own-property');
+var defineProperty = require('../internals/object-define-property').f;
+var getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');
+var getOwnPropertyNamesExternalModule = require('../internals/object-get-own-property-names-external');
+var isExtensible = require('../internals/object-is-extensible');
+var uid = require('../internals/uid');
+var FREEZING = require('../internals/freezing');
+
+var REQUIRED = false;
+var METADATA = uid('meta');
+var id = 0;
+
+var setMetadata = function (it) {
+  defineProperty(it, METADATA, { value: {
+    objectID: 'O' + id++, // object ID
+    weakData: {}          // weak collections IDs
+  } });
+};
+
+var fastKey = function (it, create) {
+  // return a primitive with prefix
+  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
+  if (!hasOwn(it, METADATA)) {
+    // can't set metadata to uncaught frozen object
+    if (!isExtensible(it)) return 'F';
+    // not necessary to add metadata
+    if (!create) return 'E';
+    // add missing metadata
+    setMetadata(it);
+  // return object ID
+  } return it[METADATA].objectID;
+};
+
+var getWeakData = function (it, create) {
+  if (!hasOwn(it, METADATA)) {
+    // can't set metadata to uncaught frozen object
+    if (!isExtensible(it)) return true;
+    // not necessary to add metadata
+    if (!create) return false;
+    // add missing metadata
+    setMetadata(it);
+  // return the store of weak collections IDs
+  } return it[METADATA].weakData;
+};
+
+// add metadata on freeze-family methods calling
+var onFreeze = function (it) {
+  if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it);
+  return it;
+};
+
+var enable = function () {
+  meta.enable = function () { /* empty */ };
+  REQUIRED = true;
+  var getOwnPropertyNames = getOwnPropertyNamesModule.f;
+  var splice = uncurryThis([].splice);
+  var test = {};
+  test[METADATA] = 1;
+
+  // prevent exposing of metadata key
+  if (getOwnPropertyNames(test).length) {
+    getOwnPropertyNamesModule.f = function (it) {
+      var result = getOwnPropertyNames(it);
+      for (var i = 0, length = result.length; i < length; i++) {
+        if (result[i] === METADATA) {
+          splice(result, i, 1);
+          break;
+        }
+      } return result;
+    };
+
+    $({ target: 'Object', stat: true, forced: true }, {
+      getOwnPropertyNames: getOwnPropertyNamesExternalModule.f
+    });
+  }
+};
+
+var meta = module.exports = {
+  enable: enable,
+  fastKey: fastKey,
+  getWeakData: getWeakData,
+  onFreeze: onFreeze
+};
+
+hiddenKeys[METADATA] = true;
diff --git a/node_modules/core-js/internals/internal-state.js b/node_modules/core-js/internals/internal-state.js
new file mode 100644
index 0000000..83e70b6
--- /dev/null
+++ b/node_modules/core-js/internals/internal-state.js
@@ -0,0 +1,71 @@
+'use strict';
+var NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');
+var globalThis = require('../internals/global-this');
+var isObject = require('../internals/is-object');
+var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
+var hasOwn = require('../internals/has-own-property');
+var shared = require('../internals/shared-store');
+var sharedKey = require('../internals/shared-key');
+var hiddenKeys = require('../internals/hidden-keys');
+
+var OBJECT_ALREADY_INITIALIZED = 'Object already initialized';
+var TypeError = globalThis.TypeError;
+var WeakMap = globalThis.WeakMap;
+var set, get, has;
+
+var enforce = function (it) {
+  return has(it) ? get(it) : set(it, {});
+};
+
+var getterFor = function (TYPE) {
+  return function (it) {
+    var state;
+    if (!isObject(it) || (state = get(it)).type !== TYPE) {
+      throw new TypeError('Incompatible receiver, ' + TYPE + ' required');
+    } return state;
+  };
+};
+
+if (NATIVE_WEAK_MAP || shared.state) {
+  var store = shared.state || (shared.state = new WeakMap());
+  /* eslint-disable no-self-assign -- prototype methods protection */
+  store.get = store.get;
+  store.has = store.has;
+  store.set = store.set;
+  /* eslint-enable no-self-assign -- prototype methods protection */
+  set = function (it, metadata) {
+    if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);
+    metadata.facade = it;
+    store.set(it, metadata);
+    return metadata;
+  };
+  get = function (it) {
+    return store.get(it) || {};
+  };
+  has = function (it) {
+    return store.has(it);
+  };
+} else {
+  var STATE = sharedKey('state');
+  hiddenKeys[STATE] = true;
+  set = function (it, metadata) {
+    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);
+    metadata.facade = it;
+    createNonEnumerableProperty(it, STATE, metadata);
+    return metadata;
+  };
+  get = function (it) {
+    return hasOwn(it, STATE) ? it[STATE] : {};
+  };
+  has = function (it) {
+    return hasOwn(it, STATE);
+  };
+}
+
+module.exports = {
+  set: set,
+  get: get,
+  has: has,
+  enforce: enforce,
+  getterFor: getterFor
+};
diff --git a/node_modules/core-js/internals/is-array-iterator-method.js b/node_modules/core-js/internals/is-array-iterator-method.js
new file mode 100644
index 0000000..6878983
--- /dev/null
+++ b/node_modules/core-js/internals/is-array-iterator-method.js
@@ -0,0 +1,11 @@
+'use strict';
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var Iterators = require('../internals/iterators');
+
+var ITERATOR = wellKnownSymbol('iterator');
+var ArrayPrototype = Array.prototype;
+
+// check on default Array iterator
+module.exports = function (it) {
+  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);
+};
diff --git a/node_modules/core-js/internals/is-array.js b/node_modules/core-js/internals/is-array.js
new file mode 100644
index 0000000..14ea3b0
--- /dev/null
+++ b/node_modules/core-js/internals/is-array.js
@@ -0,0 +1,9 @@
+'use strict';
+var classof = require('../internals/classof-raw');
+
+// `IsArray` abstract operation
+// https://tc39.es/ecma262/#sec-isarray
+// eslint-disable-next-line es/no-array-isarray -- safe
+module.exports = Array.isArray || function isArray(argument) {
+  return classof(argument) === 'Array';
+};
diff --git a/node_modules/core-js/internals/is-big-int-array.js b/node_modules/core-js/internals/is-big-int-array.js
new file mode 100644
index 0000000..7599b57
--- /dev/null
+++ b/node_modules/core-js/internals/is-big-int-array.js
@@ -0,0 +1,7 @@
+'use strict';
+var classof = require('../internals/classof');
+
+module.exports = function (it) {
+  var klass = classof(it);
+  return klass === 'BigInt64Array' || klass === 'BigUint64Array';
+};
diff --git a/node_modules/core-js/internals/is-callable.js b/node_modules/core-js/internals/is-callable.js
new file mode 100644
index 0000000..bf80463
--- /dev/null
+++ b/node_modules/core-js/internals/is-callable.js
@@ -0,0 +1,12 @@
+'use strict';
+// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot
+var documentAll = typeof document == 'object' && document.all;
+
+// `IsCallable` abstract operation
+// https://tc39.es/ecma262/#sec-iscallable
+// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing
+module.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {
+  return typeof argument == 'function' || argument === documentAll;
+} : function (argument) {
+  return typeof argument == 'function';
+};
diff --git a/node_modules/core-js/internals/is-constructor.js b/node_modules/core-js/internals/is-constructor.js
new file mode 100644
index 0000000..36d7342
--- /dev/null
+++ b/node_modules/core-js/internals/is-constructor.js
@@ -0,0 +1,52 @@
+'use strict';
+var uncurryThis = require('../internals/function-uncurry-this');
+var fails = require('../internals/fails');
+var isCallable = require('../internals/is-callable');
+var classof = require('../internals/classof');
+var getBuiltIn = require('../internals/get-built-in');
+var inspectSource = require('../internals/inspect-source');
+
+var noop = function () { /* empty */ };
+var construct = getBuiltIn('Reflect', 'construct');
+var constructorRegExp = /^\s*(?:class|function)\b/;
+var exec = uncurryThis(constructorRegExp.exec);
+var INCORRECT_TO_STRING = !constructorRegExp.test(noop);
+
+var isConstructorModern = function isConstructor(argument) {
+  if (!isCallable(argument)) return false;
+  try {
+    construct(noop, [], argument);
+    return true;
+  } catch (error) {
+    return false;
+  }
+};
+
+var isConstructorLegacy = function isConstructor(argument) {
+  if (!isCallable(argument)) return false;
+  switch (classof(argument)) {
+    case 'AsyncFunction':
+    case 'GeneratorFunction':
+    case 'AsyncGeneratorFunction': return false;
+  }
+  try {
+    // we can't check .prototype since constructors produced by .bind haven't it
+    // `Function#toString` throws on some built-it function in some legacy engines
+    // (for example, `DOMQuad` and similar in FF41-)
+    return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));
+  } catch (error) {
+    return true;
+  }
+};
+
+isConstructorLegacy.sham = true;
+
+// `IsConstructor` abstract operation
+// https://tc39.es/ecma262/#sec-isconstructor
+module.exports = !construct || fails(function () {
+  var called;
+  return isConstructorModern(isConstructorModern.call)
+    || !isConstructorModern(Object)
+    || !isConstructorModern(function () { called = true; })
+    || called;
+}) ? isConstructorLegacy : isConstructorModern;
diff --git a/node_modules/core-js/internals/is-data-descriptor.js b/node_modules/core-js/internals/is-data-descriptor.js
new file mode 100644
index 0000000..201e35b
--- /dev/null
+++ b/node_modules/core-js/internals/is-data-descriptor.js
@@ -0,0 +1,6 @@
+'use strict';
+var hasOwn = require('../internals/has-own-property');
+
+module.exports = function (descriptor) {
+  return descriptor !== undefined && (hasOwn(descriptor, 'value') || hasOwn(descriptor, 'writable'));
+};
diff --git a/node_modules/core-js/internals/is-forced.js b/node_modules/core-js/internals/is-forced.js
new file mode 100644
index 0000000..acd8cc4
--- /dev/null
+++ b/node_modules/core-js/internals/is-forced.js
@@ -0,0 +1,23 @@
+'use strict';
+var fails = require('../internals/fails');
+var isCallable = require('../internals/is-callable');
+
+var replacement = /#|\.prototype\./;
+
+var isForced = function (feature, detection) {
+  var value = data[normalize(feature)];
+  return value === POLYFILL ? true
+    : value === NATIVE ? false
+    : isCallable(detection) ? fails(detection)
+    : !!detection;
+};
+
+var normalize = isForced.normalize = function (string) {
+  return String(string).replace(replacement, '.').toLowerCase();
+};
+
+var data = isForced.data = {};
+var NATIVE = isForced.NATIVE = 'N';
+var POLYFILL = isForced.POLYFILL = 'P';
+
+module.exports = isForced;
diff --git a/node_modules/core-js/internals/is-integral-number.js b/node_modules/core-js/internals/is-integral-number.js
new file mode 100644
index 0000000..f2bbf69
--- /dev/null
+++ b/node_modules/core-js/internals/is-integral-number.js
@@ -0,0 +1,11 @@
+'use strict';
+var isObject = require('../internals/is-object');
+
+var floor = Math.floor;
+
+// `IsIntegralNumber` abstract operation
+// https://tc39.es/ecma262/#sec-isintegralnumber
+// eslint-disable-next-line es/no-number-isinteger -- safe
+module.exports = Number.isInteger || function isInteger(it) {
+  return !isObject(it) && isFinite(it) && floor(it) === it;
+};
diff --git a/node_modules/core-js/internals/is-iterable.js b/node_modules/core-js/internals/is-iterable.js
new file mode 100644
index 0000000..94560dc
--- /dev/null
+++ b/node_modules/core-js/internals/is-iterable.js
@@ -0,0 +1,17 @@
+'use strict';
+var classof = require('../internals/classof');
+var hasOwn = require('../internals/has-own-property');
+var isNullOrUndefined = require('../internals/is-null-or-undefined');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var Iterators = require('../internals/iterators');
+
+var ITERATOR = wellKnownSymbol('iterator');
+var $Object = Object;
+
+module.exports = function (it) {
+  if (isNullOrUndefined(it)) return false;
+  var O = $Object(it);
+  return O[ITERATOR] !== undefined
+    || '@@iterator' in O
+    || hasOwn(Iterators, classof(O));
+};
diff --git a/node_modules/core-js/internals/is-null-or-undefined.js b/node_modules/core-js/internals/is-null-or-undefined.js
new file mode 100644
index 0000000..8e687dd
--- /dev/null
+++ b/node_modules/core-js/internals/is-null-or-undefined.js
@@ -0,0 +1,6 @@
+'use strict';
+// we can't use just `it == null` since of `document.all` special case
+// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec
+module.exports = function (it) {
+  return it === null || it === undefined;
+};
diff --git a/node_modules/core-js/internals/is-object.js b/node_modules/core-js/internals/is-object.js
new file mode 100644
index 0000000..8ed1588
--- /dev/null
+++ b/node_modules/core-js/internals/is-object.js
@@ -0,0 +1,6 @@
+'use strict';
+var isCallable = require('../internals/is-callable');
+
+module.exports = function (it) {
+  return typeof it == 'object' ? it !== null : isCallable(it);
+};
diff --git a/node_modules/core-js/internals/is-possible-prototype.js b/node_modules/core-js/internals/is-possible-prototype.js
new file mode 100644
index 0000000..80e976d
--- /dev/null
+++ b/node_modules/core-js/internals/is-possible-prototype.js
@@ -0,0 +1,6 @@
+'use strict';
+var isObject = require('../internals/is-object');
+
+module.exports = function (argument) {
+  return isObject(argument) || argument === null;
+};
diff --git a/node_modules/core-js/internals/is-pure.js b/node_modules/core-js/internals/is-pure.js
new file mode 100644
index 0000000..ae7c87b
--- /dev/null
+++ b/node_modules/core-js/internals/is-pure.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = false;
diff --git a/node_modules/core-js/internals/is-raw-json.js b/node_modules/core-js/internals/is-raw-json.js
new file mode 100644
index 0000000..f6cab85
--- /dev/null
+++ b/node_modules/core-js/internals/is-raw-json.js
@@ -0,0 +1,9 @@
+'use strict';
+var isObject = require('../internals/is-object');
+var getInternalState = require('../internals/internal-state').get;
+
+module.exports = function isRawJSON(O) {
+  if (!isObject(O)) return false;
+  var state = getInternalState(O);
+  return !!state && state.type === 'RawJSON';
+};
diff --git a/node_modules/core-js/internals/is-regexp.js b/node_modules/core-js/internals/is-regexp.js
new file mode 100644
index 0000000..a4b287a
--- /dev/null
+++ b/node_modules/core-js/internals/is-regexp.js
@@ -0,0 +1,13 @@
+'use strict';
+var isObject = require('../internals/is-object');
+var classof = require('../internals/classof-raw');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+var MATCH = wellKnownSymbol('match');
+
+// `IsRegExp` abstract operation
+// https://tc39.es/ecma262/#sec-isregexp
+module.exports = function (it) {
+  var isRegExp;
+  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) === 'RegExp');
+};
diff --git a/node_modules/core-js/internals/is-symbol.js b/node_modules/core-js/internals/is-symbol.js
new file mode 100644
index 0000000..8c62ff9
--- /dev/null
+++ b/node_modules/core-js/internals/is-symbol.js
@@ -0,0 +1,14 @@
+'use strict';
+var getBuiltIn = require('../internals/get-built-in');
+var isCallable = require('../internals/is-callable');
+var isPrototypeOf = require('../internals/object-is-prototype-of');
+var USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');
+
+var $Object = Object;
+
+module.exports = USE_SYMBOL_AS_UID ? function (it) {
+  return typeof it == 'symbol';
+} : function (it) {
+  var $Symbol = getBuiltIn('Symbol');
+  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));
+};
diff --git a/node_modules/core-js/internals/iterate-simple.js b/node_modules/core-js/internals/iterate-simple.js
new file mode 100644
index 0000000..f940cc3
--- /dev/null
+++ b/node_modules/core-js/internals/iterate-simple.js
@@ -0,0 +1,12 @@
+'use strict';
+var call = require('../internals/function-call');
+
+module.exports = function (record, fn, ITERATOR_INSTEAD_OF_RECORD) {
+  var iterator = ITERATOR_INSTEAD_OF_RECORD ? record : record.iterator;
+  var next = record.next;
+  var step, result;
+  while (!(step = call(next, iterator)).done) {
+    result = fn(step.value);
+    if (result !== undefined) return result;
+  }
+};
diff --git a/node_modules/core-js/internals/iterate.js b/node_modules/core-js/internals/iterate.js
new file mode 100644
index 0000000..bcfa5cf
--- /dev/null
+++ b/node_modules/core-js/internals/iterate.js
@@ -0,0 +1,69 @@
+'use strict';
+var bind = require('../internals/function-bind-context');
+var call = require('../internals/function-call');
+var anObject = require('../internals/an-object');
+var tryToString = require('../internals/try-to-string');
+var isArrayIteratorMethod = require('../internals/is-array-iterator-method');
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+var isPrototypeOf = require('../internals/object-is-prototype-of');
+var getIterator = require('../internals/get-iterator');
+var getIteratorMethod = require('../internals/get-iterator-method');
+var iteratorClose = require('../internals/iterator-close');
+
+var $TypeError = TypeError;
+
+var Result = function (stopped, result) {
+  this.stopped = stopped;
+  this.result = result;
+};
+
+var ResultPrototype = Result.prototype;
+
+module.exports = function (iterable, unboundFunction, options) {
+  var that = options && options.that;
+  var AS_ENTRIES = !!(options && options.AS_ENTRIES);
+  var IS_RECORD = !!(options && options.IS_RECORD);
+  var IS_ITERATOR = !!(options && options.IS_ITERATOR);
+  var INTERRUPTED = !!(options && options.INTERRUPTED);
+  var fn = bind(unboundFunction, that);
+  var iterator, iterFn, index, length, result, next, step;
+
+  var stop = function (condition) {
+    if (iterator) iteratorClose(iterator, 'normal', condition);
+    return new Result(true, condition);
+  };
+
+  var callFn = function (value) {
+    if (AS_ENTRIES) {
+      anObject(value);
+      return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);
+    } return INTERRUPTED ? fn(value, stop) : fn(value);
+  };
+
+  if (IS_RECORD) {
+    iterator = iterable.iterator;
+  } else if (IS_ITERATOR) {
+    iterator = iterable;
+  } else {
+    iterFn = getIteratorMethod(iterable);
+    if (!iterFn) throw new $TypeError(tryToString(iterable) + ' is not iterable');
+    // optimisation for array iterators
+    if (isArrayIteratorMethod(iterFn)) {
+      for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {
+        result = callFn(iterable[index]);
+        if (result && isPrototypeOf(ResultPrototype, result)) return result;
+      } return new Result(false);
+    }
+    iterator = getIterator(iterable, iterFn);
+  }
+
+  next = IS_RECORD ? iterable.next : iterator.next;
+  while (!(step = call(next, iterator)).done) {
+    try {
+      result = callFn(step.value);
+    } catch (error) {
+      iteratorClose(iterator, 'throw', error);
+    }
+    if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;
+  } return new Result(false);
+};
diff --git a/node_modules/core-js/internals/iterator-close.js b/node_modules/core-js/internals/iterator-close.js
new file mode 100644
index 0000000..df2d1e0
--- /dev/null
+++ b/node_modules/core-js/internals/iterator-close.js
@@ -0,0 +1,24 @@
+'use strict';
+var call = require('../internals/function-call');
+var anObject = require('../internals/an-object');
+var getMethod = require('../internals/get-method');
+
+module.exports = function (iterator, kind, value) {
+  var innerResult, innerError;
+  anObject(iterator);
+  try {
+    innerResult = getMethod(iterator, 'return');
+    if (!innerResult) {
+      if (kind === 'throw') throw value;
+      return value;
+    }
+    innerResult = call(innerResult, iterator);
+  } catch (error) {
+    innerError = true;
+    innerResult = error;
+  }
+  if (kind === 'throw') throw value;
+  if (innerError) throw innerResult;
+  anObject(innerResult);
+  return value;
+};
diff --git a/node_modules/core-js/internals/iterator-create-constructor.js b/node_modules/core-js/internals/iterator-create-constructor.js
new file mode 100644
index 0000000..e519c9f
--- /dev/null
+++ b/node_modules/core-js/internals/iterator-create-constructor.js
@@ -0,0 +1,16 @@
+'use strict';
+var IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;
+var create = require('../internals/object-create');
+var createPropertyDescriptor = require('../internals/create-property-descriptor');
+var setToStringTag = require('../internals/set-to-string-tag');
+var Iterators = require('../internals/iterators');
+
+var returnThis = function () { return this; };
+
+module.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {
+  var TO_STRING_TAG = NAME + ' Iterator';
+  IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });
+  setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);
+  Iterators[TO_STRING_TAG] = returnThis;
+  return IteratorConstructor;
+};
diff --git a/node_modules/core-js/internals/iterator-create-proxy.js b/node_modules/core-js/internals/iterator-create-proxy.js
new file mode 100644
index 0000000..a0f2102
--- /dev/null
+++ b/node_modules/core-js/internals/iterator-create-proxy.js
@@ -0,0 +1,78 @@
+'use strict';
+var call = require('../internals/function-call');
+var create = require('../internals/object-create');
+var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
+var defineBuiltIns = require('../internals/define-built-ins');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var InternalStateModule = require('../internals/internal-state');
+var getMethod = require('../internals/get-method');
+var IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;
+var createIterResultObject = require('../internals/create-iter-result-object');
+var iteratorClose = require('../internals/iterator-close');
+
+var TO_STRING_TAG = wellKnownSymbol('toStringTag');
+var ITERATOR_HELPER = 'IteratorHelper';
+var WRAP_FOR_VALID_ITERATOR = 'WrapForValidIterator';
+var setInternalState = InternalStateModule.set;
+
+var createIteratorProxyPrototype = function (IS_ITERATOR) {
+  var getInternalState = InternalStateModule.getterFor(IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER);
+
+  return defineBuiltIns(create(IteratorPrototype), {
+    next: function next() {
+      var state = getInternalState(this);
+      // for simplification:
+      //   for `%WrapForValidIteratorPrototype%.next` or with `state.returnHandlerResult` our `nextHandler` returns `IterResultObject`
+      //   for `%IteratorHelperPrototype%.next` - just a value
+      if (IS_ITERATOR) return state.nextHandler();
+      if (state.done) return createIterResultObject(undefined, true);
+      try {
+        var result = state.nextHandler();
+        return state.returnHandlerResult ? result : createIterResultObject(result, state.done);
+      } catch (error) {
+        state.done = true;
+        throw error;
+      }
+    },
+    'return': function () {
+      var state = getInternalState(this);
+      var iterator = state.iterator;
+      state.done = true;
+      if (IS_ITERATOR) {
+        var returnMethod = getMethod(iterator, 'return');
+        return returnMethod ? call(returnMethod, iterator) : createIterResultObject(undefined, true);
+      }
+      if (state.inner) try {
+        iteratorClose(state.inner.iterator, 'normal');
+      } catch (error) {
+        return iteratorClose(iterator, 'throw', error);
+      }
+      if (iterator) iteratorClose(iterator, 'normal');
+      return createIterResultObject(undefined, true);
+    }
+  });
+};
+
+var WrapForValidIteratorPrototype = createIteratorProxyPrototype(true);
+var IteratorHelperPrototype = createIteratorProxyPrototype(false);
+
+createNonEnumerableProperty(IteratorHelperPrototype, TO_STRING_TAG, 'Iterator Helper');
+
+module.exports = function (nextHandler, IS_ITERATOR, RETURN_HANDLER_RESULT) {
+  var IteratorProxy = function Iterator(record, state) {
+    if (state) {
+      state.iterator = record.iterator;
+      state.next = record.next;
+    } else state = record;
+    state.type = IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER;
+    state.returnHandlerResult = !!RETURN_HANDLER_RESULT;
+    state.nextHandler = nextHandler;
+    state.counter = 0;
+    state.done = false;
+    setInternalState(this, state);
+  };
+
+  IteratorProxy.prototype = IS_ITERATOR ? WrapForValidIteratorPrototype : IteratorHelperPrototype;
+
+  return IteratorProxy;
+};
diff --git a/node_modules/core-js/internals/iterator-define.js b/node_modules/core-js/internals/iterator-define.js
new file mode 100644
index 0000000..c1eebd4
--- /dev/null
+++ b/node_modules/core-js/internals/iterator-define.js
@@ -0,0 +1,102 @@
+'use strict';
+var $ = require('../internals/export');
+var call = require('../internals/function-call');
+var IS_PURE = require('../internals/is-pure');
+var FunctionName = require('../internals/function-name');
+var isCallable = require('../internals/is-callable');
+var createIteratorConstructor = require('../internals/iterator-create-constructor');
+var getPrototypeOf = require('../internals/object-get-prototype-of');
+var setPrototypeOf = require('../internals/object-set-prototype-of');
+var setToStringTag = require('../internals/set-to-string-tag');
+var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
+var defineBuiltIn = require('../internals/define-built-in');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var Iterators = require('../internals/iterators');
+var IteratorsCore = require('../internals/iterators-core');
+
+var PROPER_FUNCTION_NAME = FunctionName.PROPER;
+var CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;
+var IteratorPrototype = IteratorsCore.IteratorPrototype;
+var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;
+var ITERATOR = wellKnownSymbol('iterator');
+var KEYS = 'keys';
+var VALUES = 'values';
+var ENTRIES = 'entries';
+
+var returnThis = function () { return this; };
+
+module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {
+  createIteratorConstructor(IteratorConstructor, NAME, next);
+
+  var getIterationMethod = function (KIND) {
+    if (KIND === DEFAULT && defaultIterator) return defaultIterator;
+    if (!BUGGY_SAFARI_ITERATORS && KIND && KIND in IterablePrototype) return IterablePrototype[KIND];
+
+    switch (KIND) {
+      case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };
+      case VALUES: return function values() { return new IteratorConstructor(this, KIND); };
+      case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };
+    }
+
+    return function () { return new IteratorConstructor(this); };
+  };
+
+  var TO_STRING_TAG = NAME + ' Iterator';
+  var INCORRECT_VALUES_NAME = false;
+  var IterablePrototype = Iterable.prototype;
+  var nativeIterator = IterablePrototype[ITERATOR]
+    || IterablePrototype['@@iterator']
+    || DEFAULT && IterablePrototype[DEFAULT];
+  var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);
+  var anyNativeIterator = NAME === 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;
+  var CurrentIteratorPrototype, methods, KEY;
+
+  // fix native
+  if (anyNativeIterator) {
+    CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));
+    if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {
+      if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {
+        if (setPrototypeOf) {
+          setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);
+        } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {
+          defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis);
+        }
+      }
+      // Set @@toStringTag to native iterators
+      setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);
+      if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;
+    }
+  }
+
+  // fix Array.prototype.{ values, @@iterator }.name in V8 / FF
+  if (PROPER_FUNCTION_NAME && DEFAULT === VALUES && nativeIterator && nativeIterator.name !== VALUES) {
+    if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {
+      createNonEnumerableProperty(IterablePrototype, 'name', VALUES);
+    } else {
+      INCORRECT_VALUES_NAME = true;
+      defaultIterator = function values() { return call(nativeIterator, this); };
+    }
+  }
+
+  // export additional methods
+  if (DEFAULT) {
+    methods = {
+      values: getIterationMethod(VALUES),
+      keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),
+      entries: getIterationMethod(ENTRIES)
+    };
+    if (FORCED) for (KEY in methods) {
+      if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {
+        defineBuiltIn(IterablePrototype, KEY, methods[KEY]);
+      }
+    } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);
+  }
+
+  // define iterator
+  if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {
+    defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });
+  }
+  Iterators[NAME] = defaultIterator;
+
+  return methods;
+};
diff --git a/node_modules/core-js/internals/iterator-indexed.js b/node_modules/core-js/internals/iterator-indexed.js
new file mode 100644
index 0000000..e7e6676
--- /dev/null
+++ b/node_modules/core-js/internals/iterator-indexed.js
@@ -0,0 +1,13 @@
+'use strict';
+var call = require('../internals/function-call');
+var map = require('../internals/iterator-map');
+
+var callback = function (value, counter) {
+  return [counter, value];
+};
+
+// `Iterator.prototype.indexed` method
+// https://github.com/tc39/proposal-iterator-helpers
+module.exports = function indexed() {
+  return call(map, this, callback);
+};
diff --git a/node_modules/core-js/internals/iterator-map.js b/node_modules/core-js/internals/iterator-map.js
new file mode 100644
index 0000000..005abe0
--- /dev/null
+++ b/node_modules/core-js/internals/iterator-map.js
@@ -0,0 +1,24 @@
+'use strict';
+var call = require('../internals/function-call');
+var aCallable = require('../internals/a-callable');
+var anObject = require('../internals/an-object');
+var getIteratorDirect = require('../internals/get-iterator-direct');
+var createIteratorProxy = require('../internals/iterator-create-proxy');
+var callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');
+
+var IteratorProxy = createIteratorProxy(function () {
+  var iterator = this.iterator;
+  var result = anObject(call(this.next, iterator));
+  var done = this.done = !!result.done;
+  if (!done) return callWithSafeIterationClosing(iterator, this.mapper, [result.value, this.counter++], true);
+});
+
+// `Iterator.prototype.map` method
+// https://github.com/tc39/proposal-iterator-helpers
+module.exports = function map(mapper) {
+  anObject(this);
+  aCallable(mapper);
+  return new IteratorProxy(getIteratorDirect(this), {
+    mapper: mapper
+  });
+};
diff --git a/node_modules/core-js/internals/iterators-core.js b/node_modules/core-js/internals/iterators-core.js
new file mode 100644
index 0000000..9ebcaae
--- /dev/null
+++ b/node_modules/core-js/internals/iterators-core.js
@@ -0,0 +1,49 @@
+'use strict';
+var fails = require('../internals/fails');
+var isCallable = require('../internals/is-callable');
+var isObject = require('../internals/is-object');
+var create = require('../internals/object-create');
+var getPrototypeOf = require('../internals/object-get-prototype-of');
+var defineBuiltIn = require('../internals/define-built-in');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var IS_PURE = require('../internals/is-pure');
+
+var ITERATOR = wellKnownSymbol('iterator');
+var BUGGY_SAFARI_ITERATORS = false;
+
+// `%IteratorPrototype%` object
+// https://tc39.es/ecma262/#sec-%iteratorprototype%-object
+var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;
+
+/* eslint-disable es/no-array-prototype-keys -- safe */
+if ([].keys) {
+  arrayIterator = [].keys();
+  // Safari 8 has buggy iterators w/o `next`
+  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;
+  else {
+    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));
+    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;
+  }
+}
+
+var NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {
+  var test = {};
+  // FF44- legacy iterators case
+  return IteratorPrototype[ITERATOR].call(test) !== test;
+});
+
+if (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};
+else if (IS_PURE) IteratorPrototype = create(IteratorPrototype);
+
+// `%IteratorPrototype%[@@iterator]()` method
+// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator
+if (!isCallable(IteratorPrototype[ITERATOR])) {
+  defineBuiltIn(IteratorPrototype, ITERATOR, function () {
+    return this;
+  });
+}
+
+module.exports = {
+  IteratorPrototype: IteratorPrototype,
+  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS
+};
diff --git a/node_modules/core-js/internals/iterators.js b/node_modules/core-js/internals/iterators.js
new file mode 100644
index 0000000..648a166
--- /dev/null
+++ b/node_modules/core-js/internals/iterators.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = {};
diff --git a/node_modules/core-js/internals/length-of-array-like.js b/node_modules/core-js/internals/length-of-array-like.js
new file mode 100644
index 0000000..8cddc2f
--- /dev/null
+++ b/node_modules/core-js/internals/length-of-array-like.js
@@ -0,0 +1,8 @@
+'use strict';
+var toLength = require('../internals/to-length');
+
+// `LengthOfArrayLike` abstract operation
+// https://tc39.es/ecma262/#sec-lengthofarraylike
+module.exports = function (obj) {
+  return toLength(obj.length);
+};
diff --git a/node_modules/core-js/internals/make-built-in.js b/node_modules/core-js/internals/make-built-in.js
new file mode 100644
index 0000000..5743098
--- /dev/null
+++ b/node_modules/core-js/internals/make-built-in.js
@@ -0,0 +1,55 @@
+'use strict';
+var uncurryThis = require('../internals/function-uncurry-this');
+var fails = require('../internals/fails');
+var isCallable = require('../internals/is-callable');
+var hasOwn = require('../internals/has-own-property');
+var DESCRIPTORS = require('../internals/descriptors');
+var CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;
+var inspectSource = require('../internals/inspect-source');
+var InternalStateModule = require('../internals/internal-state');
+
+var enforceInternalState = InternalStateModule.enforce;
+var getInternalState = InternalStateModule.get;
+var $String = String;
+// eslint-disable-next-line es/no-object-defineproperty -- safe
+var defineProperty = Object.defineProperty;
+var stringSlice = uncurryThis(''.slice);
+var replace = uncurryThis(''.replace);
+var join = uncurryThis([].join);
+
+var CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {
+  return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;
+});
+
+var TEMPLATE = String(String).split('String');
+
+var makeBuiltIn = module.exports = function (value, name, options) {
+  if (stringSlice($String(name), 0, 7) === 'Symbol(') {
+    name = '[' + replace($String(name), /^Symbol\(([^)]*)\).*$/, '$1') + ']';
+  }
+  if (options && options.getter) name = 'get ' + name;
+  if (options && options.setter) name = 'set ' + name;
+  if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {
+    if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });
+    else value.name = name;
+  }
+  if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {
+    defineProperty(value, 'length', { value: options.arity });
+  }
+  try {
+    if (options && hasOwn(options, 'constructor') && options.constructor) {
+      if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });
+    // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable
+    } else if (value.prototype) value.prototype = undefined;
+  } catch (error) { /* empty */ }
+  var state = enforceInternalState(value);
+  if (!hasOwn(state, 'source')) {
+    state.source = join(TEMPLATE, typeof name == 'string' ? name : '');
+  } return value;
+};
+
+// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
+// eslint-disable-next-line no-extend-native -- required
+Function.prototype.toString = makeBuiltIn(function toString() {
+  return isCallable(this) && getInternalState(this).source || inspectSource(this);
+}, 'toString');
diff --git a/node_modules/core-js/internals/map-helpers.js b/node_modules/core-js/internals/map-helpers.js
new file mode 100644
index 0000000..8120c7d
--- /dev/null
+++ b/node_modules/core-js/internals/map-helpers.js
@@ -0,0 +1,15 @@
+'use strict';
+var uncurryThis = require('../internals/function-uncurry-this');
+
+// eslint-disable-next-line es/no-map -- safe
+var MapPrototype = Map.prototype;
+
+module.exports = {
+  // eslint-disable-next-line es/no-map -- safe
+  Map: Map,
+  set: uncurryThis(MapPrototype.set),
+  get: uncurryThis(MapPrototype.get),
+  has: uncurryThis(MapPrototype.has),
+  remove: uncurryThis(MapPrototype['delete']),
+  proto: MapPrototype
+};
diff --git a/node_modules/core-js/internals/map-iterate.js b/node_modules/core-js/internals/map-iterate.js
new file mode 100644
index 0000000..2c56a0b
--- /dev/null
+++ b/node_modules/core-js/internals/map-iterate.js
@@ -0,0 +1,16 @@
+'use strict';
+var uncurryThis = require('../internals/function-uncurry-this');
+var iterateSimple = require('../internals/iterate-simple');
+var MapHelpers = require('../internals/map-helpers');
+
+var Map = MapHelpers.Map;
+var MapPrototype = MapHelpers.proto;
+var forEach = uncurryThis(MapPrototype.forEach);
+var entries = uncurryThis(MapPrototype.entries);
+var next = entries(new Map()).next;
+
+module.exports = function (map, fn, interruptible) {
+  return interruptible ? iterateSimple({ iterator: entries(map), next: next }, function (entry) {
+    return fn(entry[1], entry[0]);
+  }) : forEach(map, fn);
+};
diff --git a/node_modules/core-js/internals/map-upsert.js b/node_modules/core-js/internals/map-upsert.js
new file mode 100644
index 0000000..28f17f3
--- /dev/null
+++ b/node_modules/core-js/internals/map-upsert.js
@@ -0,0 +1,31 @@
+'use strict';
+var call = require('../internals/function-call');
+var aCallable = require('../internals/a-callable');
+var isCallable = require('../internals/is-callable');
+var anObject = require('../internals/an-object');
+
+var $TypeError = TypeError;
+
+// `Map.prototype.upsert` method
+// https://github.com/tc39/proposal-upsert
+module.exports = function upsert(key, updateFn /* , insertFn */) {
+  var map = anObject(this);
+  var get = aCallable(map.get);
+  var has = aCallable(map.has);
+  var set = aCallable(map.set);
+  var insertFn = arguments.length > 2 ? arguments[2] : undefined;
+  var value;
+  if (!isCallable(updateFn) && !isCallable(insertFn)) {
+    throw new $TypeError('At least one callback required');
+  }
+  if (call(has, map, key)) {
+    value = call(get, map, key);
+    if (isCallable(updateFn)) {
+      value = updateFn(value);
+      call(set, map, key, value);
+    }
+  } else if (isCallable(insertFn)) {
+    value = insertFn();
+    call(set, map, key, value);
+  } return value;
+};
diff --git a/node_modules/core-js/internals/math-expm1.js b/node_modules/core-js/internals/math-expm1.js
new file mode 100644
index 0000000..f0a1a96
--- /dev/null
+++ b/node_modules/core-js/internals/math-expm1.js
@@ -0,0 +1,17 @@
+'use strict';
+// eslint-disable-next-line es/no-math-expm1 -- safe
+var $expm1 = Math.expm1;
+var exp = Math.exp;
+
+// `Math.expm1` method implementation
+// https://tc39.es/ecma262/#sec-math.expm1
+module.exports = (!$expm1
+  // Old FF bug
+  // eslint-disable-next-line no-loss-of-precision -- required for old engines
+  || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168
+  // Tor Browser bug
+  || $expm1(-2e-17) !== -2e-17
+) ? function expm1(x) {
+  var n = +x;
+  return n === 0 ? n : n > -1e-6 && n < 1e-6 ? n + n * n / 2 : exp(n) - 1;
+} : $expm1;
diff --git a/node_modules/core-js/internals/math-float-round.js b/node_modules/core-js/internals/math-float-round.js
new file mode 100644
index 0000000..5f86a0c
--- /dev/null
+++ b/node_modules/core-js/internals/math-float-round.js
@@ -0,0 +1,19 @@
+'use strict';
+var sign = require('../internals/math-sign');
+var roundTiesToEven = require('../internals/math-round-ties-to-even');
+
+var abs = Math.abs;
+
+var EPSILON = 2.220446049250313e-16; // Number.EPSILON
+
+module.exports = function (x, FLOAT_EPSILON, FLOAT_MAX_VALUE, FLOAT_MIN_VALUE) {
+  var n = +x;
+  var absolute = abs(n);
+  var s = sign(n);
+  if (absolute < FLOAT_MIN_VALUE) return s * roundTiesToEven(absolute / FLOAT_MIN_VALUE / FLOAT_EPSILON) * FLOAT_MIN_VALUE * FLOAT_EPSILON;
+  var a = (1 + FLOAT_EPSILON / EPSILON) * absolute;
+  var result = a - (a - absolute);
+  // eslint-disable-next-line no-self-compare -- NaN check
+  if (result > FLOAT_MAX_VALUE || result !== result) return s * Infinity;
+  return s * result;
+};
diff --git a/node_modules/core-js/internals/math-fround.js b/node_modules/core-js/internals/math-fround.js
new file mode 100644
index 0000000..7fc1909
--- /dev/null
+++ b/node_modules/core-js/internals/math-fround.js
@@ -0,0 +1,13 @@
+'use strict';
+var floatRound = require('../internals/math-float-round');
+
+var FLOAT32_EPSILON = 1.1920928955078125e-7; // 2 ** -23;
+var FLOAT32_MAX_VALUE = 3.4028234663852886e+38; // 2 ** 128 - 2 ** 104
+var FLOAT32_MIN_VALUE = 1.1754943508222875e-38; // 2 ** -126;
+
+// `Math.fround` method implementation
+// https://tc39.es/ecma262/#sec-math.fround
+// eslint-disable-next-line es/no-math-fround -- safe
+module.exports = Math.fround || function fround(x) {
+  return floatRound(x, FLOAT32_EPSILON, FLOAT32_MAX_VALUE, FLOAT32_MIN_VALUE);
+};
diff --git a/node_modules/core-js/internals/math-log10.js b/node_modules/core-js/internals/math-log10.js
new file mode 100644
index 0000000..c6a47b2
--- /dev/null
+++ b/node_modules/core-js/internals/math-log10.js
@@ -0,0 +1,8 @@
+'use strict';
+var log = Math.log;
+var LOG10E = Math.LOG10E;
+
+// eslint-disable-next-line es/no-math-log10 -- safe
+module.exports = Math.log10 || function log10(x) {
+  return log(x) * LOG10E;
+};
diff --git a/node_modules/core-js/internals/math-log1p.js b/node_modules/core-js/internals/math-log1p.js
new file mode 100644
index 0000000..6917bf4
--- /dev/null
+++ b/node_modules/core-js/internals/math-log1p.js
@@ -0,0 +1,10 @@
+'use strict';
+var log = Math.log;
+
+// `Math.log1p` method implementation
+// https://tc39.es/ecma262/#sec-math.log1p
+// eslint-disable-next-line es/no-math-log1p -- safe
+module.exports = Math.log1p || function log1p(x) {
+  var n = +x;
+  return n > -1e-8 && n < 1e-8 ? n - n * n / 2 : log(1 + n);
+};
diff --git a/node_modules/core-js/internals/math-log2.js b/node_modules/core-js/internals/math-log2.js
new file mode 100644
index 0000000..c29b5ab
--- /dev/null
+++ b/node_modules/core-js/internals/math-log2.js
@@ -0,0 +1,10 @@
+'use strict';
+var log = Math.log;
+var LN2 = Math.LN2;
+
+// `Math.log2` method
+// https://tc39.es/ecma262/#sec-math.log2
+// eslint-disable-next-line es/no-math-log2 -- safe
+module.exports = Math.log2 || function log2(x) {
+  return log(x) / LN2;
+};
diff --git a/node_modules/core-js/internals/math-round-ties-to-even.js b/node_modules/core-js/internals/math-round-ties-to-even.js
new file mode 100644
index 0000000..fa5cb60
--- /dev/null
+++ b/node_modules/core-js/internals/math-round-ties-to-even.js
@@ -0,0 +1,7 @@
+'use strict';
+var EPSILON = 2.220446049250313e-16; // Number.EPSILON
+var INVERSE_EPSILON = 1 / EPSILON;
+
+module.exports = function (n) {
+  return n + INVERSE_EPSILON - INVERSE_EPSILON;
+};
diff --git a/node_modules/core-js/internals/math-scale.js b/node_modules/core-js/internals/math-scale.js
new file mode 100644
index 0000000..d3e2ceb
--- /dev/null
+++ b/node_modules/core-js/internals/math-scale.js
@@ -0,0 +1,14 @@
+'use strict';
+// `Math.scale` method implementation
+// https://rwaldron.github.io/proposal-math-extensions/
+module.exports = function scale(x, inLow, inHigh, outLow, outHigh) {
+  var nx = +x;
+  var nInLow = +inLow;
+  var nInHigh = +inHigh;
+  var nOutLow = +outLow;
+  var nOutHigh = +outHigh;
+  // eslint-disable-next-line no-self-compare -- NaN check
+  if (nx !== nx || nInLow !== nInLow || nInHigh !== nInHigh || nOutLow !== nOutLow || nOutHigh !== nOutHigh) return NaN;
+  if (nx === Infinity || nx === -Infinity) return nx;
+  return (nx - nInLow) * (nOutHigh - nOutLow) / (nInHigh - nInLow) + nOutLow;
+};
diff --git a/node_modules/core-js/internals/math-sign.js b/node_modules/core-js/internals/math-sign.js
new file mode 100644
index 0000000..d59578e
--- /dev/null
+++ b/node_modules/core-js/internals/math-sign.js
@@ -0,0 +1,9 @@
+'use strict';
+// `Math.sign` method implementation
+// https://tc39.es/ecma262/#sec-math.sign
+// eslint-disable-next-line es/no-math-sign -- safe
+module.exports = Math.sign || function sign(x) {
+  var n = +x;
+  // eslint-disable-next-line no-self-compare -- NaN check
+  return n === 0 || n !== n ? n : n < 0 ? -1 : 1;
+};
diff --git a/node_modules/core-js/internals/math-trunc.js b/node_modules/core-js/internals/math-trunc.js
new file mode 100644
index 0000000..6d41e54
--- /dev/null
+++ b/node_modules/core-js/internals/math-trunc.js
@@ -0,0 +1,11 @@
+'use strict';
+var ceil = Math.ceil;
+var floor = Math.floor;
+
+// `Math.trunc` method
+// https://tc39.es/ecma262/#sec-math.trunc
+// eslint-disable-next-line es/no-math-trunc -- safe
+module.exports = Math.trunc || function trunc(x) {
+  var n = +x;
+  return (n > 0 ? floor : ceil)(n);
+};
diff --git a/node_modules/core-js/internals/microtask.js b/node_modules/core-js/internals/microtask.js
new file mode 100644
index 0000000..906ffc4
--- /dev/null
+++ b/node_modules/core-js/internals/microtask.js
@@ -0,0 +1,79 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+var safeGetBuiltIn = require('../internals/safe-get-built-in');
+var bind = require('../internals/function-bind-context');
+var macrotask = require('../internals/task').set;
+var Queue = require('../internals/queue');
+var IS_IOS = require('../internals/environment-is-ios');
+var IS_IOS_PEBBLE = require('../internals/environment-is-ios-pebble');
+var IS_WEBOS_WEBKIT = require('../internals/environment-is-webos-webkit');
+var IS_NODE = require('../internals/environment-is-node');
+
+var MutationObserver = globalThis.MutationObserver || globalThis.WebKitMutationObserver;
+var document = globalThis.document;
+var process = globalThis.process;
+var Promise = globalThis.Promise;
+var microtask = safeGetBuiltIn('queueMicrotask');
+var notify, toggle, node, promise, then;
+
+// modern engines have queueMicrotask method
+if (!microtask) {
+  var queue = new Queue();
+
+  var flush = function () {
+    var parent, fn;
+    if (IS_NODE && (parent = process.domain)) parent.exit();
+    while (fn = queue.get()) try {
+      fn();
+    } catch (error) {
+      if (queue.head) notify();
+      throw error;
+    }
+    if (parent) parent.enter();
+  };
+
+  // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339
+  // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898
+  if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {
+    toggle = true;
+    node = document.createTextNode('');
+    new MutationObserver(flush).observe(node, { characterData: true });
+    notify = function () {
+      node.data = toggle = !toggle;
+    };
+  // environments with maybe non-completely correct, but existent Promise
+  } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {
+    // Promise.resolve without an argument throws an error in LG WebOS 2
+    promise = Promise.resolve(undefined);
+    // workaround of WebKit ~ iOS Safari 10.1 bug
+    promise.constructor = Promise;
+    then = bind(promise.then, promise);
+    notify = function () {
+      then(flush);
+    };
+  // Node.js without promises
+  } else if (IS_NODE) {
+    notify = function () {
+      process.nextTick(flush);
+    };
+  // for other environments - macrotask based on:
+  // - setImmediate
+  // - MessageChannel
+  // - window.postMessage
+  // - onreadystatechange
+  // - setTimeout
+  } else {
+    // `webpack` dev server bug on IE global methods - use bind(fn, global)
+    macrotask = bind(macrotask, globalThis);
+    notify = function () {
+      macrotask(flush);
+    };
+  }
+
+  microtask = function (fn) {
+    if (!queue.head) notify();
+    queue.add(fn);
+  };
+}
+
+module.exports = microtask;
diff --git a/node_modules/core-js/internals/native-raw-json.js b/node_modules/core-js/internals/native-raw-json.js
new file mode 100644
index 0000000..96b3531
--- /dev/null
+++ b/node_modules/core-js/internals/native-raw-json.js
@@ -0,0 +1,11 @@
+'use strict';
+/* eslint-disable es/no-json -- safe */
+var fails = require('../internals/fails');
+
+module.exports = !fails(function () {
+  var unsafeInt = '9007199254740993';
+  // eslint-disable-next-line es/no-nonstandard-json-properties -- feature detection
+  var raw = JSON.rawJSON(unsafeInt);
+  // eslint-disable-next-line es/no-nonstandard-json-properties -- feature detection
+  return !JSON.isRawJSON(raw) || JSON.stringify(raw) !== unsafeInt;
+});
diff --git a/node_modules/core-js/internals/new-promise-capability.js b/node_modules/core-js/internals/new-promise-capability.js
new file mode 100644
index 0000000..dac6549
--- /dev/null
+++ b/node_modules/core-js/internals/new-promise-capability.js
@@ -0,0 +1,21 @@
+'use strict';
+var aCallable = require('../internals/a-callable');
+
+var $TypeError = TypeError;
+
+var PromiseCapability = function (C) {
+  var resolve, reject;
+  this.promise = new C(function ($$resolve, $$reject) {
+    if (resolve !== undefined || reject !== undefined) throw new $TypeError('Bad Promise constructor');
+    resolve = $$resolve;
+    reject = $$reject;
+  });
+  this.resolve = aCallable(resolve);
+  this.reject = aCallable(reject);
+};
+
+// `NewPromiseCapability` abstract operation
+// https://tc39.es/ecma262/#sec-newpromisecapability
+module.exports.f = function (C) {
+  return new PromiseCapability(C);
+};
diff --git a/node_modules/core-js/internals/normalize-string-argument.js b/node_modules/core-js/internals/normalize-string-argument.js
new file mode 100644
index 0000000..83d4af7
--- /dev/null
+++ b/node_modules/core-js/internals/normalize-string-argument.js
@@ -0,0 +1,6 @@
+'use strict';
+var toString = require('../internals/to-string');
+
+module.exports = function (argument, $default) {
+  return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);
+};
diff --git a/node_modules/core-js/internals/not-a-nan.js b/node_modules/core-js/internals/not-a-nan.js
new file mode 100644
index 0000000..61ce8f1
--- /dev/null
+++ b/node_modules/core-js/internals/not-a-nan.js
@@ -0,0 +1,8 @@
+'use strict';
+var $RangeError = RangeError;
+
+module.exports = function (it) {
+  // eslint-disable-next-line no-self-compare -- NaN check
+  if (it === it) return it;
+  throw new $RangeError('NaN is not allowed');
+};
diff --git a/node_modules/core-js/internals/not-a-regexp.js b/node_modules/core-js/internals/not-a-regexp.js
new file mode 100644
index 0000000..49c81fb
--- /dev/null
+++ b/node_modules/core-js/internals/not-a-regexp.js
@@ -0,0 +1,10 @@
+'use strict';
+var isRegExp = require('../internals/is-regexp');
+
+var $TypeError = TypeError;
+
+module.exports = function (it) {
+  if (isRegExp(it)) {
+    throw new $TypeError("The method doesn't accept regular expressions");
+  } return it;
+};
diff --git a/node_modules/core-js/internals/number-is-finite.js b/node_modules/core-js/internals/number-is-finite.js
new file mode 100644
index 0000000..d2fe159
--- /dev/null
+++ b/node_modules/core-js/internals/number-is-finite.js
@@ -0,0 +1,11 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+
+var globalIsFinite = globalThis.isFinite;
+
+// `Number.isFinite` method
+// https://tc39.es/ecma262/#sec-number.isfinite
+// eslint-disable-next-line es/no-number-isfinite -- safe
+module.exports = Number.isFinite || function isFinite(it) {
+  return typeof it == 'number' && globalIsFinite(it);
+};
diff --git a/node_modules/core-js/internals/number-parse-float.js b/node_modules/core-js/internals/number-parse-float.js
new file mode 100644
index 0000000..09da20d
--- /dev/null
+++ b/node_modules/core-js/internals/number-parse-float.js
@@ -0,0 +1,23 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+var fails = require('../internals/fails');
+var uncurryThis = require('../internals/function-uncurry-this');
+var toString = require('../internals/to-string');
+var trim = require('../internals/string-trim').trim;
+var whitespaces = require('../internals/whitespaces');
+
+var charAt = uncurryThis(''.charAt);
+var $parseFloat = globalThis.parseFloat;
+var Symbol = globalThis.Symbol;
+var ITERATOR = Symbol && Symbol.iterator;
+var FORCED = 1 / $parseFloat(whitespaces + '-0') !== -Infinity
+  // MS Edge 18- broken with boxed symbols
+  || (ITERATOR && !fails(function () { $parseFloat(Object(ITERATOR)); }));
+
+// `parseFloat` method
+// https://tc39.es/ecma262/#sec-parsefloat-string
+module.exports = FORCED ? function parseFloat(string) {
+  var trimmedString = trim(toString(string));
+  var result = $parseFloat(trimmedString);
+  return result === 0 && charAt(trimmedString, 0) === '-' ? -0 : result;
+} : $parseFloat;
diff --git a/node_modules/core-js/internals/number-parse-int.js b/node_modules/core-js/internals/number-parse-int.js
new file mode 100644
index 0000000..eae2813
--- /dev/null
+++ b/node_modules/core-js/internals/number-parse-int.js
@@ -0,0 +1,23 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+var fails = require('../internals/fails');
+var uncurryThis = require('../internals/function-uncurry-this');
+var toString = require('../internals/to-string');
+var trim = require('../internals/string-trim').trim;
+var whitespaces = require('../internals/whitespaces');
+
+var $parseInt = globalThis.parseInt;
+var Symbol = globalThis.Symbol;
+var ITERATOR = Symbol && Symbol.iterator;
+var hex = /^[+-]?0x/i;
+var exec = uncurryThis(hex.exec);
+var FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22
+  // MS Edge 18- broken with boxed symbols
+  || (ITERATOR && !fails(function () { $parseInt(Object(ITERATOR)); }));
+
+// `parseInt` method
+// https://tc39.es/ecma262/#sec-parseint-string-radix
+module.exports = FORCED ? function parseInt(string, radix) {
+  var S = trim(toString(string));
+  return $parseInt(S, (radix >>> 0) || (exec(hex, S) ? 16 : 10));
+} : $parseInt;
diff --git a/node_modules/core-js/internals/numeric-range-iterator.js b/node_modules/core-js/internals/numeric-range-iterator.js
new file mode 100644
index 0000000..17830a2
--- /dev/null
+++ b/node_modules/core-js/internals/numeric-range-iterator.js
@@ -0,0 +1,106 @@
+'use strict';
+var InternalStateModule = require('../internals/internal-state');
+var createIteratorConstructor = require('../internals/iterator-create-constructor');
+var createIterResultObject = require('../internals/create-iter-result-object');
+var isNullOrUndefined = require('../internals/is-null-or-undefined');
+var isObject = require('../internals/is-object');
+var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
+var DESCRIPTORS = require('../internals/descriptors');
+
+var INCORRECT_RANGE = 'Incorrect Iterator.range arguments';
+var NUMERIC_RANGE_ITERATOR = 'NumericRangeIterator';
+
+var setInternalState = InternalStateModule.set;
+var getInternalState = InternalStateModule.getterFor(NUMERIC_RANGE_ITERATOR);
+
+var $RangeError = RangeError;
+var $TypeError = TypeError;
+
+var $RangeIterator = createIteratorConstructor(function NumericRangeIterator(start, end, option, type, zero, one) {
+  // TODO: Drop the first `typeof` check after removing legacy methods in `core-js@4`
+  if (typeof start != type || (end !== Infinity && end !== -Infinity && typeof end != type)) {
+    throw new $TypeError(INCORRECT_RANGE);
+  }
+  if (start === Infinity || start === -Infinity) {
+    throw new $RangeError(INCORRECT_RANGE);
+  }
+  var ifIncrease = end > start;
+  var inclusiveEnd = false;
+  var step;
+  if (option === undefined) {
+    step = undefined;
+  } else if (isObject(option)) {
+    step = option.step;
+    inclusiveEnd = !!option.inclusive;
+  } else if (typeof option == type) {
+    step = option;
+  } else {
+    throw new $TypeError(INCORRECT_RANGE);
+  }
+  if (isNullOrUndefined(step)) {
+    step = ifIncrease ? one : -one;
+  }
+  if (typeof step != type) {
+    throw new $TypeError(INCORRECT_RANGE);
+  }
+  if (step === Infinity || step === -Infinity || (step === zero && start !== end)) {
+    throw new $RangeError(INCORRECT_RANGE);
+  }
+  // eslint-disable-next-line no-self-compare -- NaN check
+  var hitsEnd = start !== start || end !== end || step !== step || (end > start) !== (step > zero);
+  setInternalState(this, {
+    type: NUMERIC_RANGE_ITERATOR,
+    start: start,
+    end: end,
+    step: step,
+    inclusive: inclusiveEnd,
+    hitsEnd: hitsEnd,
+    currentCount: zero,
+    zero: zero
+  });
+  if (!DESCRIPTORS) {
+    this.start = start;
+    this.end = end;
+    this.step = step;
+    this.inclusive = inclusiveEnd;
+  }
+}, NUMERIC_RANGE_ITERATOR, function next() {
+  var state = getInternalState(this);
+  if (state.hitsEnd) return createIterResultObject(undefined, true);
+  var start = state.start;
+  var end = state.end;
+  var step = state.step;
+  var currentYieldingValue = start + (step * state.currentCount++);
+  if (currentYieldingValue === end) state.hitsEnd = true;
+  var inclusiveEnd = state.inclusive;
+  var endCondition;
+  if (end > start) {
+    endCondition = inclusiveEnd ? currentYieldingValue > end : currentYieldingValue >= end;
+  } else {
+    endCondition = inclusiveEnd ? end > currentYieldingValue : end >= currentYieldingValue;
+  }
+  if (endCondition) {
+    state.hitsEnd = true;
+    return createIterResultObject(undefined, true);
+  } return createIterResultObject(currentYieldingValue, false);
+});
+
+var addGetter = function (key) {
+  defineBuiltInAccessor($RangeIterator.prototype, key, {
+    get: function () {
+      return getInternalState(this)[key];
+    },
+    set: function () { /* empty */ },
+    configurable: true,
+    enumerable: false
+  });
+};
+
+if (DESCRIPTORS) {
+  addGetter('start');
+  addGetter('end');
+  addGetter('inclusive');
+  addGetter('step');
+}
+
+module.exports = $RangeIterator;
diff --git a/node_modules/core-js/internals/object-assign.js b/node_modules/core-js/internals/object-assign.js
new file mode 100644
index 0000000..e102548
--- /dev/null
+++ b/node_modules/core-js/internals/object-assign.js
@@ -0,0 +1,58 @@
+'use strict';
+var DESCRIPTORS = require('../internals/descriptors');
+var uncurryThis = require('../internals/function-uncurry-this');
+var call = require('../internals/function-call');
+var fails = require('../internals/fails');
+var objectKeys = require('../internals/object-keys');
+var getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');
+var propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');
+var toObject = require('../internals/to-object');
+var IndexedObject = require('../internals/indexed-object');
+
+// eslint-disable-next-line es/no-object-assign -- safe
+var $assign = Object.assign;
+// eslint-disable-next-line es/no-object-defineproperty -- required for testing
+var defineProperty = Object.defineProperty;
+var concat = uncurryThis([].concat);
+
+// `Object.assign` method
+// https://tc39.es/ecma262/#sec-object.assign
+module.exports = !$assign || fails(function () {
+  // should have correct order of operations (Edge bug)
+  if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {
+    enumerable: true,
+    get: function () {
+      defineProperty(this, 'b', {
+        value: 3,
+        enumerable: false
+      });
+    }
+  }), { b: 2 })).b !== 1) return true;
+  // should work with symbols and should have deterministic property order (V8 bug)
+  var A = {};
+  var B = {};
+  // eslint-disable-next-line es/no-symbol -- safe
+  var symbol = Symbol('assign detection');
+  var alphabet = 'abcdefghijklmnopqrst';
+  A[symbol] = 7;
+  // eslint-disable-next-line es/no-array-prototype-foreach -- safe
+  alphabet.split('').forEach(function (chr) { B[chr] = chr; });
+  return $assign({}, A)[symbol] !== 7 || objectKeys($assign({}, B)).join('') !== alphabet;
+}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`
+  var T = toObject(target);
+  var argumentsLength = arguments.length;
+  var index = 1;
+  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
+  var propertyIsEnumerable = propertyIsEnumerableModule.f;
+  while (argumentsLength > index) {
+    var S = IndexedObject(arguments[index++]);
+    var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);
+    var length = keys.length;
+    var j = 0;
+    var key;
+    while (length > j) {
+      key = keys[j++];
+      if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];
+    }
+  } return T;
+} : $assign;
diff --git a/node_modules/core-js/internals/object-create.js b/node_modules/core-js/internals/object-create.js
new file mode 100644
index 0000000..e24560e
--- /dev/null
+++ b/node_modules/core-js/internals/object-create.js
@@ -0,0 +1,85 @@
+'use strict';
+/* global ActiveXObject -- old IE, WSH */
+var anObject = require('../internals/an-object');
+var definePropertiesModule = require('../internals/object-define-properties');
+var enumBugKeys = require('../internals/enum-bug-keys');
+var hiddenKeys = require('../internals/hidden-keys');
+var html = require('../internals/html');
+var documentCreateElement = require('../internals/document-create-element');
+var sharedKey = require('../internals/shared-key');
+
+var GT = '>';
+var LT = '<';
+var PROTOTYPE = 'prototype';
+var SCRIPT = 'script';
+var IE_PROTO = sharedKey('IE_PROTO');
+
+var EmptyConstructor = function () { /* empty */ };
+
+var scriptTag = function (content) {
+  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;
+};
+
+// Create object with fake `null` prototype: use ActiveX Object with cleared prototype
+var NullProtoObjectViaActiveX = function (activeXDocument) {
+  activeXDocument.write(scriptTag(''));
+  activeXDocument.close();
+  var temp = activeXDocument.parentWindow.Object;
+  // eslint-disable-next-line no-useless-assignment -- avoid memory leak
+  activeXDocument = null;
+  return temp;
+};
+
+// Create object with fake `null` prototype: use iframe Object with cleared prototype
+var NullProtoObjectViaIFrame = function () {
+  // Thrash, waste and sodomy: IE GC bug
+  var iframe = documentCreateElement('iframe');
+  var JS = 'java' + SCRIPT + ':';
+  var iframeDocument;
+  iframe.style.display = 'none';
+  html.appendChild(iframe);
+  // https://github.com/zloirock/core-js/issues/475
+  iframe.src = String(JS);
+  iframeDocument = iframe.contentWindow.document;
+  iframeDocument.open();
+  iframeDocument.write(scriptTag('document.F=Object'));
+  iframeDocument.close();
+  return iframeDocument.F;
+};
+
+// Check for document.domain and active x support
+// No need to use active x approach when document.domain is not set
+// see https://github.com/es-shims/es5-shim/issues/150
+// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346
+// avoid IE GC bug
+var activeXDocument;
+var NullProtoObject = function () {
+  try {
+    activeXDocument = new ActiveXObject('htmlfile');
+  } catch (error) { /* ignore */ }
+  NullProtoObject = typeof document != 'undefined'
+    ? document.domain && activeXDocument
+      ? NullProtoObjectViaActiveX(activeXDocument) // old IE
+      : NullProtoObjectViaIFrame()
+    : NullProtoObjectViaActiveX(activeXDocument); // WSH
+  var length = enumBugKeys.length;
+  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];
+  return NullProtoObject();
+};
+
+hiddenKeys[IE_PROTO] = true;
+
+// `Object.create` method
+// https://tc39.es/ecma262/#sec-object.create
+// eslint-disable-next-line es/no-object-create -- safe
+module.exports = Object.create || function create(O, Properties) {
+  var result;
+  if (O !== null) {
+    EmptyConstructor[PROTOTYPE] = anObject(O);
+    result = new EmptyConstructor();
+    EmptyConstructor[PROTOTYPE] = null;
+    // add "__proto__" for Object.getPrototypeOf polyfill
+    result[IE_PROTO] = O;
+  } else result = NullProtoObject();
+  return Properties === undefined ? result : definePropertiesModule.f(result, Properties);
+};
diff --git a/node_modules/core-js/internals/object-define-properties.js b/node_modules/core-js/internals/object-define-properties.js
new file mode 100644
index 0000000..1a1d1bd
--- /dev/null
+++ b/node_modules/core-js/internals/object-define-properties.js
@@ -0,0 +1,21 @@
+'use strict';
+var DESCRIPTORS = require('../internals/descriptors');
+var V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');
+var definePropertyModule = require('../internals/object-define-property');
+var anObject = require('../internals/an-object');
+var toIndexedObject = require('../internals/to-indexed-object');
+var objectKeys = require('../internals/object-keys');
+
+// `Object.defineProperties` method
+// https://tc39.es/ecma262/#sec-object.defineproperties
+// eslint-disable-next-line es/no-object-defineproperties -- safe
+exports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {
+  anObject(O);
+  var props = toIndexedObject(Properties);
+  var keys = objectKeys(Properties);
+  var length = keys.length;
+  var index = 0;
+  var key;
+  while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);
+  return O;
+};
diff --git a/node_modules/core-js/internals/object-define-property.js b/node_modules/core-js/internals/object-define-property.js
new file mode 100644
index 0000000..704d616
--- /dev/null
+++ b/node_modules/core-js/internals/object-define-property.js
@@ -0,0 +1,44 @@
+'use strict';
+var DESCRIPTORS = require('../internals/descriptors');
+var IE8_DOM_DEFINE = require('../internals/ie8-dom-define');
+var V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');
+var anObject = require('../internals/an-object');
+var toPropertyKey = require('../internals/to-property-key');
+
+var $TypeError = TypeError;
+// eslint-disable-next-line es/no-object-defineproperty -- safe
+var $defineProperty = Object.defineProperty;
+// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
+var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
+var ENUMERABLE = 'enumerable';
+var CONFIGURABLE = 'configurable';
+var WRITABLE = 'writable';
+
+// `Object.defineProperty` method
+// https://tc39.es/ecma262/#sec-object.defineproperty
+exports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {
+  anObject(O);
+  P = toPropertyKey(P);
+  anObject(Attributes);
+  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {
+    var current = $getOwnPropertyDescriptor(O, P);
+    if (current && current[WRITABLE]) {
+      O[P] = Attributes.value;
+      Attributes = {
+        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],
+        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],
+        writable: false
+      };
+    }
+  } return $defineProperty(O, P, Attributes);
+} : $defineProperty : function defineProperty(O, P, Attributes) {
+  anObject(O);
+  P = toPropertyKey(P);
+  anObject(Attributes);
+  if (IE8_DOM_DEFINE) try {
+    return $defineProperty(O, P, Attributes);
+  } catch (error) { /* empty */ }
+  if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');
+  if ('value' in Attributes) O[P] = Attributes.value;
+  return O;
+};
diff --git a/node_modules/core-js/internals/object-get-own-property-descriptor.js b/node_modules/core-js/internals/object-get-own-property-descriptor.js
new file mode 100644
index 0000000..1fd4181
--- /dev/null
+++ b/node_modules/core-js/internals/object-get-own-property-descriptor.js
@@ -0,0 +1,23 @@
+'use strict';
+var DESCRIPTORS = require('../internals/descriptors');
+var call = require('../internals/function-call');
+var propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');
+var createPropertyDescriptor = require('../internals/create-property-descriptor');
+var toIndexedObject = require('../internals/to-indexed-object');
+var toPropertyKey = require('../internals/to-property-key');
+var hasOwn = require('../internals/has-own-property');
+var IE8_DOM_DEFINE = require('../internals/ie8-dom-define');
+
+// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
+var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
+
+// `Object.getOwnPropertyDescriptor` method
+// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor
+exports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
+  O = toIndexedObject(O);
+  P = toPropertyKey(P);
+  if (IE8_DOM_DEFINE) try {
+    return $getOwnPropertyDescriptor(O, P);
+  } catch (error) { /* empty */ }
+  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);
+};
diff --git a/node_modules/core-js/internals/object-get-own-property-names-external.js b/node_modules/core-js/internals/object-get-own-property-names-external.js
new file mode 100644
index 0000000..9bafd9a
--- /dev/null
+++ b/node_modules/core-js/internals/object-get-own-property-names-external.js
@@ -0,0 +1,24 @@
+'use strict';
+/* eslint-disable es/no-object-getownpropertynames -- safe */
+var classof = require('../internals/classof-raw');
+var toIndexedObject = require('../internals/to-indexed-object');
+var $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;
+var arraySlice = require('../internals/array-slice');
+
+var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
+  ? Object.getOwnPropertyNames(window) : [];
+
+var getWindowNames = function (it) {
+  try {
+    return $getOwnPropertyNames(it);
+  } catch (error) {
+    return arraySlice(windowNames);
+  }
+};
+
+// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
+module.exports.f = function getOwnPropertyNames(it) {
+  return windowNames && classof(it) === 'Window'
+    ? getWindowNames(it)
+    : $getOwnPropertyNames(toIndexedObject(it));
+};
diff --git a/node_modules/core-js/internals/object-get-own-property-names.js b/node_modules/core-js/internals/object-get-own-property-names.js
new file mode 100644
index 0000000..08c935d
--- /dev/null
+++ b/node_modules/core-js/internals/object-get-own-property-names.js
@@ -0,0 +1,12 @@
+'use strict';
+var internalObjectKeys = require('../internals/object-keys-internal');
+var enumBugKeys = require('../internals/enum-bug-keys');
+
+var hiddenKeys = enumBugKeys.concat('length', 'prototype');
+
+// `Object.getOwnPropertyNames` method
+// https://tc39.es/ecma262/#sec-object.getownpropertynames
+// eslint-disable-next-line es/no-object-getownpropertynames -- safe
+exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
+  return internalObjectKeys(O, hiddenKeys);
+};
diff --git a/node_modules/core-js/internals/object-get-own-property-symbols.js b/node_modules/core-js/internals/object-get-own-property-symbols.js
new file mode 100644
index 0000000..9ee3730
--- /dev/null
+++ b/node_modules/core-js/internals/object-get-own-property-symbols.js
@@ -0,0 +1,3 @@
+'use strict';
+// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe
+exports.f = Object.getOwnPropertySymbols;
diff --git a/node_modules/core-js/internals/object-get-prototype-of.js b/node_modules/core-js/internals/object-get-prototype-of.js
new file mode 100644
index 0000000..75201d3
--- /dev/null
+++ b/node_modules/core-js/internals/object-get-prototype-of.js
@@ -0,0 +1,22 @@
+'use strict';
+var hasOwn = require('../internals/has-own-property');
+var isCallable = require('../internals/is-callable');
+var toObject = require('../internals/to-object');
+var sharedKey = require('../internals/shared-key');
+var CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');
+
+var IE_PROTO = sharedKey('IE_PROTO');
+var $Object = Object;
+var ObjectPrototype = $Object.prototype;
+
+// `Object.getPrototypeOf` method
+// https://tc39.es/ecma262/#sec-object.getprototypeof
+// eslint-disable-next-line es/no-object-getprototypeof -- safe
+module.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {
+  var object = toObject(O);
+  if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];
+  var constructor = object.constructor;
+  if (isCallable(constructor) && object instanceof constructor) {
+    return constructor.prototype;
+  } return object instanceof $Object ? ObjectPrototype : null;
+};
diff --git a/node_modules/core-js/internals/object-is-extensible.js b/node_modules/core-js/internals/object-is-extensible.js
new file mode 100644
index 0000000..1f3d628
--- /dev/null
+++ b/node_modules/core-js/internals/object-is-extensible.js
@@ -0,0 +1,17 @@
+'use strict';
+var fails = require('../internals/fails');
+var isObject = require('../internals/is-object');
+var classof = require('../internals/classof-raw');
+var ARRAY_BUFFER_NON_EXTENSIBLE = require('../internals/array-buffer-non-extensible');
+
+// eslint-disable-next-line es/no-object-isextensible -- safe
+var $isExtensible = Object.isExtensible;
+var FAILS_ON_PRIMITIVES = fails(function () { $isExtensible(1); });
+
+// `Object.isExtensible` method
+// https://tc39.es/ecma262/#sec-object.isextensible
+module.exports = (FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE) ? function isExtensible(it) {
+  if (!isObject(it)) return false;
+  if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) === 'ArrayBuffer') return false;
+  return $isExtensible ? $isExtensible(it) : true;
+} : $isExtensible;
diff --git a/node_modules/core-js/internals/object-is-prototype-of.js b/node_modules/core-js/internals/object-is-prototype-of.js
new file mode 100644
index 0000000..77cca1e
--- /dev/null
+++ b/node_modules/core-js/internals/object-is-prototype-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var uncurryThis = require('../internals/function-uncurry-this');
+
+module.exports = uncurryThis({}.isPrototypeOf);
diff --git a/node_modules/core-js/internals/object-iterator.js b/node_modules/core-js/internals/object-iterator.js
new file mode 100644
index 0000000..a2f0443
--- /dev/null
+++ b/node_modules/core-js/internals/object-iterator.js
@@ -0,0 +1,38 @@
+'use strict';
+var InternalStateModule = require('../internals/internal-state');
+var createIteratorConstructor = require('../internals/iterator-create-constructor');
+var createIterResultObject = require('../internals/create-iter-result-object');
+var hasOwn = require('../internals/has-own-property');
+var objectKeys = require('../internals/object-keys');
+var toObject = require('../internals/to-object');
+
+var OBJECT_ITERATOR = 'Object Iterator';
+var setInternalState = InternalStateModule.set;
+var getInternalState = InternalStateModule.getterFor(OBJECT_ITERATOR);
+
+module.exports = createIteratorConstructor(function ObjectIterator(source, mode) {
+  var object = toObject(source);
+  setInternalState(this, {
+    type: OBJECT_ITERATOR,
+    mode: mode,
+    object: object,
+    keys: objectKeys(object),
+    index: 0
+  });
+}, 'Object', function next() {
+  var state = getInternalState(this);
+  var keys = state.keys;
+  while (true) {
+    if (keys === null || state.index >= keys.length) {
+      state.object = state.keys = null;
+      return createIterResultObject(undefined, true);
+    }
+    var key = keys[state.index++];
+    var object = state.object;
+    if (!hasOwn(object, key)) continue;
+    switch (state.mode) {
+      case 'keys': return createIterResultObject(key, false);
+      case 'values': return createIterResultObject(object[key], false);
+    } /* entries */ return createIterResultObject([key, object[key]], false);
+  }
+});
diff --git a/node_modules/core-js/internals/object-keys-internal.js b/node_modules/core-js/internals/object-keys-internal.js
new file mode 100644
index 0000000..42354cf
--- /dev/null
+++ b/node_modules/core-js/internals/object-keys-internal.js
@@ -0,0 +1,21 @@
+'use strict';
+var uncurryThis = require('../internals/function-uncurry-this');
+var hasOwn = require('../internals/has-own-property');
+var toIndexedObject = require('../internals/to-indexed-object');
+var indexOf = require('../internals/array-includes').indexOf;
+var hiddenKeys = require('../internals/hidden-keys');
+
+var push = uncurryThis([].push);
+
+module.exports = function (object, names) {
+  var O = toIndexedObject(object);
+  var i = 0;
+  var result = [];
+  var key;
+  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);
+  // Don't enum bug & hidden keys
+  while (names.length > i) if (hasOwn(O, key = names[i++])) {
+    ~indexOf(result, key) || push(result, key);
+  }
+  return result;
+};
diff --git a/node_modules/core-js/internals/object-keys.js b/node_modules/core-js/internals/object-keys.js
new file mode 100644
index 0000000..0376135
--- /dev/null
+++ b/node_modules/core-js/internals/object-keys.js
@@ -0,0 +1,10 @@
+'use strict';
+var internalObjectKeys = require('../internals/object-keys-internal');
+var enumBugKeys = require('../internals/enum-bug-keys');
+
+// `Object.keys` method
+// https://tc39.es/ecma262/#sec-object.keys
+// eslint-disable-next-line es/no-object-keys -- safe
+module.exports = Object.keys || function keys(O) {
+  return internalObjectKeys(O, enumBugKeys);
+};
diff --git a/node_modules/core-js/internals/object-property-is-enumerable.js b/node_modules/core-js/internals/object-property-is-enumerable.js
new file mode 100644
index 0000000..f262d10
--- /dev/null
+++ b/node_modules/core-js/internals/object-property-is-enumerable.js
@@ -0,0 +1,14 @@
+'use strict';
+var $propertyIsEnumerable = {}.propertyIsEnumerable;
+// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
+var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
+
+// Nashorn ~ JDK8 bug
+var NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);
+
+// `Object.prototype.propertyIsEnumerable` method implementation
+// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable
+exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {
+  var descriptor = getOwnPropertyDescriptor(this, V);
+  return !!descriptor && descriptor.enumerable;
+} : $propertyIsEnumerable;
diff --git a/node_modules/core-js/internals/object-prototype-accessors-forced.js b/node_modules/core-js/internals/object-prototype-accessors-forced.js
new file mode 100644
index 0000000..6d76a66
--- /dev/null
+++ b/node_modules/core-js/internals/object-prototype-accessors-forced.js
@@ -0,0 +1,18 @@
+'use strict';
+/* eslint-disable no-undef, no-useless-call, sonarjs/no-reference-error -- required for testing */
+/* eslint-disable es/no-legacy-object-prototype-accessor-methods -- required for testing */
+var IS_PURE = require('../internals/is-pure');
+var globalThis = require('../internals/global-this');
+var fails = require('../internals/fails');
+var WEBKIT = require('../internals/environment-webkit-version');
+
+// Forced replacement object prototype accessors methods
+module.exports = IS_PURE || !fails(function () {
+  // This feature detection crashes old WebKit
+  // https://github.com/zloirock/core-js/issues/232
+  if (WEBKIT && WEBKIT < 535) return;
+  var key = Math.random();
+  // In FF throws only define methods
+  __defineSetter__.call(null, key, function () { /* empty */ });
+  delete globalThis[key];
+});
diff --git a/node_modules/core-js/internals/object-set-prototype-of.js b/node_modules/core-js/internals/object-set-prototype-of.js
new file mode 100644
index 0000000..94fcf6c
--- /dev/null
+++ b/node_modules/core-js/internals/object-set-prototype-of.js
@@ -0,0 +1,29 @@
+'use strict';
+/* eslint-disable no-proto -- safe */
+var uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');
+var isObject = require('../internals/is-object');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+var aPossiblePrototype = require('../internals/a-possible-prototype');
+
+// `Object.setPrototypeOf` method
+// https://tc39.es/ecma262/#sec-object.setprototypeof
+// Works with __proto__ only. Old v8 can't work with null proto objects.
+// eslint-disable-next-line es/no-object-setprototypeof -- safe
+module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {
+  var CORRECT_SETTER = false;
+  var test = {};
+  var setter;
+  try {
+    setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');
+    setter(test, []);
+    CORRECT_SETTER = test instanceof Array;
+  } catch (error) { /* empty */ }
+  return function setPrototypeOf(O, proto) {
+    requireObjectCoercible(O);
+    aPossiblePrototype(proto);
+    if (!isObject(O)) return O;
+    if (CORRECT_SETTER) setter(O, proto);
+    else O.__proto__ = proto;
+    return O;
+  };
+}() : undefined);
diff --git a/node_modules/core-js/internals/object-to-array.js b/node_modules/core-js/internals/object-to-array.js
new file mode 100644
index 0000000..2a84f75
--- /dev/null
+++ b/node_modules/core-js/internals/object-to-array.js
@@ -0,0 +1,49 @@
+'use strict';
+var DESCRIPTORS = require('../internals/descriptors');
+var fails = require('../internals/fails');
+var uncurryThis = require('../internals/function-uncurry-this');
+var objectGetPrototypeOf = require('../internals/object-get-prototype-of');
+var objectKeys = require('../internals/object-keys');
+var toIndexedObject = require('../internals/to-indexed-object');
+var $propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;
+
+var propertyIsEnumerable = uncurryThis($propertyIsEnumerable);
+var push = uncurryThis([].push);
+
+// in some IE versions, `propertyIsEnumerable` returns incorrect result on integer keys
+// of `null` prototype objects
+var IE_BUG = DESCRIPTORS && fails(function () {
+  // eslint-disable-next-line es/no-object-create -- safe
+  var O = Object.create(null);
+  O[2] = 2;
+  return !propertyIsEnumerable(O, 2);
+});
+
+// `Object.{ entries, values }` methods implementation
+var createMethod = function (TO_ENTRIES) {
+  return function (it) {
+    var O = toIndexedObject(it);
+    var keys = objectKeys(O);
+    var IE_WORKAROUND = IE_BUG && objectGetPrototypeOf(O) === null;
+    var length = keys.length;
+    var i = 0;
+    var result = [];
+    var key;
+    while (length > i) {
+      key = keys[i++];
+      if (!DESCRIPTORS || (IE_WORKAROUND ? key in O : propertyIsEnumerable(O, key))) {
+        push(result, TO_ENTRIES ? [key, O[key]] : O[key]);
+      }
+    }
+    return result;
+  };
+};
+
+module.exports = {
+  // `Object.entries` method
+  // https://tc39.es/ecma262/#sec-object.entries
+  entries: createMethod(true),
+  // `Object.values` method
+  // https://tc39.es/ecma262/#sec-object.values
+  values: createMethod(false)
+};
diff --git a/node_modules/core-js/internals/object-to-string.js b/node_modules/core-js/internals/object-to-string.js
new file mode 100644
index 0000000..d624036
--- /dev/null
+++ b/node_modules/core-js/internals/object-to-string.js
@@ -0,0 +1,9 @@
+'use strict';
+var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');
+var classof = require('../internals/classof');
+
+// `Object.prototype.toString` method implementation
+// https://tc39.es/ecma262/#sec-object.prototype.tostring
+module.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {
+  return '[object ' + classof(this) + ']';
+};
diff --git a/node_modules/core-js/internals/ordinary-to-primitive.js b/node_modules/core-js/internals/ordinary-to-primitive.js
new file mode 100644
index 0000000..f8acc2f
--- /dev/null
+++ b/node_modules/core-js/internals/ordinary-to-primitive.js
@@ -0,0 +1,16 @@
+'use strict';
+var call = require('../internals/function-call');
+var isCallable = require('../internals/is-callable');
+var isObject = require('../internals/is-object');
+
+var $TypeError = TypeError;
+
+// `OrdinaryToPrimitive` abstract operation
+// https://tc39.es/ecma262/#sec-ordinarytoprimitive
+module.exports = function (input, pref) {
+  var fn, val;
+  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;
+  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;
+  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;
+  throw new $TypeError("Can't convert object to primitive value");
+};
diff --git a/node_modules/core-js/internals/own-keys.js b/node_modules/core-js/internals/own-keys.js
new file mode 100644
index 0000000..bf4864d
--- /dev/null
+++ b/node_modules/core-js/internals/own-keys.js
@@ -0,0 +1,15 @@
+'use strict';
+var getBuiltIn = require('../internals/get-built-in');
+var uncurryThis = require('../internals/function-uncurry-this');
+var getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');
+var getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');
+var anObject = require('../internals/an-object');
+
+var concat = uncurryThis([].concat);
+
+// all object keys, includes non-enumerable and symbols
+module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {
+  var keys = getOwnPropertyNamesModule.f(anObject(it));
+  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
+  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;
+};
diff --git a/node_modules/core-js/internals/parse-json-string.js b/node_modules/core-js/internals/parse-json-string.js
new file mode 100644
index 0000000..741c0bd
--- /dev/null
+++ b/node_modules/core-js/internals/parse-json-string.js
@@ -0,0 +1,56 @@
+'use strict';
+var uncurryThis = require('../internals/function-uncurry-this');
+var hasOwn = require('../internals/has-own-property');
+
+var $SyntaxError = SyntaxError;
+var $parseInt = parseInt;
+var fromCharCode = String.fromCharCode;
+var at = uncurryThis(''.charAt);
+var slice = uncurryThis(''.slice);
+var exec = uncurryThis(/./.exec);
+
+var codePoints = {
+  '\\"': '"',
+  '\\\\': '\\',
+  '\\/': '/',
+  '\\b': '\b',
+  '\\f': '\f',
+  '\\n': '\n',
+  '\\r': '\r',
+  '\\t': '\t'
+};
+
+var IS_4_HEX_DIGITS = /^[\da-f]{4}$/i;
+// eslint-disable-next-line regexp/no-control-character -- safe
+var IS_C0_CONTROL_CODE = /^[\u0000-\u001F]$/;
+
+module.exports = function (source, i) {
+  var unterminated = true;
+  var value = '';
+  while (i < source.length) {
+    var chr = at(source, i);
+    if (chr === '\\') {
+      var twoChars = slice(source, i, i + 2);
+      if (hasOwn(codePoints, twoChars)) {
+        value += codePoints[twoChars];
+        i += 2;
+      } else if (twoChars === '\\u') {
+        i += 2;
+        var fourHexDigits = slice(source, i, i + 4);
+        if (!exec(IS_4_HEX_DIGITS, fourHexDigits)) throw new $SyntaxError('Bad Unicode escape at: ' + i);
+        value += fromCharCode($parseInt(fourHexDigits, 16));
+        i += 4;
+      } else throw new $SyntaxError('Unknown escape sequence: "' + twoChars + '"');
+    } else if (chr === '"') {
+      unterminated = false;
+      i++;
+      break;
+    } else {
+      if (exec(IS_C0_CONTROL_CODE, chr)) throw new $SyntaxError('Bad control character in string literal at: ' + i);
+      value += chr;
+      i++;
+    }
+  }
+  if (unterminated) throw new $SyntaxError('Unterminated string at: ' + i);
+  return { value: value, end: i };
+};
diff --git a/node_modules/core-js/internals/path.js b/node_modules/core-js/internals/path.js
new file mode 100644
index 0000000..6c8b344
--- /dev/null
+++ b/node_modules/core-js/internals/path.js
@@ -0,0 +1,4 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+
+module.exports = globalThis;
diff --git a/node_modules/core-js/internals/perform.js b/node_modules/core-js/internals/perform.js
new file mode 100644
index 0000000..3100f09
--- /dev/null
+++ b/node_modules/core-js/internals/perform.js
@@ -0,0 +1,8 @@
+'use strict';
+module.exports = function (exec) {
+  try {
+    return { error: false, value: exec() };
+  } catch (error) {
+    return { error: true, value: error };
+  }
+};
diff --git a/node_modules/core-js/internals/promise-constructor-detection.js b/node_modules/core-js/internals/promise-constructor-detection.js
new file mode 100644
index 0000000..1c2e203
--- /dev/null
+++ b/node_modules/core-js/internals/promise-constructor-detection.js
@@ -0,0 +1,47 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+var NativePromiseConstructor = require('../internals/promise-native-constructor');
+var isCallable = require('../internals/is-callable');
+var isForced = require('../internals/is-forced');
+var inspectSource = require('../internals/inspect-source');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var ENVIRONMENT = require('../internals/environment');
+var IS_PURE = require('../internals/is-pure');
+var V8_VERSION = require('../internals/environment-v8-version');
+
+var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;
+var SPECIES = wellKnownSymbol('species');
+var SUBCLASSING = false;
+var NATIVE_PROMISE_REJECTION_EVENT = isCallable(globalThis.PromiseRejectionEvent);
+
+var FORCED_PROMISE_CONSTRUCTOR = isForced('Promise', function () {
+  var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor);
+  var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor);
+  // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables
+  // https://bugs.chromium.org/p/chromium/issues/detail?id=830565
+  // We can't detect it synchronously, so just check versions
+  if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;
+  // We need Promise#{ catch, finally } in the pure version for preventing prototype pollution
+  if (IS_PURE && !(NativePromisePrototype['catch'] && NativePromisePrototype['finally'])) return true;
+  // We can't use @@species feature detection in V8 since it causes
+  // deoptimization and performance degradation
+  // https://github.com/zloirock/core-js/issues/679
+  if (!V8_VERSION || V8_VERSION < 51 || !/native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) {
+    // Detect correctness of subclassing with @@species support
+    var promise = new NativePromiseConstructor(function (resolve) { resolve(1); });
+    var FakePromise = function (exec) {
+      exec(function () { /* empty */ }, function () { /* empty */ });
+    };
+    var constructor = promise.constructor = {};
+    constructor[SPECIES] = FakePromise;
+    SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;
+    if (!SUBCLASSING) return true;
+  // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test
+  } return !GLOBAL_CORE_JS_PROMISE && (ENVIRONMENT === 'BROWSER' || ENVIRONMENT === 'DENO') && !NATIVE_PROMISE_REJECTION_EVENT;
+});
+
+module.exports = {
+  CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR,
+  REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT,
+  SUBCLASSING: SUBCLASSING
+};
diff --git a/node_modules/core-js/internals/promise-native-constructor.js b/node_modules/core-js/internals/promise-native-constructor.js
new file mode 100644
index 0000000..4d126bc
--- /dev/null
+++ b/node_modules/core-js/internals/promise-native-constructor.js
@@ -0,0 +1,4 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+
+module.exports = globalThis.Promise;
diff --git a/node_modules/core-js/internals/promise-resolve.js b/node_modules/core-js/internals/promise-resolve.js
new file mode 100644
index 0000000..c562d9c
--- /dev/null
+++ b/node_modules/core-js/internals/promise-resolve.js
@@ -0,0 +1,13 @@
+'use strict';
+var anObject = require('../internals/an-object');
+var isObject = require('../internals/is-object');
+var newPromiseCapability = require('../internals/new-promise-capability');
+
+module.exports = function (C, x) {
+  anObject(C);
+  if (isObject(x) && x.constructor === C) return x;
+  var promiseCapability = newPromiseCapability.f(C);
+  var resolve = promiseCapability.resolve;
+  resolve(x);
+  return promiseCapability.promise;
+};
diff --git a/node_modules/core-js/internals/promise-statics-incorrect-iteration.js b/node_modules/core-js/internals/promise-statics-incorrect-iteration.js
new file mode 100644
index 0000000..21c0f22
--- /dev/null
+++ b/node_modules/core-js/internals/promise-statics-incorrect-iteration.js
@@ -0,0 +1,8 @@
+'use strict';
+var NativePromiseConstructor = require('../internals/promise-native-constructor');
+var checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');
+var FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;
+
+module.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function (iterable) {
+  NativePromiseConstructor.all(iterable).then(undefined, function () { /* empty */ });
+});
diff --git a/node_modules/core-js/internals/proxy-accessor.js b/node_modules/core-js/internals/proxy-accessor.js
new file mode 100644
index 0000000..8718bb7
--- /dev/null
+++ b/node_modules/core-js/internals/proxy-accessor.js
@@ -0,0 +1,10 @@
+'use strict';
+var defineProperty = require('../internals/object-define-property').f;
+
+module.exports = function (Target, Source, key) {
+  key in Target || defineProperty(Target, key, {
+    configurable: true,
+    get: function () { return Source[key]; },
+    set: function (it) { Source[key] = it; }
+  });
+};
diff --git a/node_modules/core-js/internals/queue.js b/node_modules/core-js/internals/queue.js
new file mode 100644
index 0000000..0785558
--- /dev/null
+++ b/node_modules/core-js/internals/queue.js
@@ -0,0 +1,25 @@
+'use strict';
+var Queue = function () {
+  this.head = null;
+  this.tail = null;
+};
+
+Queue.prototype = {
+  add: function (item) {
+    var entry = { item: item, next: null };
+    var tail = this.tail;
+    if (tail) tail.next = entry;
+    else this.head = entry;
+    this.tail = entry;
+  },
+  get: function () {
+    var entry = this.head;
+    if (entry) {
+      var next = this.head = entry.next;
+      if (next === null) this.tail = null;
+      return entry.item;
+    }
+  }
+};
+
+module.exports = Queue;
diff --git a/node_modules/core-js/internals/reflect-metadata.js b/node_modules/core-js/internals/reflect-metadata.js
new file mode 100644
index 0000000..8041616
--- /dev/null
+++ b/node_modules/core-js/internals/reflect-metadata.js
@@ -0,0 +1,62 @@
+'use strict';
+// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`
+require('../modules/es.map');
+require('../modules/es.weak-map');
+var getBuiltIn = require('../internals/get-built-in');
+var uncurryThis = require('../internals/function-uncurry-this');
+var shared = require('../internals/shared');
+
+var Map = getBuiltIn('Map');
+var WeakMap = getBuiltIn('WeakMap');
+var push = uncurryThis([].push);
+
+var metadata = shared('metadata');
+var store = metadata.store || (metadata.store = new WeakMap());
+
+var getOrCreateMetadataMap = function (target, targetKey, create) {
+  var targetMetadata = store.get(target);
+  if (!targetMetadata) {
+    if (!create) return;
+    store.set(target, targetMetadata = new Map());
+  }
+  var keyMetadata = targetMetadata.get(targetKey);
+  if (!keyMetadata) {
+    if (!create) return;
+    targetMetadata.set(targetKey, keyMetadata = new Map());
+  } return keyMetadata;
+};
+
+var ordinaryHasOwnMetadata = function (MetadataKey, O, P) {
+  var metadataMap = getOrCreateMetadataMap(O, P, false);
+  return metadataMap === undefined ? false : metadataMap.has(MetadataKey);
+};
+
+var ordinaryGetOwnMetadata = function (MetadataKey, O, P) {
+  var metadataMap = getOrCreateMetadataMap(O, P, false);
+  return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey);
+};
+
+var ordinaryDefineOwnMetadata = function (MetadataKey, MetadataValue, O, P) {
+  getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue);
+};
+
+var ordinaryOwnMetadataKeys = function (target, targetKey) {
+  var metadataMap = getOrCreateMetadataMap(target, targetKey, false);
+  var keys = [];
+  if (metadataMap) metadataMap.forEach(function (_, key) { push(keys, key); });
+  return keys;
+};
+
+var toMetadataKey = function (it) {
+  return it === undefined || typeof it == 'symbol' ? it : String(it);
+};
+
+module.exports = {
+  store: store,
+  getMap: getOrCreateMetadataMap,
+  has: ordinaryHasOwnMetadata,
+  get: ordinaryGetOwnMetadata,
+  set: ordinaryDefineOwnMetadata,
+  keys: ordinaryOwnMetadataKeys,
+  toKey: toMetadataKey
+};
diff --git a/node_modules/core-js/internals/regexp-exec-abstract.js b/node_modules/core-js/internals/regexp-exec-abstract.js
new file mode 100644
index 0000000..630d605
--- /dev/null
+++ b/node_modules/core-js/internals/regexp-exec-abstract.js
@@ -0,0 +1,21 @@
+'use strict';
+var call = require('../internals/function-call');
+var anObject = require('../internals/an-object');
+var isCallable = require('../internals/is-callable');
+var classof = require('../internals/classof-raw');
+var regexpExec = require('../internals/regexp-exec');
+
+var $TypeError = TypeError;
+
+// `RegExpExec` abstract operation
+// https://tc39.es/ecma262/#sec-regexpexec
+module.exports = function (R, S) {
+  var exec = R.exec;
+  if (isCallable(exec)) {
+    var result = call(exec, R, S);
+    if (result !== null) anObject(result);
+    return result;
+  }
+  if (classof(R) === 'RegExp') return call(regexpExec, R, S);
+  throw new $TypeError('RegExp#exec called on incompatible receiver');
+};
diff --git a/node_modules/core-js/internals/regexp-exec.js b/node_modules/core-js/internals/regexp-exec.js
new file mode 100644
index 0000000..a23cf2a
--- /dev/null
+++ b/node_modules/core-js/internals/regexp-exec.js
@@ -0,0 +1,117 @@
+'use strict';
+/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */
+/* eslint-disable regexp/no-useless-quantifier -- testing */
+var call = require('../internals/function-call');
+var uncurryThis = require('../internals/function-uncurry-this');
+var toString = require('../internals/to-string');
+var regexpFlags = require('../internals/regexp-flags');
+var stickyHelpers = require('../internals/regexp-sticky-helpers');
+var shared = require('../internals/shared');
+var create = require('../internals/object-create');
+var getInternalState = require('../internals/internal-state').get;
+var UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');
+var UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');
+
+var nativeReplace = shared('native-string-replace', String.prototype.replace);
+var nativeExec = RegExp.prototype.exec;
+var patchedExec = nativeExec;
+var charAt = uncurryThis(''.charAt);
+var indexOf = uncurryThis(''.indexOf);
+var replace = uncurryThis(''.replace);
+var stringSlice = uncurryThis(''.slice);
+
+var UPDATES_LAST_INDEX_WRONG = (function () {
+  var re1 = /a/;
+  var re2 = /b*/g;
+  call(nativeExec, re1, 'a');
+  call(nativeExec, re2, 'a');
+  return re1.lastIndex !== 0 || re2.lastIndex !== 0;
+})();
+
+var UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET;
+
+// nonparticipating capturing group, copied from es5-shim's String#split patch.
+var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;
+
+var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;
+
+if (PATCH) {
+  patchedExec = function exec(string) {
+    var re = this;
+    var state = getInternalState(re);
+    var str = toString(string);
+    var raw = state.raw;
+    var result, reCopy, lastIndex, match, i, object, group;
+
+    if (raw) {
+      raw.lastIndex = re.lastIndex;
+      result = call(patchedExec, raw, str);
+      re.lastIndex = raw.lastIndex;
+      return result;
+    }
+
+    var groups = state.groups;
+    var sticky = UNSUPPORTED_Y && re.sticky;
+    var flags = call(regexpFlags, re);
+    var source = re.source;
+    var charsAdded = 0;
+    var strCopy = str;
+
+    if (sticky) {
+      flags = replace(flags, 'y', '');
+      if (indexOf(flags, 'g') === -1) {
+        flags += 'g';
+      }
+
+      strCopy = stringSlice(str, re.lastIndex);
+      // Support anchored sticky behavior.
+      if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\n')) {
+        source = '(?: ' + source + ')';
+        strCopy = ' ' + strCopy;
+        charsAdded++;
+      }
+      // ^(? + rx + ) is needed, in combination with some str slicing, to
+      // simulate the 'y' flag.
+      reCopy = new RegExp('^(?:' + source + ')', flags);
+    }
+
+    if (NPCG_INCLUDED) {
+      reCopy = new RegExp('^' + source + '$(?!\\s)', flags);
+    }
+    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;
+
+    match = call(nativeExec, sticky ? reCopy : re, strCopy);
+
+    if (sticky) {
+      if (match) {
+        match.input = stringSlice(match.input, charsAdded);
+        match[0] = stringSlice(match[0], charsAdded);
+        match.index = re.lastIndex;
+        re.lastIndex += match[0].length;
+      } else re.lastIndex = 0;
+    } else if (UPDATES_LAST_INDEX_WRONG && match) {
+      re.lastIndex = re.global ? match.index + match[0].length : lastIndex;
+    }
+    if (NPCG_INCLUDED && match && match.length > 1) {
+      // Fix browsers whose `exec` methods don't consistently return `undefined`
+      // for NPCG, like IE8. NOTE: This doesn't work for /(.?)?/
+      call(nativeReplace, match[0], reCopy, function () {
+        for (i = 1; i < arguments.length - 2; i++) {
+          if (arguments[i] === undefined) match[i] = undefined;
+        }
+      });
+    }
+
+    if (match && groups) {
+      match.groups = object = create(null);
+      for (i = 0; i < groups.length; i++) {
+        group = groups[i];
+        object[group[0]] = match[group[1]];
+      }
+    }
+
+    return match;
+  };
+}
+
+module.exports = patchedExec;
diff --git a/node_modules/core-js/internals/regexp-flags.js b/node_modules/core-js/internals/regexp-flags.js
new file mode 100644
index 0000000..6d73e1c
--- /dev/null
+++ b/node_modules/core-js/internals/regexp-flags.js
@@ -0,0 +1,18 @@
+'use strict';
+var anObject = require('../internals/an-object');
+
+// `RegExp.prototype.flags` getter implementation
+// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags
+module.exports = function () {
+  var that = anObject(this);
+  var result = '';
+  if (that.hasIndices) result += 'd';
+  if (that.global) result += 'g';
+  if (that.ignoreCase) result += 'i';
+  if (that.multiline) result += 'm';
+  if (that.dotAll) result += 's';
+  if (that.unicode) result += 'u';
+  if (that.unicodeSets) result += 'v';
+  if (that.sticky) result += 'y';
+  return result;
+};
diff --git a/node_modules/core-js/internals/regexp-get-flags.js b/node_modules/core-js/internals/regexp-get-flags.js
new file mode 100644
index 0000000..134ff74
--- /dev/null
+++ b/node_modules/core-js/internals/regexp-get-flags.js
@@ -0,0 +1,13 @@
+'use strict';
+var call = require('../internals/function-call');
+var hasOwn = require('../internals/has-own-property');
+var isPrototypeOf = require('../internals/object-is-prototype-of');
+var regExpFlags = require('../internals/regexp-flags');
+
+var RegExpPrototype = RegExp.prototype;
+
+module.exports = function (R) {
+  var flags = R.flags;
+  return flags === undefined && !('flags' in RegExpPrototype) && !hasOwn(R, 'flags') && isPrototypeOf(RegExpPrototype, R)
+    ? call(regExpFlags, R) : flags;
+};
diff --git a/node_modules/core-js/internals/regexp-sticky-helpers.js b/node_modules/core-js/internals/regexp-sticky-helpers.js
new file mode 100644
index 0000000..7e266f2
--- /dev/null
+++ b/node_modules/core-js/internals/regexp-sticky-helpers.js
@@ -0,0 +1,31 @@
+'use strict';
+var fails = require('../internals/fails');
+var globalThis = require('../internals/global-this');
+
+// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError
+var $RegExp = globalThis.RegExp;
+
+var UNSUPPORTED_Y = fails(function () {
+  var re = $RegExp('a', 'y');
+  re.lastIndex = 2;
+  return re.exec('abcd') !== null;
+});
+
+// UC Browser bug
+// https://github.com/zloirock/core-js/issues/1008
+var MISSED_STICKY = UNSUPPORTED_Y || fails(function () {
+  return !$RegExp('a', 'y').sticky;
+});
+
+var BROKEN_CARET = UNSUPPORTED_Y || fails(function () {
+  // https://bugzilla.mozilla.org/show_bug.cgi?id=773687
+  var re = $RegExp('^r', 'gy');
+  re.lastIndex = 2;
+  return re.exec('str') !== null;
+});
+
+module.exports = {
+  BROKEN_CARET: BROKEN_CARET,
+  MISSED_STICKY: MISSED_STICKY,
+  UNSUPPORTED_Y: UNSUPPORTED_Y
+};
diff --git a/node_modules/core-js/internals/regexp-unsupported-dot-all.js b/node_modules/core-js/internals/regexp-unsupported-dot-all.js
new file mode 100644
index 0000000..2ffb9d2
--- /dev/null
+++ b/node_modules/core-js/internals/regexp-unsupported-dot-all.js
@@ -0,0 +1,11 @@
+'use strict';
+var fails = require('../internals/fails');
+var globalThis = require('../internals/global-this');
+
+// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError
+var $RegExp = globalThis.RegExp;
+
+module.exports = fails(function () {
+  var re = $RegExp('.', 's');
+  return !(re.dotAll && re.test('\n') && re.flags === 's');
+});
diff --git a/node_modules/core-js/internals/regexp-unsupported-ncg.js b/node_modules/core-js/internals/regexp-unsupported-ncg.js
new file mode 100644
index 0000000..5fa1939
--- /dev/null
+++ b/node_modules/core-js/internals/regexp-unsupported-ncg.js
@@ -0,0 +1,12 @@
+'use strict';
+var fails = require('../internals/fails');
+var globalThis = require('../internals/global-this');
+
+// babel-minify and Closure Compiler transpiles RegExp('(?<a>b)', 'g') -> /(?<a>b)/g and it causes SyntaxError
+var $RegExp = globalThis.RegExp;
+
+module.exports = fails(function () {
+  var re = $RegExp('(?<a>b)', 'g');
+  return re.exec('b').groups.a !== 'b' ||
+    'b'.replace(re, '$<a>c') !== 'bc';
+});
diff --git a/node_modules/core-js/internals/require-object-coercible.js b/node_modules/core-js/internals/require-object-coercible.js
new file mode 100644
index 0000000..2a17058
--- /dev/null
+++ b/node_modules/core-js/internals/require-object-coercible.js
@@ -0,0 +1,11 @@
+'use strict';
+var isNullOrUndefined = require('../internals/is-null-or-undefined');
+
+var $TypeError = TypeError;
+
+// `RequireObjectCoercible` abstract operation
+// https://tc39.es/ecma262/#sec-requireobjectcoercible
+module.exports = function (it) {
+  if (isNullOrUndefined(it)) throw new $TypeError("Can't call method on " + it);
+  return it;
+};
diff --git a/node_modules/core-js/internals/safe-get-built-in.js b/node_modules/core-js/internals/safe-get-built-in.js
new file mode 100644
index 0000000..7185174
--- /dev/null
+++ b/node_modules/core-js/internals/safe-get-built-in.js
@@ -0,0 +1,13 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+var DESCRIPTORS = require('../internals/descriptors');
+
+// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
+var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
+
+// Avoid NodeJS experimental warning
+module.exports = function (name) {
+  if (!DESCRIPTORS) return globalThis[name];
+  var descriptor = getOwnPropertyDescriptor(globalThis, name);
+  return descriptor && descriptor.value;
+};
diff --git a/node_modules/core-js/internals/same-value-zero.js b/node_modules/core-js/internals/same-value-zero.js
new file mode 100644
index 0000000..be23857
--- /dev/null
+++ b/node_modules/core-js/internals/same-value-zero.js
@@ -0,0 +1,7 @@
+'use strict';
+// `SameValueZero` abstract operation
+// https://tc39.es/ecma262/#sec-samevaluezero
+module.exports = function (x, y) {
+  // eslint-disable-next-line no-self-compare -- NaN check
+  return x === y || x !== x && y !== y;
+};
diff --git a/node_modules/core-js/internals/same-value.js b/node_modules/core-js/internals/same-value.js
new file mode 100644
index 0000000..7b0d1dd
--- /dev/null
+++ b/node_modules/core-js/internals/same-value.js
@@ -0,0 +1,8 @@
+'use strict';
+// `SameValue` abstract operation
+// https://tc39.es/ecma262/#sec-samevalue
+// eslint-disable-next-line es/no-object-is -- safe
+module.exports = Object.is || function is(x, y) {
+  // eslint-disable-next-line no-self-compare -- NaN check
+  return x === y ? x !== 0 || 1 / x === 1 / y : x !== x && y !== y;
+};
diff --git a/node_modules/core-js/internals/schedulers-fix.js b/node_modules/core-js/internals/schedulers-fix.js
new file mode 100644
index 0000000..6c1001c
--- /dev/null
+++ b/node_modules/core-js/internals/schedulers-fix.js
@@ -0,0 +1,31 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+var apply = require('../internals/function-apply');
+var isCallable = require('../internals/is-callable');
+var ENVIRONMENT = require('../internals/environment');
+var USER_AGENT = require('../internals/environment-user-agent');
+var arraySlice = require('../internals/array-slice');
+var validateArgumentsLength = require('../internals/validate-arguments-length');
+
+var Function = globalThis.Function;
+// dirty IE9- and Bun 0.3.0- checks
+var WRAP = /MSIE .\./.test(USER_AGENT) || ENVIRONMENT === 'BUN' && (function () {
+  var version = globalThis.Bun.version.split('.');
+  return version.length < 3 || version[0] === '0' && (version[1] < 3 || version[1] === '3' && version[2] === '0');
+})();
+
+// IE9- / Bun 0.3.0- setTimeout / setInterval / setImmediate additional parameters fix
+// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers
+// https://github.com/oven-sh/bun/issues/1633
+module.exports = function (scheduler, hasTimeArg) {
+  var firstParamIndex = hasTimeArg ? 2 : 1;
+  return WRAP ? function (handler, timeout /* , ...arguments */) {
+    var boundArgs = validateArgumentsLength(arguments.length, 1) > firstParamIndex;
+    var fn = isCallable(handler) ? handler : Function(handler);
+    var params = boundArgs ? arraySlice(arguments, firstParamIndex) : [];
+    var callback = boundArgs ? function () {
+      apply(fn, this, params);
+    } : fn;
+    return hasTimeArg ? scheduler(callback, timeout) : scheduler(callback);
+  } : scheduler;
+};
diff --git a/node_modules/core-js/internals/set-clone.js b/node_modules/core-js/internals/set-clone.js
new file mode 100644
index 0000000..07329f4
--- /dev/null
+++ b/node_modules/core-js/internals/set-clone.js
@@ -0,0 +1,14 @@
+'use strict';
+var SetHelpers = require('../internals/set-helpers');
+var iterate = require('../internals/set-iterate');
+
+var Set = SetHelpers.Set;
+var add = SetHelpers.add;
+
+module.exports = function (set) {
+  var result = new Set();
+  iterate(set, function (it) {
+    add(result, it);
+  });
+  return result;
+};
diff --git a/node_modules/core-js/internals/set-difference.js b/node_modules/core-js/internals/set-difference.js
new file mode 100644
index 0000000..cb21542
--- /dev/null
+++ b/node_modules/core-js/internals/set-difference.js
@@ -0,0 +1,26 @@
+'use strict';
+var aSet = require('../internals/a-set');
+var SetHelpers = require('../internals/set-helpers');
+var clone = require('../internals/set-clone');
+var size = require('../internals/set-size');
+var getSetRecord = require('../internals/get-set-record');
+var iterateSet = require('../internals/set-iterate');
+var iterateSimple = require('../internals/iterate-simple');
+
+var has = SetHelpers.has;
+var remove = SetHelpers.remove;
+
+// `Set.prototype.difference` method
+// https://github.com/tc39/proposal-set-methods
+module.exports = function difference(other) {
+  var O = aSet(this);
+  var otherRec = getSetRecord(other);
+  var result = clone(O);
+  if (size(O) <= otherRec.size) iterateSet(O, function (e) {
+    if (otherRec.includes(e)) remove(result, e);
+  });
+  else iterateSimple(otherRec.getIterator(), function (e) {
+    if (has(O, e)) remove(result, e);
+  });
+  return result;
+};
diff --git a/node_modules/core-js/internals/set-helpers.js b/node_modules/core-js/internals/set-helpers.js
new file mode 100644
index 0000000..f474987
--- /dev/null
+++ b/node_modules/core-js/internals/set-helpers.js
@@ -0,0 +1,14 @@
+'use strict';
+var uncurryThis = require('../internals/function-uncurry-this');
+
+// eslint-disable-next-line es/no-set -- safe
+var SetPrototype = Set.prototype;
+
+module.exports = {
+  // eslint-disable-next-line es/no-set -- safe
+  Set: Set,
+  add: uncurryThis(SetPrototype.add),
+  has: uncurryThis(SetPrototype.has),
+  remove: uncurryThis(SetPrototype['delete']),
+  proto: SetPrototype
+};
diff --git a/node_modules/core-js/internals/set-intersection.js b/node_modules/core-js/internals/set-intersection.js
new file mode 100644
index 0000000..fd926f2
--- /dev/null
+++ b/node_modules/core-js/internals/set-intersection.js
@@ -0,0 +1,31 @@
+'use strict';
+var aSet = require('../internals/a-set');
+var SetHelpers = require('../internals/set-helpers');
+var size = require('../internals/set-size');
+var getSetRecord = require('../internals/get-set-record');
+var iterateSet = require('../internals/set-iterate');
+var iterateSimple = require('../internals/iterate-simple');
+
+var Set = SetHelpers.Set;
+var add = SetHelpers.add;
+var has = SetHelpers.has;
+
+// `Set.prototype.intersection` method
+// https://github.com/tc39/proposal-set-methods
+module.exports = function intersection(other) {
+  var O = aSet(this);
+  var otherRec = getSetRecord(other);
+  var result = new Set();
+
+  if (size(O) > otherRec.size) {
+    iterateSimple(otherRec.getIterator(), function (e) {
+      if (has(O, e)) add(result, e);
+    });
+  } else {
+    iterateSet(O, function (e) {
+      if (otherRec.includes(e)) add(result, e);
+    });
+  }
+
+  return result;
+};
diff --git a/node_modules/core-js/internals/set-is-disjoint-from.js b/node_modules/core-js/internals/set-is-disjoint-from.js
new file mode 100644
index 0000000..9f3c7b5
--- /dev/null
+++ b/node_modules/core-js/internals/set-is-disjoint-from.js
@@ -0,0 +1,22 @@
+'use strict';
+var aSet = require('../internals/a-set');
+var has = require('../internals/set-helpers').has;
+var size = require('../internals/set-size');
+var getSetRecord = require('../internals/get-set-record');
+var iterateSet = require('../internals/set-iterate');
+var iterateSimple = require('../internals/iterate-simple');
+var iteratorClose = require('../internals/iterator-close');
+
+// `Set.prototype.isDisjointFrom` method
+// https://tc39.github.io/proposal-set-methods/#Set.prototype.isDisjointFrom
+module.exports = function isDisjointFrom(other) {
+  var O = aSet(this);
+  var otherRec = getSetRecord(other);
+  if (size(O) <= otherRec.size) return iterateSet(O, function (e) {
+    if (otherRec.includes(e)) return false;
+  }, true) !== false;
+  var iterator = otherRec.getIterator();
+  return iterateSimple(iterator, function (e) {
+    if (has(O, e)) return iteratorClose(iterator, 'normal', false);
+  }) !== false;
+};
diff --git a/node_modules/core-js/internals/set-is-subset-of.js b/node_modules/core-js/internals/set-is-subset-of.js
new file mode 100644
index 0000000..541c007
--- /dev/null
+++ b/node_modules/core-js/internals/set-is-subset-of.js
@@ -0,0 +1,16 @@
+'use strict';
+var aSet = require('../internals/a-set');
+var size = require('../internals/set-size');
+var iterate = require('../internals/set-iterate');
+var getSetRecord = require('../internals/get-set-record');
+
+// `Set.prototype.isSubsetOf` method
+// https://tc39.github.io/proposal-set-methods/#Set.prototype.isSubsetOf
+module.exports = function isSubsetOf(other) {
+  var O = aSet(this);
+  var otherRec = getSetRecord(other);
+  if (size(O) > otherRec.size) return false;
+  return iterate(O, function (e) {
+    if (!otherRec.includes(e)) return false;
+  }, true) !== false;
+};
diff --git a/node_modules/core-js/internals/set-is-superset-of.js b/node_modules/core-js/internals/set-is-superset-of.js
new file mode 100644
index 0000000..0907424
--- /dev/null
+++ b/node_modules/core-js/internals/set-is-superset-of.js
@@ -0,0 +1,19 @@
+'use strict';
+var aSet = require('../internals/a-set');
+var has = require('../internals/set-helpers').has;
+var size = require('../internals/set-size');
+var getSetRecord = require('../internals/get-set-record');
+var iterateSimple = require('../internals/iterate-simple');
+var iteratorClose = require('../internals/iterator-close');
+
+// `Set.prototype.isSupersetOf` method
+// https://tc39.github.io/proposal-set-methods/#Set.prototype.isSupersetOf
+module.exports = function isSupersetOf(other) {
+  var O = aSet(this);
+  var otherRec = getSetRecord(other);
+  if (size(O) < otherRec.size) return false;
+  var iterator = otherRec.getIterator();
+  return iterateSimple(iterator, function (e) {
+    if (!has(O, e)) return iteratorClose(iterator, 'normal', false);
+  }) !== false;
+};
diff --git a/node_modules/core-js/internals/set-iterate.js b/node_modules/core-js/internals/set-iterate.js
new file mode 100644
index 0000000..afbf910
--- /dev/null
+++ b/node_modules/core-js/internals/set-iterate.js
@@ -0,0 +1,14 @@
+'use strict';
+var uncurryThis = require('../internals/function-uncurry-this');
+var iterateSimple = require('../internals/iterate-simple');
+var SetHelpers = require('../internals/set-helpers');
+
+var Set = SetHelpers.Set;
+var SetPrototype = SetHelpers.proto;
+var forEach = uncurryThis(SetPrototype.forEach);
+var keys = uncurryThis(SetPrototype.keys);
+var next = keys(new Set()).next;
+
+module.exports = function (set, fn, interruptible) {
+  return interruptible ? iterateSimple({ iterator: keys(set), next: next }, fn) : forEach(set, fn);
+};
diff --git a/node_modules/core-js/internals/set-method-accept-set-like.js b/node_modules/core-js/internals/set-method-accept-set-like.js
new file mode 100644
index 0000000..94faa08
--- /dev/null
+++ b/node_modules/core-js/internals/set-method-accept-set-like.js
@@ -0,0 +1,58 @@
+'use strict';
+var getBuiltIn = require('../internals/get-built-in');
+
+var createSetLike = function (size) {
+  return {
+    size: size,
+    has: function () {
+      return false;
+    },
+    keys: function () {
+      return {
+        next: function () {
+          return { done: true };
+        }
+      };
+    }
+  };
+};
+
+var createSetLikeWithInfinitySize = function (size) {
+  return {
+    size: size,
+    has: function () {
+      return true;
+    },
+    keys: function () {
+      throw new Error('e');
+    }
+  };
+};
+
+module.exports = function (name, callback) {
+  var Set = getBuiltIn('Set');
+  try {
+    new Set()[name](createSetLike(0));
+    try {
+      // late spec change, early WebKit ~ Safari 17.0 beta implementation does not pass it
+      // https://github.com/tc39/proposal-set-methods/pull/88
+      new Set()[name](createSetLike(-1));
+      return false;
+    } catch (error2) {
+      if (!callback) return true;
+      // early V8 implementation bug
+      // https://issues.chromium.org/issues/351332634
+      try {
+        new Set()[name](createSetLikeWithInfinitySize(-Infinity));
+        return false;
+      } catch (error) {
+        var set = new Set();
+        set.add(1);
+        set.add(2);
+        return callback(set[name](createSetLikeWithInfinitySize(Infinity)));
+      }
+    }
+  } catch (error) {
+    return false;
+  }
+};
diff --git a/node_modules/core-js/internals/set-size.js b/node_modules/core-js/internals/set-size.js
new file mode 100644
index 0000000..19df5c8
--- /dev/null
+++ b/node_modules/core-js/internals/set-size.js
@@ -0,0 +1,7 @@
+'use strict';
+var uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');
+var SetHelpers = require('../internals/set-helpers');
+
+module.exports = uncurryThisAccessor(SetHelpers.proto, 'size', 'get') || function (set) {
+  return set.size;
+};
diff --git a/node_modules/core-js/internals/set-species.js b/node_modules/core-js/internals/set-species.js
new file mode 100644
index 0000000..fd92a4d
--- /dev/null
+++ b/node_modules/core-js/internals/set-species.js
@@ -0,0 +1,18 @@
+'use strict';
+var getBuiltIn = require('../internals/get-built-in');
+var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var DESCRIPTORS = require('../internals/descriptors');
+
+var SPECIES = wellKnownSymbol('species');
+
+module.exports = function (CONSTRUCTOR_NAME) {
+  var Constructor = getBuiltIn(CONSTRUCTOR_NAME);
+
+  if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {
+    defineBuiltInAccessor(Constructor, SPECIES, {
+      configurable: true,
+      get: function () { return this; }
+    });
+  }
+};
diff --git a/node_modules/core-js/internals/set-symmetric-difference.js b/node_modules/core-js/internals/set-symmetric-difference.js
new file mode 100644
index 0000000..acd1c46
--- /dev/null
+++ b/node_modules/core-js/internals/set-symmetric-difference.js
@@ -0,0 +1,23 @@
+'use strict';
+var aSet = require('../internals/a-set');
+var SetHelpers = require('../internals/set-helpers');
+var clone = require('../internals/set-clone');
+var getSetRecord = require('../internals/get-set-record');
+var iterateSimple = require('../internals/iterate-simple');
+
+var add = SetHelpers.add;
+var has = SetHelpers.has;
+var remove = SetHelpers.remove;
+
+// `Set.prototype.symmetricDifference` method
+// https://github.com/tc39/proposal-set-methods
+module.exports = function symmetricDifference(other) {
+  var O = aSet(this);
+  var keysIter = getSetRecord(other).getIterator();
+  var result = clone(O);
+  iterateSimple(keysIter, function (e) {
+    if (has(O, e)) remove(result, e);
+    else add(result, e);
+  });
+  return result;
+};
diff --git a/node_modules/core-js/internals/set-to-string-tag.js b/node_modules/core-js/internals/set-to-string-tag.js
new file mode 100644
index 0000000..1dd0052
--- /dev/null
+++ b/node_modules/core-js/internals/set-to-string-tag.js
@@ -0,0 +1,13 @@
+'use strict';
+var defineProperty = require('../internals/object-define-property').f;
+var hasOwn = require('../internals/has-own-property');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+var TO_STRING_TAG = wellKnownSymbol('toStringTag');
+
+module.exports = function (target, TAG, STATIC) {
+  if (target && !STATIC) target = target.prototype;
+  if (target && !hasOwn(target, TO_STRING_TAG)) {
+    defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });
+  }
+};
diff --git a/node_modules/core-js/internals/set-union.js b/node_modules/core-js/internals/set-union.js
new file mode 100644
index 0000000..51e38d0
--- /dev/null
+++ b/node_modules/core-js/internals/set-union.js
@@ -0,0 +1,18 @@
+'use strict';
+var aSet = require('../internals/a-set');
+var add = require('../internals/set-helpers').add;
+var clone = require('../internals/set-clone');
+var getSetRecord = require('../internals/get-set-record');
+var iterateSimple = require('../internals/iterate-simple');
+
+// `Set.prototype.union` method
+// https://github.com/tc39/proposal-set-methods
+module.exports = function union(other) {
+  var O = aSet(this);
+  var keysIter = getSetRecord(other).getIterator();
+  var result = clone(O);
+  iterateSimple(keysIter, function (it) {
+    add(result, it);
+  });
+  return result;
+};
diff --git a/node_modules/core-js/internals/shared-key.js b/node_modules/core-js/internals/shared-key.js
new file mode 100644
index 0000000..157f98e
--- /dev/null
+++ b/node_modules/core-js/internals/shared-key.js
@@ -0,0 +1,9 @@
+'use strict';
+var shared = require('../internals/shared');
+var uid = require('../internals/uid');
+
+var keys = shared('keys');
+
+module.exports = function (key) {
+  return keys[key] || (keys[key] = uid(key));
+};
diff --git a/node_modules/core-js/internals/shared-store.js b/node_modules/core-js/internals/shared-store.js
new file mode 100644
index 0000000..c7dee18
--- /dev/null
+++ b/node_modules/core-js/internals/shared-store.js
@@ -0,0 +1,15 @@
+'use strict';
+var IS_PURE = require('../internals/is-pure');
+var globalThis = require('../internals/global-this');
+var defineGlobalProperty = require('../internals/define-global-property');
+
+var SHARED = '__core-js_shared__';
+var store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});
+
+(store.versions || (store.versions = [])).push({
+  version: '3.41.0',
+  mode: IS_PURE ? 'pure' : 'global',
+  copyright: '© 2014-2025 Denis Pushkarev (zloirock.ru)',
+  license: 'https://github.com/zloirock/core-js/blob/v3.41.0/LICENSE',
+  source: 'https://github.com/zloirock/core-js'
+});
diff --git a/node_modules/core-js/internals/shared.js b/node_modules/core-js/internals/shared.js
new file mode 100644
index 0000000..29ac11c
--- /dev/null
+++ b/node_modules/core-js/internals/shared.js
@@ -0,0 +1,6 @@
+'use strict';
+var store = require('../internals/shared-store');
+
+module.exports = function (key, value) {
+  return store[key] || (store[key] = value || {});
+};
diff --git a/node_modules/core-js/internals/species-constructor.js b/node_modules/core-js/internals/species-constructor.js
new file mode 100644
index 0000000..5627cde
--- /dev/null
+++ b/node_modules/core-js/internals/species-constructor.js
@@ -0,0 +1,15 @@
+'use strict';
+var anObject = require('../internals/an-object');
+var aConstructor = require('../internals/a-constructor');
+var isNullOrUndefined = require('../internals/is-null-or-undefined');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+var SPECIES = wellKnownSymbol('species');
+
+// `SpeciesConstructor` abstract operation
+// https://tc39.es/ecma262/#sec-speciesconstructor
+module.exports = function (O, defaultConstructor) {
+  var C = anObject(O).constructor;
+  var S;
+  return C === undefined || isNullOrUndefined(S = anObject(C)[SPECIES]) ? defaultConstructor : aConstructor(S);
+};
diff --git a/node_modules/core-js/internals/string-cooked.js b/node_modules/core-js/internals/string-cooked.js
new file mode 100644
index 0000000..c0b58ea
--- /dev/null
+++ b/node_modules/core-js/internals/string-cooked.js
@@ -0,0 +1,27 @@
+'use strict';
+var uncurryThis = require('../internals/function-uncurry-this');
+var toIndexedObject = require('../internals/to-indexed-object');
+var toString = require('../internals/to-string');
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+
+var $TypeError = TypeError;
+var push = uncurryThis([].push);
+var join = uncurryThis([].join);
+
+// `String.cooked` method
+// https://tc39.es/proposal-string-cooked/
+module.exports = function cooked(template /* , ...substitutions */) {
+  var cookedTemplate = toIndexedObject(template);
+  var literalSegments = lengthOfArrayLike(cookedTemplate);
+  if (!literalSegments) return '';
+  var argumentsLength = arguments.length;
+  var elements = [];
+  var i = 0;
+  while (true) {
+    var nextVal = cookedTemplate[i++];
+    if (nextVal === undefined) throw new $TypeError('Incorrect template');
+    push(elements, toString(nextVal));
+    if (i === literalSegments) return join(elements, '');
+    if (i < argumentsLength) push(elements, toString(arguments[i]));
+  }
+};
diff --git a/node_modules/core-js/internals/string-html-forced.js b/node_modules/core-js/internals/string-html-forced.js
new file mode 100644
index 0000000..d6470d0
--- /dev/null
+++ b/node_modules/core-js/internals/string-html-forced.js
@@ -0,0 +1,11 @@
+'use strict';
+var fails = require('../internals/fails');
+
+// check the existence of a method, lowercase
+// of a tag and escaping quotes in arguments
+module.exports = function (METHOD_NAME) {
+  return fails(function () {
+    var test = ''[METHOD_NAME]('"');
+    return test !== test.toLowerCase() || test.split('"').length > 3;
+  });
+};
diff --git a/node_modules/core-js/internals/string-multibyte.js b/node_modules/core-js/internals/string-multibyte.js
new file mode 100644
index 0000000..d4093a7
--- /dev/null
+++ b/node_modules/core-js/internals/string-multibyte.js
@@ -0,0 +1,37 @@
+'use strict';
+var uncurryThis = require('../internals/function-uncurry-this');
+var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
+var toString = require('../internals/to-string');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+
+var charAt = uncurryThis(''.charAt);
+var charCodeAt = uncurryThis(''.charCodeAt);
+var stringSlice = uncurryThis(''.slice);
+
+var createMethod = function (CONVERT_TO_STRING) {
+  return function ($this, pos) {
+    var S = toString(requireObjectCoercible($this));
+    var position = toIntegerOrInfinity(pos);
+    var size = S.length;
+    var first, second;
+    if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;
+    first = charCodeAt(S, position);
+    return first < 0xD800 || first > 0xDBFF || position + 1 === size
+      || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF
+        ? CONVERT_TO_STRING
+          ? charAt(S, position)
+          : first
+        : CONVERT_TO_STRING
+          ? stringSlice(S, position, position + 2)
+          : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;
+  };
+};
+
+module.exports = {
+  // `String.prototype.codePointAt` method
+  // https://tc39.es/ecma262/#sec-string.prototype.codepointat
+  codeAt: createMethod(false),
+  // `String.prototype.at` method
+  // https://github.com/mathiasbynens/String.prototype.at
+  charAt: createMethod(true)
+};
diff --git a/node_modules/core-js/internals/string-pad-webkit-bug.js b/node_modules/core-js/internals/string-pad-webkit-bug.js
new file mode 100644
index 0000000..e37987b
--- /dev/null
+++ b/node_modules/core-js/internals/string-pad-webkit-bug.js
@@ -0,0 +1,5 @@
+'use strict';
+// https://github.com/zloirock/core-js/issues/280
+var userAgent = require('../internals/environment-user-agent');
+
+module.exports = /Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(userAgent);
diff --git a/node_modules/core-js/internals/string-pad.js b/node_modules/core-js/internals/string-pad.js
new file mode 100644
index 0000000..419e904
--- /dev/null
+++ b/node_modules/core-js/internals/string-pad.js
@@ -0,0 +1,36 @@
+'use strict';
+// https://github.com/tc39/proposal-string-pad-start-end
+var uncurryThis = require('../internals/function-uncurry-this');
+var toLength = require('../internals/to-length');
+var toString = require('../internals/to-string');
+var $repeat = require('../internals/string-repeat');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+
+var repeat = uncurryThis($repeat);
+var stringSlice = uncurryThis(''.slice);
+var ceil = Math.ceil;
+
+// `String.prototype.{ padStart, padEnd }` methods implementation
+var createMethod = function (IS_END) {
+  return function ($this, maxLength, fillString) {
+    var S = toString(requireObjectCoercible($this));
+    var intMaxLength = toLength(maxLength);
+    var stringLength = S.length;
+    var fillStr = fillString === undefined ? ' ' : toString(fillString);
+    var fillLen, stringFiller;
+    if (intMaxLength <= stringLength || fillStr === '') return S;
+    fillLen = intMaxLength - stringLength;
+    stringFiller = repeat(fillStr, ceil(fillLen / fillStr.length));
+    if (stringFiller.length > fillLen) stringFiller = stringSlice(stringFiller, 0, fillLen);
+    return IS_END ? S + stringFiller : stringFiller + S;
+  };
+};
+
+module.exports = {
+  // `String.prototype.padStart` method
+  // https://tc39.es/ecma262/#sec-string.prototype.padstart
+  start: createMethod(false),
+  // `String.prototype.padEnd` method
+  // https://tc39.es/ecma262/#sec-string.prototype.padend
+  end: createMethod(true)
+};
diff --git a/node_modules/core-js/internals/string-parse.js b/node_modules/core-js/internals/string-parse.js
new file mode 100644
index 0000000..e7196f4
--- /dev/null
+++ b/node_modules/core-js/internals/string-parse.js
@@ -0,0 +1,119 @@
+'use strict';
+// adapted from https://github.com/jridgewell/string-dedent
+var getBuiltIn = require('../internals/get-built-in');
+var uncurryThis = require('../internals/function-uncurry-this');
+
+var fromCharCode = String.fromCharCode;
+var fromCodePoint = getBuiltIn('String', 'fromCodePoint');
+var charAt = uncurryThis(''.charAt);
+var charCodeAt = uncurryThis(''.charCodeAt);
+var stringIndexOf = uncurryThis(''.indexOf);
+var stringSlice = uncurryThis(''.slice);
+
+var ZERO_CODE = 48;
+var NINE_CODE = 57;
+var LOWER_A_CODE = 97;
+var LOWER_F_CODE = 102;
+var UPPER_A_CODE = 65;
+var UPPER_F_CODE = 70;
+
+var isDigit = function (str, index) {
+  var c = charCodeAt(str, index);
+  return c >= ZERO_CODE && c <= NINE_CODE;
+};
+
+var parseHex = function (str, index, end) {
+  if (end >= str.length) return -1;
+  var n = 0;
+  for (; index < end; index++) {
+    var c = hexToInt(charCodeAt(str, index));
+    if (c === -1) return -1;
+    n = n * 16 + c;
+  }
+  return n;
+};
+
+var hexToInt = function (c) {
+  if (c >= ZERO_CODE && c <= NINE_CODE) return c - ZERO_CODE;
+  if (c >= LOWER_A_CODE && c <= LOWER_F_CODE) return c - LOWER_A_CODE + 10;
+  if (c >= UPPER_A_CODE && c <= UPPER_F_CODE) return c - UPPER_A_CODE + 10;
+  return -1;
+};
+
+module.exports = function (raw) {
+  var out = '';
+  var start = 0;
+  // We need to find every backslash escape sequence, and cook the escape into a real char.
+  var i = 0;
+  var n;
+  while ((i = stringIndexOf(raw, '\\', i)) > -1) {
+    out += stringSlice(raw, start, i);
+    // If the backslash is the last char of the string, then it was an invalid sequence.
+    // This can't actually happen in a tagged template literal, but could happen if you manually
+    // invoked the tag with an array.
+    if (++i === raw.length) return;
+    var next = charAt(raw, i++);
+    switch (next) {
+      // Escaped control codes need to be individually processed.
+      case 'b':
+        out += '\b';
+        break;
+      case 't':
+        out += '\t';
+        break;
+      case 'n':
+        out += '\n';
+        break;
+      case 'v':
+        out += '\v';
+        break;
+      case 'f':
+        out += '\f';
+        break;
+      case 'r':
+        out += '\r';
+        break;
+      // Escaped line terminators just skip the char.
+      case '\r':
+        // Treat `\r\n` as a single terminator.
+        if (i < raw.length && charAt(raw, i) === '\n') ++i;
+      // break omitted
+      case '\n':
+      case '\u2028':
+      case '\u2029':
+        break;
+      // `\0` is a null control char, but `\0` followed by another digit is an illegal octal escape.
+      case '0':
+        if (isDigit(raw, i)) return;
+        out += '\0';
+        break;
+      // Hex escapes must contain 2 hex chars.
+      case 'x':
+        n = parseHex(raw, i, i + 2);
+        if (n === -1) return;
+        i += 2;
+        out += fromCharCode(n);
+        break;
+      // Unicode escapes contain either 4 chars, or an unlimited number between `{` and `}`.
+      // The hex value must not overflow 0x10FFFF.
+      case 'u':
+        if (i < raw.length && charAt(raw, i) === '{') {
+          var end = stringIndexOf(raw, '}', ++i);
+          if (end === -1) return;
+          n = parseHex(raw, i, end);
+          i = end + 1;
+        } else {
+          n = parseHex(raw, i, i + 4);
+          i += 4;
+        }
+        if (n === -1 || n > 0x10FFFF) return;
+        out += fromCodePoint(n);
+        break;
+      default:
+        if (isDigit(next, 0)) return;
+        out += next;
+    }
+    start = i;
+  }
+  return out + stringSlice(raw, start);
+};
diff --git a/node_modules/core-js/internals/string-punycode-to-ascii.js b/node_modules/core-js/internals/string-punycode-to-ascii.js
new file mode 100644
index 0000000..6e39746
--- /dev/null
+++ b/node_modules/core-js/internals/string-punycode-to-ascii.js
@@ -0,0 +1,181 @@
+'use strict';
+// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js
+var uncurryThis = require('../internals/function-uncurry-this');
+
+var maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1
+var base = 36;
+var tMin = 1;
+var tMax = 26;
+var skew = 38;
+var damp = 700;
+var initialBias = 72;
+var initialN = 128; // 0x80
+var delimiter = '-'; // '\x2D'
+var regexNonASCII = /[^\0-\u007E]/; // non-ASCII chars
+var regexSeparators = /[.\u3002\uFF0E\uFF61]/g; // RFC 3490 separators
+var OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';
+var baseMinusTMin = base - tMin;
+
+var $RangeError = RangeError;
+var exec = uncurryThis(regexSeparators.exec);
+var floor = Math.floor;
+var fromCharCode = String.fromCharCode;
+var charCodeAt = uncurryThis(''.charCodeAt);
+var join = uncurryThis([].join);
+var push = uncurryThis([].push);
+var replace = uncurryThis(''.replace);
+var split = uncurryThis(''.split);
+var toLowerCase = uncurryThis(''.toLowerCase);
+
+/**
+ * Creates an array containing the numeric code points of each Unicode
+ * character in the string. While JavaScript uses UCS-2 internally,
+ * this function will convert a pair of surrogate halves (each of which
+ * UCS-2 exposes as separate characters) into a single code point,
+ * matching UTF-16.
+ */
+var ucs2decode = function (string) {
+  var output = [];
+  var counter = 0;
+  var length = string.length;
+  while (counter < length) {
+    var value = charCodeAt(string, counter++);
+    if (value >= 0xD800 && value <= 0xDBFF && counter < length) {
+      // It's a high surrogate, and there is a next character.
+      var extra = charCodeAt(string, counter++);
+      if ((extra & 0xFC00) === 0xDC00) { // Low surrogate.
+        push(output, ((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
+      } else {
+        // It's an unmatched surrogate; only append this code unit, in case the
+        // next code unit is the high surrogate of a surrogate pair.
+        push(output, value);
+        counter--;
+      }
+    } else {
+      push(output, value);
+    }
+  }
+  return output;
+};
+
+/**
+ * Converts a digit/integer into a basic code point.
+ */
+var digitToBasic = function (digit) {
+  //  0..25 map to ASCII a..z or A..Z
+  // 26..35 map to ASCII 0..9
+  return digit + 22 + 75 * (digit < 26);
+};
+
+/**
+ * Bias adaptation function as per section 3.4 of RFC 3492.
+ * https://tools.ietf.org/html/rfc3492#section-3.4
+ */
+var adapt = function (delta, numPoints, firstTime) {
+  var k = 0;
+  delta = firstTime ? floor(delta / damp) : delta >> 1;
+  delta += floor(delta / numPoints);
+  while (delta > baseMinusTMin * tMax >> 1) {
+    delta = floor(delta / baseMinusTMin);
+    k += base;
+  }
+  return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));
+};
+
+/**
+ * Converts a string of Unicode symbols (e.g. a domain name label) to a
+ * Punycode string of ASCII-only symbols.
+ */
+var encode = function (input) {
+  var output = [];
+
+  // Convert the input in UCS-2 to an array of Unicode code points.
+  input = ucs2decode(input);
+
+  // Cache the length.
+  var inputLength = input.length;
+
+  // Initialize the state.
+  var n = initialN;
+  var delta = 0;
+  var bias = initialBias;
+  var i, currentValue;
+
+  // Handle the basic code points.
+  for (i = 0; i < input.length; i++) {
+    currentValue = input[i];
+    if (currentValue < 0x80) {
+      push(output, fromCharCode(currentValue));
+    }
+  }
+
+  var basicLength = output.length; // number of basic code points.
+  var handledCPCount = basicLength; // number of code points that have been handled;
+
+  // Finish the basic string with a delimiter unless it's empty.
+  if (basicLength) {
+    push(output, delimiter);
+  }
+
+  // Main encoding loop:
+  while (handledCPCount < inputLength) {
+    // All non-basic code points < n have been handled already. Find the next larger one:
+    var m = maxInt;
+    for (i = 0; i < input.length; i++) {
+      currentValue = input[i];
+      if (currentValue >= n && currentValue < m) {
+        m = currentValue;
+      }
+    }
+
+    // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, but guard against overflow.
+    var handledCPCountPlusOne = handledCPCount + 1;
+    if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {
+      throw new $RangeError(OVERFLOW_ERROR);
+    }
+
+    delta += (m - n) * handledCPCountPlusOne;
+    n = m;
+
+    for (i = 0; i < input.length; i++) {
+      currentValue = input[i];
+      if (currentValue < n && ++delta > maxInt) {
+        throw new $RangeError(OVERFLOW_ERROR);
+      }
+      if (currentValue === n) {
+        // Represent delta as a generalized variable-length integer.
+        var q = delta;
+        var k = base;
+        while (true) {
+          var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;
+          if (q < t) break;
+          var qMinusT = q - t;
+          var baseMinusT = base - t;
+          push(output, fromCharCode(digitToBasic(t + qMinusT % baseMinusT)));
+          q = floor(qMinusT / baseMinusT);
+          k += base;
+        }
+
+        push(output, fromCharCode(digitToBasic(q)));
+        bias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength);
+        delta = 0;
+        handledCPCount++;
+      }
+    }
+
+    delta++;
+    n++;
+  }
+  return join(output, '');
+};
+
+module.exports = function (input) {
+  var encoded = [];
+  var labels = split(replace(toLowerCase(input), regexSeparators, '\u002E'), '.');
+  var i, label;
+  for (i = 0; i < labels.length; i++) {
+    label = labels[i];
+    push(encoded, exec(regexNonASCII, label) ? 'xn--' + encode(label) : label);
+  }
+  return join(encoded, '.');
+};
diff --git a/node_modules/core-js/internals/string-repeat.js b/node_modules/core-js/internals/string-repeat.js
new file mode 100644
index 0000000..5d0460e
--- /dev/null
+++ b/node_modules/core-js/internals/string-repeat.js
@@ -0,0 +1,17 @@
+'use strict';
+var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
+var toString = require('../internals/to-string');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+
+var $RangeError = RangeError;
+
+// `String.prototype.repeat` method implementation
+// https://tc39.es/ecma262/#sec-string.prototype.repeat
+module.exports = function repeat(count) {
+  var str = toString(requireObjectCoercible(this));
+  var result = '';
+  var n = toIntegerOrInfinity(count);
+  if (n < 0 || n === Infinity) throw new $RangeError('Wrong number of repetitions');
+  for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;
+  return result;
+};
diff --git a/node_modules/core-js/internals/string-trim-end.js b/node_modules/core-js/internals/string-trim-end.js
new file mode 100644
index 0000000..a57c7d6
--- /dev/null
+++ b/node_modules/core-js/internals/string-trim-end.js
@@ -0,0 +1,11 @@
+'use strict';
+var $trimEnd = require('../internals/string-trim').end;
+var forcedStringTrimMethod = require('../internals/string-trim-forced');
+
+// `String.prototype.{ trimEnd, trimRight }` method
+// https://tc39.es/ecma262/#sec-string.prototype.trimend
+// https://tc39.es/ecma262/#String.prototype.trimright
+module.exports = forcedStringTrimMethod('trimEnd') ? function trimEnd() {
+  return $trimEnd(this);
+// eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe
+} : ''.trimEnd;
diff --git a/node_modules/core-js/internals/string-trim-forced.js b/node_modules/core-js/internals/string-trim-forced.js
new file mode 100644
index 0000000..86b7160
--- /dev/null
+++ b/node_modules/core-js/internals/string-trim-forced.js
@@ -0,0 +1,16 @@
+'use strict';
+var PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;
+var fails = require('../internals/fails');
+var whitespaces = require('../internals/whitespaces');
+
+var non = '\u200B\u0085\u180E';
+
+// check that a method works with the correct list
+// of whitespaces and has a correct name
+module.exports = function (METHOD_NAME) {
+  return fails(function () {
+    return !!whitespaces[METHOD_NAME]()
+      || non[METHOD_NAME]() !== non
+      || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);
+  });
+};
diff --git a/node_modules/core-js/internals/string-trim-start.js b/node_modules/core-js/internals/string-trim-start.js
new file mode 100644
index 0000000..b1e16cf
--- /dev/null
+++ b/node_modules/core-js/internals/string-trim-start.js
@@ -0,0 +1,11 @@
+'use strict';
+var $trimStart = require('../internals/string-trim').start;
+var forcedStringTrimMethod = require('../internals/string-trim-forced');
+
+// `String.prototype.{ trimStart, trimLeft }` method
+// https://tc39.es/ecma262/#sec-string.prototype.trimstart
+// https://tc39.es/ecma262/#String.prototype.trimleft
+module.exports = forcedStringTrimMethod('trimStart') ? function trimStart() {
+  return $trimStart(this);
+// eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe
+} : ''.trimStart;
diff --git a/node_modules/core-js/internals/string-trim.js b/node_modules/core-js/internals/string-trim.js
new file mode 100644
index 0000000..01379b5
--- /dev/null
+++ b/node_modules/core-js/internals/string-trim.js
@@ -0,0 +1,31 @@
+'use strict';
+var uncurryThis = require('../internals/function-uncurry-this');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+var toString = require('../internals/to-string');
+var whitespaces = require('../internals/whitespaces');
+
+var replace = uncurryThis(''.replace);
+var ltrim = RegExp('^[' + whitespaces + ']+');
+var rtrim = RegExp('(^|[^' + whitespaces + '])[' + whitespaces + ']+$');
+
+// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation
+var createMethod = function (TYPE) {
+  return function ($this) {
+    var string = toString(requireObjectCoercible($this));
+    if (TYPE & 1) string = replace(string, ltrim, '');
+    if (TYPE & 2) string = replace(string, rtrim, '$1');
+    return string;
+  };
+};
+
+module.exports = {
+  // `String.prototype.{ trimLeft, trimStart }` methods
+  // https://tc39.es/ecma262/#sec-string.prototype.trimstart
+  start: createMethod(1),
+  // `String.prototype.{ trimRight, trimEnd }` methods
+  // https://tc39.es/ecma262/#sec-string.prototype.trimend
+  end: createMethod(2),
+  // `String.prototype.trim` method
+  // https://tc39.es/ecma262/#sec-string.prototype.trim
+  trim: createMethod(3)
+};
diff --git a/node_modules/core-js/internals/structured-clone-proper-transfer.js b/node_modules/core-js/internals/structured-clone-proper-transfer.js
new file mode 100644
index 0000000..eb57f29
--- /dev/null
+++ b/node_modules/core-js/internals/structured-clone-proper-transfer.js
@@ -0,0 +1,16 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+var fails = require('../internals/fails');
+var V8 = require('../internals/environment-v8-version');
+var ENVIRONMENT = require('../internals/environment');
+
+var structuredClone = globalThis.structuredClone;
+
+module.exports = !!structuredClone && !fails(function () {
+  // prevent V8 ArrayBufferDetaching protector cell invalidation and performance degradation
+  // https://github.com/zloirock/core-js/issues/679
+  if ((ENVIRONMENT === 'DENO' && V8 > 92) || (ENVIRONMENT === 'NODE' && V8 > 94) || (ENVIRONMENT === 'BROWSER' && V8 > 97)) return false;
+  var buffer = new ArrayBuffer(8);
+  var clone = structuredClone(buffer, { transfer: [buffer] });
+  return buffer.byteLength !== 0 || clone.byteLength !== 8;
+});
diff --git a/node_modules/core-js/internals/symbol-constructor-detection.js b/node_modules/core-js/internals/symbol-constructor-detection.js
new file mode 100644
index 0000000..2c421dd
--- /dev/null
+++ b/node_modules/core-js/internals/symbol-constructor-detection.js
@@ -0,0 +1,19 @@
+'use strict';
+/* eslint-disable es/no-symbol -- required for testing */
+var V8_VERSION = require('../internals/environment-v8-version');
+var fails = require('../internals/fails');
+var globalThis = require('../internals/global-this');
+
+var $String = globalThis.String;
+
+// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing
+module.exports = !!Object.getOwnPropertySymbols && !fails(function () {
+  var symbol = Symbol('symbol detection');
+  // Chrome 38 Symbol has incorrect toString conversion
+  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances
+  // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,
+  // of course, fail.
+  return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||
+    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances
+    !Symbol.sham && V8_VERSION && V8_VERSION < 41;
+});
diff --git a/node_modules/core-js/internals/symbol-define-to-primitive.js b/node_modules/core-js/internals/symbol-define-to-primitive.js
new file mode 100644
index 0000000..67fb785
--- /dev/null
+++ b/node_modules/core-js/internals/symbol-define-to-primitive.js
@@ -0,0 +1,21 @@
+'use strict';
+var call = require('../internals/function-call');
+var getBuiltIn = require('../internals/get-built-in');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var defineBuiltIn = require('../internals/define-built-in');
+
+module.exports = function () {
+  var Symbol = getBuiltIn('Symbol');
+  var SymbolPrototype = Symbol && Symbol.prototype;
+  var valueOf = SymbolPrototype && SymbolPrototype.valueOf;
+  var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');
+
+  if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) {
+    // `Symbol.prototype[@@toPrimitive]` method
+    // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive
+    // eslint-disable-next-line no-unused-vars -- required for .length
+    defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) {
+      return call(valueOf, this);
+    }, { arity: 1 });
+  }
+};
diff --git a/node_modules/core-js/internals/symbol-is-registered.js b/node_modules/core-js/internals/symbol-is-registered.js
new file mode 100644
index 0000000..9c35d70
--- /dev/null
+++ b/node_modules/core-js/internals/symbol-is-registered.js
@@ -0,0 +1,17 @@
+'use strict';
+var getBuiltIn = require('../internals/get-built-in');
+var uncurryThis = require('../internals/function-uncurry-this');
+
+var Symbol = getBuiltIn('Symbol');
+var keyFor = Symbol.keyFor;
+var thisSymbolValue = uncurryThis(Symbol.prototype.valueOf);
+
+// `Symbol.isRegisteredSymbol` method
+// https://tc39.es/proposal-symbol-predicates/#sec-symbol-isregisteredsymbol
+module.exports = Symbol.isRegisteredSymbol || function isRegisteredSymbol(value) {
+  try {
+    return keyFor(thisSymbolValue(value)) !== undefined;
+  } catch (error) {
+    return false;
+  }
+};
diff --git a/node_modules/core-js/internals/symbol-is-well-known.js b/node_modules/core-js/internals/symbol-is-well-known.js
new file mode 100644
index 0000000..50ec53e
--- /dev/null
+++ b/node_modules/core-js/internals/symbol-is-well-known.js
@@ -0,0 +1,35 @@
+'use strict';
+var shared = require('../internals/shared');
+var getBuiltIn = require('../internals/get-built-in');
+var uncurryThis = require('../internals/function-uncurry-this');
+var isSymbol = require('../internals/is-symbol');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+var Symbol = getBuiltIn('Symbol');
+var $isWellKnownSymbol = Symbol.isWellKnownSymbol;
+var getOwnPropertyNames = getBuiltIn('Object', 'getOwnPropertyNames');
+var thisSymbolValue = uncurryThis(Symbol.prototype.valueOf);
+var WellKnownSymbolsStore = shared('wks');
+
+for (var i = 0, symbolKeys = getOwnPropertyNames(Symbol), symbolKeysLength = symbolKeys.length; i < symbolKeysLength; i++) {
+  // some old engines throws on access to some keys like `arguments` or `caller`
+  try {
+    var symbolKey = symbolKeys[i];
+    if (isSymbol(Symbol[symbolKey])) wellKnownSymbol(symbolKey);
+  } catch (error) { /* empty */ }
+}
+
+// `Symbol.isWellKnownSymbol` method
+// https://tc39.es/proposal-symbol-predicates/#sec-symbol-iswellknownsymbol
+// We should patch it for newly added well-known symbols. If it's not required, this module just will not be injected
+module.exports = function isWellKnownSymbol(value) {
+  if ($isWellKnownSymbol && $isWellKnownSymbol(value)) return true;
+  try {
+    var symbol = thisSymbolValue(value);
+    for (var j = 0, keys = getOwnPropertyNames(WellKnownSymbolsStore), keysLength = keys.length; j < keysLength; j++) {
+      // eslint-disable-next-line eqeqeq -- polyfilled symbols case
+      if (WellKnownSymbolsStore[keys[j]] == symbol) return true;
+    }
+  } catch (error) { /* empty */ }
+  return false;
+};
diff --git a/node_modules/core-js/internals/symbol-registry-detection.js b/node_modules/core-js/internals/symbol-registry-detection.js
new file mode 100644
index 0000000..d6fec44
--- /dev/null
+++ b/node_modules/core-js/internals/symbol-registry-detection.js
@@ -0,0 +1,5 @@
+'use strict';
+var NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');
+
+/* eslint-disable es/no-symbol -- safe */
+module.exports = NATIVE_SYMBOL && !!Symbol['for'] && !!Symbol.keyFor;
diff --git a/node_modules/core-js/internals/task.js b/node_modules/core-js/internals/task.js
new file mode 100644
index 0000000..691b36e
--- /dev/null
+++ b/node_modules/core-js/internals/task.js
@@ -0,0 +1,117 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+var apply = require('../internals/function-apply');
+var bind = require('../internals/function-bind-context');
+var isCallable = require('../internals/is-callable');
+var hasOwn = require('../internals/has-own-property');
+var fails = require('../internals/fails');
+var html = require('../internals/html');
+var arraySlice = require('../internals/array-slice');
+var createElement = require('../internals/document-create-element');
+var validateArgumentsLength = require('../internals/validate-arguments-length');
+var IS_IOS = require('../internals/environment-is-ios');
+var IS_NODE = require('../internals/environment-is-node');
+
+var set = globalThis.setImmediate;
+var clear = globalThis.clearImmediate;
+var process = globalThis.process;
+var Dispatch = globalThis.Dispatch;
+var Function = globalThis.Function;
+var MessageChannel = globalThis.MessageChannel;
+var String = globalThis.String;
+var counter = 0;
+var queue = {};
+var ONREADYSTATECHANGE = 'onreadystatechange';
+var $location, defer, channel, port;
+
+fails(function () {
+  // Deno throws a ReferenceError on `location` access without `--location` flag
+  $location = globalThis.location;
+});
+
+var run = function (id) {
+  if (hasOwn(queue, id)) {
+    var fn = queue[id];
+    delete queue[id];
+    fn();
+  }
+};
+
+var runner = function (id) {
+  return function () {
+    run(id);
+  };
+};
+
+var eventListener = function (event) {
+  run(event.data);
+};
+
+var globalPostMessageDefer = function (id) {
+  // old engines have not location.origin
+  globalThis.postMessage(String(id), $location.protocol + '//' + $location.host);
+};
+
+// Node.js 0.9+ & IE10+ has setImmediate, otherwise:
+if (!set || !clear) {
+  set = function setImmediate(handler) {
+    validateArgumentsLength(arguments.length, 1);
+    var fn = isCallable(handler) ? handler : Function(handler);
+    var args = arraySlice(arguments, 1);
+    queue[++counter] = function () {
+      apply(fn, undefined, args);
+    };
+    defer(counter);
+    return counter;
+  };
+  clear = function clearImmediate(id) {
+    delete queue[id];
+  };
+  // Node.js 0.8-
+  if (IS_NODE) {
+    defer = function (id) {
+      process.nextTick(runner(id));
+    };
+  // Sphere (JS game engine) Dispatch API
+  } else if (Dispatch && Dispatch.now) {
+    defer = function (id) {
+      Dispatch.now(runner(id));
+    };
+  // Browsers with MessageChannel, includes WebWorkers
+  // except iOS - https://github.com/zloirock/core-js/issues/624
+  } else if (MessageChannel && !IS_IOS) {
+    channel = new MessageChannel();
+    port = channel.port2;
+    channel.port1.onmessage = eventListener;
+    defer = bind(port.postMessage, port);
+  // Browsers with postMessage, skip WebWorkers
+  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
+  } else if (
+    globalThis.addEventListener &&
+    isCallable(globalThis.postMessage) &&
+    !globalThis.importScripts &&
+    $location && $location.protocol !== 'file:' &&
+    !fails(globalPostMessageDefer)
+  ) {
+    defer = globalPostMessageDefer;
+    globalThis.addEventListener('message', eventListener, false);
+  // IE8-
+  } else if (ONREADYSTATECHANGE in createElement('script')) {
+    defer = function (id) {
+      html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {
+        html.removeChild(this);
+        run(id);
+      };
+    };
+  // Rest old browsers
+  } else {
+    defer = function (id) {
+      setTimeout(runner(id), 0);
+    };
+  }
+}
+
+module.exports = {
+  set: set,
+  clear: clear
+};
diff --git a/node_modules/core-js/internals/this-number-value.js b/node_modules/core-js/internals/this-number-value.js
new file mode 100644
index 0000000..9bd6e3d
--- /dev/null
+++ b/node_modules/core-js/internals/this-number-value.js
@@ -0,0 +1,6 @@
+'use strict';
+var uncurryThis = require('../internals/function-uncurry-this');
+
+// `thisNumberValue` abstract operation
+// https://tc39.es/ecma262/#sec-thisnumbervalue
+module.exports = uncurryThis(1.0.valueOf);
diff --git a/node_modules/core-js/internals/to-absolute-index.js b/node_modules/core-js/internals/to-absolute-index.js
new file mode 100644
index 0000000..11899b3
--- /dev/null
+++ b/node_modules/core-js/internals/to-absolute-index.js
@@ -0,0 +1,13 @@
+'use strict';
+var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
+
+var max = Math.max;
+var min = Math.min;
+
+// Helper for a popular repeating case of the spec:
+// Let integer be ? ToInteger(index).
+// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).
+module.exports = function (index, length) {
+  var integer = toIntegerOrInfinity(index);
+  return integer < 0 ? max(integer + length, 0) : min(integer, length);
+};
diff --git a/node_modules/core-js/internals/to-big-int.js b/node_modules/core-js/internals/to-big-int.js
new file mode 100644
index 0000000..4e36df9
--- /dev/null
+++ b/node_modules/core-js/internals/to-big-int.js
@@ -0,0 +1,13 @@
+'use strict';
+var toPrimitive = require('../internals/to-primitive');
+
+var $TypeError = TypeError;
+
+// `ToBigInt` abstract operation
+// https://tc39.es/ecma262/#sec-tobigint
+module.exports = function (argument) {
+  var prim = toPrimitive(argument, 'number');
+  if (typeof prim == 'number') throw new $TypeError("Can't convert number to bigint");
+  // eslint-disable-next-line es/no-bigint -- safe
+  return BigInt(prim);
+};
diff --git a/node_modules/core-js/internals/to-index.js b/node_modules/core-js/internals/to-index.js
new file mode 100644
index 0000000..6333381
--- /dev/null
+++ b/node_modules/core-js/internals/to-index.js
@@ -0,0 +1,15 @@
+'use strict';
+var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
+var toLength = require('../internals/to-length');
+
+var $RangeError = RangeError;
+
+// `ToIndex` abstract operation
+// https://tc39.es/ecma262/#sec-toindex
+module.exports = function (it) {
+  if (it === undefined) return 0;
+  var number = toIntegerOrInfinity(it);
+  var length = toLength(number);
+  if (number !== length) throw new $RangeError('Wrong length or index');
+  return length;
+};
diff --git a/node_modules/core-js/internals/to-indexed-object.js b/node_modules/core-js/internals/to-indexed-object.js
new file mode 100644
index 0000000..74d66d2
--- /dev/null
+++ b/node_modules/core-js/internals/to-indexed-object.js
@@ -0,0 +1,8 @@
+'use strict';
+// toObject with fallback for non-array-like ES3 strings
+var IndexedObject = require('../internals/indexed-object');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+
+module.exports = function (it) {
+  return IndexedObject(requireObjectCoercible(it));
+};
diff --git a/node_modules/core-js/internals/to-integer-or-infinity.js b/node_modules/core-js/internals/to-integer-or-infinity.js
new file mode 100644
index 0000000..8b27797
--- /dev/null
+++ b/node_modules/core-js/internals/to-integer-or-infinity.js
@@ -0,0 +1,10 @@
+'use strict';
+var trunc = require('../internals/math-trunc');
+
+// `ToIntegerOrInfinity` abstract operation
+// https://tc39.es/ecma262/#sec-tointegerorinfinity
+module.exports = function (argument) {
+  var number = +argument;
+  // eslint-disable-next-line no-self-compare -- NaN check
+  return number !== number || number === 0 ? 0 : trunc(number);
+};
diff --git a/node_modules/core-js/internals/to-length.js b/node_modules/core-js/internals/to-length.js
new file mode 100644
index 0000000..3166ef5
--- /dev/null
+++ b/node_modules/core-js/internals/to-length.js
@@ -0,0 +1,11 @@
+'use strict';
+var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
+
+var min = Math.min;
+
+// `ToLength` abstract operation
+// https://tc39.es/ecma262/#sec-tolength
+module.exports = function (argument) {
+  var len = toIntegerOrInfinity(argument);
+  return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991
+};
diff --git a/node_modules/core-js/internals/to-object.js b/node_modules/core-js/internals/to-object.js
new file mode 100644
index 0000000..e5c736a
--- /dev/null
+++ b/node_modules/core-js/internals/to-object.js
@@ -0,0 +1,10 @@
+'use strict';
+var requireObjectCoercible = require('../internals/require-object-coercible');
+
+var $Object = Object;
+
+// `ToObject` abstract operation
+// https://tc39.es/ecma262/#sec-toobject
+module.exports = function (argument) {
+  return $Object(requireObjectCoercible(argument));
+};
diff --git a/node_modules/core-js/internals/to-offset.js b/node_modules/core-js/internals/to-offset.js
new file mode 100644
index 0000000..7376f6f
--- /dev/null
+++ b/node_modules/core-js/internals/to-offset.js
@@ -0,0 +1,10 @@
+'use strict';
+var toPositiveInteger = require('../internals/to-positive-integer');
+
+var $RangeError = RangeError;
+
+module.exports = function (it, BYTES) {
+  var offset = toPositiveInteger(it);
+  if (offset % BYTES) throw new $RangeError('Wrong offset');
+  return offset;
+};
diff --git a/node_modules/core-js/internals/to-positive-integer.js b/node_modules/core-js/internals/to-positive-integer.js
new file mode 100644
index 0000000..5376f51
--- /dev/null
+++ b/node_modules/core-js/internals/to-positive-integer.js
@@ -0,0 +1,10 @@
+'use strict';
+var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
+
+var $RangeError = RangeError;
+
+module.exports = function (it) {
+  var result = toIntegerOrInfinity(it);
+  if (result < 0) throw new $RangeError("The argument can't be less than 0");
+  return result;
+};
diff --git a/node_modules/core-js/internals/to-primitive.js b/node_modules/core-js/internals/to-primitive.js
new file mode 100644
index 0000000..a751843
--- /dev/null
+++ b/node_modules/core-js/internals/to-primitive.js
@@ -0,0 +1,26 @@
+'use strict';
+var call = require('../internals/function-call');
+var isObject = require('../internals/is-object');
+var isSymbol = require('../internals/is-symbol');
+var getMethod = require('../internals/get-method');
+var ordinaryToPrimitive = require('../internals/ordinary-to-primitive');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+var $TypeError = TypeError;
+var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');
+
+// `ToPrimitive` abstract operation
+// https://tc39.es/ecma262/#sec-toprimitive
+module.exports = function (input, pref) {
+  if (!isObject(input) || isSymbol(input)) return input;
+  var exoticToPrim = getMethod(input, TO_PRIMITIVE);
+  var result;
+  if (exoticToPrim) {
+    if (pref === undefined) pref = 'default';
+    result = call(exoticToPrim, input, pref);
+    if (!isObject(result) || isSymbol(result)) return result;
+    throw new $TypeError("Can't convert object to primitive value");
+  }
+  if (pref === undefined) pref = 'number';
+  return ordinaryToPrimitive(input, pref);
+};
diff --git a/node_modules/core-js/internals/to-property-key.js b/node_modules/core-js/internals/to-property-key.js
new file mode 100644
index 0000000..f11cf99
--- /dev/null
+++ b/node_modules/core-js/internals/to-property-key.js
@@ -0,0 +1,10 @@
+'use strict';
+var toPrimitive = require('../internals/to-primitive');
+var isSymbol = require('../internals/is-symbol');
+
+// `ToPropertyKey` abstract operation
+// https://tc39.es/ecma262/#sec-topropertykey
+module.exports = function (argument) {
+  var key = toPrimitive(argument, 'string');
+  return isSymbol(key) ? key : key + '';
+};
diff --git a/node_modules/core-js/internals/to-set-like.js b/node_modules/core-js/internals/to-set-like.js
new file mode 100644
index 0000000..dcdbda3
--- /dev/null
+++ b/node_modules/core-js/internals/to-set-like.js
@@ -0,0 +1,20 @@
+'use strict';
+var getBuiltIn = require('../internals/get-built-in');
+var isCallable = require('../internals/is-callable');
+var isIterable = require('../internals/is-iterable');
+var isObject = require('../internals/is-object');
+
+var Set = getBuiltIn('Set');
+
+var isSetLike = function (it) {
+  return isObject(it)
+    && typeof it.size == 'number'
+    && isCallable(it.has)
+    && isCallable(it.keys);
+};
+
+// fallback old -> new set methods proposal arguments
+module.exports = function (it) {
+  if (isSetLike(it)) return it;
+  return isIterable(it) ? new Set(it) : it;
+};
diff --git a/node_modules/core-js/internals/to-string-tag-support.js b/node_modules/core-js/internals/to-string-tag-support.js
new file mode 100644
index 0000000..916a788
--- /dev/null
+++ b/node_modules/core-js/internals/to-string-tag-support.js
@@ -0,0 +1,9 @@
+'use strict';
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+var TO_STRING_TAG = wellKnownSymbol('toStringTag');
+var test = {};
+
+test[TO_STRING_TAG] = 'z';
+
+module.exports = String(test) === '[object z]';
diff --git a/node_modules/core-js/internals/to-string.js b/node_modules/core-js/internals/to-string.js
new file mode 100644
index 0000000..0b0fae5
--- /dev/null
+++ b/node_modules/core-js/internals/to-string.js
@@ -0,0 +1,9 @@
+'use strict';
+var classof = require('../internals/classof');
+
+var $String = String;
+
+module.exports = function (argument) {
+  if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');
+  return $String(argument);
+};
diff --git a/node_modules/core-js/internals/to-uint8-clamped.js b/node_modules/core-js/internals/to-uint8-clamped.js
new file mode 100644
index 0000000..f4bda19
--- /dev/null
+++ b/node_modules/core-js/internals/to-uint8-clamped.js
@@ -0,0 +1,7 @@
+'use strict';
+var round = Math.round;
+
+module.exports = function (it) {
+  var value = round(it);
+  return value < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;
+};
diff --git a/node_modules/core-js/internals/try-to-string.js b/node_modules/core-js/internals/try-to-string.js
new file mode 100644
index 0000000..8f2357d
--- /dev/null
+++ b/node_modules/core-js/internals/try-to-string.js
@@ -0,0 +1,10 @@
+'use strict';
+var $String = String;
+
+module.exports = function (argument) {
+  try {
+    return $String(argument);
+  } catch (error) {
+    return 'Object';
+  }
+};
diff --git a/node_modules/core-js/internals/typed-array-constructor.js b/node_modules/core-js/internals/typed-array-constructor.js
new file mode 100644
index 0000000..b7046a3
--- /dev/null
+++ b/node_modules/core-js/internals/typed-array-constructor.js
@@ -0,0 +1,236 @@
+'use strict';
+var $ = require('../internals/export');
+var globalThis = require('../internals/global-this');
+var call = require('../internals/function-call');
+var DESCRIPTORS = require('../internals/descriptors');
+var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var ArrayBufferModule = require('../internals/array-buffer');
+var anInstance = require('../internals/an-instance');
+var createPropertyDescriptor = require('../internals/create-property-descriptor');
+var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
+var isIntegralNumber = require('../internals/is-integral-number');
+var toLength = require('../internals/to-length');
+var toIndex = require('../internals/to-index');
+var toOffset = require('../internals/to-offset');
+var toUint8Clamped = require('../internals/to-uint8-clamped');
+var toPropertyKey = require('../internals/to-property-key');
+var hasOwn = require('../internals/has-own-property');
+var classof = require('../internals/classof');
+var isObject = require('../internals/is-object');
+var isSymbol = require('../internals/is-symbol');
+var create = require('../internals/object-create');
+var isPrototypeOf = require('../internals/object-is-prototype-of');
+var setPrototypeOf = require('../internals/object-set-prototype-of');
+var getOwnPropertyNames = require('../internals/object-get-own-property-names').f;
+var typedArrayFrom = require('../internals/typed-array-from');
+var forEach = require('../internals/array-iteration').forEach;
+var setSpecies = require('../internals/set-species');
+var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
+var definePropertyModule = require('../internals/object-define-property');
+var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');
+var arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');
+var InternalStateModule = require('../internals/internal-state');
+var inheritIfRequired = require('../internals/inherit-if-required');
+
+var getInternalState = InternalStateModule.get;
+var setInternalState = InternalStateModule.set;
+var enforceInternalState = InternalStateModule.enforce;
+var nativeDefineProperty = definePropertyModule.f;
+var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
+var RangeError = globalThis.RangeError;
+var ArrayBuffer = ArrayBufferModule.ArrayBuffer;
+var ArrayBufferPrototype = ArrayBuffer.prototype;
+var DataView = ArrayBufferModule.DataView;
+var NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;
+var TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;
+var TypedArray = ArrayBufferViewCore.TypedArray;
+var TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;
+var isTypedArray = ArrayBufferViewCore.isTypedArray;
+var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';
+var WRONG_LENGTH = 'Wrong length';
+
+var addGetter = function (it, key) {
+  defineBuiltInAccessor(it, key, {
+    configurable: true,
+    get: function () {
+      return getInternalState(this)[key];
+    }
+  });
+};
+
+var isArrayBuffer = function (it) {
+  var klass;
+  return isPrototypeOf(ArrayBufferPrototype, it) || (klass = classof(it)) === 'ArrayBuffer' || klass === 'SharedArrayBuffer';
+};
+
+var isTypedArrayIndex = function (target, key) {
+  return isTypedArray(target)
+    && !isSymbol(key)
+    && key in target
+    && isIntegralNumber(+key)
+    && key >= 0;
+};
+
+var wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {
+  key = toPropertyKey(key);
+  return isTypedArrayIndex(target, key)
+    ? createPropertyDescriptor(2, target[key])
+    : nativeGetOwnPropertyDescriptor(target, key);
+};
+
+var wrappedDefineProperty = function defineProperty(target, key, descriptor) {
+  key = toPropertyKey(key);
+  if (isTypedArrayIndex(target, key)
+    && isObject(descriptor)
+    && hasOwn(descriptor, 'value')
+    && !hasOwn(descriptor, 'get')
+    && !hasOwn(descriptor, 'set')
+    // TODO: add validation descriptor w/o calling accessors
+    && !descriptor.configurable
+    && (!hasOwn(descriptor, 'writable') || descriptor.writable)
+    && (!hasOwn(descriptor, 'enumerable') || descriptor.enumerable)
+  ) {
+    target[key] = descriptor.value;
+    return target;
+  } return nativeDefineProperty(target, key, descriptor);
+};
+
+if (DESCRIPTORS) {
+  if (!NATIVE_ARRAY_BUFFER_VIEWS) {
+    getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;
+    definePropertyModule.f = wrappedDefineProperty;
+    addGetter(TypedArrayPrototype, 'buffer');
+    addGetter(TypedArrayPrototype, 'byteOffset');
+    addGetter(TypedArrayPrototype, 'byteLength');
+    addGetter(TypedArrayPrototype, 'length');
+  }
+
+  $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {
+    getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,
+    defineProperty: wrappedDefineProperty
+  });
+
+  module.exports = function (TYPE, wrapper, CLAMPED) {
+    var BYTES = TYPE.match(/\d+/)[0] / 8;
+    var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';
+    var GETTER = 'get' + TYPE;
+    var SETTER = 'set' + TYPE;
+    var NativeTypedArrayConstructor = globalThis[CONSTRUCTOR_NAME];
+    var TypedArrayConstructor = NativeTypedArrayConstructor;
+    var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;
+    var exported = {};
+
+    var getter = function (that, index) {
+      var data = getInternalState(that);
+      return data.view[GETTER](index * BYTES + data.byteOffset, true);
+    };
+
+    var setter = function (that, index, value) {
+      var data = getInternalState(that);
+      data.view[SETTER](index * BYTES + data.byteOffset, CLAMPED ? toUint8Clamped(value) : value, true);
+    };
+
+    var addElement = function (that, index) {
+      nativeDefineProperty(that, index, {
+        get: function () {
+          return getter(this, index);
+        },
+        set: function (value) {
+          return setter(this, index, value);
+        },
+        enumerable: true
+      });
+    };
+
+    if (!NATIVE_ARRAY_BUFFER_VIEWS) {
+      TypedArrayConstructor = wrapper(function (that, data, offset, $length) {
+        anInstance(that, TypedArrayConstructorPrototype);
+        var index = 0;
+        var byteOffset = 0;
+        var buffer, byteLength, length;
+        if (!isObject(data)) {
+          length = toIndex(data);
+          byteLength = length * BYTES;
+          buffer = new ArrayBuffer(byteLength);
+        } else if (isArrayBuffer(data)) {
+          buffer = data;
+          byteOffset = toOffset(offset, BYTES);
+          var $len = data.byteLength;
+          if ($length === undefined) {
+            if ($len % BYTES) throw new RangeError(WRONG_LENGTH);
+            byteLength = $len - byteOffset;
+            if (byteLength < 0) throw new RangeError(WRONG_LENGTH);
+          } else {
+            byteLength = toLength($length) * BYTES;
+            if (byteLength + byteOffset > $len) throw new RangeError(WRONG_LENGTH);
+          }
+          length = byteLength / BYTES;
+        } else if (isTypedArray(data)) {
+          return arrayFromConstructorAndList(TypedArrayConstructor, data);
+        } else {
+          return call(typedArrayFrom, TypedArrayConstructor, data);
+        }
+        setInternalState(that, {
+          buffer: buffer,
+          byteOffset: byteOffset,
+          byteLength: byteLength,
+          length: length,
+          view: new DataView(buffer)
+        });
+        while (index < length) addElement(that, index++);
+      });
+
+      if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);
+      TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);
+    } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {
+      TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {
+        anInstance(dummy, TypedArrayConstructorPrototype);
+        return inheritIfRequired(function () {
+          if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));
+          if (isArrayBuffer(data)) return $length !== undefined
+            ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)
+            : typedArrayOffset !== undefined
+              ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))
+              : new NativeTypedArrayConstructor(data);
+          if (isTypedArray(data)) return arrayFromConstructorAndList(TypedArrayConstructor, data);
+          return call(typedArrayFrom, TypedArrayConstructor, data);
+        }(), dummy, TypedArrayConstructor);
+      });
+
+      if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);
+      forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {
+        if (!(key in TypedArrayConstructor)) {
+          createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);
+        }
+      });
+      TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;
+    }
+
+    if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {
+      createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);
+    }
+
+    enforceInternalState(TypedArrayConstructorPrototype).TypedArrayConstructor = TypedArrayConstructor;
+
+    if (TYPED_ARRAY_TAG) {
+      createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);
+    }
+
+    var FORCED = TypedArrayConstructor !== NativeTypedArrayConstructor;
+
+    exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;
+
+    $({ global: true, constructor: true, forced: FORCED, sham: !NATIVE_ARRAY_BUFFER_VIEWS }, exported);
+
+    if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {
+      createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);
+    }
+
+    if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {
+      createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);
+    }
+
+    setSpecies(CONSTRUCTOR_NAME);
+  };
+} else module.exports = function () { /* empty */ };
diff --git a/node_modules/core-js/internals/typed-array-constructors-require-wrappers.js b/node_modules/core-js/internals/typed-array-constructors-require-wrappers.js
new file mode 100644
index 0000000..fa256fc
--- /dev/null
+++ b/node_modules/core-js/internals/typed-array-constructors-require-wrappers.js
@@ -0,0 +1,23 @@
+'use strict';
+/* eslint-disable no-new, sonarjs/inconsistent-function-call -- required for testing */
+var globalThis = require('../internals/global-this');
+var fails = require('../internals/fails');
+var checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');
+var NATIVE_ARRAY_BUFFER_VIEWS = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER_VIEWS;
+
+var ArrayBuffer = globalThis.ArrayBuffer;
+var Int8Array = globalThis.Int8Array;
+
+module.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {
+  Int8Array(1);
+}) || !fails(function () {
+  new Int8Array(-1);
+}) || !checkCorrectnessOfIteration(function (iterable) {
+  new Int8Array();
+  new Int8Array(null);
+  new Int8Array(1.5);
+  new Int8Array(iterable);
+}, true) || fails(function () {
+  // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill
+  return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;
+});
diff --git a/node_modules/core-js/internals/typed-array-from-same-type-and-list.js b/node_modules/core-js/internals/typed-array-from-same-type-and-list.js
new file mode 100644
index 0000000..c6aea58
--- /dev/null
+++ b/node_modules/core-js/internals/typed-array-from-same-type-and-list.js
@@ -0,0 +1,7 @@
+'use strict';
+var arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');
+var getTypedArrayConstructor = require('../internals/array-buffer-view-core').getTypedArrayConstructor;
+
+module.exports = function (instance, list) {
+  return arrayFromConstructorAndList(getTypedArrayConstructor(instance), list);
+};
diff --git a/node_modules/core-js/internals/typed-array-from.js b/node_modules/core-js/internals/typed-array-from.js
new file mode 100644
index 0000000..f9cf1da
--- /dev/null
+++ b/node_modules/core-js/internals/typed-array-from.js
@@ -0,0 +1,42 @@
+'use strict';
+var bind = require('../internals/function-bind-context');
+var call = require('../internals/function-call');
+var aConstructor = require('../internals/a-constructor');
+var toObject = require('../internals/to-object');
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+var getIterator = require('../internals/get-iterator');
+var getIteratorMethod = require('../internals/get-iterator-method');
+var isArrayIteratorMethod = require('../internals/is-array-iterator-method');
+var isBigIntArray = require('../internals/is-big-int-array');
+var aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor;
+var toBigInt = require('../internals/to-big-int');
+
+module.exports = function from(source /* , mapfn, thisArg */) {
+  var C = aConstructor(this);
+  var O = toObject(source);
+  var argumentsLength = arguments.length;
+  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;
+  var mapping = mapfn !== undefined;
+  var iteratorMethod = getIteratorMethod(O);
+  var i, length, result, thisIsBigIntArray, value, step, iterator, next;
+  if (iteratorMethod && !isArrayIteratorMethod(iteratorMethod)) {
+    iterator = getIterator(O, iteratorMethod);
+    next = iterator.next;
+    O = [];
+    while (!(step = call(next, iterator)).done) {
+      O.push(step.value);
+    }
+  }
+  if (mapping && argumentsLength > 2) {
+    mapfn = bind(mapfn, arguments[2]);
+  }
+  length = lengthOfArrayLike(O);
+  result = new (aTypedArrayConstructor(C))(length);
+  thisIsBigIntArray = isBigIntArray(result);
+  for (i = 0; length > i; i++) {
+    value = mapping ? mapfn(O[i], i) : O[i];
+    // FF30- typed arrays doesn't properly convert objects to typed array values
+    result[i] = thisIsBigIntArray ? toBigInt(value) : +value;
+  }
+  return result;
+};
diff --git a/node_modules/core-js/internals/uid.js b/node_modules/core-js/internals/uid.js
new file mode 100644
index 0000000..c02c401
--- /dev/null
+++ b/node_modules/core-js/internals/uid.js
@@ -0,0 +1,10 @@
+'use strict';
+var uncurryThis = require('../internals/function-uncurry-this');
+
+var id = 0;
+var postfix = Math.random();
+var toString = uncurryThis(1.0.toString);
+
+module.exports = function (key) {
+  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);
+};
diff --git a/node_modules/core-js/internals/uint8-from-base64.js b/node_modules/core-js/internals/uint8-from-base64.js
new file mode 100644
index 0000000..1297e0c
--- /dev/null
+++ b/node_modules/core-js/internals/uint8-from-base64.js
@@ -0,0 +1,156 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+var uncurryThis = require('../internals/function-uncurry-this');
+var anObjectOrUndefined = require('../internals/an-object-or-undefined');
+var aString = require('../internals/a-string');
+var hasOwn = require('../internals/has-own-property');
+var base64Map = require('../internals/base64-map');
+var getAlphabetOption = require('../internals/get-alphabet-option');
+var notDetached = require('../internals/array-buffer-not-detached');
+
+var base64Alphabet = base64Map.c2i;
+var base64UrlAlphabet = base64Map.c2iUrl;
+
+var SyntaxError = globalThis.SyntaxError;
+var TypeError = globalThis.TypeError;
+var at = uncurryThis(''.charAt);
+
+var skipAsciiWhitespace = function (string, index) {
+  var length = string.length;
+  for (;index < length; index++) {
+    var chr = at(string, index);
+    if (chr !== ' ' && chr !== '\t' && chr !== '\n' && chr !== '\f' && chr !== '\r') break;
+  } return index;
+};
+
+var decodeBase64Chunk = function (chunk, alphabet, throwOnExtraBits) {
+  var chunkLength = chunk.length;
+
+  if (chunkLength < 4) {
+    chunk += chunkLength === 2 ? 'AA' : 'A';
+  }
+
+  var triplet = (alphabet[at(chunk, 0)] << 18)
+    + (alphabet[at(chunk, 1)] << 12)
+    + (alphabet[at(chunk, 2)] << 6)
+    + alphabet[at(chunk, 3)];
+
+  var chunkBytes = [
+    (triplet >> 16) & 255,
+    (triplet >> 8) & 255,
+    triplet & 255
+  ];
+
+  if (chunkLength === 2) {
+    if (throwOnExtraBits && chunkBytes[1] !== 0) {
+      throw new SyntaxError('Extra bits');
+    }
+    return [chunkBytes[0]];
+  }
+
+  if (chunkLength === 3) {
+    if (throwOnExtraBits && chunkBytes[2] !== 0) {
+      throw new SyntaxError('Extra bits');
+    }
+    return [chunkBytes[0], chunkBytes[1]];
+  }
+
+  return chunkBytes;
+};
+
+var writeBytes = function (bytes, elements, written) {
+  var elementsLength = elements.length;
+  for (var index = 0; index < elementsLength; index++) {
+    bytes[written + index] = elements[index];
+  }
+  return written + elementsLength;
+};
+
+/* eslint-disable max-statements, max-depth -- TODO */
+module.exports = function (string, options, into, maxLength) {
+  aString(string);
+  anObjectOrUndefined(options);
+  var alphabet = getAlphabetOption(options) === 'base64' ? base64Alphabet : base64UrlAlphabet;
+  var lastChunkHandling = options ? options.lastChunkHandling : undefined;
+
+  if (lastChunkHandling === undefined) lastChunkHandling = 'loose';
+
+  if (lastChunkHandling !== 'loose' && lastChunkHandling !== 'strict' && lastChunkHandling !== 'stop-before-partial') {
+    throw new TypeError('Incorrect `lastChunkHandling` option');
+  }
+
+  if (into) notDetached(into.buffer);
+
+  var bytes = into || [];
+  var written = 0;
+  var read = 0;
+  var chunk = '';
+  var index = 0;
+
+  if (maxLength) while (true) {
+    index = skipAsciiWhitespace(string, index);
+    if (index === string.length) {
+      if (chunk.length > 0) {
+        if (lastChunkHandling === 'stop-before-partial') {
+          break;
+        }
+        if (lastChunkHandling === 'loose') {
+          if (chunk.length === 1) {
+            throw new SyntaxError('Malformed padding: exactly one additional character');
+          }
+          written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, false), written);
+        } else {
+          throw new SyntaxError('Missing padding');
+        }
+      }
+      read = string.length;
+      break;
+    }
+    var chr = at(string, index);
+    ++index;
+    if (chr === '=') {
+      if (chunk.length < 2) {
+        throw new SyntaxError('Padding is too early');
+      }
+      index = skipAsciiWhitespace(string, index);
+      if (chunk.length === 2) {
+        if (index === string.length) {
+          if (lastChunkHandling === 'stop-before-partial') {
+            break;
+          }
+          throw new SyntaxError('Malformed padding: only one =');
+        }
+        if (at(string, index) === '=') {
+          ++index;
+          index = skipAsciiWhitespace(string, index);
+        }
+      }
+      if (index < string.length) {
+        throw new SyntaxError('Unexpected character after padding');
+      }
+      written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, lastChunkHandling === 'strict'), written);
+      read = string.length;
+      break;
+    }
+    if (!hasOwn(alphabet, chr)) {
+      throw new SyntaxError('Unexpected character');
+    }
+    var remainingBytes = maxLength - written;
+    if (remainingBytes === 1 && chunk.length === 2 || remainingBytes === 2 && chunk.length === 3) {
+      // special case: we can fit exactly the number of bytes currently represented by chunk, so we were just checking for `=`
+      break;
+    }
+
+    chunk += chr;
+    if (chunk.length === 4) {
+      written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, false), written);
+      chunk = '';
+      read = index;
+      if (written === maxLength) {
+        break;
+      }
+    }
+  }
+
+  return { bytes: bytes, read: read, written: written };
+};
diff --git a/node_modules/core-js/internals/uint8-from-hex.js b/node_modules/core-js/internals/uint8-from-hex.js
new file mode 100644
index 0000000..fb195c7
--- /dev/null
+++ b/node_modules/core-js/internals/uint8-from-hex.js
@@ -0,0 +1,26 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+var uncurryThis = require('../internals/function-uncurry-this');
+
+var Uint8Array = globalThis.Uint8Array;
+var SyntaxError = globalThis.SyntaxError;
+var parseInt = globalThis.parseInt;
+var min = Math.min;
+var NOT_HEX = /[^\da-f]/i;
+var exec = uncurryThis(NOT_HEX.exec);
+var stringSlice = uncurryThis(''.slice);
+
+module.exports = function (string, into) {
+  var stringLength = string.length;
+  if (stringLength % 2 !== 0) throw new SyntaxError('String should be an even number of characters');
+  var maxLength = into ? min(into.length, stringLength / 2) : stringLength / 2;
+  var bytes = into || new Uint8Array(maxLength);
+  var read = 0;
+  var written = 0;
+  while (written < maxLength) {
+    var hexits = stringSlice(string, read, read += 2);
+    if (exec(NOT_HEX, hexits)) throw new SyntaxError('String should only contain hex characters');
+    bytes[written++] = parseInt(hexits, 16);
+  }
+  return { bytes: bytes, read: read };
+};
diff --git a/node_modules/core-js/internals/url-constructor-detection.js b/node_modules/core-js/internals/url-constructor-detection.js
new file mode 100644
index 0000000..5a67c99
--- /dev/null
+++ b/node_modules/core-js/internals/url-constructor-detection.js
@@ -0,0 +1,42 @@
+'use strict';
+var fails = require('../internals/fails');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var DESCRIPTORS = require('../internals/descriptors');
+var IS_PURE = require('../internals/is-pure');
+
+var ITERATOR = wellKnownSymbol('iterator');
+
+module.exports = !fails(function () {
+  // eslint-disable-next-line unicorn/relative-url-style -- required for testing
+  var url = new URL('b?a=1&b=2&c=3', 'https://a');
+  var params = url.searchParams;
+  var params2 = new URLSearchParams('a=1&a=2&b=3');
+  var result = '';
+  url.pathname = 'c%20d';
+  params.forEach(function (value, key) {
+    params['delete']('b');
+    result += key + value;
+  });
+  params2['delete']('a', 2);
+  // `undefined` case is a Chromium 117 bug
+  // https://bugs.chromium.org/p/v8/issues/detail?id=14222
+  params2['delete']('b', undefined);
+  return (IS_PURE && (!url.toJSON || !params2.has('a', 1) || params2.has('a', 2) || !params2.has('a', undefined) || params2.has('b')))
+    || (!params.size && (IS_PURE || !DESCRIPTORS))
+    || !params.sort
+    || url.href !== 'https://a/c%20d?a=1&c=3'
+    || params.get('c') !== '3'
+    || String(new URLSearchParams('?a=1')) !== 'a=1'
+    || !params[ITERATOR]
+    // throws in Edge
+    || new URL('https://a@b').username !== 'a'
+    || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'
+    // not punycoded in Edge
+    || new URL('https://тест').host !== 'xn--e1aybc'
+    // not escaped in Chrome 62-
+    || new URL('https://a#б').hash !== '#%D0%B1'
+    // fails in Chrome 66-
+    || result !== 'a1c3'
+    // throws in Safari
+    || new URL('https://x', undefined).host !== 'x';
+});
diff --git a/node_modules/core-js/internals/use-symbol-as-uid.js b/node_modules/core-js/internals/use-symbol-as-uid.js
new file mode 100644
index 0000000..c0262ae
--- /dev/null
+++ b/node_modules/core-js/internals/use-symbol-as-uid.js
@@ -0,0 +1,7 @@
+'use strict';
+/* eslint-disable es/no-symbol -- required for testing */
+var NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');
+
+module.exports = NATIVE_SYMBOL &&
+  !Symbol.sham &&
+  typeof Symbol.iterator == 'symbol';
diff --git a/node_modules/core-js/internals/v8-prototype-define-bug.js b/node_modules/core-js/internals/v8-prototype-define-bug.js
new file mode 100644
index 0000000..278d2bf
--- /dev/null
+++ b/node_modules/core-js/internals/v8-prototype-define-bug.js
@@ -0,0 +1,13 @@
+'use strict';
+var DESCRIPTORS = require('../internals/descriptors');
+var fails = require('../internals/fails');
+
+// V8 ~ Chrome 36-
+// https://bugs.chromium.org/p/v8/issues/detail?id=3334
+module.exports = DESCRIPTORS && fails(function () {
+  // eslint-disable-next-line es/no-object-defineproperty -- required for testing
+  return Object.defineProperty(function () { /* empty */ }, 'prototype', {
+    value: 42,
+    writable: false
+  }).prototype !== 42;
+});
diff --git a/node_modules/core-js/internals/validate-arguments-length.js b/node_modules/core-js/internals/validate-arguments-length.js
new file mode 100644
index 0000000..b3a67b1
--- /dev/null
+++ b/node_modules/core-js/internals/validate-arguments-length.js
@@ -0,0 +1,7 @@
+'use strict';
+var $TypeError = TypeError;
+
+module.exports = function (passed, required) {
+  if (passed < required) throw new $TypeError('Not enough arguments');
+  return passed;
+};
diff --git a/node_modules/core-js/internals/weak-map-basic-detection.js b/node_modules/core-js/internals/weak-map-basic-detection.js
new file mode 100644
index 0000000..d9072c2
--- /dev/null
+++ b/node_modules/core-js/internals/weak-map-basic-detection.js
@@ -0,0 +1,7 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+var isCallable = require('../internals/is-callable');
+
+var WeakMap = globalThis.WeakMap;
+
+module.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));
diff --git a/node_modules/core-js/internals/weak-map-helpers.js b/node_modules/core-js/internals/weak-map-helpers.js
new file mode 100644
index 0000000..a58bc82
--- /dev/null
+++ b/node_modules/core-js/internals/weak-map-helpers.js
@@ -0,0 +1,14 @@
+'use strict';
+var uncurryThis = require('../internals/function-uncurry-this');
+
+// eslint-disable-next-line es/no-weak-map -- safe
+var WeakMapPrototype = WeakMap.prototype;
+
+module.exports = {
+  // eslint-disable-next-line es/no-weak-map -- safe
+  WeakMap: WeakMap,
+  set: uncurryThis(WeakMapPrototype.set),
+  get: uncurryThis(WeakMapPrototype.get),
+  has: uncurryThis(WeakMapPrototype.has),
+  remove: uncurryThis(WeakMapPrototype['delete'])
+};
diff --git a/node_modules/core-js/internals/weak-set-helpers.js b/node_modules/core-js/internals/weak-set-helpers.js
new file mode 100644
index 0000000..1714de9
--- /dev/null
+++ b/node_modules/core-js/internals/weak-set-helpers.js
@@ -0,0 +1,13 @@
+'use strict';
+var uncurryThis = require('../internals/function-uncurry-this');
+
+// eslint-disable-next-line es/no-weak-set -- safe
+var WeakSetPrototype = WeakSet.prototype;
+
+module.exports = {
+  // eslint-disable-next-line es/no-weak-set -- safe
+  WeakSet: WeakSet,
+  add: uncurryThis(WeakSetPrototype.add),
+  has: uncurryThis(WeakSetPrototype.has),
+  remove: uncurryThis(WeakSetPrototype['delete'])
+};
diff --git a/node_modules/core-js/internals/well-known-symbol-define.js b/node_modules/core-js/internals/well-known-symbol-define.js
new file mode 100644
index 0000000..f17892c
--- /dev/null
+++ b/node_modules/core-js/internals/well-known-symbol-define.js
@@ -0,0 +1,12 @@
+'use strict';
+var path = require('../internals/path');
+var hasOwn = require('../internals/has-own-property');
+var wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');
+var defineProperty = require('../internals/object-define-property').f;
+
+module.exports = function (NAME) {
+  var Symbol = path.Symbol || (path.Symbol = {});
+  if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {
+    value: wrappedWellKnownSymbolModule.f(NAME)
+  });
+};
diff --git a/node_modules/core-js/internals/well-known-symbol-wrapped.js b/node_modules/core-js/internals/well-known-symbol-wrapped.js
new file mode 100644
index 0000000..41d3b77
--- /dev/null
+++ b/node_modules/core-js/internals/well-known-symbol-wrapped.js
@@ -0,0 +1,4 @@
+'use strict';
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+exports.f = wellKnownSymbol;
diff --git a/node_modules/core-js/internals/well-known-symbol.js b/node_modules/core-js/internals/well-known-symbol.js
new file mode 100644
index 0000000..bc94b14
--- /dev/null
+++ b/node_modules/core-js/internals/well-known-symbol.js
@@ -0,0 +1,19 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+var shared = require('../internals/shared');
+var hasOwn = require('../internals/has-own-property');
+var uid = require('../internals/uid');
+var NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');
+var USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');
+
+var Symbol = globalThis.Symbol;
+var WellKnownSymbolsStore = shared('wks');
+var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;
+
+module.exports = function (name) {
+  if (!hasOwn(WellKnownSymbolsStore, name)) {
+    WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)
+      ? Symbol[name]
+      : createWellKnownSymbol('Symbol.' + name);
+  } return WellKnownSymbolsStore[name];
+};
diff --git a/node_modules/core-js/internals/whitespaces.js b/node_modules/core-js/internals/whitespaces.js
new file mode 100644
index 0000000..916b2fe
--- /dev/null
+++ b/node_modules/core-js/internals/whitespaces.js
@@ -0,0 +1,4 @@
+'use strict';
+// a string of all valid unicode whitespaces
+module.exports = '\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u2000\u2001\u2002' +
+  '\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF';
diff --git a/node_modules/core-js/internals/wrap-error-constructor-with-cause.js b/node_modules/core-js/internals/wrap-error-constructor-with-cause.js
new file mode 100644
index 0000000..5431c5b
--- /dev/null
+++ b/node_modules/core-js/internals/wrap-error-constructor-with-cause.js
@@ -0,0 +1,65 @@
+'use strict';
+var getBuiltIn = require('../internals/get-built-in');
+var hasOwn = require('../internals/has-own-property');
+var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
+var isPrototypeOf = require('../internals/object-is-prototype-of');
+var setPrototypeOf = require('../internals/object-set-prototype-of');
+var copyConstructorProperties = require('../internals/copy-constructor-properties');
+var proxyAccessor = require('../internals/proxy-accessor');
+var inheritIfRequired = require('../internals/inherit-if-required');
+var normalizeStringArgument = require('../internals/normalize-string-argument');
+var installErrorCause = require('../internals/install-error-cause');
+var installErrorStack = require('../internals/error-stack-install');
+var DESCRIPTORS = require('../internals/descriptors');
+var IS_PURE = require('../internals/is-pure');
+
+module.exports = function (FULL_NAME, wrapper, FORCED, IS_AGGREGATE_ERROR) {
+  var STACK_TRACE_LIMIT = 'stackTraceLimit';
+  var OPTIONS_POSITION = IS_AGGREGATE_ERROR ? 2 : 1;
+  var path = FULL_NAME.split('.');
+  var ERROR_NAME = path[path.length - 1];
+  var OriginalError = getBuiltIn.apply(null, path);
+
+  if (!OriginalError) return;
+
+  var OriginalErrorPrototype = OriginalError.prototype;
+
+  // V8 9.3- bug https://bugs.chromium.org/p/v8/issues/detail?id=12006
+  if (!IS_PURE && hasOwn(OriginalErrorPrototype, 'cause')) delete OriginalErrorPrototype.cause;
+
+  if (!FORCED) return OriginalError;
+
+  var BaseError = getBuiltIn('Error');
+
+  var WrappedError = wrapper(function (a, b) {
+    var message = normalizeStringArgument(IS_AGGREGATE_ERROR ? b : a, undefined);
+    var result = IS_AGGREGATE_ERROR ? new OriginalError(a) : new OriginalError();
+    if (message !== undefined) createNonEnumerableProperty(result, 'message', message);
+    installErrorStack(result, WrappedError, result.stack, 2);
+    if (this && isPrototypeOf(OriginalErrorPrototype, this)) inheritIfRequired(result, this, WrappedError);
+    if (arguments.length > OPTIONS_POSITION) installErrorCause(result, arguments[OPTIONS_POSITION]);
+    return result;
+  });
+
+  WrappedError.prototype = OriginalErrorPrototype;
+
+  if (ERROR_NAME !== 'Error') {
+    if (setPrototypeOf) setPrototypeOf(WrappedError, BaseError);
+    else copyConstructorProperties(WrappedError, BaseError, { name: true });
+  } else if (DESCRIPTORS && STACK_TRACE_LIMIT in OriginalError) {
+    proxyAccessor(WrappedError, OriginalError, STACK_TRACE_LIMIT);
+    proxyAccessor(WrappedError, OriginalError, 'prepareStackTrace');
+  }
+
+  copyConstructorProperties(WrappedError, OriginalError);
+
+  if (!IS_PURE) try {
+    // Safari 13- bug: WebAssembly errors does not have a proper `.name`
+    if (OriginalErrorPrototype.name !== ERROR_NAME) {
+      createNonEnumerableProperty(OriginalErrorPrototype, 'name', ERROR_NAME);
+    }
+    OriginalErrorPrototype.constructor = WrappedError;
+  } catch (error) { /* empty */ }
+
+  return WrappedError;
+};
diff --git a/node_modules/core-js/modules/README.md b/node_modules/core-js/modules/README.md
new file mode 100644
index 0000000..0d6b3cb
--- /dev/null
+++ b/node_modules/core-js/modules/README.md
@@ -0,0 +1 @@
+This folder contains implementations of polyfills. It's not recommended to include in your projects directly if you don't completely understand what are you doing.
diff --git a/node_modules/core-js/modules/es.aggregate-error.cause.js b/node_modules/core-js/modules/es.aggregate-error.cause.js
new file mode 100644
index 0000000..dfc3b38
--- /dev/null
+++ b/node_modules/core-js/modules/es.aggregate-error.cause.js
@@ -0,0 +1,23 @@
+'use strict';
+var $ = require('../internals/export');
+var getBuiltIn = require('../internals/get-built-in');
+var apply = require('../internals/function-apply');
+var fails = require('../internals/fails');
+var wrapErrorConstructorWithCause = require('../internals/wrap-error-constructor-with-cause');
+
+var AGGREGATE_ERROR = 'AggregateError';
+var $AggregateError = getBuiltIn(AGGREGATE_ERROR);
+
+var FORCED = !fails(function () {
+  return $AggregateError([1]).errors[0] !== 1;
+}) && fails(function () {
+  return $AggregateError([1], AGGREGATE_ERROR, { cause: 7 }).cause !== 7;
+});
+
+// https://tc39.es/ecma262/#sec-aggregate-error
+$({ global: true, constructor: true, arity: 2, forced: FORCED }, {
+  AggregateError: wrapErrorConstructorWithCause(AGGREGATE_ERROR, function (init) {
+    // eslint-disable-next-line no-unused-vars -- required for functions `.length`
+    return function AggregateError(errors, message) { return apply(init, this, arguments); };
+  }, FORCED, true)
+});
diff --git a/node_modules/core-js/modules/es.aggregate-error.constructor.js b/node_modules/core-js/modules/es.aggregate-error.constructor.js
new file mode 100644
index 0000000..0d76dd0
--- /dev/null
+++ b/node_modules/core-js/modules/es.aggregate-error.constructor.js
@@ -0,0 +1,51 @@
+'use strict';
+var $ = require('../internals/export');
+var isPrototypeOf = require('../internals/object-is-prototype-of');
+var getPrototypeOf = require('../internals/object-get-prototype-of');
+var setPrototypeOf = require('../internals/object-set-prototype-of');
+var copyConstructorProperties = require('../internals/copy-constructor-properties');
+var create = require('../internals/object-create');
+var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
+var createPropertyDescriptor = require('../internals/create-property-descriptor');
+var installErrorCause = require('../internals/install-error-cause');
+var installErrorStack = require('../internals/error-stack-install');
+var iterate = require('../internals/iterate');
+var normalizeStringArgument = require('../internals/normalize-string-argument');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+var TO_STRING_TAG = wellKnownSymbol('toStringTag');
+var $Error = Error;
+var push = [].push;
+
+var $AggregateError = function AggregateError(errors, message /* , options */) {
+  var isInstance = isPrototypeOf(AggregateErrorPrototype, this);
+  var that;
+  if (setPrototypeOf) {
+    that = setPrototypeOf(new $Error(), isInstance ? getPrototypeOf(this) : AggregateErrorPrototype);
+  } else {
+    that = isInstance ? this : create(AggregateErrorPrototype);
+    createNonEnumerableProperty(that, TO_STRING_TAG, 'Error');
+  }
+  if (message !== undefined) createNonEnumerableProperty(that, 'message', normalizeStringArgument(message));
+  installErrorStack(that, $AggregateError, that.stack, 1);
+  if (arguments.length > 2) installErrorCause(that, arguments[2]);
+  var errorsArray = [];
+  iterate(errors, push, { that: errorsArray });
+  createNonEnumerableProperty(that, 'errors', errorsArray);
+  return that;
+};
+
+if (setPrototypeOf) setPrototypeOf($AggregateError, $Error);
+else copyConstructorProperties($AggregateError, $Error, { name: true });
+
+var AggregateErrorPrototype = $AggregateError.prototype = create($Error.prototype, {
+  constructor: createPropertyDescriptor(1, $AggregateError),
+  message: createPropertyDescriptor(1, ''),
+  name: createPropertyDescriptor(1, 'AggregateError')
+});
+
+// `AggregateError` constructor
+// https://tc39.es/ecma262/#sec-aggregate-error-constructor
+$({ global: true, constructor: true, arity: 2 }, {
+  AggregateError: $AggregateError
+});
diff --git a/node_modules/core-js/modules/es.aggregate-error.js b/node_modules/core-js/modules/es.aggregate-error.js
new file mode 100644
index 0000000..649517e
--- /dev/null
+++ b/node_modules/core-js/modules/es.aggregate-error.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove this module from `core-js@4` since it's replaced to module below
+require('../modules/es.aggregate-error.constructor');
diff --git a/node_modules/core-js/modules/es.array-buffer.constructor.js b/node_modules/core-js/modules/es.array-buffer.constructor.js
new file mode 100644
index 0000000..810c906
--- /dev/null
+++ b/node_modules/core-js/modules/es.array-buffer.constructor.js
@@ -0,0 +1,17 @@
+'use strict';
+var $ = require('../internals/export');
+var globalThis = require('../internals/global-this');
+var arrayBufferModule = require('../internals/array-buffer');
+var setSpecies = require('../internals/set-species');
+
+var ARRAY_BUFFER = 'ArrayBuffer';
+var ArrayBuffer = arrayBufferModule[ARRAY_BUFFER];
+var NativeArrayBuffer = globalThis[ARRAY_BUFFER];
+
+// `ArrayBuffer` constructor
+// https://tc39.es/ecma262/#sec-arraybuffer-constructor
+$({ global: true, constructor: true, forced: NativeArrayBuffer !== ArrayBuffer }, {
+  ArrayBuffer: ArrayBuffer
+});
+
+setSpecies(ARRAY_BUFFER);
diff --git a/node_modules/core-js/modules/es.array-buffer.detached.js b/node_modules/core-js/modules/es.array-buffer.detached.js
new file mode 100644
index 0000000..e718ead
--- /dev/null
+++ b/node_modules/core-js/modules/es.array-buffer.detached.js
@@ -0,0 +1,17 @@
+'use strict';
+var DESCRIPTORS = require('../internals/descriptors');
+var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
+var isDetached = require('../internals/array-buffer-is-detached');
+
+var ArrayBufferPrototype = ArrayBuffer.prototype;
+
+// `ArrayBuffer.prototype.detached` getter
+// https://tc39.es/ecma262/#sec-get-arraybuffer.prototype.detached
+if (DESCRIPTORS && !('detached' in ArrayBufferPrototype)) {
+  defineBuiltInAccessor(ArrayBufferPrototype, 'detached', {
+    configurable: true,
+    get: function detached() {
+      return isDetached(this);
+    }
+  });
+}
diff --git a/node_modules/core-js/modules/es.array-buffer.is-view.js b/node_modules/core-js/modules/es.array-buffer.is-view.js
new file mode 100644
index 0000000..b83a614
--- /dev/null
+++ b/node_modules/core-js/modules/es.array-buffer.is-view.js
@@ -0,0 +1,11 @@
+'use strict';
+var $ = require('../internals/export');
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+
+var NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;
+
+// `ArrayBuffer.isView` method
+// https://tc39.es/ecma262/#sec-arraybuffer.isview
+$({ target: 'ArrayBuffer', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {
+  isView: ArrayBufferViewCore.isView
+});
diff --git a/node_modules/core-js/modules/es.array-buffer.slice.js b/node_modules/core-js/modules/es.array-buffer.slice.js
new file mode 100644
index 0000000..b337ee5
--- /dev/null
+++ b/node_modules/core-js/modules/es.array-buffer.slice.js
@@ -0,0 +1,39 @@
+'use strict';
+var $ = require('../internals/export');
+var uncurryThis = require('../internals/function-uncurry-this-clause');
+var fails = require('../internals/fails');
+var ArrayBufferModule = require('../internals/array-buffer');
+var anObject = require('../internals/an-object');
+var toAbsoluteIndex = require('../internals/to-absolute-index');
+var toLength = require('../internals/to-length');
+
+var ArrayBuffer = ArrayBufferModule.ArrayBuffer;
+var DataView = ArrayBufferModule.DataView;
+var DataViewPrototype = DataView.prototype;
+var nativeArrayBufferSlice = uncurryThis(ArrayBuffer.prototype.slice);
+var getUint8 = uncurryThis(DataViewPrototype.getUint8);
+var setUint8 = uncurryThis(DataViewPrototype.setUint8);
+
+var INCORRECT_SLICE = fails(function () {
+  return !new ArrayBuffer(2).slice(1, undefined).byteLength;
+});
+
+// `ArrayBuffer.prototype.slice` method
+// https://tc39.es/ecma262/#sec-arraybuffer.prototype.slice
+$({ target: 'ArrayBuffer', proto: true, unsafe: true, forced: INCORRECT_SLICE }, {
+  slice: function slice(start, end) {
+    if (nativeArrayBufferSlice && end === undefined) {
+      return nativeArrayBufferSlice(anObject(this), start); // FF fix
+    }
+    var length = anObject(this).byteLength;
+    var first = toAbsoluteIndex(start, length);
+    var fin = toAbsoluteIndex(end === undefined ? length : end, length);
+    var result = new ArrayBuffer(toLength(fin - first));
+    var viewSource = new DataView(this);
+    var viewTarget = new DataView(result);
+    var index = 0;
+    while (first < fin) {
+      setUint8(viewTarget, index++, getUint8(viewSource, first++));
+    } return result;
+  }
+});
diff --git a/node_modules/core-js/modules/es.array-buffer.transfer-to-fixed-length.js b/node_modules/core-js/modules/es.array-buffer.transfer-to-fixed-length.js
new file mode 100644
index 0000000..55a9f8a
--- /dev/null
+++ b/node_modules/core-js/modules/es.array-buffer.transfer-to-fixed-length.js
@@ -0,0 +1,11 @@
+'use strict';
+var $ = require('../internals/export');
+var $transfer = require('../internals/array-buffer-transfer');
+
+// `ArrayBuffer.prototype.transferToFixedLength` method
+// https://tc39.es/proposal-arraybuffer-transfer/#sec-arraybuffer.prototype.transfertofixedlength
+if ($transfer) $({ target: 'ArrayBuffer', proto: true }, {
+  transferToFixedLength: function transferToFixedLength() {
+    return $transfer(this, arguments.length ? arguments[0] : undefined, false);
+  }
+});
diff --git a/node_modules/core-js/modules/es.array-buffer.transfer.js b/node_modules/core-js/modules/es.array-buffer.transfer.js
new file mode 100644
index 0000000..197658d
--- /dev/null
+++ b/node_modules/core-js/modules/es.array-buffer.transfer.js
@@ -0,0 +1,11 @@
+'use strict';
+var $ = require('../internals/export');
+var $transfer = require('../internals/array-buffer-transfer');
+
+// `ArrayBuffer.prototype.transfer` method
+// https://tc39.es/proposal-arraybuffer-transfer/#sec-arraybuffer.prototype.transfer
+if ($transfer) $({ target: 'ArrayBuffer', proto: true }, {
+  transfer: function transfer() {
+    return $transfer(this, arguments.length ? arguments[0] : undefined, true);
+  }
+});
diff --git a/node_modules/core-js/modules/es.array.at.js b/node_modules/core-js/modules/es.array.at.js
new file mode 100644
index 0000000..965c266
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.at.js
@@ -0,0 +1,20 @@
+'use strict';
+var $ = require('../internals/export');
+var toObject = require('../internals/to-object');
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
+var addToUnscopables = require('../internals/add-to-unscopables');
+
+// `Array.prototype.at` method
+// https://tc39.es/ecma262/#sec-array.prototype.at
+$({ target: 'Array', proto: true }, {
+  at: function at(index) {
+    var O = toObject(this);
+    var len = lengthOfArrayLike(O);
+    var relativeIndex = toIntegerOrInfinity(index);
+    var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;
+    return (k < 0 || k >= len) ? undefined : O[k];
+  }
+});
+
+addToUnscopables('at');
diff --git a/node_modules/core-js/modules/es.array.concat.js b/node_modules/core-js/modules/es.array.concat.js
new file mode 100644
index 0000000..2e1a773
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.concat.js
@@ -0,0 +1,58 @@
+'use strict';
+var $ = require('../internals/export');
+var fails = require('../internals/fails');
+var isArray = require('../internals/is-array');
+var isObject = require('../internals/is-object');
+var toObject = require('../internals/to-object');
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+var doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');
+var createProperty = require('../internals/create-property');
+var arraySpeciesCreate = require('../internals/array-species-create');
+var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var V8_VERSION = require('../internals/environment-v8-version');
+
+var IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');
+
+// We can't use this feature detection in V8 since it causes
+// deoptimization and serious performance degradation
+// https://github.com/zloirock/core-js/issues/679
+var IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {
+  var array = [];
+  array[IS_CONCAT_SPREADABLE] = false;
+  return array.concat()[0] !== array;
+});
+
+var isConcatSpreadable = function (O) {
+  if (!isObject(O)) return false;
+  var spreadable = O[IS_CONCAT_SPREADABLE];
+  return spreadable !== undefined ? !!spreadable : isArray(O);
+};
+
+var FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !arrayMethodHasSpeciesSupport('concat');
+
+// `Array.prototype.concat` method
+// https://tc39.es/ecma262/#sec-array.prototype.concat
+// with adding support of @@isConcatSpreadable and @@species
+$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {
+  // eslint-disable-next-line no-unused-vars -- required for `.length`
+  concat: function concat(arg) {
+    var O = toObject(this);
+    var A = arraySpeciesCreate(O, 0);
+    var n = 0;
+    var i, k, length, len, E;
+    for (i = -1, length = arguments.length; i < length; i++) {
+      E = i === -1 ? O : arguments[i];
+      if (isConcatSpreadable(E)) {
+        len = lengthOfArrayLike(E);
+        doesNotExceedSafeInteger(n + len);
+        for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);
+      } else {
+        doesNotExceedSafeInteger(n + 1);
+        createProperty(A, n++, E);
+      }
+    }
+    A.length = n;
+    return A;
+  }
+});
diff --git a/node_modules/core-js/modules/es.array.copy-within.js b/node_modules/core-js/modules/es.array.copy-within.js
new file mode 100644
index 0000000..021ca3c
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.copy-within.js
@@ -0,0 +1,13 @@
+'use strict';
+var $ = require('../internals/export');
+var copyWithin = require('../internals/array-copy-within');
+var addToUnscopables = require('../internals/add-to-unscopables');
+
+// `Array.prototype.copyWithin` method
+// https://tc39.es/ecma262/#sec-array.prototype.copywithin
+$({ target: 'Array', proto: true }, {
+  copyWithin: copyWithin
+});
+
+// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
+addToUnscopables('copyWithin');
diff --git a/node_modules/core-js/modules/es.array.every.js b/node_modules/core-js/modules/es.array.every.js
new file mode 100644
index 0000000..61b526e
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.every.js
@@ -0,0 +1,14 @@
+'use strict';
+var $ = require('../internals/export');
+var $every = require('../internals/array-iteration').every;
+var arrayMethodIsStrict = require('../internals/array-method-is-strict');
+
+var STRICT_METHOD = arrayMethodIsStrict('every');
+
+// `Array.prototype.every` method
+// https://tc39.es/ecma262/#sec-array.prototype.every
+$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {
+  every: function every(callbackfn /* , thisArg */) {
+    return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+  }
+});
diff --git a/node_modules/core-js/modules/es.array.fill.js b/node_modules/core-js/modules/es.array.fill.js
new file mode 100644
index 0000000..31e640e
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.fill.js
@@ -0,0 +1,13 @@
+'use strict';
+var $ = require('../internals/export');
+var fill = require('../internals/array-fill');
+var addToUnscopables = require('../internals/add-to-unscopables');
+
+// `Array.prototype.fill` method
+// https://tc39.es/ecma262/#sec-array.prototype.fill
+$({ target: 'Array', proto: true }, {
+  fill: fill
+});
+
+// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
+addToUnscopables('fill');
diff --git a/node_modules/core-js/modules/es.array.filter.js b/node_modules/core-js/modules/es.array.filter.js
new file mode 100644
index 0000000..beb43a5
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.filter.js
@@ -0,0 +1,15 @@
+'use strict';
+var $ = require('../internals/export');
+var $filter = require('../internals/array-iteration').filter;
+var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');
+
+var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');
+
+// `Array.prototype.filter` method
+// https://tc39.es/ecma262/#sec-array.prototype.filter
+// with adding support of @@species
+$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {
+  filter: function filter(callbackfn /* , thisArg */) {
+    return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+  }
+});
diff --git a/node_modules/core-js/modules/es.array.find-index.js b/node_modules/core-js/modules/es.array.find-index.js
new file mode 100644
index 0000000..ba3fd9f
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.find-index.js
@@ -0,0 +1,22 @@
+'use strict';
+var $ = require('../internals/export');
+var $findIndex = require('../internals/array-iteration').findIndex;
+var addToUnscopables = require('../internals/add-to-unscopables');
+
+var FIND_INDEX = 'findIndex';
+var SKIPS_HOLES = true;
+
+// Shouldn't skip holes
+// eslint-disable-next-line es/no-array-prototype-findindex -- testing
+if (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });
+
+// `Array.prototype.findIndex` method
+// https://tc39.es/ecma262/#sec-array.prototype.findindex
+$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {
+  findIndex: function findIndex(callbackfn /* , that = undefined */) {
+    return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+  }
+});
+
+// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
+addToUnscopables(FIND_INDEX);
diff --git a/node_modules/core-js/modules/es.array.find-last-index.js b/node_modules/core-js/modules/es.array.find-last-index.js
new file mode 100644
index 0000000..82d8984
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.find-last-index.js
@@ -0,0 +1,14 @@
+'use strict';
+var $ = require('../internals/export');
+var $findLastIndex = require('../internals/array-iteration-from-last').findLastIndex;
+var addToUnscopables = require('../internals/add-to-unscopables');
+
+// `Array.prototype.findLastIndex` method
+// https://tc39.es/ecma262/#sec-array.prototype.findlastindex
+$({ target: 'Array', proto: true }, {
+  findLastIndex: function findLastIndex(callbackfn /* , that = undefined */) {
+    return $findLastIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+  }
+});
+
+addToUnscopables('findLastIndex');
diff --git a/node_modules/core-js/modules/es.array.find-last.js b/node_modules/core-js/modules/es.array.find-last.js
new file mode 100644
index 0000000..479c173
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.find-last.js
@@ -0,0 +1,14 @@
+'use strict';
+var $ = require('../internals/export');
+var $findLast = require('../internals/array-iteration-from-last').findLast;
+var addToUnscopables = require('../internals/add-to-unscopables');
+
+// `Array.prototype.findLast` method
+// https://tc39.es/ecma262/#sec-array.prototype.findlast
+$({ target: 'Array', proto: true }, {
+  findLast: function findLast(callbackfn /* , that = undefined */) {
+    return $findLast(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+  }
+});
+
+addToUnscopables('findLast');
diff --git a/node_modules/core-js/modules/es.array.find.js b/node_modules/core-js/modules/es.array.find.js
new file mode 100644
index 0000000..f7fab66
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.find.js
@@ -0,0 +1,22 @@
+'use strict';
+var $ = require('../internals/export');
+var $find = require('../internals/array-iteration').find;
+var addToUnscopables = require('../internals/add-to-unscopables');
+
+var FIND = 'find';
+var SKIPS_HOLES = true;
+
+// Shouldn't skip holes
+// eslint-disable-next-line es/no-array-prototype-find -- testing
+if (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });
+
+// `Array.prototype.find` method
+// https://tc39.es/ecma262/#sec-array.prototype.find
+$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {
+  find: function find(callbackfn /* , that = undefined */) {
+    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+  }
+});
+
+// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
+addToUnscopables(FIND);
diff --git a/node_modules/core-js/modules/es.array.flat-map.js b/node_modules/core-js/modules/es.array.flat-map.js
new file mode 100644
index 0000000..9b177de
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.flat-map.js
@@ -0,0 +1,21 @@
+'use strict';
+var $ = require('../internals/export');
+var flattenIntoArray = require('../internals/flatten-into-array');
+var aCallable = require('../internals/a-callable');
+var toObject = require('../internals/to-object');
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+var arraySpeciesCreate = require('../internals/array-species-create');
+
+// `Array.prototype.flatMap` method
+// https://tc39.es/ecma262/#sec-array.prototype.flatmap
+$({ target: 'Array', proto: true }, {
+  flatMap: function flatMap(callbackfn /* , thisArg */) {
+    var O = toObject(this);
+    var sourceLen = lengthOfArrayLike(O);
+    var A;
+    aCallable(callbackfn);
+    A = arraySpeciesCreate(O, 0);
+    A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+    return A;
+  }
+});
diff --git a/node_modules/core-js/modules/es.array.flat.js b/node_modules/core-js/modules/es.array.flat.js
new file mode 100644
index 0000000..146adec
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.flat.js
@@ -0,0 +1,20 @@
+'use strict';
+var $ = require('../internals/export');
+var flattenIntoArray = require('../internals/flatten-into-array');
+var toObject = require('../internals/to-object');
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
+var arraySpeciesCreate = require('../internals/array-species-create');
+
+// `Array.prototype.flat` method
+// https://tc39.es/ecma262/#sec-array.prototype.flat
+$({ target: 'Array', proto: true }, {
+  flat: function flat(/* depthArg = 1 */) {
+    var depthArg = arguments.length ? arguments[0] : undefined;
+    var O = toObject(this);
+    var sourceLen = lengthOfArrayLike(O);
+    var A = arraySpeciesCreate(O, 0);
+    A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toIntegerOrInfinity(depthArg));
+    return A;
+  }
+});
diff --git a/node_modules/core-js/modules/es.array.for-each.js b/node_modules/core-js/modules/es.array.for-each.js
new file mode 100644
index 0000000..6f45b51
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.for-each.js
@@ -0,0 +1,10 @@
+'use strict';
+var $ = require('../internals/export');
+var forEach = require('../internals/array-for-each');
+
+// `Array.prototype.forEach` method
+// https://tc39.es/ecma262/#sec-array.prototype.foreach
+// eslint-disable-next-line es/no-array-prototype-foreach -- safe
+$({ target: 'Array', proto: true, forced: [].forEach !== forEach }, {
+  forEach: forEach
+});
diff --git a/node_modules/core-js/modules/es.array.from.js b/node_modules/core-js/modules/es.array.from.js
new file mode 100644
index 0000000..0015b09
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.from.js
@@ -0,0 +1,15 @@
+'use strict';
+var $ = require('../internals/export');
+var from = require('../internals/array-from');
+var checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');
+
+var INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {
+  // eslint-disable-next-line es/no-array-from -- required for testing
+  Array.from(iterable);
+});
+
+// `Array.from` method
+// https://tc39.es/ecma262/#sec-array.from
+$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {
+  from: from
+});
diff --git a/node_modules/core-js/modules/es.array.includes.js b/node_modules/core-js/modules/es.array.includes.js
new file mode 100644
index 0000000..7ada6d9
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.includes.js
@@ -0,0 +1,22 @@
+'use strict';
+var $ = require('../internals/export');
+var $includes = require('../internals/array-includes').includes;
+var fails = require('../internals/fails');
+var addToUnscopables = require('../internals/add-to-unscopables');
+
+// FF99+ bug
+var BROKEN_ON_SPARSE = fails(function () {
+  // eslint-disable-next-line es/no-array-prototype-includes -- detection
+  return !Array(1).includes();
+});
+
+// `Array.prototype.includes` method
+// https://tc39.es/ecma262/#sec-array.prototype.includes
+$({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, {
+  includes: function includes(el /* , fromIndex = 0 */) {
+    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
+  }
+});
+
+// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
+addToUnscopables('includes');
diff --git a/node_modules/core-js/modules/es.array.index-of.js b/node_modules/core-js/modules/es.array.index-of.js
new file mode 100644
index 0000000..9cca611
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.index-of.js
@@ -0,0 +1,23 @@
+'use strict';
+/* eslint-disable es/no-array-prototype-indexof -- required for testing */
+var $ = require('../internals/export');
+var uncurryThis = require('../internals/function-uncurry-this-clause');
+var $indexOf = require('../internals/array-includes').indexOf;
+var arrayMethodIsStrict = require('../internals/array-method-is-strict');
+
+var nativeIndexOf = uncurryThis([].indexOf);
+
+var NEGATIVE_ZERO = !!nativeIndexOf && 1 / nativeIndexOf([1], 1, -0) < 0;
+var FORCED = NEGATIVE_ZERO || !arrayMethodIsStrict('indexOf');
+
+// `Array.prototype.indexOf` method
+// https://tc39.es/ecma262/#sec-array.prototype.indexof
+$({ target: 'Array', proto: true, forced: FORCED }, {
+  indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {
+    var fromIndex = arguments.length > 1 ? arguments[1] : undefined;
+    return NEGATIVE_ZERO
+      // convert -0 to +0
+      ? nativeIndexOf(this, searchElement, fromIndex) || 0
+      : $indexOf(this, searchElement, fromIndex);
+  }
+});
diff --git a/node_modules/core-js/modules/es.array.is-array.js b/node_modules/core-js/modules/es.array.is-array.js
new file mode 100644
index 0000000..4482427
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.is-array.js
@@ -0,0 +1,9 @@
+'use strict';
+var $ = require('../internals/export');
+var isArray = require('../internals/is-array');
+
+// `Array.isArray` method
+// https://tc39.es/ecma262/#sec-array.isarray
+$({ target: 'Array', stat: true }, {
+  isArray: isArray
+});
diff --git a/node_modules/core-js/modules/es.array.iterator.js b/node_modules/core-js/modules/es.array.iterator.js
new file mode 100644
index 0000000..3b5af9a
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.iterator.js
@@ -0,0 +1,62 @@
+'use strict';
+var toIndexedObject = require('../internals/to-indexed-object');
+var addToUnscopables = require('../internals/add-to-unscopables');
+var Iterators = require('../internals/iterators');
+var InternalStateModule = require('../internals/internal-state');
+var defineProperty = require('../internals/object-define-property').f;
+var defineIterator = require('../internals/iterator-define');
+var createIterResultObject = require('../internals/create-iter-result-object');
+var IS_PURE = require('../internals/is-pure');
+var DESCRIPTORS = require('../internals/descriptors');
+
+var ARRAY_ITERATOR = 'Array Iterator';
+var setInternalState = InternalStateModule.set;
+var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);
+
+// `Array.prototype.entries` method
+// https://tc39.es/ecma262/#sec-array.prototype.entries
+// `Array.prototype.keys` method
+// https://tc39.es/ecma262/#sec-array.prototype.keys
+// `Array.prototype.values` method
+// https://tc39.es/ecma262/#sec-array.prototype.values
+// `Array.prototype[@@iterator]` method
+// https://tc39.es/ecma262/#sec-array.prototype-@@iterator
+// `CreateArrayIterator` internal method
+// https://tc39.es/ecma262/#sec-createarrayiterator
+module.exports = defineIterator(Array, 'Array', function (iterated, kind) {
+  setInternalState(this, {
+    type: ARRAY_ITERATOR,
+    target: toIndexedObject(iterated), // target
+    index: 0,                          // next index
+    kind: kind                         // kind
+  });
+// `%ArrayIteratorPrototype%.next` method
+// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next
+}, function () {
+  var state = getInternalState(this);
+  var target = state.target;
+  var index = state.index++;
+  if (!target || index >= target.length) {
+    state.target = null;
+    return createIterResultObject(undefined, true);
+  }
+  switch (state.kind) {
+    case 'keys': return createIterResultObject(index, false);
+    case 'values': return createIterResultObject(target[index], false);
+  } return createIterResultObject([index, target[index]], false);
+}, 'values');
+
+// argumentsList[@@iterator] is %ArrayProto_values%
+// https://tc39.es/ecma262/#sec-createunmappedargumentsobject
+// https://tc39.es/ecma262/#sec-createmappedargumentsobject
+var values = Iterators.Arguments = Iterators.Array;
+
+// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
+addToUnscopables('keys');
+addToUnscopables('values');
+addToUnscopables('entries');
+
+// V8 ~ Chrome 45- bug
+if (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {
+  defineProperty(values, 'name', { value: 'values' });
+} catch (error) { /* empty */ }
diff --git a/node_modules/core-js/modules/es.array.join.js b/node_modules/core-js/modules/es.array.join.js
new file mode 100644
index 0000000..9f2ebf2
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.join.js
@@ -0,0 +1,19 @@
+'use strict';
+var $ = require('../internals/export');
+var uncurryThis = require('../internals/function-uncurry-this');
+var IndexedObject = require('../internals/indexed-object');
+var toIndexedObject = require('../internals/to-indexed-object');
+var arrayMethodIsStrict = require('../internals/array-method-is-strict');
+
+var nativeJoin = uncurryThis([].join);
+
+var ES3_STRINGS = IndexedObject !== Object;
+var FORCED = ES3_STRINGS || !arrayMethodIsStrict('join', ',');
+
+// `Array.prototype.join` method
+// https://tc39.es/ecma262/#sec-array.prototype.join
+$({ target: 'Array', proto: true, forced: FORCED }, {
+  join: function join(separator) {
+    return nativeJoin(toIndexedObject(this), separator === undefined ? ',' : separator);
+  }
+});
diff --git a/node_modules/core-js/modules/es.array.last-index-of.js b/node_modules/core-js/modules/es.array.last-index-of.js
new file mode 100644
index 0000000..0f3cfc5
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.last-index-of.js
@@ -0,0 +1,10 @@
+'use strict';
+var $ = require('../internals/export');
+var lastIndexOf = require('../internals/array-last-index-of');
+
+// `Array.prototype.lastIndexOf` method
+// https://tc39.es/ecma262/#sec-array.prototype.lastindexof
+// eslint-disable-next-line es/no-array-prototype-lastindexof -- required for testing
+$({ target: 'Array', proto: true, forced: lastIndexOf !== [].lastIndexOf }, {
+  lastIndexOf: lastIndexOf
+});
diff --git a/node_modules/core-js/modules/es.array.map.js b/node_modules/core-js/modules/es.array.map.js
new file mode 100644
index 0000000..4419a0b
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.map.js
@@ -0,0 +1,15 @@
+'use strict';
+var $ = require('../internals/export');
+var $map = require('../internals/array-iteration').map;
+var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');
+
+var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');
+
+// `Array.prototype.map` method
+// https://tc39.es/ecma262/#sec-array.prototype.map
+// with adding support of @@species
+$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {
+  map: function map(callbackfn /* , thisArg */) {
+    return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+  }
+});
diff --git a/node_modules/core-js/modules/es.array.of.js b/node_modules/core-js/modules/es.array.of.js
new file mode 100644
index 0000000..4dbb234
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.of.js
@@ -0,0 +1,27 @@
+'use strict';
+var $ = require('../internals/export');
+var fails = require('../internals/fails');
+var isConstructor = require('../internals/is-constructor');
+var createProperty = require('../internals/create-property');
+
+var $Array = Array;
+
+var ISNT_GENERIC = fails(function () {
+  function F() { /* empty */ }
+  // eslint-disable-next-line es/no-array-of -- safe
+  return !($Array.of.call(F) instanceof F);
+});
+
+// `Array.of` method
+// https://tc39.es/ecma262/#sec-array.of
+// WebKit Array.of isn't generic
+$({ target: 'Array', stat: true, forced: ISNT_GENERIC }, {
+  of: function of(/* ...args */) {
+    var index = 0;
+    var argumentsLength = arguments.length;
+    var result = new (isConstructor(this) ? this : $Array)(argumentsLength);
+    while (argumentsLength > index) createProperty(result, index, arguments[index++]);
+    result.length = argumentsLength;
+    return result;
+  }
+});
diff --git a/node_modules/core-js/modules/es.array.push.js b/node_modules/core-js/modules/es.array.push.js
new file mode 100644
index 0000000..71db976
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.push.js
@@ -0,0 +1,42 @@
+'use strict';
+var $ = require('../internals/export');
+var toObject = require('../internals/to-object');
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+var setArrayLength = require('../internals/array-set-length');
+var doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');
+var fails = require('../internals/fails');
+
+var INCORRECT_TO_LENGTH = fails(function () {
+  return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;
+});
+
+// V8 <= 121 and Safari <= 15.4; FF < 23 throws InternalError
+// https://bugs.chromium.org/p/v8/issues/detail?id=12681
+var properErrorOnNonWritableLength = function () {
+  try {
+    // eslint-disable-next-line es/no-object-defineproperty -- safe
+    Object.defineProperty([], 'length', { writable: false }).push();
+  } catch (error) {
+    return error instanceof TypeError;
+  }
+};
+
+var FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();
+
+// `Array.prototype.push` method
+// https://tc39.es/ecma262/#sec-array.prototype.push
+$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {
+  // eslint-disable-next-line no-unused-vars -- required for `.length`
+  push: function push(item) {
+    var O = toObject(this);
+    var len = lengthOfArrayLike(O);
+    var argCount = arguments.length;
+    doesNotExceedSafeInteger(len + argCount);
+    for (var i = 0; i < argCount; i++) {
+      O[len] = arguments[i];
+      len++;
+    }
+    setArrayLength(O, len);
+    return len;
+  }
+});
diff --git a/node_modules/core-js/modules/es.array.reduce-right.js b/node_modules/core-js/modules/es.array.reduce-right.js
new file mode 100644
index 0000000..4950104
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.reduce-right.js
@@ -0,0 +1,19 @@
+'use strict';
+var $ = require('../internals/export');
+var $reduceRight = require('../internals/array-reduce').right;
+var arrayMethodIsStrict = require('../internals/array-method-is-strict');
+var CHROME_VERSION = require('../internals/environment-v8-version');
+var IS_NODE = require('../internals/environment-is-node');
+
+// Chrome 80-82 has a critical bug
+// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982
+var CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;
+var FORCED = CHROME_BUG || !arrayMethodIsStrict('reduceRight');
+
+// `Array.prototype.reduceRight` method
+// https://tc39.es/ecma262/#sec-array.prototype.reduceright
+$({ target: 'Array', proto: true, forced: FORCED }, {
+  reduceRight: function reduceRight(callbackfn /* , initialValue */) {
+    return $reduceRight(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);
+  }
+});
diff --git a/node_modules/core-js/modules/es.array.reduce.js b/node_modules/core-js/modules/es.array.reduce.js
new file mode 100644
index 0000000..42a008e
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.reduce.js
@@ -0,0 +1,20 @@
+'use strict';
+var $ = require('../internals/export');
+var $reduce = require('../internals/array-reduce').left;
+var arrayMethodIsStrict = require('../internals/array-method-is-strict');
+var CHROME_VERSION = require('../internals/environment-v8-version');
+var IS_NODE = require('../internals/environment-is-node');
+
+// Chrome 80-82 has a critical bug
+// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982
+var CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;
+var FORCED = CHROME_BUG || !arrayMethodIsStrict('reduce');
+
+// `Array.prototype.reduce` method
+// https://tc39.es/ecma262/#sec-array.prototype.reduce
+$({ target: 'Array', proto: true, forced: FORCED }, {
+  reduce: function reduce(callbackfn /* , initialValue */) {
+    var length = arguments.length;
+    return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : undefined);
+  }
+});
diff --git a/node_modules/core-js/modules/es.array.reverse.js b/node_modules/core-js/modules/es.array.reverse.js
new file mode 100644
index 0000000..7904758
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.reverse.js
@@ -0,0 +1,19 @@
+'use strict';
+var $ = require('../internals/export');
+var uncurryThis = require('../internals/function-uncurry-this');
+var isArray = require('../internals/is-array');
+
+var nativeReverse = uncurryThis([].reverse);
+var test = [1, 2];
+
+// `Array.prototype.reverse` method
+// https://tc39.es/ecma262/#sec-array.prototype.reverse
+// fix for Safari 12.0 bug
+// https://bugs.webkit.org/show_bug.cgi?id=188794
+$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {
+  reverse: function reverse() {
+    // eslint-disable-next-line no-self-assign -- dirty hack
+    if (isArray(this)) this.length = this.length;
+    return nativeReverse(this);
+  }
+});
diff --git a/node_modules/core-js/modules/es.array.slice.js b/node_modules/core-js/modules/es.array.slice.js
new file mode 100644
index 0000000..373cab5
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.slice.js
@@ -0,0 +1,49 @@
+'use strict';
+var $ = require('../internals/export');
+var isArray = require('../internals/is-array');
+var isConstructor = require('../internals/is-constructor');
+var isObject = require('../internals/is-object');
+var toAbsoluteIndex = require('../internals/to-absolute-index');
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+var toIndexedObject = require('../internals/to-indexed-object');
+var createProperty = require('../internals/create-property');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');
+var nativeSlice = require('../internals/array-slice');
+
+var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');
+
+var SPECIES = wellKnownSymbol('species');
+var $Array = Array;
+var max = Math.max;
+
+// `Array.prototype.slice` method
+// https://tc39.es/ecma262/#sec-array.prototype.slice
+// fallback for not array-like ES3 strings and DOM objects
+$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {
+  slice: function slice(start, end) {
+    var O = toIndexedObject(this);
+    var length = lengthOfArrayLike(O);
+    var k = toAbsoluteIndex(start, length);
+    var fin = toAbsoluteIndex(end === undefined ? length : end, length);
+    // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible
+    var Constructor, result, n;
+    if (isArray(O)) {
+      Constructor = O.constructor;
+      // cross-realm fallback
+      if (isConstructor(Constructor) && (Constructor === $Array || isArray(Constructor.prototype))) {
+        Constructor = undefined;
+      } else if (isObject(Constructor)) {
+        Constructor = Constructor[SPECIES];
+        if (Constructor === null) Constructor = undefined;
+      }
+      if (Constructor === $Array || Constructor === undefined) {
+        return nativeSlice(O, k, fin);
+      }
+    }
+    result = new (Constructor === undefined ? $Array : Constructor)(max(fin - k, 0));
+    for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);
+    result.length = n;
+    return result;
+  }
+});
diff --git a/node_modules/core-js/modules/es.array.some.js b/node_modules/core-js/modules/es.array.some.js
new file mode 100644
index 0000000..f1b4462
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.some.js
@@ -0,0 +1,14 @@
+'use strict';
+var $ = require('../internals/export');
+var $some = require('../internals/array-iteration').some;
+var arrayMethodIsStrict = require('../internals/array-method-is-strict');
+
+var STRICT_METHOD = arrayMethodIsStrict('some');
+
+// `Array.prototype.some` method
+// https://tc39.es/ecma262/#sec-array.prototype.some
+$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {
+  some: function some(callbackfn /* , thisArg */) {
+    return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+  }
+});
diff --git a/node_modules/core-js/modules/es.array.sort.js b/node_modules/core-js/modules/es.array.sort.js
new file mode 100644
index 0000000..9e9b0fe
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.sort.js
@@ -0,0 +1,106 @@
+'use strict';
+var $ = require('../internals/export');
+var uncurryThis = require('../internals/function-uncurry-this');
+var aCallable = require('../internals/a-callable');
+var toObject = require('../internals/to-object');
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+var deletePropertyOrThrow = require('../internals/delete-property-or-throw');
+var toString = require('../internals/to-string');
+var fails = require('../internals/fails');
+var internalSort = require('../internals/array-sort');
+var arrayMethodIsStrict = require('../internals/array-method-is-strict');
+var FF = require('../internals/environment-ff-version');
+var IE_OR_EDGE = require('../internals/environment-is-ie-or-edge');
+var V8 = require('../internals/environment-v8-version');
+var WEBKIT = require('../internals/environment-webkit-version');
+
+var test = [];
+var nativeSort = uncurryThis(test.sort);
+var push = uncurryThis(test.push);
+
+// IE8-
+var FAILS_ON_UNDEFINED = fails(function () {
+  test.sort(undefined);
+});
+// V8 bug
+var FAILS_ON_NULL = fails(function () {
+  test.sort(null);
+});
+// Old WebKit
+var STRICT_METHOD = arrayMethodIsStrict('sort');
+
+var STABLE_SORT = !fails(function () {
+  // feature detection can be too slow, so check engines versions
+  if (V8) return V8 < 70;
+  if (FF && FF > 3) return;
+  if (IE_OR_EDGE) return true;
+  if (WEBKIT) return WEBKIT < 603;
+
+  var result = '';
+  var code, chr, value, index;
+
+  // generate an array with more 512 elements (Chakra and old V8 fails only in this case)
+  for (code = 65; code < 76; code++) {
+    chr = String.fromCharCode(code);
+
+    switch (code) {
+      case 66: case 69: case 70: case 72: value = 3; break;
+      case 68: case 71: value = 4; break;
+      default: value = 2;
+    }
+
+    for (index = 0; index < 47; index++) {
+      test.push({ k: chr + index, v: value });
+    }
+  }
+
+  test.sort(function (a, b) { return b.v - a.v; });
+
+  for (index = 0; index < test.length; index++) {
+    chr = test[index].k.charAt(0);
+    if (result.charAt(result.length - 1) !== chr) result += chr;
+  }
+
+  return result !== 'DGBEFHACIJK';
+});
+
+var FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;
+
+var getSortCompare = function (comparefn) {
+  return function (x, y) {
+    if (y === undefined) return -1;
+    if (x === undefined) return 1;
+    if (comparefn !== undefined) return +comparefn(x, y) || 0;
+    return toString(x) > toString(y) ? 1 : -1;
+  };
+};
+
+// `Array.prototype.sort` method
+// https://tc39.es/ecma262/#sec-array.prototype.sort
+$({ target: 'Array', proto: true, forced: FORCED }, {
+  sort: function sort(comparefn) {
+    if (comparefn !== undefined) aCallable(comparefn);
+
+    var array = toObject(this);
+
+    if (STABLE_SORT) return comparefn === undefined ? nativeSort(array) : nativeSort(array, comparefn);
+
+    var items = [];
+    var arrayLength = lengthOfArrayLike(array);
+    var itemsLength, index;
+
+    for (index = 0; index < arrayLength; index++) {
+      if (index in array) push(items, array[index]);
+    }
+
+    internalSort(items, getSortCompare(comparefn));
+
+    itemsLength = lengthOfArrayLike(items);
+    index = 0;
+
+    while (index < itemsLength) array[index] = items[index++];
+    while (index < arrayLength) deletePropertyOrThrow(array, index++);
+
+    return array;
+  }
+});
diff --git a/node_modules/core-js/modules/es.array.species.js b/node_modules/core-js/modules/es.array.species.js
new file mode 100644
index 0000000..11ada49
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.species.js
@@ -0,0 +1,6 @@
+'use strict';
+var setSpecies = require('../internals/set-species');
+
+// `Array[@@species]` getter
+// https://tc39.es/ecma262/#sec-get-array-@@species
+setSpecies('Array');
diff --git a/node_modules/core-js/modules/es.array.splice.js b/node_modules/core-js/modules/es.array.splice.js
new file mode 100644
index 0000000..2da6a79
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.splice.js
@@ -0,0 +1,67 @@
+'use strict';
+var $ = require('../internals/export');
+var toObject = require('../internals/to-object');
+var toAbsoluteIndex = require('../internals/to-absolute-index');
+var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+var setArrayLength = require('../internals/array-set-length');
+var doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');
+var arraySpeciesCreate = require('../internals/array-species-create');
+var createProperty = require('../internals/create-property');
+var deletePropertyOrThrow = require('../internals/delete-property-or-throw');
+var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');
+
+var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');
+
+var max = Math.max;
+var min = Math.min;
+
+// `Array.prototype.splice` method
+// https://tc39.es/ecma262/#sec-array.prototype.splice
+// with adding support of @@species
+$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {
+  splice: function splice(start, deleteCount /* , ...items */) {
+    var O = toObject(this);
+    var len = lengthOfArrayLike(O);
+    var actualStart = toAbsoluteIndex(start, len);
+    var argumentsLength = arguments.length;
+    var insertCount, actualDeleteCount, A, k, from, to;
+    if (argumentsLength === 0) {
+      insertCount = actualDeleteCount = 0;
+    } else if (argumentsLength === 1) {
+      insertCount = 0;
+      actualDeleteCount = len - actualStart;
+    } else {
+      insertCount = argumentsLength - 2;
+      actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);
+    }
+    doesNotExceedSafeInteger(len + insertCount - actualDeleteCount);
+    A = arraySpeciesCreate(O, actualDeleteCount);
+    for (k = 0; k < actualDeleteCount; k++) {
+      from = actualStart + k;
+      if (from in O) createProperty(A, k, O[from]);
+    }
+    A.length = actualDeleteCount;
+    if (insertCount < actualDeleteCount) {
+      for (k = actualStart; k < len - actualDeleteCount; k++) {
+        from = k + actualDeleteCount;
+        to = k + insertCount;
+        if (from in O) O[to] = O[from];
+        else deletePropertyOrThrow(O, to);
+      }
+      for (k = len; k > len - actualDeleteCount + insertCount; k--) deletePropertyOrThrow(O, k - 1);
+    } else if (insertCount > actualDeleteCount) {
+      for (k = len - actualDeleteCount; k > actualStart; k--) {
+        from = k + actualDeleteCount - 1;
+        to = k + insertCount - 1;
+        if (from in O) O[to] = O[from];
+        else deletePropertyOrThrow(O, to);
+      }
+    }
+    for (k = 0; k < insertCount; k++) {
+      O[k + actualStart] = arguments[k + 2];
+    }
+    setArrayLength(O, len - actualDeleteCount + insertCount);
+    return A;
+  }
+});
diff --git a/node_modules/core-js/modules/es.array.to-reversed.js b/node_modules/core-js/modules/es.array.to-reversed.js
new file mode 100644
index 0000000..00c5d0d
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.to-reversed.js
@@ -0,0 +1,17 @@
+'use strict';
+var $ = require('../internals/export');
+var arrayToReversed = require('../internals/array-to-reversed');
+var toIndexedObject = require('../internals/to-indexed-object');
+var addToUnscopables = require('../internals/add-to-unscopables');
+
+var $Array = Array;
+
+// `Array.prototype.toReversed` method
+// https://tc39.es/ecma262/#sec-array.prototype.toreversed
+$({ target: 'Array', proto: true }, {
+  toReversed: function toReversed() {
+    return arrayToReversed(toIndexedObject(this), $Array);
+  }
+});
+
+addToUnscopables('toReversed');
diff --git a/node_modules/core-js/modules/es.array.to-sorted.js b/node_modules/core-js/modules/es.array.to-sorted.js
new file mode 100644
index 0000000..b3ce478
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.to-sorted.js
@@ -0,0 +1,24 @@
+'use strict';
+var $ = require('../internals/export');
+var uncurryThis = require('../internals/function-uncurry-this');
+var aCallable = require('../internals/a-callable');
+var toIndexedObject = require('../internals/to-indexed-object');
+var arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');
+var getBuiltInPrototypeMethod = require('../internals/get-built-in-prototype-method');
+var addToUnscopables = require('../internals/add-to-unscopables');
+
+var $Array = Array;
+var sort = uncurryThis(getBuiltInPrototypeMethod('Array', 'sort'));
+
+// `Array.prototype.toSorted` method
+// https://tc39.es/ecma262/#sec-array.prototype.tosorted
+$({ target: 'Array', proto: true }, {
+  toSorted: function toSorted(compareFn) {
+    if (compareFn !== undefined) aCallable(compareFn);
+    var O = toIndexedObject(this);
+    var A = arrayFromConstructorAndList($Array, O);
+    return sort(A, compareFn);
+  }
+});
+
+addToUnscopables('toSorted');
diff --git a/node_modules/core-js/modules/es.array.to-spliced.js b/node_modules/core-js/modules/es.array.to-spliced.js
new file mode 100644
index 0000000..cad654e
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.to-spliced.js
@@ -0,0 +1,44 @@
+'use strict';
+var $ = require('../internals/export');
+var addToUnscopables = require('../internals/add-to-unscopables');
+var doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+var toAbsoluteIndex = require('../internals/to-absolute-index');
+var toIndexedObject = require('../internals/to-indexed-object');
+var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
+
+var $Array = Array;
+var max = Math.max;
+var min = Math.min;
+
+// `Array.prototype.toSpliced` method
+// https://tc39.es/ecma262/#sec-array.prototype.tospliced
+$({ target: 'Array', proto: true }, {
+  toSpliced: function toSpliced(start, deleteCount /* , ...items */) {
+    var O = toIndexedObject(this);
+    var len = lengthOfArrayLike(O);
+    var actualStart = toAbsoluteIndex(start, len);
+    var argumentsLength = arguments.length;
+    var k = 0;
+    var insertCount, actualDeleteCount, newLen, A;
+    if (argumentsLength === 0) {
+      insertCount = actualDeleteCount = 0;
+    } else if (argumentsLength === 1) {
+      insertCount = 0;
+      actualDeleteCount = len - actualStart;
+    } else {
+      insertCount = argumentsLength - 2;
+      actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);
+    }
+    newLen = doesNotExceedSafeInteger(len + insertCount - actualDeleteCount);
+    A = $Array(newLen);
+
+    for (; k < actualStart; k++) A[k] = O[k];
+    for (; k < actualStart + insertCount; k++) A[k] = arguments[k - actualStart + 2];
+    for (; k < newLen; k++) A[k] = O[k + actualDeleteCount - insertCount];
+
+    return A;
+  }
+});
+
+addToUnscopables('toSpliced');
diff --git a/node_modules/core-js/modules/es.array.unscopables.flat-map.js b/node_modules/core-js/modules/es.array.unscopables.flat-map.js
new file mode 100644
index 0000000..788076d
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.unscopables.flat-map.js
@@ -0,0 +1,7 @@
+'use strict';
+// this method was added to unscopables after implementation
+// in popular engines, so it's moved to a separate module
+var addToUnscopables = require('../internals/add-to-unscopables');
+
+// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
+addToUnscopables('flatMap');
diff --git a/node_modules/core-js/modules/es.array.unscopables.flat.js b/node_modules/core-js/modules/es.array.unscopables.flat.js
new file mode 100644
index 0000000..4fa66a8
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.unscopables.flat.js
@@ -0,0 +1,7 @@
+'use strict';
+// this method was added to unscopables after implementation
+// in popular engines, so it's moved to a separate module
+var addToUnscopables = require('../internals/add-to-unscopables');
+
+// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
+addToUnscopables('flat');
diff --git a/node_modules/core-js/modules/es.array.unshift.js b/node_modules/core-js/modules/es.array.unshift.js
new file mode 100644
index 0000000..4d31cd8
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.unshift.js
@@ -0,0 +1,45 @@
+'use strict';
+var $ = require('../internals/export');
+var toObject = require('../internals/to-object');
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+var setArrayLength = require('../internals/array-set-length');
+var deletePropertyOrThrow = require('../internals/delete-property-or-throw');
+var doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');
+
+// IE8-
+var INCORRECT_RESULT = [].unshift(0) !== 1;
+
+// V8 ~ Chrome < 71 and Safari <= 15.4, FF < 23 throws InternalError
+var properErrorOnNonWritableLength = function () {
+  try {
+    // eslint-disable-next-line es/no-object-defineproperty -- safe
+    Object.defineProperty([], 'length', { writable: false }).unshift();
+  } catch (error) {
+    return error instanceof TypeError;
+  }
+};
+
+var FORCED = INCORRECT_RESULT || !properErrorOnNonWritableLength();
+
+// `Array.prototype.unshift` method
+// https://tc39.es/ecma262/#sec-array.prototype.unshift
+$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {
+  // eslint-disable-next-line no-unused-vars -- required for `.length`
+  unshift: function unshift(item) {
+    var O = toObject(this);
+    var len = lengthOfArrayLike(O);
+    var argCount = arguments.length;
+    if (argCount) {
+      doesNotExceedSafeInteger(len + argCount);
+      var k = len;
+      while (k--) {
+        var to = k + argCount;
+        if (k in O) O[to] = O[k];
+        else deletePropertyOrThrow(O, to);
+      }
+      for (var j = 0; j < argCount; j++) {
+        O[j] = arguments[j];
+      }
+    } return setArrayLength(O, len + argCount);
+  }
+});
diff --git a/node_modules/core-js/modules/es.array.with.js b/node_modules/core-js/modules/es.array.with.js
new file mode 100644
index 0000000..77fd99f
--- /dev/null
+++ b/node_modules/core-js/modules/es.array.with.js
@@ -0,0 +1,14 @@
+'use strict';
+var $ = require('../internals/export');
+var arrayWith = require('../internals/array-with');
+var toIndexedObject = require('../internals/to-indexed-object');
+
+var $Array = Array;
+
+// `Array.prototype.with` method
+// https://tc39.es/ecma262/#sec-array.prototype.with
+$({ target: 'Array', proto: true }, {
+  'with': function (index, value) {
+    return arrayWith(toIndexedObject(this), $Array, index, value);
+  }
+});
diff --git a/node_modules/core-js/modules/es.data-view.constructor.js b/node_modules/core-js/modules/es.data-view.constructor.js
new file mode 100644
index 0000000..0c33e76
--- /dev/null
+++ b/node_modules/core-js/modules/es.data-view.constructor.js
@@ -0,0 +1,10 @@
+'use strict';
+var $ = require('../internals/export');
+var ArrayBufferModule = require('../internals/array-buffer');
+var NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');
+
+// `DataView` constructor
+// https://tc39.es/ecma262/#sec-dataview-constructor
+$({ global: true, constructor: true, forced: !NATIVE_ARRAY_BUFFER }, {
+  DataView: ArrayBufferModule.DataView
+});
diff --git a/node_modules/core-js/modules/es.data-view.get-float16.js b/node_modules/core-js/modules/es.data-view.get-float16.js
new file mode 100644
index 0000000..0934fb3
--- /dev/null
+++ b/node_modules/core-js/modules/es.data-view.get-float16.js
@@ -0,0 +1,31 @@
+'use strict';
+var $ = require('../internals/export');
+var uncurryThis = require('../internals/function-uncurry-this');
+
+var pow = Math.pow;
+
+var EXP_MASK16 = 31; // 2 ** 5 - 1
+var SIGNIFICAND_MASK16 = 1023; // 2 ** 10 - 1
+var MIN_SUBNORMAL16 = pow(2, -24); // 2 ** -10 * 2 ** -14
+var SIGNIFICAND_DENOM16 = 0.0009765625; // 2 ** -10
+
+var unpackFloat16 = function (bytes) {
+  var sign = bytes >>> 15;
+  var exponent = bytes >>> 10 & EXP_MASK16;
+  var significand = bytes & SIGNIFICAND_MASK16;
+  if (exponent === EXP_MASK16) return significand === 0 ? (sign === 0 ? Infinity : -Infinity) : NaN;
+  if (exponent === 0) return significand * (sign === 0 ? MIN_SUBNORMAL16 : -MIN_SUBNORMAL16);
+  return pow(2, exponent - 15) * (sign === 0 ? 1 + significand * SIGNIFICAND_DENOM16 : -1 - significand * SIGNIFICAND_DENOM16);
+};
+
+// eslint-disable-next-line es/no-typed-arrays -- safe
+var getUint16 = uncurryThis(DataView.prototype.getUint16);
+
+// `DataView.prototype.getFloat16` method
+// https://tc39.es/ecma262/#sec-dataview.prototype.getfloat16
+$({ target: 'DataView', proto: true }, {
+  getFloat16: function getFloat16(byteOffset /* , littleEndian */) {
+    var uint16 = getUint16(this, byteOffset, arguments.length > 1 ? arguments[1] : false);
+    return unpackFloat16(uint16);
+  }
+});
diff --git a/node_modules/core-js/modules/es.data-view.js b/node_modules/core-js/modules/es.data-view.js
new file mode 100644
index 0000000..9772849
--- /dev/null
+++ b/node_modules/core-js/modules/es.data-view.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove this module from `core-js@4` since it's replaced to module below
+require('../modules/es.data-view.constructor');
diff --git a/node_modules/core-js/modules/es.data-view.set-float16.js b/node_modules/core-js/modules/es.data-view.set-float16.js
new file mode 100644
index 0000000..38f6e04
--- /dev/null
+++ b/node_modules/core-js/modules/es.data-view.set-float16.js
@@ -0,0 +1,54 @@
+'use strict';
+var $ = require('../internals/export');
+var uncurryThis = require('../internals/function-uncurry-this');
+var aDataView = require('../internals/a-data-view');
+var toIndex = require('../internals/to-index');
+// TODO: Replace with module dependency in `core-js@4`
+var log2 = require('../internals/math-log2');
+var roundTiesToEven = require('../internals/math-round-ties-to-even');
+
+var pow = Math.pow;
+
+var MIN_INFINITY16 = 65520; // (2 - 2 ** -11) * 2 ** 15
+var MIN_NORMAL16 = 0.000061005353927612305; // (1 - 2 ** -11) * 2 ** -14
+var REC_MIN_SUBNORMAL16 = 16777216; // 2 ** 10 * 2 ** 14
+var REC_SIGNIFICAND_DENOM16 = 1024; // 2 ** 10;
+
+var packFloat16 = function (value) {
+  // eslint-disable-next-line no-self-compare -- NaN check
+  if (value !== value) return 0x7E00; // NaN
+  if (value === 0) return (1 / value === -Infinity) << 15; // +0 or -0
+
+  var neg = value < 0;
+  if (neg) value = -value;
+  if (value >= MIN_INFINITY16) return neg << 15 | 0x7C00; // Infinity
+  if (value < MIN_NORMAL16) return neg << 15 | roundTiesToEven(value * REC_MIN_SUBNORMAL16); // subnormal
+
+  // normal
+  var exponent = log2(value) | 0;
+  if (exponent === -15) {
+    // we round from a value between 2 ** -15 * (1 + 1022/1024) (the largest subnormal) and 2 ** -14 * (1 + 0/1024) (the smallest normal)
+    // to the latter (former impossible because of the subnormal check above)
+    return neg << 15 | REC_SIGNIFICAND_DENOM16;
+  }
+  var significand = roundTiesToEven((value * pow(2, -exponent) - 1) * REC_SIGNIFICAND_DENOM16);
+  if (significand === REC_SIGNIFICAND_DENOM16) {
+    // we round from a value between 2 ** n * (1 + 1023/1024) and 2 ** (n + 1) * (1 + 0/1024) to the latter
+    return neg << 15 | exponent + 16 << 10;
+  }
+  return neg << 15 | exponent + 15 << 10 | significand;
+};
+
+// eslint-disable-next-line es/no-typed-arrays -- safe
+var setUint16 = uncurryThis(DataView.prototype.setUint16);
+
+// `DataView.prototype.setFloat16` method
+// https://tc39.es/ecma262/#sec-dataview.prototype.setfloat16
+$({ target: 'DataView', proto: true }, {
+  setFloat16: function setFloat16(byteOffset, value /* , littleEndian */) {
+    aDataView(this);
+    var offset = toIndex(byteOffset);
+    var bytes = packFloat16(+value);
+    return setUint16(this, offset, bytes, arguments.length > 2 ? arguments[2] : false);
+  }
+});
diff --git a/node_modules/core-js/modules/es.date.get-year.js b/node_modules/core-js/modules/es.date.get-year.js
new file mode 100644
index 0000000..3558c19
--- /dev/null
+++ b/node_modules/core-js/modules/es.date.get-year.js
@@ -0,0 +1,20 @@
+'use strict';
+var $ = require('../internals/export');
+var uncurryThis = require('../internals/function-uncurry-this');
+var fails = require('../internals/fails');
+
+// IE8- non-standard case
+var FORCED = fails(function () {
+  // eslint-disable-next-line es/no-date-prototype-getyear-setyear -- detection
+  return new Date(16e11).getYear() !== 120;
+});
+
+var getFullYear = uncurryThis(Date.prototype.getFullYear);
+
+// `Date.prototype.getYear` method
+// https://tc39.es/ecma262/#sec-date.prototype.getyear
+$({ target: 'Date', proto: true, forced: FORCED }, {
+  getYear: function getYear() {
+    return getFullYear(this) - 1900;
+  }
+});
diff --git a/node_modules/core-js/modules/es.date.now.js b/node_modules/core-js/modules/es.date.now.js
new file mode 100644
index 0000000..df018fe
--- /dev/null
+++ b/node_modules/core-js/modules/es.date.now.js
@@ -0,0 +1,15 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+var $ = require('../internals/export');
+var uncurryThis = require('../internals/function-uncurry-this');
+
+var $Date = Date;
+var thisTimeValue = uncurryThis($Date.prototype.getTime);
+
+// `Date.now` method
+// https://tc39.es/ecma262/#sec-date.now
+$({ target: 'Date', stat: true }, {
+  now: function now() {
+    return thisTimeValue(new $Date());
+  }
+});
diff --git a/node_modules/core-js/modules/es.date.set-year.js b/node_modules/core-js/modules/es.date.set-year.js
new file mode 100644
index 0000000..0ee20fc
--- /dev/null
+++ b/node_modules/core-js/modules/es.date.set-year.js
@@ -0,0 +1,20 @@
+'use strict';
+var $ = require('../internals/export');
+var uncurryThis = require('../internals/function-uncurry-this');
+var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
+
+var DatePrototype = Date.prototype;
+var thisTimeValue = uncurryThis(DatePrototype.getTime);
+var setFullYear = uncurryThis(DatePrototype.setFullYear);
+
+// `Date.prototype.setYear` method
+// https://tc39.es/ecma262/#sec-date.prototype.setyear
+$({ target: 'Date', proto: true }, {
+  setYear: function setYear(year) {
+    // validate
+    thisTimeValue(this);
+    var yi = toIntegerOrInfinity(year);
+    var yyyy = yi >= 0 && yi <= 99 ? yi + 1900 : yi;
+    return setFullYear(this, yyyy);
+  }
+});
diff --git a/node_modules/core-js/modules/es.date.to-gmt-string.js b/node_modules/core-js/modules/es.date.to-gmt-string.js
new file mode 100644
index 0000000..7be854e
--- /dev/null
+++ b/node_modules/core-js/modules/es.date.to-gmt-string.js
@@ -0,0 +1,8 @@
+'use strict';
+var $ = require('../internals/export');
+
+// `Date.prototype.toGMTString` method
+// https://tc39.es/ecma262/#sec-date.prototype.togmtstring
+$({ target: 'Date', proto: true }, {
+  toGMTString: Date.prototype.toUTCString
+});
diff --git a/node_modules/core-js/modules/es.date.to-iso-string.js b/node_modules/core-js/modules/es.date.to-iso-string.js
new file mode 100644
index 0000000..d22cd27
--- /dev/null
+++ b/node_modules/core-js/modules/es.date.to-iso-string.js
@@ -0,0 +1,10 @@
+'use strict';
+var $ = require('../internals/export');
+var toISOString = require('../internals/date-to-iso-string');
+
+// `Date.prototype.toISOString` method
+// https://tc39.es/ecma262/#sec-date.prototype.toisostring
+// PhantomJS / old WebKit has a broken implementations
+$({ target: 'Date', proto: true, forced: Date.prototype.toISOString !== toISOString }, {
+  toISOString: toISOString
+});
diff --git a/node_modules/core-js/modules/es.date.to-json.js b/node_modules/core-js/modules/es.date.to-json.js
new file mode 100644
index 0000000..328ee26
--- /dev/null
+++ b/node_modules/core-js/modules/es.date.to-json.js
@@ -0,0 +1,21 @@
+'use strict';
+var $ = require('../internals/export');
+var fails = require('../internals/fails');
+var toObject = require('../internals/to-object');
+var toPrimitive = require('../internals/to-primitive');
+
+var FORCED = fails(function () {
+  return new Date(NaN).toJSON() !== null
+    || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;
+});
+
+// `Date.prototype.toJSON` method
+// https://tc39.es/ecma262/#sec-date.prototype.tojson
+$({ target: 'Date', proto: true, arity: 1, forced: FORCED }, {
+  // eslint-disable-next-line no-unused-vars -- required for `.length`
+  toJSON: function toJSON(key) {
+    var O = toObject(this);
+    var pv = toPrimitive(O, 'number');
+    return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();
+  }
+});
diff --git a/node_modules/core-js/modules/es.date.to-primitive.js b/node_modules/core-js/modules/es.date.to-primitive.js
new file mode 100644
index 0000000..6e20634
--- /dev/null
+++ b/node_modules/core-js/modules/es.date.to-primitive.js
@@ -0,0 +1,14 @@
+'use strict';
+var hasOwn = require('../internals/has-own-property');
+var defineBuiltIn = require('../internals/define-built-in');
+var dateToPrimitive = require('../internals/date-to-primitive');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');
+var DatePrototype = Date.prototype;
+
+// `Date.prototype[@@toPrimitive]` method
+// https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive
+if (!hasOwn(DatePrototype, TO_PRIMITIVE)) {
+  defineBuiltIn(DatePrototype, TO_PRIMITIVE, dateToPrimitive);
+}
diff --git a/node_modules/core-js/modules/es.date.to-string.js b/node_modules/core-js/modules/es.date.to-string.js
new file mode 100644
index 0000000..32e0d52
--- /dev/null
+++ b/node_modules/core-js/modules/es.date.to-string.js
@@ -0,0 +1,20 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+var uncurryThis = require('../internals/function-uncurry-this');
+var defineBuiltIn = require('../internals/define-built-in');
+
+var DatePrototype = Date.prototype;
+var INVALID_DATE = 'Invalid Date';
+var TO_STRING = 'toString';
+var nativeDateToString = uncurryThis(DatePrototype[TO_STRING]);
+var thisTimeValue = uncurryThis(DatePrototype.getTime);
+
+// `Date.prototype.toString` method
+// https://tc39.es/ecma262/#sec-date.prototype.tostring
+if (String(new Date(NaN)) !== INVALID_DATE) {
+  defineBuiltIn(DatePrototype, TO_STRING, function toString() {
+    var value = thisTimeValue(this);
+    // eslint-disable-next-line no-self-compare -- NaN check
+    return value === value ? nativeDateToString(this) : INVALID_DATE;
+  });
+}
diff --git a/node_modules/core-js/modules/es.error.cause.js b/node_modules/core-js/modules/es.error.cause.js
new file mode 100644
index 0000000..2e82c21
--- /dev/null
+++ b/node_modules/core-js/modules/es.error.cause.js
@@ -0,0 +1,58 @@
+'use strict';
+/* eslint-disable no-unused-vars -- required for functions `.length` */
+var $ = require('../internals/export');
+var globalThis = require('../internals/global-this');
+var apply = require('../internals/function-apply');
+var wrapErrorConstructorWithCause = require('../internals/wrap-error-constructor-with-cause');
+
+var WEB_ASSEMBLY = 'WebAssembly';
+var WebAssembly = globalThis[WEB_ASSEMBLY];
+
+// eslint-disable-next-line es/no-error-cause -- feature detection
+var FORCED = new Error('e', { cause: 7 }).cause !== 7;
+
+var exportGlobalErrorCauseWrapper = function (ERROR_NAME, wrapper) {
+  var O = {};
+  O[ERROR_NAME] = wrapErrorConstructorWithCause(ERROR_NAME, wrapper, FORCED);
+  $({ global: true, constructor: true, arity: 1, forced: FORCED }, O);
+};
+
+var exportWebAssemblyErrorCauseWrapper = function (ERROR_NAME, wrapper) {
+  if (WebAssembly && WebAssembly[ERROR_NAME]) {
+    var O = {};
+    O[ERROR_NAME] = wrapErrorConstructorWithCause(WEB_ASSEMBLY + '.' + ERROR_NAME, wrapper, FORCED);
+    $({ target: WEB_ASSEMBLY, stat: true, constructor: true, arity: 1, forced: FORCED }, O);
+  }
+};
+
+// https://tc39.es/ecma262/#sec-nativeerror
+exportGlobalErrorCauseWrapper('Error', function (init) {
+  return function Error(message) { return apply(init, this, arguments); };
+});
+exportGlobalErrorCauseWrapper('EvalError', function (init) {
+  return function EvalError(message) { return apply(init, this, arguments); };
+});
+exportGlobalErrorCauseWrapper('RangeError', function (init) {
+  return function RangeError(message) { return apply(init, this, arguments); };
+});
+exportGlobalErrorCauseWrapper('ReferenceError', function (init) {
+  return function ReferenceError(message) { return apply(init, this, arguments); };
+});
+exportGlobalErrorCauseWrapper('SyntaxError', function (init) {
+  return function SyntaxError(message) { return apply(init, this, arguments); };
+});
+exportGlobalErrorCauseWrapper('TypeError', function (init) {
+  return function TypeError(message) { return apply(init, this, arguments); };
+});
+exportGlobalErrorCauseWrapper('URIError', function (init) {
+  return function URIError(message) { return apply(init, this, arguments); };
+});
+exportWebAssemblyErrorCauseWrapper('CompileError', function (init) {
+  return function CompileError(message) { return apply(init, this, arguments); };
+});
+exportWebAssemblyErrorCauseWrapper('LinkError', function (init) {
+  return function LinkError(message) { return apply(init, this, arguments); };
+});
+exportWebAssemblyErrorCauseWrapper('RuntimeError', function (init) {
+  return function RuntimeError(message) { return apply(init, this, arguments); };
+});
diff --git a/node_modules/core-js/modules/es.error.to-string.js b/node_modules/core-js/modules/es.error.to-string.js
new file mode 100644
index 0000000..490c273
--- /dev/null
+++ b/node_modules/core-js/modules/es.error.to-string.js
@@ -0,0 +1,11 @@
+'use strict';
+var defineBuiltIn = require('../internals/define-built-in');
+var errorToString = require('../internals/error-to-string');
+
+var ErrorPrototype = Error.prototype;
+
+// `Error.prototype.toString` method fix
+// https://tc39.es/ecma262/#sec-error.prototype.tostring
+if (ErrorPrototype.toString !== errorToString) {
+  defineBuiltIn(ErrorPrototype, 'toString', errorToString);
+}
diff --git a/node_modules/core-js/modules/es.escape.js b/node_modules/core-js/modules/es.escape.js
new file mode 100644
index 0000000..20e1b99
--- /dev/null
+++ b/node_modules/core-js/modules/es.escape.js
@@ -0,0 +1,43 @@
+'use strict';
+var $ = require('../internals/export');
+var uncurryThis = require('../internals/function-uncurry-this');
+var toString = require('../internals/to-string');
+
+var charAt = uncurryThis(''.charAt);
+var charCodeAt = uncurryThis(''.charCodeAt);
+var exec = uncurryThis(/./.exec);
+var numberToString = uncurryThis(1.0.toString);
+var toUpperCase = uncurryThis(''.toUpperCase);
+
+var raw = /[\w*+\-./@]/;
+
+var hex = function (code, length) {
+  var result = numberToString(code, 16);
+  while (result.length < length) result = '0' + result;
+  return result;
+};
+
+// `escape` method
+// https://tc39.es/ecma262/#sec-escape-string
+$({ global: true }, {
+  escape: function escape(string) {
+    var str = toString(string);
+    var result = '';
+    var length = str.length;
+    var index = 0;
+    var chr, code;
+    while (index < length) {
+      chr = charAt(str, index++);
+      if (exec(raw, chr)) {
+        result += chr;
+      } else {
+        code = charCodeAt(chr, 0);
+        if (code < 256) {
+          result += '%' + hex(code, 2);
+        } else {
+          result += '%u' + toUpperCase(hex(code, 4));
+        }
+      }
+    } return result;
+  }
+});
diff --git a/node_modules/core-js/modules/es.function.bind.js b/node_modules/core-js/modules/es.function.bind.js
new file mode 100644
index 0000000..f8650c2
--- /dev/null
+++ b/node_modules/core-js/modules/es.function.bind.js
@@ -0,0 +1,11 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+var $ = require('../internals/export');
+var bind = require('../internals/function-bind');
+
+// `Function.prototype.bind` method
+// https://tc39.es/ecma262/#sec-function.prototype.bind
+// eslint-disable-next-line es/no-function-prototype-bind -- detection
+$({ target: 'Function', proto: true, forced: Function.bind !== bind }, {
+  bind: bind
+});
diff --git a/node_modules/core-js/modules/es.function.has-instance.js b/node_modules/core-js/modules/es.function.has-instance.js
new file mode 100644
index 0000000..8038eed
--- /dev/null
+++ b/node_modules/core-js/modules/es.function.has-instance.js
@@ -0,0 +1,20 @@
+'use strict';
+var isCallable = require('../internals/is-callable');
+var isObject = require('../internals/is-object');
+var definePropertyModule = require('../internals/object-define-property');
+var isPrototypeOf = require('../internals/object-is-prototype-of');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var makeBuiltIn = require('../internals/make-built-in');
+
+var HAS_INSTANCE = wellKnownSymbol('hasInstance');
+var FunctionPrototype = Function.prototype;
+
+// `Function.prototype[@@hasInstance]` method
+// https://tc39.es/ecma262/#sec-function.prototype-@@hasinstance
+if (!(HAS_INSTANCE in FunctionPrototype)) {
+  definePropertyModule.f(FunctionPrototype, HAS_INSTANCE, { value: makeBuiltIn(function (O) {
+    if (!isCallable(this) || !isObject(O)) return false;
+    var P = this.prototype;
+    return isObject(P) ? isPrototypeOf(P, O) : O instanceof this;
+  }, HAS_INSTANCE) });
+}
diff --git a/node_modules/core-js/modules/es.function.name.js b/node_modules/core-js/modules/es.function.name.js
new file mode 100644
index 0000000..aa833e4
--- /dev/null
+++ b/node_modules/core-js/modules/es.function.name.js
@@ -0,0 +1,26 @@
+'use strict';
+var DESCRIPTORS = require('../internals/descriptors');
+var FUNCTION_NAME_EXISTS = require('../internals/function-name').EXISTS;
+var uncurryThis = require('../internals/function-uncurry-this');
+var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
+
+var FunctionPrototype = Function.prototype;
+var functionToString = uncurryThis(FunctionPrototype.toString);
+var nameRE = /function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/;
+var regExpExec = uncurryThis(nameRE.exec);
+var NAME = 'name';
+
+// Function instances `.name` property
+// https://tc39.es/ecma262/#sec-function-instances-name
+if (DESCRIPTORS && !FUNCTION_NAME_EXISTS) {
+  defineBuiltInAccessor(FunctionPrototype, NAME, {
+    configurable: true,
+    get: function () {
+      try {
+        return regExpExec(nameRE, functionToString(this))[1];
+      } catch (error) {
+        return '';
+      }
+    }
+  });
+}
diff --git a/node_modules/core-js/modules/es.global-this.js b/node_modules/core-js/modules/es.global-this.js
new file mode 100644
index 0000000..9263585
--- /dev/null
+++ b/node_modules/core-js/modules/es.global-this.js
@@ -0,0 +1,9 @@
+'use strict';
+var $ = require('../internals/export');
+var globalThis = require('../internals/global-this');
+
+// `globalThis` object
+// https://tc39.es/ecma262/#sec-globalthis
+$({ global: true, forced: globalThis.globalThis !== globalThis }, {
+  globalThis: globalThis
+});
diff --git a/node_modules/core-js/modules/es.iterator.constructor.js b/node_modules/core-js/modules/es.iterator.constructor.js
new file mode 100644
index 0000000..de4816b
--- /dev/null
+++ b/node_modules/core-js/modules/es.iterator.constructor.js
@@ -0,0 +1,65 @@
+'use strict';
+var $ = require('../internals/export');
+var globalThis = require('../internals/global-this');
+var anInstance = require('../internals/an-instance');
+var anObject = require('../internals/an-object');
+var isCallable = require('../internals/is-callable');
+var getPrototypeOf = require('../internals/object-get-prototype-of');
+var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
+var createProperty = require('../internals/create-property');
+var fails = require('../internals/fails');
+var hasOwn = require('../internals/has-own-property');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;
+var DESCRIPTORS = require('../internals/descriptors');
+var IS_PURE = require('../internals/is-pure');
+
+var CONSTRUCTOR = 'constructor';
+var ITERATOR = 'Iterator';
+var TO_STRING_TAG = wellKnownSymbol('toStringTag');
+
+var $TypeError = TypeError;
+var NativeIterator = globalThis[ITERATOR];
+
+// FF56- have non-standard global helper `Iterator`
+var FORCED = IS_PURE
+  || !isCallable(NativeIterator)
+  || NativeIterator.prototype !== IteratorPrototype
+  // FF44- non-standard `Iterator` passes previous tests
+  || !fails(function () { NativeIterator({}); });
+
+var IteratorConstructor = function Iterator() {
+  anInstance(this, IteratorPrototype);
+  if (getPrototypeOf(this) === IteratorPrototype) throw new $TypeError('Abstract class Iterator not directly constructable');
+};
+
+var defineIteratorPrototypeAccessor = function (key, value) {
+  if (DESCRIPTORS) {
+    defineBuiltInAccessor(IteratorPrototype, key, {
+      configurable: true,
+      get: function () {
+        return value;
+      },
+      set: function (replacement) {
+        anObject(this);
+        if (this === IteratorPrototype) throw new $TypeError("You can't redefine this property");
+        if (hasOwn(this, key)) this[key] = replacement;
+        else createProperty(this, key, replacement);
+      }
+    });
+  } else IteratorPrototype[key] = value;
+};
+
+if (!hasOwn(IteratorPrototype, TO_STRING_TAG)) defineIteratorPrototypeAccessor(TO_STRING_TAG, ITERATOR);
+
+if (FORCED || !hasOwn(IteratorPrototype, CONSTRUCTOR) || IteratorPrototype[CONSTRUCTOR] === Object) {
+  defineIteratorPrototypeAccessor(CONSTRUCTOR, IteratorConstructor);
+}
+
+IteratorConstructor.prototype = IteratorPrototype;
+
+// `Iterator` constructor
+// https://tc39.es/ecma262/#sec-iterator
+$({ global: true, constructor: true, forced: FORCED }, {
+  Iterator: IteratorConstructor
+});
diff --git a/node_modules/core-js/modules/es.iterator.drop.js b/node_modules/core-js/modules/es.iterator.drop.js
new file mode 100644
index 0000000..5010b41
--- /dev/null
+++ b/node_modules/core-js/modules/es.iterator.drop.js
@@ -0,0 +1,36 @@
+'use strict';
+var $ = require('../internals/export');
+var call = require('../internals/function-call');
+var anObject = require('../internals/an-object');
+var getIteratorDirect = require('../internals/get-iterator-direct');
+var notANaN = require('../internals/not-a-nan');
+var toPositiveInteger = require('../internals/to-positive-integer');
+var createIteratorProxy = require('../internals/iterator-create-proxy');
+var IS_PURE = require('../internals/is-pure');
+
+var IteratorProxy = createIteratorProxy(function () {
+  var iterator = this.iterator;
+  var next = this.next;
+  var result, done;
+  while (this.remaining) {
+    this.remaining--;
+    result = anObject(call(next, iterator));
+    done = this.done = !!result.done;
+    if (done) return;
+  }
+  result = anObject(call(next, iterator));
+  done = this.done = !!result.done;
+  if (!done) return result.value;
+});
+
+// `Iterator.prototype.drop` method
+// https://tc39.es/ecma262/#sec-iterator.prototype.drop
+$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {
+  drop: function drop(limit) {
+    anObject(this);
+    var remaining = toPositiveInteger(notANaN(+limit));
+    return new IteratorProxy(getIteratorDirect(this), {
+      remaining: remaining
+    });
+  }
+});
diff --git a/node_modules/core-js/modules/es.iterator.every.js b/node_modules/core-js/modules/es.iterator.every.js
new file mode 100644
index 0000000..af5a043
--- /dev/null
+++ b/node_modules/core-js/modules/es.iterator.every.js
@@ -0,0 +1,20 @@
+'use strict';
+var $ = require('../internals/export');
+var iterate = require('../internals/iterate');
+var aCallable = require('../internals/a-callable');
+var anObject = require('../internals/an-object');
+var getIteratorDirect = require('../internals/get-iterator-direct');
+
+// `Iterator.prototype.every` method
+// https://tc39.es/ecma262/#sec-iterator.prototype.every
+$({ target: 'Iterator', proto: true, real: true }, {
+  every: function every(predicate) {
+    anObject(this);
+    aCallable(predicate);
+    var record = getIteratorDirect(this);
+    var counter = 0;
+    return !iterate(record, function (value, stop) {
+      if (!predicate(value, counter++)) return stop();
+    }, { IS_RECORD: true, INTERRUPTED: true }).stopped;
+  }
+});
diff --git a/node_modules/core-js/modules/es.iterator.filter.js b/node_modules/core-js/modules/es.iterator.filter.js
new file mode 100644
index 0000000..1339712
--- /dev/null
+++ b/node_modules/core-js/modules/es.iterator.filter.js
@@ -0,0 +1,35 @@
+'use strict';
+var $ = require('../internals/export');
+var call = require('../internals/function-call');
+var aCallable = require('../internals/a-callable');
+var anObject = require('../internals/an-object');
+var getIteratorDirect = require('../internals/get-iterator-direct');
+var createIteratorProxy = require('../internals/iterator-create-proxy');
+var callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');
+var IS_PURE = require('../internals/is-pure');
+
+var IteratorProxy = createIteratorProxy(function () {
+  var iterator = this.iterator;
+  var predicate = this.predicate;
+  var next = this.next;
+  var result, done, value;
+  while (true) {
+    result = anObject(call(next, iterator));
+    done = this.done = !!result.done;
+    if (done) return;
+    value = result.value;
+    if (callWithSafeIterationClosing(iterator, predicate, [value, this.counter++], true)) return value;
+  }
+});
+
+// `Iterator.prototype.filter` method
+// https://tc39.es/ecma262/#sec-iterator.prototype.filter
+$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {
+  filter: function filter(predicate) {
+    anObject(this);
+    aCallable(predicate);
+    return new IteratorProxy(getIteratorDirect(this), {
+      predicate: predicate
+    });
+  }
+});
diff --git a/node_modules/core-js/modules/es.iterator.find.js b/node_modules/core-js/modules/es.iterator.find.js
new file mode 100644
index 0000000..ae25054
--- /dev/null
+++ b/node_modules/core-js/modules/es.iterator.find.js
@@ -0,0 +1,20 @@
+'use strict';
+var $ = require('../internals/export');
+var iterate = require('../internals/iterate');
+var aCallable = require('../internals/a-callable');
+var anObject = require('../internals/an-object');
+var getIteratorDirect = require('../internals/get-iterator-direct');
+
+// `Iterator.prototype.find` method
+// https://tc39.es/ecma262/#sec-iterator.prototype.find
+$({ target: 'Iterator', proto: true, real: true }, {
+  find: function find(predicate) {
+    anObject(this);
+    aCallable(predicate);
+    var record = getIteratorDirect(this);
+    var counter = 0;
+    return iterate(record, function (value, stop) {
+      if (predicate(value, counter++)) return stop(value);
+    }, { IS_RECORD: true, INTERRUPTED: true }).result;
+  }
+});
diff --git a/node_modules/core-js/modules/es.iterator.flat-map.js b/node_modules/core-js/modules/es.iterator.flat-map.js
new file mode 100644
index 0000000..59d4912
--- /dev/null
+++ b/node_modules/core-js/modules/es.iterator.flat-map.js
@@ -0,0 +1,45 @@
+'use strict';
+var $ = require('../internals/export');
+var call = require('../internals/function-call');
+var aCallable = require('../internals/a-callable');
+var anObject = require('../internals/an-object');
+var getIteratorDirect = require('../internals/get-iterator-direct');
+var getIteratorFlattenable = require('../internals/get-iterator-flattenable');
+var createIteratorProxy = require('../internals/iterator-create-proxy');
+var iteratorClose = require('../internals/iterator-close');
+var IS_PURE = require('../internals/is-pure');
+
+var IteratorProxy = createIteratorProxy(function () {
+  var iterator = this.iterator;
+  var mapper = this.mapper;
+  var result, inner;
+
+  while (true) {
+    if (inner = this.inner) try {
+      result = anObject(call(inner.next, inner.iterator));
+      if (!result.done) return result.value;
+      this.inner = null;
+    } catch (error) { iteratorClose(iterator, 'throw', error); }
+
+    result = anObject(call(this.next, iterator));
+
+    if (this.done = !!result.done) return;
+
+    try {
+      this.inner = getIteratorFlattenable(mapper(result.value, this.counter++), false);
+    } catch (error) { iteratorClose(iterator, 'throw', error); }
+  }
+});
+
+// `Iterator.prototype.flatMap` method
+// https://tc39.es/ecma262/#sec-iterator.prototype.flatmap
+$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {
+  flatMap: function flatMap(mapper) {
+    anObject(this);
+    aCallable(mapper);
+    return new IteratorProxy(getIteratorDirect(this), {
+      mapper: mapper,
+      inner: null
+    });
+  }
+});
diff --git a/node_modules/core-js/modules/es.iterator.for-each.js b/node_modules/core-js/modules/es.iterator.for-each.js
new file mode 100644
index 0000000..ac880a1
--- /dev/null
+++ b/node_modules/core-js/modules/es.iterator.for-each.js
@@ -0,0 +1,20 @@
+'use strict';
+var $ = require('../internals/export');
+var iterate = require('../internals/iterate');
+var aCallable = require('../internals/a-callable');
+var anObject = require('../internals/an-object');
+var getIteratorDirect = require('../internals/get-iterator-direct');
+
+// `Iterator.prototype.forEach` method
+// https://tc39.es/ecma262/#sec-iterator.prototype.foreach
+$({ target: 'Iterator', proto: true, real: true }, {
+  forEach: function forEach(fn) {
+    anObject(this);
+    aCallable(fn);
+    var record = getIteratorDirect(this);
+    var counter = 0;
+    iterate(record, function (value) {
+      fn(value, counter++);
+    }, { IS_RECORD: true });
+  }
+});
diff --git a/node_modules/core-js/modules/es.iterator.from.js b/node_modules/core-js/modules/es.iterator.from.js
new file mode 100644
index 0000000..6c6d205
--- /dev/null
+++ b/node_modules/core-js/modules/es.iterator.from.js
@@ -0,0 +1,24 @@
+'use strict';
+var $ = require('../internals/export');
+var call = require('../internals/function-call');
+var toObject = require('../internals/to-object');
+var isPrototypeOf = require('../internals/object-is-prototype-of');
+var IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;
+var createIteratorProxy = require('../internals/iterator-create-proxy');
+var getIteratorFlattenable = require('../internals/get-iterator-flattenable');
+var IS_PURE = require('../internals/is-pure');
+
+var IteratorProxy = createIteratorProxy(function () {
+  return call(this.next, this.iterator);
+}, true);
+
+// `Iterator.from` method
+// https://tc39.es/ecma262/#sec-iterator.from
+$({ target: 'Iterator', stat: true, forced: IS_PURE }, {
+  from: function from(O) {
+    var iteratorRecord = getIteratorFlattenable(typeof O == 'string' ? toObject(O) : O, true);
+    return isPrototypeOf(IteratorPrototype, iteratorRecord.iterator)
+      ? iteratorRecord.iterator
+      : new IteratorProxy(iteratorRecord);
+  }
+});
diff --git a/node_modules/core-js/modules/es.iterator.map.js b/node_modules/core-js/modules/es.iterator.map.js
new file mode 100644
index 0000000..62c2114
--- /dev/null
+++ b/node_modules/core-js/modules/es.iterator.map.js
@@ -0,0 +1,10 @@
+'use strict';
+var $ = require('../internals/export');
+var map = require('../internals/iterator-map');
+var IS_PURE = require('../internals/is-pure');
+
+// `Iterator.prototype.map` method
+// https://tc39.es/ecma262/#sec-iterator.prototype.map
+$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {
+  map: map
+});
diff --git a/node_modules/core-js/modules/es.iterator.reduce.js b/node_modules/core-js/modules/es.iterator.reduce.js
new file mode 100644
index 0000000..eca31c8
--- /dev/null
+++ b/node_modules/core-js/modules/es.iterator.reduce.js
@@ -0,0 +1,32 @@
+'use strict';
+var $ = require('../internals/export');
+var iterate = require('../internals/iterate');
+var aCallable = require('../internals/a-callable');
+var anObject = require('../internals/an-object');
+var getIteratorDirect = require('../internals/get-iterator-direct');
+
+var $TypeError = TypeError;
+
+// `Iterator.prototype.reduce` method
+// https://tc39.es/ecma262/#sec-iterator.prototype.reduce
+$({ target: 'Iterator', proto: true, real: true }, {
+  reduce: function reduce(reducer /* , initialValue */) {
+    anObject(this);
+    aCallable(reducer);
+    var record = getIteratorDirect(this);
+    var noInitial = arguments.length < 2;
+    var accumulator = noInitial ? undefined : arguments[1];
+    var counter = 0;
+    iterate(record, function (value) {
+      if (noInitial) {
+        noInitial = false;
+        accumulator = value;
+      } else {
+        accumulator = reducer(accumulator, value, counter);
+      }
+      counter++;
+    }, { IS_RECORD: true });
+    if (noInitial) throw new $TypeError('Reduce of empty iterator with no initial value');
+    return accumulator;
+  }
+});
diff --git a/node_modules/core-js/modules/es.iterator.some.js b/node_modules/core-js/modules/es.iterator.some.js
new file mode 100644
index 0000000..9d43c7f
--- /dev/null
+++ b/node_modules/core-js/modules/es.iterator.some.js
@@ -0,0 +1,20 @@
+'use strict';
+var $ = require('../internals/export');
+var iterate = require('../internals/iterate');
+var aCallable = require('../internals/a-callable');
+var anObject = require('../internals/an-object');
+var getIteratorDirect = require('../internals/get-iterator-direct');
+
+// `Iterator.prototype.some` method
+// https://tc39.es/ecma262/#sec-iterator.prototype.some
+$({ target: 'Iterator', proto: true, real: true }, {
+  some: function some(predicate) {
+    anObject(this);
+    aCallable(predicate);
+    var record = getIteratorDirect(this);
+    var counter = 0;
+    return iterate(record, function (value, stop) {
+      if (predicate(value, counter++)) return stop();
+    }, { IS_RECORD: true, INTERRUPTED: true }).stopped;
+  }
+});
diff --git a/node_modules/core-js/modules/es.iterator.take.js b/node_modules/core-js/modules/es.iterator.take.js
new file mode 100644
index 0000000..b24742c
--- /dev/null
+++ b/node_modules/core-js/modules/es.iterator.take.js
@@ -0,0 +1,33 @@
+'use strict';
+var $ = require('../internals/export');
+var call = require('../internals/function-call');
+var anObject = require('../internals/an-object');
+var getIteratorDirect = require('../internals/get-iterator-direct');
+var notANaN = require('../internals/not-a-nan');
+var toPositiveInteger = require('../internals/to-positive-integer');
+var createIteratorProxy = require('../internals/iterator-create-proxy');
+var iteratorClose = require('../internals/iterator-close');
+var IS_PURE = require('../internals/is-pure');
+
+var IteratorProxy = createIteratorProxy(function () {
+  var iterator = this.iterator;
+  if (!this.remaining--) {
+    this.done = true;
+    return iteratorClose(iterator, 'normal', undefined);
+  }
+  var result = anObject(call(this.next, iterator));
+  var done = this.done = !!result.done;
+  if (!done) return result.value;
+});
+
+// `Iterator.prototype.take` method
+// https://tc39.es/ecma262/#sec-iterator.prototype.take
+$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {
+  take: function take(limit) {
+    anObject(this);
+    var remaining = toPositiveInteger(notANaN(+limit));
+    return new IteratorProxy(getIteratorDirect(this), {
+      remaining: remaining
+    });
+  }
+});
diff --git a/node_modules/core-js/modules/es.iterator.to-array.js b/node_modules/core-js/modules/es.iterator.to-array.js
new file mode 100644
index 0000000..79c9da4
--- /dev/null
+++ b/node_modules/core-js/modules/es.iterator.to-array.js
@@ -0,0 +1,17 @@
+'use strict';
+var $ = require('../internals/export');
+var anObject = require('../internals/an-object');
+var iterate = require('../internals/iterate');
+var getIteratorDirect = require('../internals/get-iterator-direct');
+
+var push = [].push;
+
+// `Iterator.prototype.toArray` method
+// https://tc39.es/ecma262/#sec-iterator.prototype.toarray
+$({ target: 'Iterator', proto: true, real: true }, {
+  toArray: function toArray() {
+    var result = [];
+    iterate(getIteratorDirect(anObject(this)), push, { that: result, IS_RECORD: true });
+    return result;
+  }
+});
diff --git a/node_modules/core-js/modules/es.json.stringify.js b/node_modules/core-js/modules/es.json.stringify.js
new file mode 100644
index 0000000..3c62efc
--- /dev/null
+++ b/node_modules/core-js/modules/es.json.stringify.js
@@ -0,0 +1,73 @@
+'use strict';
+var $ = require('../internals/export');
+var getBuiltIn = require('../internals/get-built-in');
+var apply = require('../internals/function-apply');
+var call = require('../internals/function-call');
+var uncurryThis = require('../internals/function-uncurry-this');
+var fails = require('../internals/fails');
+var isCallable = require('../internals/is-callable');
+var isSymbol = require('../internals/is-symbol');
+var arraySlice = require('../internals/array-slice');
+var getReplacerFunction = require('../internals/get-json-replacer-function');
+var NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');
+
+var $String = String;
+var $stringify = getBuiltIn('JSON', 'stringify');
+var exec = uncurryThis(/./.exec);
+var charAt = uncurryThis(''.charAt);
+var charCodeAt = uncurryThis(''.charCodeAt);
+var replace = uncurryThis(''.replace);
+var numberToString = uncurryThis(1.0.toString);
+
+var tester = /[\uD800-\uDFFF]/g;
+var low = /^[\uD800-\uDBFF]$/;
+var hi = /^[\uDC00-\uDFFF]$/;
+
+var WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () {
+  var symbol = getBuiltIn('Symbol')('stringify detection');
+  // MS Edge converts symbol values to JSON as {}
+  return $stringify([symbol]) !== '[null]'
+    // WebKit converts symbol values to JSON as null
+    || $stringify({ a: symbol }) !== '{}'
+    // V8 throws on boxed symbols
+    || $stringify(Object(symbol)) !== '{}';
+});
+
+// https://github.com/tc39/proposal-well-formed-stringify
+var ILL_FORMED_UNICODE = fails(function () {
+  return $stringify('\uDF06\uD834') !== '"\\udf06\\ud834"'
+    || $stringify('\uDEAD') !== '"\\udead"';
+});
+
+var stringifyWithSymbolsFix = function (it, replacer) {
+  var args = arraySlice(arguments);
+  var $replacer = getReplacerFunction(replacer);
+  if (!isCallable($replacer) && (it === undefined || isSymbol(it))) return; // IE8 returns string on undefined
+  args[1] = function (key, value) {
+    // some old implementations (like WebKit) could pass numbers as keys
+    if (isCallable($replacer)) value = call($replacer, this, $String(key), value);
+    if (!isSymbol(value)) return value;
+  };
+  return apply($stringify, null, args);
+};
+
+var fixIllFormed = function (match, offset, string) {
+  var prev = charAt(string, offset - 1);
+  var next = charAt(string, offset + 1);
+  if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {
+    return '\\u' + numberToString(charCodeAt(match, 0), 16);
+  } return match;
+};
+
+if ($stringify) {
+  // `JSON.stringify` method
+  // https://tc39.es/ecma262/#sec-json.stringify
+  $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, {
+    // eslint-disable-next-line no-unused-vars -- required for `.length`
+    stringify: function stringify(it, replacer, space) {
+      var args = arraySlice(arguments);
+      var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args);
+      return ILL_FORMED_UNICODE && typeof result == 'string' ? replace(result, tester, fixIllFormed) : result;
+    }
+  });
+}
diff --git a/node_modules/core-js/modules/es.json.to-string-tag.js b/node_modules/core-js/modules/es.json.to-string-tag.js
new file mode 100644
index 0000000..b886b62
--- /dev/null
+++ b/node_modules/core-js/modules/es.json.to-string-tag.js
@@ -0,0 +1,7 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+var setToStringTag = require('../internals/set-to-string-tag');
+
+// JSON[@@toStringTag] property
+// https://tc39.es/ecma262/#sec-json-@@tostringtag
+setToStringTag(globalThis.JSON, 'JSON', true);
diff --git a/node_modules/core-js/modules/es.map.constructor.js b/node_modules/core-js/modules/es.map.constructor.js
new file mode 100644
index 0000000..c78dcf6
--- /dev/null
+++ b/node_modules/core-js/modules/es.map.constructor.js
@@ -0,0 +1,9 @@
+'use strict';
+var collection = require('../internals/collection');
+var collectionStrong = require('../internals/collection-strong');
+
+// `Map` constructor
+// https://tc39.es/ecma262/#sec-map-objects
+collection('Map', function (init) {
+  return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };
+}, collectionStrong);
diff --git a/node_modules/core-js/modules/es.map.group-by.js b/node_modules/core-js/modules/es.map.group-by.js
new file mode 100644
index 0000000..686e54e
--- /dev/null
+++ b/node_modules/core-js/modules/es.map.group-by.js
@@ -0,0 +1,38 @@
+'use strict';
+var $ = require('../internals/export');
+var uncurryThis = require('../internals/function-uncurry-this');
+var aCallable = require('../internals/a-callable');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+var iterate = require('../internals/iterate');
+var MapHelpers = require('../internals/map-helpers');
+var IS_PURE = require('../internals/is-pure');
+var fails = require('../internals/fails');
+
+var Map = MapHelpers.Map;
+var has = MapHelpers.has;
+var get = MapHelpers.get;
+var set = MapHelpers.set;
+var push = uncurryThis([].push);
+
+var DOES_NOT_WORK_WITH_PRIMITIVES = IS_PURE || fails(function () {
+  return Map.groupBy('ab', function (it) {
+    return it;
+  }).get('a').length !== 1;
+});
+
+// `Map.groupBy` method
+// https://tc39.es/ecma262/#sec-map.groupby
+$({ target: 'Map', stat: true, forced: IS_PURE || DOES_NOT_WORK_WITH_PRIMITIVES }, {
+  groupBy: function groupBy(items, callbackfn) {
+    requireObjectCoercible(items);
+    aCallable(callbackfn);
+    var map = new Map();
+    var k = 0;
+    iterate(items, function (value) {
+      var key = callbackfn(value, k++);
+      if (!has(map, key)) set(map, key, [value]);
+      else push(get(map, key), value);
+    });
+    return map;
+  }
+});
diff --git a/node_modules/core-js/modules/es.map.js b/node_modules/core-js/modules/es.map.js
new file mode 100644
index 0000000..abe2fe5
--- /dev/null
+++ b/node_modules/core-js/modules/es.map.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove this module from `core-js@4` since it's replaced to module below
+require('../modules/es.map.constructor');
diff --git a/node_modules/core-js/modules/es.math.acosh.js b/node_modules/core-js/modules/es.math.acosh.js
new file mode 100644
index 0000000..d49bb77
--- /dev/null
+++ b/node_modules/core-js/modules/es.math.acosh.js
@@ -0,0 +1,26 @@
+'use strict';
+var $ = require('../internals/export');
+var log1p = require('../internals/math-log1p');
+
+// eslint-disable-next-line es/no-math-acosh -- required for testing
+var $acosh = Math.acosh;
+var log = Math.log;
+var sqrt = Math.sqrt;
+var LN2 = Math.LN2;
+
+var FORCED = !$acosh
+  // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509
+  || Math.floor($acosh(Number.MAX_VALUE)) !== 710
+  // Tor Browser bug: Math.acosh(Infinity) -> NaN
+  || $acosh(Infinity) !== Infinity;
+
+// `Math.acosh` method
+// https://tc39.es/ecma262/#sec-math.acosh
+$({ target: 'Math', stat: true, forced: FORCED }, {
+  acosh: function acosh(x) {
+    var n = +x;
+    return n < 1 ? NaN : n > 94906265.62425156
+      ? log(n) + LN2
+      : log1p(n - 1 + sqrt(n - 1) * sqrt(n + 1));
+  }
+});
diff --git a/node_modules/core-js/modules/es.math.asinh.js b/node_modules/core-js/modules/es.math.asinh.js
new file mode 100644
index 0000000..0069392
--- /dev/null
+++ b/node_modules/core-js/modules/es.math.asinh.js
@@ -0,0 +1,21 @@
+'use strict';
+var $ = require('../internals/export');
+
+// eslint-disable-next-line es/no-math-asinh -- required for testing
+var $asinh = Math.asinh;
+var log = Math.log;
+var sqrt = Math.sqrt;
+
+function asinh(x) {
+  var n = +x;
+  return !isFinite(n) || n === 0 ? n : n < 0 ? -asinh(-n) : log(n + sqrt(n * n + 1));
+}
+
+var FORCED = !($asinh && 1 / $asinh(0) > 0);
+
+// `Math.asinh` method
+// https://tc39.es/ecma262/#sec-math.asinh
+// Tor Browser bug: Math.asinh(0) -> -0
+$({ target: 'Math', stat: true, forced: FORCED }, {
+  asinh: asinh
+});
diff --git a/node_modules/core-js/modules/es.math.atanh.js b/node_modules/core-js/modules/es.math.atanh.js
new file mode 100644
index 0000000..125a1b7
--- /dev/null
+++ b/node_modules/core-js/modules/es.math.atanh.js
@@ -0,0 +1,18 @@
+'use strict';
+var $ = require('../internals/export');
+
+// eslint-disable-next-line es/no-math-atanh -- required for testing
+var $atanh = Math.atanh;
+var log = Math.log;
+
+var FORCED = !($atanh && 1 / $atanh(-0) < 0);
+
+// `Math.atanh` method
+// https://tc39.es/ecma262/#sec-math.atanh
+// Tor Browser bug: Math.atanh(-0) -> 0
+$({ target: 'Math', stat: true, forced: FORCED }, {
+  atanh: function atanh(x) {
+    var n = +x;
+    return n === 0 ? n : log((1 + n) / (1 - n)) / 2;
+  }
+});
diff --git a/node_modules/core-js/modules/es.math.cbrt.js b/node_modules/core-js/modules/es.math.cbrt.js
new file mode 100644
index 0000000..1c634cf
--- /dev/null
+++ b/node_modules/core-js/modules/es.math.cbrt.js
@@ -0,0 +1,15 @@
+'use strict';
+var $ = require('../internals/export');
+var sign = require('../internals/math-sign');
+
+var abs = Math.abs;
+var pow = Math.pow;
+
+// `Math.cbrt` method
+// https://tc39.es/ecma262/#sec-math.cbrt
+$({ target: 'Math', stat: true }, {
+  cbrt: function cbrt(x) {
+    var n = +x;
+    return sign(n) * pow(abs(n), 1 / 3);
+  }
+});
diff --git a/node_modules/core-js/modules/es.math.clz32.js b/node_modules/core-js/modules/es.math.clz32.js
new file mode 100644
index 0000000..65f7ffc
--- /dev/null
+++ b/node_modules/core-js/modules/es.math.clz32.js
@@ -0,0 +1,15 @@
+'use strict';
+var $ = require('../internals/export');
+
+var floor = Math.floor;
+var log = Math.log;
+var LOG2E = Math.LOG2E;
+
+// `Math.clz32` method
+// https://tc39.es/ecma262/#sec-math.clz32
+$({ target: 'Math', stat: true }, {
+  clz32: function clz32(x) {
+    var n = x >>> 0;
+    return n ? 31 - floor(log(n + 0.5) * LOG2E) : 32;
+  }
+});
diff --git a/node_modules/core-js/modules/es.math.cosh.js b/node_modules/core-js/modules/es.math.cosh.js
new file mode 100644
index 0000000..6846ead
--- /dev/null
+++ b/node_modules/core-js/modules/es.math.cosh.js
@@ -0,0 +1,19 @@
+'use strict';
+var $ = require('../internals/export');
+var expm1 = require('../internals/math-expm1');
+
+// eslint-disable-next-line es/no-math-cosh -- required for testing
+var $cosh = Math.cosh;
+var abs = Math.abs;
+var E = Math.E;
+
+var FORCED = !$cosh || $cosh(710) === Infinity;
+
+// `Math.cosh` method
+// https://tc39.es/ecma262/#sec-math.cosh
+$({ target: 'Math', stat: true, forced: FORCED }, {
+  cosh: function cosh(x) {
+    var t = expm1(abs(x) - 1) + 1;
+    return (t + 1 / (t * E * E)) * (E / 2);
+  }
+});
diff --git a/node_modules/core-js/modules/es.math.expm1.js b/node_modules/core-js/modules/es.math.expm1.js
new file mode 100644
index 0000000..cc9f174
--- /dev/null
+++ b/node_modules/core-js/modules/es.math.expm1.js
@@ -0,0 +1,8 @@
+'use strict';
+var $ = require('../internals/export');
+var expm1 = require('../internals/math-expm1');
+
+// `Math.expm1` method
+// https://tc39.es/ecma262/#sec-math.expm1
+// eslint-disable-next-line es/no-math-expm1 -- required for testing
+$({ target: 'Math', stat: true, forced: expm1 !== Math.expm1 }, { expm1: expm1 });
diff --git a/node_modules/core-js/modules/es.math.f16round.js b/node_modules/core-js/modules/es.math.f16round.js
new file mode 100644
index 0000000..a0df19c
--- /dev/null
+++ b/node_modules/core-js/modules/es.math.f16round.js
@@ -0,0 +1,15 @@
+'use strict';
+var $ = require('../internals/export');
+var floatRound = require('../internals/math-float-round');
+
+var FLOAT16_EPSILON = 0.0009765625;
+var FLOAT16_MAX_VALUE = 65504;
+var FLOAT16_MIN_VALUE = 6.103515625e-05;
+
+// `Math.f16round` method
+// https://tc39.es/ecma262/#sec-math.f16round
+$({ target: 'Math', stat: true }, {
+  f16round: function f16round(x) {
+    return floatRound(x, FLOAT16_EPSILON, FLOAT16_MAX_VALUE, FLOAT16_MIN_VALUE);
+  }
+});
diff --git a/node_modules/core-js/modules/es.math.fround.js b/node_modules/core-js/modules/es.math.fround.js
new file mode 100644
index 0000000..dedce41
--- /dev/null
+++ b/node_modules/core-js/modules/es.math.fround.js
@@ -0,0 +1,7 @@
+'use strict';
+var $ = require('../internals/export');
+var fround = require('../internals/math-fround');
+
+// `Math.fround` method
+// https://tc39.es/ecma262/#sec-math.fround
+$({ target: 'Math', stat: true }, { fround: fround });
diff --git a/node_modules/core-js/modules/es.math.hypot.js b/node_modules/core-js/modules/es.math.hypot.js
new file mode 100644
index 0000000..0c15598
--- /dev/null
+++ b/node_modules/core-js/modules/es.math.hypot.js
@@ -0,0 +1,36 @@
+'use strict';
+var $ = require('../internals/export');
+
+// eslint-disable-next-line es/no-math-hypot -- required for testing
+var $hypot = Math.hypot;
+var abs = Math.abs;
+var sqrt = Math.sqrt;
+
+// Chrome 77 bug
+// https://bugs.chromium.org/p/v8/issues/detail?id=9546
+var FORCED = !!$hypot && $hypot(Infinity, NaN) !== Infinity;
+
+// `Math.hypot` method
+// https://tc39.es/ecma262/#sec-math.hypot
+$({ target: 'Math', stat: true, arity: 2, forced: FORCED }, {
+  // eslint-disable-next-line no-unused-vars -- required for `.length`
+  hypot: function hypot(value1, value2) {
+    var sum = 0;
+    var i = 0;
+    var aLen = arguments.length;
+    var larg = 0;
+    var arg, div;
+    while (i < aLen) {
+      arg = abs(arguments[i++]);
+      if (larg < arg) {
+        div = larg / arg;
+        sum = sum * div * div + 1;
+        larg = arg;
+      } else if (arg > 0) {
+        div = arg / larg;
+        sum += div * div;
+      } else sum += arg;
+    }
+    return larg === Infinity ? Infinity : larg * sqrt(sum);
+  }
+});
diff --git a/node_modules/core-js/modules/es.math.imul.js b/node_modules/core-js/modules/es.math.imul.js
new file mode 100644
index 0000000..23e73b6
--- /dev/null
+++ b/node_modules/core-js/modules/es.math.imul.js
@@ -0,0 +1,24 @@
+'use strict';
+var $ = require('../internals/export');
+var fails = require('../internals/fails');
+
+// eslint-disable-next-line es/no-math-imul -- required for testing
+var $imul = Math.imul;
+
+var FORCED = fails(function () {
+  return $imul(0xFFFFFFFF, 5) !== -5 || $imul.length !== 2;
+});
+
+// `Math.imul` method
+// https://tc39.es/ecma262/#sec-math.imul
+// some WebKit versions fails with big numbers, some has wrong arity
+$({ target: 'Math', stat: true, forced: FORCED }, {
+  imul: function imul(x, y) {
+    var UINT16 = 0xFFFF;
+    var xn = +x;
+    var yn = +y;
+    var xl = UINT16 & xn;
+    var yl = UINT16 & yn;
+    return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);
+  }
+});
diff --git a/node_modules/core-js/modules/es.math.log10.js b/node_modules/core-js/modules/es.math.log10.js
new file mode 100644
index 0000000..ebdcea3
--- /dev/null
+++ b/node_modules/core-js/modules/es.math.log10.js
@@ -0,0 +1,9 @@
+'use strict';
+var $ = require('../internals/export');
+var log10 = require('../internals/math-log10');
+
+// `Math.log10` method
+// https://tc39.es/ecma262/#sec-math.log10
+$({ target: 'Math', stat: true }, {
+  log10: log10
+});
diff --git a/node_modules/core-js/modules/es.math.log1p.js b/node_modules/core-js/modules/es.math.log1p.js
new file mode 100644
index 0000000..951bb34
--- /dev/null
+++ b/node_modules/core-js/modules/es.math.log1p.js
@@ -0,0 +1,7 @@
+'use strict';
+var $ = require('../internals/export');
+var log1p = require('../internals/math-log1p');
+
+// `Math.log1p` method
+// https://tc39.es/ecma262/#sec-math.log1p
+$({ target: 'Math', stat: true }, { log1p: log1p });
diff --git a/node_modules/core-js/modules/es.math.log2.js b/node_modules/core-js/modules/es.math.log2.js
new file mode 100644
index 0000000..8fb4733
--- /dev/null
+++ b/node_modules/core-js/modules/es.math.log2.js
@@ -0,0 +1,9 @@
+'use strict';
+var $ = require('../internals/export');
+var log2 = require('../internals/math-log2');
+
+// `Math.log2` method
+// https://tc39.es/ecma262/#sec-math.log2
+$({ target: 'Math', stat: true }, {
+  log2: log2
+});
diff --git a/node_modules/core-js/modules/es.math.sign.js b/node_modules/core-js/modules/es.math.sign.js
new file mode 100644
index 0000000..f28f17f
--- /dev/null
+++ b/node_modules/core-js/modules/es.math.sign.js
@@ -0,0 +1,9 @@
+'use strict';
+var $ = require('../internals/export');
+var sign = require('../internals/math-sign');
+
+// `Math.sign` method
+// https://tc39.es/ecma262/#sec-math.sign
+$({ target: 'Math', stat: true }, {
+  sign: sign
+});
diff --git a/node_modules/core-js/modules/es.math.sinh.js b/node_modules/core-js/modules/es.math.sinh.js
new file mode 100644
index 0000000..6e80ba0
--- /dev/null
+++ b/node_modules/core-js/modules/es.math.sinh.js
@@ -0,0 +1,23 @@
+'use strict';
+var $ = require('../internals/export');
+var fails = require('../internals/fails');
+var expm1 = require('../internals/math-expm1');
+
+var abs = Math.abs;
+var exp = Math.exp;
+var E = Math.E;
+
+var FORCED = fails(function () {
+  // eslint-disable-next-line es/no-math-sinh -- required for testing
+  return Math.sinh(-2e-17) !== -2e-17;
+});
+
+// `Math.sinh` method
+// https://tc39.es/ecma262/#sec-math.sinh
+// V8 near Chromium 38 has a problem with very small numbers
+$({ target: 'Math', stat: true, forced: FORCED }, {
+  sinh: function sinh(x) {
+    var n = +x;
+    return abs(n) < 1 ? (expm1(n) - expm1(-n)) / 2 : (exp(n - 1) - exp(-n - 1)) * (E / 2);
+  }
+});
diff --git a/node_modules/core-js/modules/es.math.tanh.js b/node_modules/core-js/modules/es.math.tanh.js
new file mode 100644
index 0000000..a93da24
--- /dev/null
+++ b/node_modules/core-js/modules/es.math.tanh.js
@@ -0,0 +1,16 @@
+'use strict';
+var $ = require('../internals/export');
+var expm1 = require('../internals/math-expm1');
+
+var exp = Math.exp;
+
+// `Math.tanh` method
+// https://tc39.es/ecma262/#sec-math.tanh
+$({ target: 'Math', stat: true }, {
+  tanh: function tanh(x) {
+    var n = +x;
+    var a = expm1(n);
+    var b = expm1(-n);
+    return a === Infinity ? 1 : b === Infinity ? -1 : (a - b) / (exp(n) + exp(-n));
+  }
+});
diff --git a/node_modules/core-js/modules/es.math.to-string-tag.js b/node_modules/core-js/modules/es.math.to-string-tag.js
new file mode 100644
index 0000000..183b9b8
--- /dev/null
+++ b/node_modules/core-js/modules/es.math.to-string-tag.js
@@ -0,0 +1,6 @@
+'use strict';
+var setToStringTag = require('../internals/set-to-string-tag');
+
+// Math[@@toStringTag] property
+// https://tc39.es/ecma262/#sec-math-@@tostringtag
+setToStringTag(Math, 'Math', true);
diff --git a/node_modules/core-js/modules/es.math.trunc.js b/node_modules/core-js/modules/es.math.trunc.js
new file mode 100644
index 0000000..68d9921
--- /dev/null
+++ b/node_modules/core-js/modules/es.math.trunc.js
@@ -0,0 +1,9 @@
+'use strict';
+var $ = require('../internals/export');
+var trunc = require('../internals/math-trunc');
+
+// `Math.trunc` method
+// https://tc39.es/ecma262/#sec-math.trunc
+$({ target: 'Math', stat: true }, {
+  trunc: trunc
+});
diff --git a/node_modules/core-js/modules/es.number.constructor.js b/node_modules/core-js/modules/es.number.constructor.js
new file mode 100644
index 0000000..a7e856c
--- /dev/null
+++ b/node_modules/core-js/modules/es.number.constructor.js
@@ -0,0 +1,115 @@
+'use strict';
+var $ = require('../internals/export');
+var IS_PURE = require('../internals/is-pure');
+var DESCRIPTORS = require('../internals/descriptors');
+var globalThis = require('../internals/global-this');
+var path = require('../internals/path');
+var uncurryThis = require('../internals/function-uncurry-this');
+var isForced = require('../internals/is-forced');
+var hasOwn = require('../internals/has-own-property');
+var inheritIfRequired = require('../internals/inherit-if-required');
+var isPrototypeOf = require('../internals/object-is-prototype-of');
+var isSymbol = require('../internals/is-symbol');
+var toPrimitive = require('../internals/to-primitive');
+var fails = require('../internals/fails');
+var getOwnPropertyNames = require('../internals/object-get-own-property-names').f;
+var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;
+var defineProperty = require('../internals/object-define-property').f;
+var thisNumberValue = require('../internals/this-number-value');
+var trim = require('../internals/string-trim').trim;
+
+var NUMBER = 'Number';
+var NativeNumber = globalThis[NUMBER];
+var PureNumberNamespace = path[NUMBER];
+var NumberPrototype = NativeNumber.prototype;
+var TypeError = globalThis.TypeError;
+var stringSlice = uncurryThis(''.slice);
+var charCodeAt = uncurryThis(''.charCodeAt);
+
+// `ToNumeric` abstract operation
+// https://tc39.es/ecma262/#sec-tonumeric
+var toNumeric = function (value) {
+  var primValue = toPrimitive(value, 'number');
+  return typeof primValue == 'bigint' ? primValue : toNumber(primValue);
+};
+
+// `ToNumber` abstract operation
+// https://tc39.es/ecma262/#sec-tonumber
+var toNumber = function (argument) {
+  var it = toPrimitive(argument, 'number');
+  var first, third, radix, maxCode, digits, length, index, code;
+  if (isSymbol(it)) throw new TypeError('Cannot convert a Symbol value to a number');
+  if (typeof it == 'string' && it.length > 2) {
+    it = trim(it);
+    first = charCodeAt(it, 0);
+    if (first === 43 || first === 45) {
+      third = charCodeAt(it, 2);
+      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix
+    } else if (first === 48) {
+      switch (charCodeAt(it, 1)) {
+        // fast equal of /^0b[01]+$/i
+        case 66:
+        case 98:
+          radix = 2;
+          maxCode = 49;
+          break;
+        // fast equal of /^0o[0-7]+$/i
+        case 79:
+        case 111:
+          radix = 8;
+          maxCode = 55;
+          break;
+        default:
+          return +it;
+      }
+      digits = stringSlice(it, 2);
+      length = digits.length;
+      for (index = 0; index < length; index++) {
+        code = charCodeAt(digits, index);
+        // parseInt parses a string to a first unavailable symbol
+        // but ToNumber should return NaN if a string contains unavailable symbols
+        if (code < 48 || code > maxCode) return NaN;
+      } return parseInt(digits, radix);
+    }
+  } return +it;
+};
+
+var FORCED = isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'));
+
+var calledWithNew = function (dummy) {
+  // includes check on 1..constructor(foo) case
+  return isPrototypeOf(NumberPrototype, dummy) && fails(function () { thisNumberValue(dummy); });
+};
+
+// `Number` constructor
+// https://tc39.es/ecma262/#sec-number-constructor
+var NumberWrapper = function Number(value) {
+  var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value));
+  return calledWithNew(this) ? inheritIfRequired(Object(n), this, NumberWrapper) : n;
+};
+
+NumberWrapper.prototype = NumberPrototype;
+if (FORCED && !IS_PURE) NumberPrototype.constructor = NumberWrapper;
+
+$({ global: true, constructor: true, wrap: true, forced: FORCED }, {
+  Number: NumberWrapper
+});
+
+// Use `internal/copy-constructor-properties` helper in `core-js@4`
+var copyConstructorProperties = function (target, source) {
+  for (var keys = DESCRIPTORS ? getOwnPropertyNames(source) : (
+    // ES3:
+    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +
+    // ES2015 (in case, if modules with ES2015 Number statics required before):
+    'EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,' +
+    // ESNext
+    'fromString,range'
+  ).split(','), j = 0, key; keys.length > j; j++) {
+    if (hasOwn(source, key = keys[j]) && !hasOwn(target, key)) {
+      defineProperty(target, key, getOwnPropertyDescriptor(source, key));
+    }
+  }
+};
+
+if (IS_PURE && PureNumberNamespace) copyConstructorProperties(path[NUMBER], PureNumberNamespace);
+if (FORCED || IS_PURE) copyConstructorProperties(path[NUMBER], NativeNumber);
diff --git a/node_modules/core-js/modules/es.number.epsilon.js b/node_modules/core-js/modules/es.number.epsilon.js
new file mode 100644
index 0000000..30aa42a
--- /dev/null
+++ b/node_modules/core-js/modules/es.number.epsilon.js
@@ -0,0 +1,8 @@
+'use strict';
+var $ = require('../internals/export');
+
+// `Number.EPSILON` constant
+// https://tc39.es/ecma262/#sec-number.epsilon
+$({ target: 'Number', stat: true, nonConfigurable: true, nonWritable: true }, {
+  EPSILON: Math.pow(2, -52)
+});
diff --git a/node_modules/core-js/modules/es.number.is-finite.js b/node_modules/core-js/modules/es.number.is-finite.js
new file mode 100644
index 0000000..61e10e7
--- /dev/null
+++ b/node_modules/core-js/modules/es.number.is-finite.js
@@ -0,0 +1,7 @@
+'use strict';
+var $ = require('../internals/export');
+var numberIsFinite = require('../internals/number-is-finite');
+
+// `Number.isFinite` method
+// https://tc39.es/ecma262/#sec-number.isfinite
+$({ target: 'Number', stat: true }, { isFinite: numberIsFinite });
diff --git a/node_modules/core-js/modules/es.number.is-integer.js b/node_modules/core-js/modules/es.number.is-integer.js
new file mode 100644
index 0000000..57620df
--- /dev/null
+++ b/node_modules/core-js/modules/es.number.is-integer.js
@@ -0,0 +1,9 @@
+'use strict';
+var $ = require('../internals/export');
+var isIntegralNumber = require('../internals/is-integral-number');
+
+// `Number.isInteger` method
+// https://tc39.es/ecma262/#sec-number.isinteger
+$({ target: 'Number', stat: true }, {
+  isInteger: isIntegralNumber
+});
diff --git a/node_modules/core-js/modules/es.number.is-nan.js b/node_modules/core-js/modules/es.number.is-nan.js
new file mode 100644
index 0000000..d12d708
--- /dev/null
+++ b/node_modules/core-js/modules/es.number.is-nan.js
@@ -0,0 +1,11 @@
+'use strict';
+var $ = require('../internals/export');
+
+// `Number.isNaN` method
+// https://tc39.es/ecma262/#sec-number.isnan
+$({ target: 'Number', stat: true }, {
+  isNaN: function isNaN(number) {
+    // eslint-disable-next-line no-self-compare -- NaN check
+    return number !== number;
+  }
+});
diff --git a/node_modules/core-js/modules/es.number.is-safe-integer.js b/node_modules/core-js/modules/es.number.is-safe-integer.js
new file mode 100644
index 0000000..5720637
--- /dev/null
+++ b/node_modules/core-js/modules/es.number.is-safe-integer.js
@@ -0,0 +1,13 @@
+'use strict';
+var $ = require('../internals/export');
+var isIntegralNumber = require('../internals/is-integral-number');
+
+var abs = Math.abs;
+
+// `Number.isSafeInteger` method
+// https://tc39.es/ecma262/#sec-number.issafeinteger
+$({ target: 'Number', stat: true }, {
+  isSafeInteger: function isSafeInteger(number) {
+    return isIntegralNumber(number) && abs(number) <= 0x1FFFFFFFFFFFFF;
+  }
+});
diff --git a/node_modules/core-js/modules/es.number.max-safe-integer.js b/node_modules/core-js/modules/es.number.max-safe-integer.js
new file mode 100644
index 0000000..44e1cbb
--- /dev/null
+++ b/node_modules/core-js/modules/es.number.max-safe-integer.js
@@ -0,0 +1,8 @@
+'use strict';
+var $ = require('../internals/export');
+
+// `Number.MAX_SAFE_INTEGER` constant
+// https://tc39.es/ecma262/#sec-number.max_safe_integer
+$({ target: 'Number', stat: true, nonConfigurable: true, nonWritable: true }, {
+  MAX_SAFE_INTEGER: 0x1FFFFFFFFFFFFF
+});
diff --git a/node_modules/core-js/modules/es.number.min-safe-integer.js b/node_modules/core-js/modules/es.number.min-safe-integer.js
new file mode 100644
index 0000000..1d6a871
--- /dev/null
+++ b/node_modules/core-js/modules/es.number.min-safe-integer.js
@@ -0,0 +1,8 @@
+'use strict';
+var $ = require('../internals/export');
+
+// `Number.MIN_SAFE_INTEGER` constant
+// https://tc39.es/ecma262/#sec-number.min_safe_integer
+$({ target: 'Number', stat: true, nonConfigurable: true, nonWritable: true }, {
+  MIN_SAFE_INTEGER: -0x1FFFFFFFFFFFFF
+});
diff --git a/node_modules/core-js/modules/es.number.parse-float.js b/node_modules/core-js/modules/es.number.parse-float.js
new file mode 100644
index 0000000..754bed7
--- /dev/null
+++ b/node_modules/core-js/modules/es.number.parse-float.js
@@ -0,0 +1,10 @@
+'use strict';
+var $ = require('../internals/export');
+var parseFloat = require('../internals/number-parse-float');
+
+// `Number.parseFloat` method
+// https://tc39.es/ecma262/#sec-number.parseFloat
+// eslint-disable-next-line es/no-number-parsefloat -- required for testing
+$({ target: 'Number', stat: true, forced: Number.parseFloat !== parseFloat }, {
+  parseFloat: parseFloat
+});
diff --git a/node_modules/core-js/modules/es.number.parse-int.js b/node_modules/core-js/modules/es.number.parse-int.js
new file mode 100644
index 0000000..9cd6813
--- /dev/null
+++ b/node_modules/core-js/modules/es.number.parse-int.js
@@ -0,0 +1,10 @@
+'use strict';
+var $ = require('../internals/export');
+var parseInt = require('../internals/number-parse-int');
+
+// `Number.parseInt` method
+// https://tc39.es/ecma262/#sec-number.parseint
+// eslint-disable-next-line es/no-number-parseint -- required for testing
+$({ target: 'Number', stat: true, forced: Number.parseInt !== parseInt }, {
+  parseInt: parseInt
+});
diff --git a/node_modules/core-js/modules/es.number.to-exponential.js b/node_modules/core-js/modules/es.number.to-exponential.js
new file mode 100644
index 0000000..ed06e0d
--- /dev/null
+++ b/node_modules/core-js/modules/es.number.to-exponential.js
@@ -0,0 +1,98 @@
+'use strict';
+var $ = require('../internals/export');
+var uncurryThis = require('../internals/function-uncurry-this');
+var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
+var thisNumberValue = require('../internals/this-number-value');
+var $repeat = require('../internals/string-repeat');
+var log10 = require('../internals/math-log10');
+var fails = require('../internals/fails');
+
+var $RangeError = RangeError;
+var $String = String;
+var $isFinite = isFinite;
+var abs = Math.abs;
+var floor = Math.floor;
+var pow = Math.pow;
+var round = Math.round;
+var nativeToExponential = uncurryThis(1.0.toExponential);
+var repeat = uncurryThis($repeat);
+var stringSlice = uncurryThis(''.slice);
+
+// Edge 17-
+var ROUNDS_PROPERLY = nativeToExponential(-6.9e-11, 4) === '-6.9000e-11'
+  // IE11- && Edge 14-
+  && nativeToExponential(1.255, 2) === '1.25e+0'
+  // FF86-, V8 ~ Chrome 49-50
+  && nativeToExponential(12345, 3) === '1.235e+4'
+  // FF86-, V8 ~ Chrome 49-50
+  && nativeToExponential(25, 0) === '3e+1';
+
+// IE8-
+var throwsOnInfinityFraction = function () {
+  return fails(function () {
+    nativeToExponential(1, Infinity);
+  }) && fails(function () {
+    nativeToExponential(1, -Infinity);
+  });
+};
+
+// Safari <11 && FF <50
+var properNonFiniteThisCheck = function () {
+  return !fails(function () {
+    nativeToExponential(Infinity, Infinity);
+    nativeToExponential(NaN, Infinity);
+  });
+};
+
+var FORCED = !ROUNDS_PROPERLY || !throwsOnInfinityFraction() || !properNonFiniteThisCheck();
+
+// `Number.prototype.toExponential` method
+// https://tc39.es/ecma262/#sec-number.prototype.toexponential
+$({ target: 'Number', proto: true, forced: FORCED }, {
+  toExponential: function toExponential(fractionDigits) {
+    var x = thisNumberValue(this);
+    if (fractionDigits === undefined) return nativeToExponential(x);
+    var f = toIntegerOrInfinity(fractionDigits);
+    if (!$isFinite(x)) return String(x);
+    // TODO: ES2018 increased the maximum number of fraction digits to 100, need to improve the implementation
+    if (f < 0 || f > 20) throw new $RangeError('Incorrect fraction digits');
+    if (ROUNDS_PROPERLY) return nativeToExponential(x, f);
+    var s = '';
+    var m, e, c, d;
+    if (x < 0) {
+      s = '-';
+      x = -x;
+    }
+    if (x === 0) {
+      e = 0;
+      m = repeat('0', f + 1);
+    } else {
+      // this block is based on https://gist.github.com/SheetJSDev/1100ad56b9f856c95299ed0e068eea08
+      // TODO: improve accuracy with big fraction digits
+      var l = log10(x);
+      e = floor(l);
+      var w = pow(10, e - f);
+      var n = round(x / w);
+      if (2 * x >= (2 * n + 1) * w) {
+        n += 1;
+      }
+      if (n >= pow(10, f + 1)) {
+        n /= 10;
+        e += 1;
+      }
+      m = $String(n);
+    }
+    if (f !== 0) {
+      m = stringSlice(m, 0, 1) + '.' + stringSlice(m, 1);
+    }
+    if (e === 0) {
+      c = '+';
+      d = '0';
+    } else {
+      c = e > 0 ? '+' : '-';
+      d = $String(abs(e));
+    }
+    m += 'e' + c + d;
+    return s + m;
+  }
+});
diff --git a/node_modules/core-js/modules/es.number.to-fixed.js b/node_modules/core-js/modules/es.number.to-fixed.js
new file mode 100644
index 0000000..2ac36b0
--- /dev/null
+++ b/node_modules/core-js/modules/es.number.to-fixed.js
@@ -0,0 +1,131 @@
+'use strict';
+var $ = require('../internals/export');
+var uncurryThis = require('../internals/function-uncurry-this');
+var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
+var thisNumberValue = require('../internals/this-number-value');
+var $repeat = require('../internals/string-repeat');
+var fails = require('../internals/fails');
+
+var $RangeError = RangeError;
+var $String = String;
+var floor = Math.floor;
+var repeat = uncurryThis($repeat);
+var stringSlice = uncurryThis(''.slice);
+var nativeToFixed = uncurryThis(1.0.toFixed);
+
+var pow = function (x, n, acc) {
+  return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);
+};
+
+var log = function (x) {
+  var n = 0;
+  var x2 = x;
+  while (x2 >= 4096) {
+    n += 12;
+    x2 /= 4096;
+  }
+  while (x2 >= 2) {
+    n += 1;
+    x2 /= 2;
+  } return n;
+};
+
+var multiply = function (data, n, c) {
+  var index = -1;
+  var c2 = c;
+  while (++index < 6) {
+    c2 += n * data[index];
+    data[index] = c2 % 1e7;
+    c2 = floor(c2 / 1e7);
+  }
+};
+
+var divide = function (data, n) {
+  var index = 6;
+  var c = 0;
+  while (--index >= 0) {
+    c += data[index];
+    data[index] = floor(c / n);
+    c = (c % n) * 1e7;
+  }
+};
+
+var dataToString = function (data) {
+  var index = 6;
+  var s = '';
+  while (--index >= 0) {
+    if (s !== '' || index === 0 || data[index] !== 0) {
+      var t = $String(data[index]);
+      s = s === '' ? t : s + repeat('0', 7 - t.length) + t;
+    }
+  } return s;
+};
+
+var FORCED = fails(function () {
+  return nativeToFixed(0.00008, 3) !== '0.000' ||
+    nativeToFixed(0.9, 0) !== '1' ||
+    nativeToFixed(1.255, 2) !== '1.25' ||
+    nativeToFixed(1000000000000000128.0, 0) !== '1000000000000000128';
+}) || !fails(function () {
+  // V8 ~ Android 4.3-
+  nativeToFixed({});
+});
+
+// `Number.prototype.toFixed` method
+// https://tc39.es/ecma262/#sec-number.prototype.tofixed
+$({ target: 'Number', proto: true, forced: FORCED }, {
+  toFixed: function toFixed(fractionDigits) {
+    var number = thisNumberValue(this);
+    var fractDigits = toIntegerOrInfinity(fractionDigits);
+    var data = [0, 0, 0, 0, 0, 0];
+    var sign = '';
+    var result = '0';
+    var e, z, j, k;
+
+    // TODO: ES2018 increased the maximum number of fraction digits to 100, need to improve the implementation
+    if (fractDigits < 0 || fractDigits > 20) throw new $RangeError('Incorrect fraction digits');
+    // eslint-disable-next-line no-self-compare -- NaN check
+    if (number !== number) return 'NaN';
+    if (number <= -1e21 || number >= 1e21) return $String(number);
+    if (number < 0) {
+      sign = '-';
+      number = -number;
+    }
+    if (number > 1e-21) {
+      e = log(number * pow(2, 69, 1)) - 69;
+      z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);
+      z *= 0x10000000000000;
+      e = 52 - e;
+      if (e > 0) {
+        multiply(data, 0, z);
+        j = fractDigits;
+        while (j >= 7) {
+          multiply(data, 1e7, 0);
+          j -= 7;
+        }
+        multiply(data, pow(10, j, 1), 0);
+        j = e - 1;
+        while (j >= 23) {
+          divide(data, 1 << 23);
+          j -= 23;
+        }
+        divide(data, 1 << j);
+        multiply(data, 1, 1);
+        divide(data, 2);
+        result = dataToString(data);
+      } else {
+        multiply(data, 0, z);
+        multiply(data, 1 << -e, 0);
+        result = dataToString(data) + repeat('0', fractDigits);
+      }
+    }
+    if (fractDigits > 0) {
+      k = result.length;
+      result = sign + (k <= fractDigits
+        ? '0.' + repeat('0', fractDigits - k) + result
+        : stringSlice(result, 0, k - fractDigits) + '.' + stringSlice(result, k - fractDigits));
+    } else {
+      result = sign + result;
+    } return result;
+  }
+});
diff --git a/node_modules/core-js/modules/es.number.to-precision.js b/node_modules/core-js/modules/es.number.to-precision.js
new file mode 100644
index 0000000..9e49e53
--- /dev/null
+++ b/node_modules/core-js/modules/es.number.to-precision.js
@@ -0,0 +1,25 @@
+'use strict';
+var $ = require('../internals/export');
+var uncurryThis = require('../internals/function-uncurry-this');
+var fails = require('../internals/fails');
+var thisNumberValue = require('../internals/this-number-value');
+
+var nativeToPrecision = uncurryThis(1.0.toPrecision);
+
+var FORCED = fails(function () {
+  // IE7-
+  return nativeToPrecision(1, undefined) !== '1';
+}) || !fails(function () {
+  // V8 ~ Android 4.3-
+  nativeToPrecision({});
+});
+
+// `Number.prototype.toPrecision` method
+// https://tc39.es/ecma262/#sec-number.prototype.toprecision
+$({ target: 'Number', proto: true, forced: FORCED }, {
+  toPrecision: function toPrecision(precision) {
+    return precision === undefined
+      ? nativeToPrecision(thisNumberValue(this))
+      : nativeToPrecision(thisNumberValue(this), precision);
+  }
+});
diff --git a/node_modules/core-js/modules/es.object.assign.js b/node_modules/core-js/modules/es.object.assign.js
new file mode 100644
index 0000000..88b1072
--- /dev/null
+++ b/node_modules/core-js/modules/es.object.assign.js
@@ -0,0 +1,10 @@
+'use strict';
+var $ = require('../internals/export');
+var assign = require('../internals/object-assign');
+
+// `Object.assign` method
+// https://tc39.es/ecma262/#sec-object.assign
+// eslint-disable-next-line es/no-object-assign -- required for testing
+$({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, {
+  assign: assign
+});
diff --git a/node_modules/core-js/modules/es.object.create.js b/node_modules/core-js/modules/es.object.create.js
new file mode 100644
index 0000000..5522f62
--- /dev/null
+++ b/node_modules/core-js/modules/es.object.create.js
@@ -0,0 +1,11 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+var $ = require('../internals/export');
+var DESCRIPTORS = require('../internals/descriptors');
+var create = require('../internals/object-create');
+
+// `Object.create` method
+// https://tc39.es/ecma262/#sec-object.create
+$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {
+  create: create
+});
diff --git a/node_modules/core-js/modules/es.object.define-getter.js b/node_modules/core-js/modules/es.object.define-getter.js
new file mode 100644
index 0000000..50fd442
--- /dev/null
+++ b/node_modules/core-js/modules/es.object.define-getter.js
@@ -0,0 +1,17 @@
+'use strict';
+var $ = require('../internals/export');
+var DESCRIPTORS = require('../internals/descriptors');
+var FORCED = require('../internals/object-prototype-accessors-forced');
+var aCallable = require('../internals/a-callable');
+var toObject = require('../internals/to-object');
+var definePropertyModule = require('../internals/object-define-property');
+
+// `Object.prototype.__defineGetter__` method
+// https://tc39.es/ecma262/#sec-object.prototype.__defineGetter__
+if (DESCRIPTORS) {
+  $({ target: 'Object', proto: true, forced: FORCED }, {
+    __defineGetter__: function __defineGetter__(P, getter) {
+      definePropertyModule.f(toObject(this), P, { get: aCallable(getter), enumerable: true, configurable: true });
+    }
+  });
+}
diff --git a/node_modules/core-js/modules/es.object.define-properties.js b/node_modules/core-js/modules/es.object.define-properties.js
new file mode 100644
index 0000000..b19cc60
--- /dev/null
+++ b/node_modules/core-js/modules/es.object.define-properties.js
@@ -0,0 +1,11 @@
+'use strict';
+var $ = require('../internals/export');
+var DESCRIPTORS = require('../internals/descriptors');
+var defineProperties = require('../internals/object-define-properties').f;
+
+// `Object.defineProperties` method
+// https://tc39.es/ecma262/#sec-object.defineproperties
+// eslint-disable-next-line es/no-object-defineproperties -- safe
+$({ target: 'Object', stat: true, forced: Object.defineProperties !== defineProperties, sham: !DESCRIPTORS }, {
+  defineProperties: defineProperties
+});
diff --git a/node_modules/core-js/modules/es.object.define-property.js b/node_modules/core-js/modules/es.object.define-property.js
new file mode 100644
index 0000000..691c9c4
--- /dev/null
+++ b/node_modules/core-js/modules/es.object.define-property.js
@@ -0,0 +1,11 @@
+'use strict';
+var $ = require('../internals/export');
+var DESCRIPTORS = require('../internals/descriptors');
+var defineProperty = require('../internals/object-define-property').f;
+
+// `Object.defineProperty` method
+// https://tc39.es/ecma262/#sec-object.defineproperty
+// eslint-disable-next-line es/no-object-defineproperty -- safe
+$({ target: 'Object', stat: true, forced: Object.defineProperty !== defineProperty, sham: !DESCRIPTORS }, {
+  defineProperty: defineProperty
+});
diff --git a/node_modules/core-js/modules/es.object.define-setter.js b/node_modules/core-js/modules/es.object.define-setter.js
new file mode 100644
index 0000000..186976f
--- /dev/null
+++ b/node_modules/core-js/modules/es.object.define-setter.js
@@ -0,0 +1,17 @@
+'use strict';
+var $ = require('../internals/export');
+var DESCRIPTORS = require('../internals/descriptors');
+var FORCED = require('../internals/object-prototype-accessors-forced');
+var aCallable = require('../internals/a-callable');
+var toObject = require('../internals/to-object');
+var definePropertyModule = require('../internals/object-define-property');
+
+// `Object.prototype.__defineSetter__` method
+// https://tc39.es/ecma262/#sec-object.prototype.__defineSetter__
+if (DESCRIPTORS) {
+  $({ target: 'Object', proto: true, forced: FORCED }, {
+    __defineSetter__: function __defineSetter__(P, setter) {
+      definePropertyModule.f(toObject(this), P, { set: aCallable(setter), enumerable: true, configurable: true });
+    }
+  });
+}
diff --git a/node_modules/core-js/modules/es.object.entries.js b/node_modules/core-js/modules/es.object.entries.js
new file mode 100644
index 0000000..41b6ad2
--- /dev/null
+++ b/node_modules/core-js/modules/es.object.entries.js
@@ -0,0 +1,11 @@
+'use strict';
+var $ = require('../internals/export');
+var $entries = require('../internals/object-to-array').entries;
+
+// `Object.entries` method
+// https://tc39.es/ecma262/#sec-object.entries
+$({ target: 'Object', stat: true }, {
+  entries: function entries(O) {
+    return $entries(O);
+  }
+});
diff --git a/node_modules/core-js/modules/es.object.freeze.js b/node_modules/core-js/modules/es.object.freeze.js
new file mode 100644
index 0000000..bd48bc7
--- /dev/null
+++ b/node_modules/core-js/modules/es.object.freeze.js
@@ -0,0 +1,18 @@
+'use strict';
+var $ = require('../internals/export');
+var FREEZING = require('../internals/freezing');
+var fails = require('../internals/fails');
+var isObject = require('../internals/is-object');
+var onFreeze = require('../internals/internal-metadata').onFreeze;
+
+// eslint-disable-next-line es/no-object-freeze -- safe
+var $freeze = Object.freeze;
+var FAILS_ON_PRIMITIVES = fails(function () { $freeze(1); });
+
+// `Object.freeze` method
+// https://tc39.es/ecma262/#sec-object.freeze
+$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {
+  freeze: function freeze(it) {
+    return $freeze && isObject(it) ? $freeze(onFreeze(it)) : it;
+  }
+});
diff --git a/node_modules/core-js/modules/es.object.from-entries.js b/node_modules/core-js/modules/es.object.from-entries.js
new file mode 100644
index 0000000..fbfa32f
--- /dev/null
+++ b/node_modules/core-js/modules/es.object.from-entries.js
@@ -0,0 +1,16 @@
+'use strict';
+var $ = require('../internals/export');
+var iterate = require('../internals/iterate');
+var createProperty = require('../internals/create-property');
+
+// `Object.fromEntries` method
+// https://tc39.es/ecma262/#sec-object.fromentries
+$({ target: 'Object', stat: true }, {
+  fromEntries: function fromEntries(iterable) {
+    var obj = {};
+    iterate(iterable, function (k, v) {
+      createProperty(obj, k, v);
+    }, { AS_ENTRIES: true });
+    return obj;
+  }
+});
diff --git a/node_modules/core-js/modules/es.object.get-own-property-descriptor.js b/node_modules/core-js/modules/es.object.get-own-property-descriptor.js
new file mode 100644
index 0000000..44606a4
--- /dev/null
+++ b/node_modules/core-js/modules/es.object.get-own-property-descriptor.js
@@ -0,0 +1,16 @@
+'use strict';
+var $ = require('../internals/export');
+var fails = require('../internals/fails');
+var toIndexedObject = require('../internals/to-indexed-object');
+var nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;
+var DESCRIPTORS = require('../internals/descriptors');
+
+var FORCED = !DESCRIPTORS || fails(function () { nativeGetOwnPropertyDescriptor(1); });
+
+// `Object.getOwnPropertyDescriptor` method
+// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor
+$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {
+  getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {
+    return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);
+  }
+});
diff --git a/node_modules/core-js/modules/es.object.get-own-property-descriptors.js b/node_modules/core-js/modules/es.object.get-own-property-descriptors.js
new file mode 100644
index 0000000..7c1a22c
--- /dev/null
+++ b/node_modules/core-js/modules/es.object.get-own-property-descriptors.js
@@ -0,0 +1,25 @@
+'use strict';
+var $ = require('../internals/export');
+var DESCRIPTORS = require('../internals/descriptors');
+var ownKeys = require('../internals/own-keys');
+var toIndexedObject = require('../internals/to-indexed-object');
+var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');
+var createProperty = require('../internals/create-property');
+
+// `Object.getOwnPropertyDescriptors` method
+// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors
+$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {
+  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {
+    var O = toIndexedObject(object);
+    var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
+    var keys = ownKeys(O);
+    var result = {};
+    var index = 0;
+    var key, descriptor;
+    while (keys.length > index) {
+      descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);
+      if (descriptor !== undefined) createProperty(result, key, descriptor);
+    }
+    return result;
+  }
+});
diff --git a/node_modules/core-js/modules/es.object.get-own-property-names.js b/node_modules/core-js/modules/es.object.get-own-property-names.js
new file mode 100644
index 0000000..c076a51
--- /dev/null
+++ b/node_modules/core-js/modules/es.object.get-own-property-names.js
@@ -0,0 +1,13 @@
+'use strict';
+var $ = require('../internals/export');
+var fails = require('../internals/fails');
+var getOwnPropertyNames = require('../internals/object-get-own-property-names-external').f;
+
+// eslint-disable-next-line es/no-object-getownpropertynames -- required for testing
+var FAILS_ON_PRIMITIVES = fails(function () { return !Object.getOwnPropertyNames(1); });
+
+// `Object.getOwnPropertyNames` method
+// https://tc39.es/ecma262/#sec-object.getownpropertynames
+$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {
+  getOwnPropertyNames: getOwnPropertyNames
+});
diff --git a/node_modules/core-js/modules/es.object.get-own-property-symbols.js b/node_modules/core-js/modules/es.object.get-own-property-symbols.js
new file mode 100644
index 0000000..62ebd30
--- /dev/null
+++ b/node_modules/core-js/modules/es.object.get-own-property-symbols.js
@@ -0,0 +1,19 @@
+'use strict';
+var $ = require('../internals/export');
+var NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');
+var fails = require('../internals/fails');
+var getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');
+var toObject = require('../internals/to-object');
+
+// V8 ~ Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives
+// https://bugs.chromium.org/p/v8/issues/detail?id=3443
+var FORCED = !NATIVE_SYMBOL || fails(function () { getOwnPropertySymbolsModule.f(1); });
+
+// `Object.getOwnPropertySymbols` method
+// https://tc39.es/ecma262/#sec-object.getownpropertysymbols
+$({ target: 'Object', stat: true, forced: FORCED }, {
+  getOwnPropertySymbols: function getOwnPropertySymbols(it) {
+    var $getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
+    return $getOwnPropertySymbols ? $getOwnPropertySymbols(toObject(it)) : [];
+  }
+});
diff --git a/node_modules/core-js/modules/es.object.get-prototype-of.js b/node_modules/core-js/modules/es.object.get-prototype-of.js
new file mode 100644
index 0000000..e8b5316
--- /dev/null
+++ b/node_modules/core-js/modules/es.object.get-prototype-of.js
@@ -0,0 +1,17 @@
+'use strict';
+var $ = require('../internals/export');
+var fails = require('../internals/fails');
+var toObject = require('../internals/to-object');
+var nativeGetPrototypeOf = require('../internals/object-get-prototype-of');
+var CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');
+
+var FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });
+
+// `Object.getPrototypeOf` method
+// https://tc39.es/ecma262/#sec-object.getprototypeof
+$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {
+  getPrototypeOf: function getPrototypeOf(it) {
+    return nativeGetPrototypeOf(toObject(it));
+  }
+});
+
diff --git a/node_modules/core-js/modules/es.object.group-by.js b/node_modules/core-js/modules/es.object.group-by.js
new file mode 100644
index 0000000..590f567
--- /dev/null
+++ b/node_modules/core-js/modules/es.object.group-by.js
@@ -0,0 +1,39 @@
+'use strict';
+var $ = require('../internals/export');
+var getBuiltIn = require('../internals/get-built-in');
+var uncurryThis = require('../internals/function-uncurry-this');
+var aCallable = require('../internals/a-callable');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+var toPropertyKey = require('../internals/to-property-key');
+var iterate = require('../internals/iterate');
+var fails = require('../internals/fails');
+
+// eslint-disable-next-line es/no-object-groupby -- testing
+var nativeGroupBy = Object.groupBy;
+var create = getBuiltIn('Object', 'create');
+var push = uncurryThis([].push);
+
+var DOES_NOT_WORK_WITH_PRIMITIVES = !nativeGroupBy || fails(function () {
+  return nativeGroupBy('ab', function (it) {
+    return it;
+  }).a.length !== 1;
+});
+
+// `Object.groupBy` method
+// https://tc39.es/ecma262/#sec-object.groupby
+$({ target: 'Object', stat: true, forced: DOES_NOT_WORK_WITH_PRIMITIVES }, {
+  groupBy: function groupBy(items, callbackfn) {
+    requireObjectCoercible(items);
+    aCallable(callbackfn);
+    var obj = create(null);
+    var k = 0;
+    iterate(items, function (value) {
+      var key = toPropertyKey(callbackfn(value, k++));
+      // in some IE versions, `hasOwnProperty` returns incorrect result on integer keys
+      // but since it's a `null` prototype object, we can safely use `in`
+      if (key in obj) push(obj[key], value);
+      else obj[key] = [value];
+    });
+    return obj;
+  }
+});
diff --git a/node_modules/core-js/modules/es.object.has-own.js b/node_modules/core-js/modules/es.object.has-own.js
new file mode 100644
index 0000000..0723a80
--- /dev/null
+++ b/node_modules/core-js/modules/es.object.has-own.js
@@ -0,0 +1,9 @@
+'use strict';
+var $ = require('../internals/export');
+var hasOwn = require('../internals/has-own-property');
+
+// `Object.hasOwn` method
+// https://tc39.es/ecma262/#sec-object.hasown
+$({ target: 'Object', stat: true }, {
+  hasOwn: hasOwn
+});
diff --git a/node_modules/core-js/modules/es.object.is-extensible.js b/node_modules/core-js/modules/es.object.is-extensible.js
new file mode 100644
index 0000000..4b05a29
--- /dev/null
+++ b/node_modules/core-js/modules/es.object.is-extensible.js
@@ -0,0 +1,10 @@
+'use strict';
+var $ = require('../internals/export');
+var $isExtensible = require('../internals/object-is-extensible');
+
+// `Object.isExtensible` method
+// https://tc39.es/ecma262/#sec-object.isextensible
+// eslint-disable-next-line es/no-object-isextensible -- safe
+$({ target: 'Object', stat: true, forced: Object.isExtensible !== $isExtensible }, {
+  isExtensible: $isExtensible
+});
diff --git a/node_modules/core-js/modules/es.object.is-frozen.js b/node_modules/core-js/modules/es.object.is-frozen.js
new file mode 100644
index 0000000..4cd6ddb
--- /dev/null
+++ b/node_modules/core-js/modules/es.object.is-frozen.js
@@ -0,0 +1,21 @@
+'use strict';
+var $ = require('../internals/export');
+var fails = require('../internals/fails');
+var isObject = require('../internals/is-object');
+var classof = require('../internals/classof-raw');
+var ARRAY_BUFFER_NON_EXTENSIBLE = require('../internals/array-buffer-non-extensible');
+
+// eslint-disable-next-line es/no-object-isfrozen -- safe
+var $isFrozen = Object.isFrozen;
+
+var FORCED = ARRAY_BUFFER_NON_EXTENSIBLE || fails(function () { $isFrozen(1); });
+
+// `Object.isFrozen` method
+// https://tc39.es/ecma262/#sec-object.isfrozen
+$({ target: 'Object', stat: true, forced: FORCED }, {
+  isFrozen: function isFrozen(it) {
+    if (!isObject(it)) return true;
+    if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) === 'ArrayBuffer') return true;
+    return $isFrozen ? $isFrozen(it) : false;
+  }
+});
diff --git a/node_modules/core-js/modules/es.object.is-sealed.js b/node_modules/core-js/modules/es.object.is-sealed.js
new file mode 100644
index 0000000..cf3a787
--- /dev/null
+++ b/node_modules/core-js/modules/es.object.is-sealed.js
@@ -0,0 +1,21 @@
+'use strict';
+var $ = require('../internals/export');
+var fails = require('../internals/fails');
+var isObject = require('../internals/is-object');
+var classof = require('../internals/classof-raw');
+var ARRAY_BUFFER_NON_EXTENSIBLE = require('../internals/array-buffer-non-extensible');
+
+// eslint-disable-next-line es/no-object-issealed -- safe
+var $isSealed = Object.isSealed;
+
+var FORCED = ARRAY_BUFFER_NON_EXTENSIBLE || fails(function () { $isSealed(1); });
+
+// `Object.isSealed` method
+// https://tc39.es/ecma262/#sec-object.issealed
+$({ target: 'Object', stat: true, forced: FORCED }, {
+  isSealed: function isSealed(it) {
+    if (!isObject(it)) return true;
+    if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) === 'ArrayBuffer') return true;
+    return $isSealed ? $isSealed(it) : false;
+  }
+});
diff --git a/node_modules/core-js/modules/es.object.is.js b/node_modules/core-js/modules/es.object.is.js
new file mode 100644
index 0000000..7478e2d
--- /dev/null
+++ b/node_modules/core-js/modules/es.object.is.js
@@ -0,0 +1,9 @@
+'use strict';
+var $ = require('../internals/export');
+var is = require('../internals/same-value');
+
+// `Object.is` method
+// https://tc39.es/ecma262/#sec-object.is
+$({ target: 'Object', stat: true }, {
+  is: is
+});
diff --git a/node_modules/core-js/modules/es.object.keys.js b/node_modules/core-js/modules/es.object.keys.js
new file mode 100644
index 0000000..92356b7
--- /dev/null
+++ b/node_modules/core-js/modules/es.object.keys.js
@@ -0,0 +1,15 @@
+'use strict';
+var $ = require('../internals/export');
+var toObject = require('../internals/to-object');
+var nativeKeys = require('../internals/object-keys');
+var fails = require('../internals/fails');
+
+var FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });
+
+// `Object.keys` method
+// https://tc39.es/ecma262/#sec-object.keys
+$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {
+  keys: function keys(it) {
+    return nativeKeys(toObject(it));
+  }
+});
diff --git a/node_modules/core-js/modules/es.object.lookup-getter.js b/node_modules/core-js/modules/es.object.lookup-getter.js
new file mode 100644
index 0000000..d7f59fe
--- /dev/null
+++ b/node_modules/core-js/modules/es.object.lookup-getter.js
@@ -0,0 +1,23 @@
+'use strict';
+var $ = require('../internals/export');
+var DESCRIPTORS = require('../internals/descriptors');
+var FORCED = require('../internals/object-prototype-accessors-forced');
+var toObject = require('../internals/to-object');
+var toPropertyKey = require('../internals/to-property-key');
+var getPrototypeOf = require('../internals/object-get-prototype-of');
+var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;
+
+// `Object.prototype.__lookupGetter__` method
+// https://tc39.es/ecma262/#sec-object.prototype.__lookupGetter__
+if (DESCRIPTORS) {
+  $({ target: 'Object', proto: true, forced: FORCED }, {
+    __lookupGetter__: function __lookupGetter__(P) {
+      var O = toObject(this);
+      var key = toPropertyKey(P);
+      var desc;
+      do {
+        if (desc = getOwnPropertyDescriptor(O, key)) return desc.get;
+      } while (O = getPrototypeOf(O));
+    }
+  });
+}
diff --git a/node_modules/core-js/modules/es.object.lookup-setter.js b/node_modules/core-js/modules/es.object.lookup-setter.js
new file mode 100644
index 0000000..7739713
--- /dev/null
+++ b/node_modules/core-js/modules/es.object.lookup-setter.js
@@ -0,0 +1,23 @@
+'use strict';
+var $ = require('../internals/export');
+var DESCRIPTORS = require('../internals/descriptors');
+var FORCED = require('../internals/object-prototype-accessors-forced');
+var toObject = require('../internals/to-object');
+var toPropertyKey = require('../internals/to-property-key');
+var getPrototypeOf = require('../internals/object-get-prototype-of');
+var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;
+
+// `Object.prototype.__lookupSetter__` method
+// https://tc39.es/ecma262/#sec-object.prototype.__lookupSetter__
+if (DESCRIPTORS) {
+  $({ target: 'Object', proto: true, forced: FORCED }, {
+    __lookupSetter__: function __lookupSetter__(P) {
+      var O = toObject(this);
+      var key = toPropertyKey(P);
+      var desc;
+      do {
+        if (desc = getOwnPropertyDescriptor(O, key)) return desc.set;
+      } while (O = getPrototypeOf(O));
+    }
+  });
+}
diff --git a/node_modules/core-js/modules/es.object.prevent-extensions.js b/node_modules/core-js/modules/es.object.prevent-extensions.js
new file mode 100644
index 0000000..0f826f8
--- /dev/null
+++ b/node_modules/core-js/modules/es.object.prevent-extensions.js
@@ -0,0 +1,18 @@
+'use strict';
+var $ = require('../internals/export');
+var isObject = require('../internals/is-object');
+var onFreeze = require('../internals/internal-metadata').onFreeze;
+var FREEZING = require('../internals/freezing');
+var fails = require('../internals/fails');
+
+// eslint-disable-next-line es/no-object-preventextensions -- safe
+var $preventExtensions = Object.preventExtensions;
+var FAILS_ON_PRIMITIVES = fails(function () { $preventExtensions(1); });
+
+// `Object.preventExtensions` method
+// https://tc39.es/ecma262/#sec-object.preventextensions
+$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {
+  preventExtensions: function preventExtensions(it) {
+    return $preventExtensions && isObject(it) ? $preventExtensions(onFreeze(it)) : it;
+  }
+});
diff --git a/node_modules/core-js/modules/es.object.proto.js b/node_modules/core-js/modules/es.object.proto.js
new file mode 100644
index 0000000..9954885
--- /dev/null
+++ b/node_modules/core-js/modules/es.object.proto.js
@@ -0,0 +1,31 @@
+'use strict';
+var DESCRIPTORS = require('../internals/descriptors');
+var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
+var isObject = require('../internals/is-object');
+var isPossiblePrototype = require('../internals/is-possible-prototype');
+var toObject = require('../internals/to-object');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+
+// eslint-disable-next-line es/no-object-getprototypeof -- safe
+var getPrototypeOf = Object.getPrototypeOf;
+// eslint-disable-next-line es/no-object-setprototypeof -- safe
+var setPrototypeOf = Object.setPrototypeOf;
+var ObjectPrototype = Object.prototype;
+var PROTO = '__proto__';
+
+// `Object.prototype.__proto__` accessor
+// https://tc39.es/ecma262/#sec-object.prototype.__proto__
+if (DESCRIPTORS && getPrototypeOf && setPrototypeOf && !(PROTO in ObjectPrototype)) try {
+  defineBuiltInAccessor(ObjectPrototype, PROTO, {
+    configurable: true,
+    get: function __proto__() {
+      return getPrototypeOf(toObject(this));
+    },
+    set: function __proto__(proto) {
+      var O = requireObjectCoercible(this);
+      if (isPossiblePrototype(proto) && isObject(O)) {
+        setPrototypeOf(O, proto);
+      }
+    }
+  });
+} catch (error) { /* empty */ }
diff --git a/node_modules/core-js/modules/es.object.seal.js b/node_modules/core-js/modules/es.object.seal.js
new file mode 100644
index 0000000..b77983b
--- /dev/null
+++ b/node_modules/core-js/modules/es.object.seal.js
@@ -0,0 +1,18 @@
+'use strict';
+var $ = require('../internals/export');
+var isObject = require('../internals/is-object');
+var onFreeze = require('../internals/internal-metadata').onFreeze;
+var FREEZING = require('../internals/freezing');
+var fails = require('../internals/fails');
+
+// eslint-disable-next-line es/no-object-seal -- safe
+var $seal = Object.seal;
+var FAILS_ON_PRIMITIVES = fails(function () { $seal(1); });
+
+// `Object.seal` method
+// https://tc39.es/ecma262/#sec-object.seal
+$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {
+  seal: function seal(it) {
+    return $seal && isObject(it) ? $seal(onFreeze(it)) : it;
+  }
+});
diff --git a/node_modules/core-js/modules/es.object.set-prototype-of.js b/node_modules/core-js/modules/es.object.set-prototype-of.js
new file mode 100644
index 0000000..3d0952e
--- /dev/null
+++ b/node_modules/core-js/modules/es.object.set-prototype-of.js
@@ -0,0 +1,9 @@
+'use strict';
+var $ = require('../internals/export');
+var setPrototypeOf = require('../internals/object-set-prototype-of');
+
+// `Object.setPrototypeOf` method
+// https://tc39.es/ecma262/#sec-object.setprototypeof
+$({ target: 'Object', stat: true }, {
+  setPrototypeOf: setPrototypeOf
+});
diff --git a/node_modules/core-js/modules/es.object.to-string.js b/node_modules/core-js/modules/es.object.to-string.js
new file mode 100644
index 0000000..63253be
--- /dev/null
+++ b/node_modules/core-js/modules/es.object.to-string.js
@@ -0,0 +1,10 @@
+'use strict';
+var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');
+var defineBuiltIn = require('../internals/define-built-in');
+var toString = require('../internals/object-to-string');
+
+// `Object.prototype.toString` method
+// https://tc39.es/ecma262/#sec-object.prototype.tostring
+if (!TO_STRING_TAG_SUPPORT) {
+  defineBuiltIn(Object.prototype, 'toString', toString, { unsafe: true });
+}
diff --git a/node_modules/core-js/modules/es.object.values.js b/node_modules/core-js/modules/es.object.values.js
new file mode 100644
index 0000000..e35348e
--- /dev/null
+++ b/node_modules/core-js/modules/es.object.values.js
@@ -0,0 +1,11 @@
+'use strict';
+var $ = require('../internals/export');
+var $values = require('../internals/object-to-array').values;
+
+// `Object.values` method
+// https://tc39.es/ecma262/#sec-object.values
+$({ target: 'Object', stat: true }, {
+  values: function values(O) {
+    return $values(O);
+  }
+});
diff --git a/node_modules/core-js/modules/es.parse-float.js b/node_modules/core-js/modules/es.parse-float.js
new file mode 100644
index 0000000..109e075
--- /dev/null
+++ b/node_modules/core-js/modules/es.parse-float.js
@@ -0,0 +1,9 @@
+'use strict';
+var $ = require('../internals/export');
+var $parseFloat = require('../internals/number-parse-float');
+
+// `parseFloat` method
+// https://tc39.es/ecma262/#sec-parsefloat-string
+$({ global: true, forced: parseFloat !== $parseFloat }, {
+  parseFloat: $parseFloat
+});
diff --git a/node_modules/core-js/modules/es.parse-int.js b/node_modules/core-js/modules/es.parse-int.js
new file mode 100644
index 0000000..7422a73
--- /dev/null
+++ b/node_modules/core-js/modules/es.parse-int.js
@@ -0,0 +1,9 @@
+'use strict';
+var $ = require('../internals/export');
+var $parseInt = require('../internals/number-parse-int');
+
+// `parseInt` method
+// https://tc39.es/ecma262/#sec-parseint-string-radix
+$({ global: true, forced: parseInt !== $parseInt }, {
+  parseInt: $parseInt
+});
diff --git a/node_modules/core-js/modules/es.promise.all-settled.js b/node_modules/core-js/modules/es.promise.all-settled.js
new file mode 100644
index 0000000..73b282a
--- /dev/null
+++ b/node_modules/core-js/modules/es.promise.all-settled.js
@@ -0,0 +1,44 @@
+'use strict';
+var $ = require('../internals/export');
+var call = require('../internals/function-call');
+var aCallable = require('../internals/a-callable');
+var newPromiseCapabilityModule = require('../internals/new-promise-capability');
+var perform = require('../internals/perform');
+var iterate = require('../internals/iterate');
+var PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');
+
+// `Promise.allSettled` method
+// https://tc39.es/ecma262/#sec-promise.allsettled
+$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {
+  allSettled: function allSettled(iterable) {
+    var C = this;
+    var capability = newPromiseCapabilityModule.f(C);
+    var resolve = capability.resolve;
+    var reject = capability.reject;
+    var result = perform(function () {
+      var promiseResolve = aCallable(C.resolve);
+      var values = [];
+      var counter = 0;
+      var remaining = 1;
+      iterate(iterable, function (promise) {
+        var index = counter++;
+        var alreadyCalled = false;
+        remaining++;
+        call(promiseResolve, C, promise).then(function (value) {
+          if (alreadyCalled) return;
+          alreadyCalled = true;
+          values[index] = { status: 'fulfilled', value: value };
+          --remaining || resolve(values);
+        }, function (error) {
+          if (alreadyCalled) return;
+          alreadyCalled = true;
+          values[index] = { status: 'rejected', reason: error };
+          --remaining || resolve(values);
+        });
+      });
+      --remaining || resolve(values);
+    });
+    if (result.error) reject(result.value);
+    return capability.promise;
+  }
+});
diff --git a/node_modules/core-js/modules/es.promise.all.js b/node_modules/core-js/modules/es.promise.all.js
new file mode 100644
index 0000000..77e81c9
--- /dev/null
+++ b/node_modules/core-js/modules/es.promise.all.js
@@ -0,0 +1,39 @@
+'use strict';
+var $ = require('../internals/export');
+var call = require('../internals/function-call');
+var aCallable = require('../internals/a-callable');
+var newPromiseCapabilityModule = require('../internals/new-promise-capability');
+var perform = require('../internals/perform');
+var iterate = require('../internals/iterate');
+var PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');
+
+// `Promise.all` method
+// https://tc39.es/ecma262/#sec-promise.all
+$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {
+  all: function all(iterable) {
+    var C = this;
+    var capability = newPromiseCapabilityModule.f(C);
+    var resolve = capability.resolve;
+    var reject = capability.reject;
+    var result = perform(function () {
+      var $promiseResolve = aCallable(C.resolve);
+      var values = [];
+      var counter = 0;
+      var remaining = 1;
+      iterate(iterable, function (promise) {
+        var index = counter++;
+        var alreadyCalled = false;
+        remaining++;
+        call($promiseResolve, C, promise).then(function (value) {
+          if (alreadyCalled) return;
+          alreadyCalled = true;
+          values[index] = value;
+          --remaining || resolve(values);
+        }, reject);
+      });
+      --remaining || resolve(values);
+    });
+    if (result.error) reject(result.value);
+    return capability.promise;
+  }
+});
diff --git a/node_modules/core-js/modules/es.promise.any.js b/node_modules/core-js/modules/es.promise.any.js
new file mode 100644
index 0000000..dd92bd7
--- /dev/null
+++ b/node_modules/core-js/modules/es.promise.any.js
@@ -0,0 +1,48 @@
+'use strict';
+var $ = require('../internals/export');
+var call = require('../internals/function-call');
+var aCallable = require('../internals/a-callable');
+var getBuiltIn = require('../internals/get-built-in');
+var newPromiseCapabilityModule = require('../internals/new-promise-capability');
+var perform = require('../internals/perform');
+var iterate = require('../internals/iterate');
+var PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');
+
+var PROMISE_ANY_ERROR = 'No one promise resolved';
+
+// `Promise.any` method
+// https://tc39.es/ecma262/#sec-promise.any
+$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {
+  any: function any(iterable) {
+    var C = this;
+    var AggregateError = getBuiltIn('AggregateError');
+    var capability = newPromiseCapabilityModule.f(C);
+    var resolve = capability.resolve;
+    var reject = capability.reject;
+    var result = perform(function () {
+      var promiseResolve = aCallable(C.resolve);
+      var errors = [];
+      var counter = 0;
+      var remaining = 1;
+      var alreadyResolved = false;
+      iterate(iterable, function (promise) {
+        var index = counter++;
+        var alreadyRejected = false;
+        remaining++;
+        call(promiseResolve, C, promise).then(function (value) {
+          if (alreadyRejected || alreadyResolved) return;
+          alreadyResolved = true;
+          resolve(value);
+        }, function (error) {
+          if (alreadyRejected || alreadyResolved) return;
+          alreadyRejected = true;
+          errors[index] = error;
+          --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));
+        });
+      });
+      --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));
+    });
+    if (result.error) reject(result.value);
+    return capability.promise;
+  }
+});
diff --git a/node_modules/core-js/modules/es.promise.catch.js b/node_modules/core-js/modules/es.promise.catch.js
new file mode 100644
index 0000000..c4947fd
--- /dev/null
+++ b/node_modules/core-js/modules/es.promise.catch.js
@@ -0,0 +1,26 @@
+'use strict';
+var $ = require('../internals/export');
+var IS_PURE = require('../internals/is-pure');
+var FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;
+var NativePromiseConstructor = require('../internals/promise-native-constructor');
+var getBuiltIn = require('../internals/get-built-in');
+var isCallable = require('../internals/is-callable');
+var defineBuiltIn = require('../internals/define-built-in');
+
+var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;
+
+// `Promise.prototype.catch` method
+// https://tc39.es/ecma262/#sec-promise.prototype.catch
+$({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: true }, {
+  'catch': function (onRejected) {
+    return this.then(undefined, onRejected);
+  }
+});
+
+// makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`
+if (!IS_PURE && isCallable(NativePromiseConstructor)) {
+  var method = getBuiltIn('Promise').prototype['catch'];
+  if (NativePromisePrototype['catch'] !== method) {
+    defineBuiltIn(NativePromisePrototype, 'catch', method, { unsafe: true });
+  }
+}
diff --git a/node_modules/core-js/modules/es.promise.constructor.js b/node_modules/core-js/modules/es.promise.constructor.js
new file mode 100644
index 0000000..9c04222
--- /dev/null
+++ b/node_modules/core-js/modules/es.promise.constructor.js
@@ -0,0 +1,290 @@
+'use strict';
+var $ = require('../internals/export');
+var IS_PURE = require('../internals/is-pure');
+var IS_NODE = require('../internals/environment-is-node');
+var globalThis = require('../internals/global-this');
+var call = require('../internals/function-call');
+var defineBuiltIn = require('../internals/define-built-in');
+var setPrototypeOf = require('../internals/object-set-prototype-of');
+var setToStringTag = require('../internals/set-to-string-tag');
+var setSpecies = require('../internals/set-species');
+var aCallable = require('../internals/a-callable');
+var isCallable = require('../internals/is-callable');
+var isObject = require('../internals/is-object');
+var anInstance = require('../internals/an-instance');
+var speciesConstructor = require('../internals/species-constructor');
+var task = require('../internals/task').set;
+var microtask = require('../internals/microtask');
+var hostReportErrors = require('../internals/host-report-errors');
+var perform = require('../internals/perform');
+var Queue = require('../internals/queue');
+var InternalStateModule = require('../internals/internal-state');
+var NativePromiseConstructor = require('../internals/promise-native-constructor');
+var PromiseConstructorDetection = require('../internals/promise-constructor-detection');
+var newPromiseCapabilityModule = require('../internals/new-promise-capability');
+
+var PROMISE = 'Promise';
+var FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR;
+var NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT;
+var NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING;
+var getInternalPromiseState = InternalStateModule.getterFor(PROMISE);
+var setInternalState = InternalStateModule.set;
+var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;
+var PromiseConstructor = NativePromiseConstructor;
+var PromisePrototype = NativePromisePrototype;
+var TypeError = globalThis.TypeError;
+var document = globalThis.document;
+var process = globalThis.process;
+var newPromiseCapability = newPromiseCapabilityModule.f;
+var newGenericPromiseCapability = newPromiseCapability;
+
+var DISPATCH_EVENT = !!(document && document.createEvent && globalThis.dispatchEvent);
+var UNHANDLED_REJECTION = 'unhandledrejection';
+var REJECTION_HANDLED = 'rejectionhandled';
+var PENDING = 0;
+var FULFILLED = 1;
+var REJECTED = 2;
+var HANDLED = 1;
+var UNHANDLED = 2;
+
+var Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;
+
+// helpers
+var isThenable = function (it) {
+  var then;
+  return isObject(it) && isCallable(then = it.then) ? then : false;
+};
+
+var callReaction = function (reaction, state) {
+  var value = state.value;
+  var ok = state.state === FULFILLED;
+  var handler = ok ? reaction.ok : reaction.fail;
+  var resolve = reaction.resolve;
+  var reject = reaction.reject;
+  var domain = reaction.domain;
+  var result, then, exited;
+  try {
+    if (handler) {
+      if (!ok) {
+        if (state.rejection === UNHANDLED) onHandleUnhandled(state);
+        state.rejection = HANDLED;
+      }
+      if (handler === true) result = value;
+      else {
+        if (domain) domain.enter();
+        result = handler(value); // can throw
+        if (domain) {
+          domain.exit();
+          exited = true;
+        }
+      }
+      if (result === reaction.promise) {
+        reject(new TypeError('Promise-chain cycle'));
+      } else if (then = isThenable(result)) {
+        call(then, result, resolve, reject);
+      } else resolve(result);
+    } else reject(value);
+  } catch (error) {
+    if (domain && !exited) domain.exit();
+    reject(error);
+  }
+};
+
+var notify = function (state, isReject) {
+  if (state.notified) return;
+  state.notified = true;
+  microtask(function () {
+    var reactions = state.reactions;
+    var reaction;
+    while (reaction = reactions.get()) {
+      callReaction(reaction, state);
+    }
+    state.notified = false;
+    if (isReject && !state.rejection) onUnhandled(state);
+  });
+};
+
+var dispatchEvent = function (name, promise, reason) {
+  var event, handler;
+  if (DISPATCH_EVENT) {
+    event = document.createEvent('Event');
+    event.promise = promise;
+    event.reason = reason;
+    event.initEvent(name, false, true);
+    globalThis.dispatchEvent(event);
+  } else event = { promise: promise, reason: reason };
+  if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = globalThis['on' + name])) handler(event);
+  else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);
+};
+
+var onUnhandled = function (state) {
+  call(task, globalThis, function () {
+    var promise = state.facade;
+    var value = state.value;
+    var IS_UNHANDLED = isUnhandled(state);
+    var result;
+    if (IS_UNHANDLED) {
+      result = perform(function () {
+        if (IS_NODE) {
+          process.emit('unhandledRejection', value, promise);
+        } else dispatchEvent(UNHANDLED_REJECTION, promise, value);
+      });
+      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
+      state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;
+      if (result.error) throw result.value;
+    }
+  });
+};
+
+var isUnhandled = function (state) {
+  return state.rejection !== HANDLED && !state.parent;
+};
+
+var onHandleUnhandled = function (state) {
+  call(task, globalThis, function () {
+    var promise = state.facade;
+    if (IS_NODE) {
+      process.emit('rejectionHandled', promise);
+    } else dispatchEvent(REJECTION_HANDLED, promise, state.value);
+  });
+};
+
+var bind = function (fn, state, unwrap) {
+  return function (value) {
+    fn(state, value, unwrap);
+  };
+};
+
+var internalReject = function (state, value, unwrap) {
+  if (state.done) return;
+  state.done = true;
+  if (unwrap) state = unwrap;
+  state.value = value;
+  state.state = REJECTED;
+  notify(state, true);
+};
+
+var internalResolve = function (state, value, unwrap) {
+  if (state.done) return;
+  state.done = true;
+  if (unwrap) state = unwrap;
+  try {
+    if (state.facade === value) throw new TypeError("Promise can't be resolved itself");
+    var then = isThenable(value);
+    if (then) {
+      microtask(function () {
+        var wrapper = { done: false };
+        try {
+          call(then, value,
+            bind(internalResolve, wrapper, state),
+            bind(internalReject, wrapper, state)
+          );
+        } catch (error) {
+          internalReject(wrapper, error, state);
+        }
+      });
+    } else {
+      state.value = value;
+      state.state = FULFILLED;
+      notify(state, false);
+    }
+  } catch (error) {
+    internalReject({ done: false }, error, state);
+  }
+};
+
+// constructor polyfill
+if (FORCED_PROMISE_CONSTRUCTOR) {
+  // 25.4.3.1 Promise(executor)
+  PromiseConstructor = function Promise(executor) {
+    anInstance(this, PromisePrototype);
+    aCallable(executor);
+    call(Internal, this);
+    var state = getInternalPromiseState(this);
+    try {
+      executor(bind(internalResolve, state), bind(internalReject, state));
+    } catch (error) {
+      internalReject(state, error);
+    }
+  };
+
+  PromisePrototype = PromiseConstructor.prototype;
+
+  // eslint-disable-next-line no-unused-vars -- required for `.length`
+  Internal = function Promise(executor) {
+    setInternalState(this, {
+      type: PROMISE,
+      done: false,
+      notified: false,
+      parent: false,
+      reactions: new Queue(),
+      rejection: false,
+      state: PENDING,
+      value: null
+    });
+  };
+
+  // `Promise.prototype.then` method
+  // https://tc39.es/ecma262/#sec-promise.prototype.then
+  Internal.prototype = defineBuiltIn(PromisePrototype, 'then', function then(onFulfilled, onRejected) {
+    var state = getInternalPromiseState(this);
+    var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));
+    state.parent = true;
+    reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;
+    reaction.fail = isCallable(onRejected) && onRejected;
+    reaction.domain = IS_NODE ? process.domain : undefined;
+    if (state.state === PENDING) state.reactions.add(reaction);
+    else microtask(function () {
+      callReaction(reaction, state);
+    });
+    return reaction.promise;
+  });
+
+  OwnPromiseCapability = function () {
+    var promise = new Internal();
+    var state = getInternalPromiseState(promise);
+    this.promise = promise;
+    this.resolve = bind(internalResolve, state);
+    this.reject = bind(internalReject, state);
+  };
+
+  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {
+    return C === PromiseConstructor || C === PromiseWrapper
+      ? new OwnPromiseCapability(C)
+      : newGenericPromiseCapability(C);
+  };
+
+  if (!IS_PURE && isCallable(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) {
+    nativeThen = NativePromisePrototype.then;
+
+    if (!NATIVE_PROMISE_SUBCLASSING) {
+      // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs
+      defineBuiltIn(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {
+        var that = this;
+        return new PromiseConstructor(function (resolve, reject) {
+          call(nativeThen, that, resolve, reject);
+        }).then(onFulfilled, onRejected);
+      // https://github.com/zloirock/core-js/issues/640
+      }, { unsafe: true });
+    }
+
+    // make `.constructor === Promise` work for native promise-based APIs
+    try {
+      delete NativePromisePrototype.constructor;
+    } catch (error) { /* empty */ }
+
+    // make `instanceof Promise` work for native promise-based APIs
+    if (setPrototypeOf) {
+      setPrototypeOf(NativePromisePrototype, PromisePrototype);
+    }
+  }
+}
+
+// `Promise` constructor
+// https://tc39.es/ecma262/#sec-promise-executor
+$({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {
+  Promise: PromiseConstructor
+});
+
+setToStringTag(PromiseConstructor, PROMISE, false, true);
+setSpecies(PROMISE);
diff --git a/node_modules/core-js/modules/es.promise.finally.js b/node_modules/core-js/modules/es.promise.finally.js
new file mode 100644
index 0000000..d5644b6
--- /dev/null
+++ b/node_modules/core-js/modules/es.promise.finally.js
@@ -0,0 +1,43 @@
+'use strict';
+var $ = require('../internals/export');
+var IS_PURE = require('../internals/is-pure');
+var NativePromiseConstructor = require('../internals/promise-native-constructor');
+var fails = require('../internals/fails');
+var getBuiltIn = require('../internals/get-built-in');
+var isCallable = require('../internals/is-callable');
+var speciesConstructor = require('../internals/species-constructor');
+var promiseResolve = require('../internals/promise-resolve');
+var defineBuiltIn = require('../internals/define-built-in');
+
+var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;
+
+// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829
+var NON_GENERIC = !!NativePromiseConstructor && fails(function () {
+  // eslint-disable-next-line unicorn/no-thenable -- required for testing
+  NativePromisePrototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });
+});
+
+// `Promise.prototype.finally` method
+// https://tc39.es/ecma262/#sec-promise.prototype.finally
+$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {
+  'finally': function (onFinally) {
+    var C = speciesConstructor(this, getBuiltIn('Promise'));
+    var isFunction = isCallable(onFinally);
+    return this.then(
+      isFunction ? function (x) {
+        return promiseResolve(C, onFinally()).then(function () { return x; });
+      } : onFinally,
+      isFunction ? function (e) {
+        return promiseResolve(C, onFinally()).then(function () { throw e; });
+      } : onFinally
+    );
+  }
+});
+
+// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`
+if (!IS_PURE && isCallable(NativePromiseConstructor)) {
+  var method = getBuiltIn('Promise').prototype['finally'];
+  if (NativePromisePrototype['finally'] !== method) {
+    defineBuiltIn(NativePromisePrototype, 'finally', method, { unsafe: true });
+  }
+}
diff --git a/node_modules/core-js/modules/es.promise.js b/node_modules/core-js/modules/es.promise.js
new file mode 100644
index 0000000..8606778
--- /dev/null
+++ b/node_modules/core-js/modules/es.promise.js
@@ -0,0 +1,8 @@
+'use strict';
+// TODO: Remove this module from `core-js@4` since it's split to modules listed below
+require('../modules/es.promise.constructor');
+require('../modules/es.promise.all');
+require('../modules/es.promise.catch');
+require('../modules/es.promise.race');
+require('../modules/es.promise.reject');
+require('../modules/es.promise.resolve');
diff --git a/node_modules/core-js/modules/es.promise.race.js b/node_modules/core-js/modules/es.promise.race.js
new file mode 100644
index 0000000..2fb470d
--- /dev/null
+++ b/node_modules/core-js/modules/es.promise.race.js
@@ -0,0 +1,26 @@
+'use strict';
+var $ = require('../internals/export');
+var call = require('../internals/function-call');
+var aCallable = require('../internals/a-callable');
+var newPromiseCapabilityModule = require('../internals/new-promise-capability');
+var perform = require('../internals/perform');
+var iterate = require('../internals/iterate');
+var PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');
+
+// `Promise.race` method
+// https://tc39.es/ecma262/#sec-promise.race
+$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {
+  race: function race(iterable) {
+    var C = this;
+    var capability = newPromiseCapabilityModule.f(C);
+    var reject = capability.reject;
+    var result = perform(function () {
+      var $promiseResolve = aCallable(C.resolve);
+      iterate(iterable, function (promise) {
+        call($promiseResolve, C, promise).then(capability.resolve, reject);
+      });
+    });
+    if (result.error) reject(result.value);
+    return capability.promise;
+  }
+});
diff --git a/node_modules/core-js/modules/es.promise.reject.js b/node_modules/core-js/modules/es.promise.reject.js
new file mode 100644
index 0000000..44e1456
--- /dev/null
+++ b/node_modules/core-js/modules/es.promise.reject.js
@@ -0,0 +1,15 @@
+'use strict';
+var $ = require('../internals/export');
+var newPromiseCapabilityModule = require('../internals/new-promise-capability');
+var FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;
+
+// `Promise.reject` method
+// https://tc39.es/ecma262/#sec-promise.reject
+$({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {
+  reject: function reject(r) {
+    var capability = newPromiseCapabilityModule.f(this);
+    var capabilityReject = capability.reject;
+    capabilityReject(r);
+    return capability.promise;
+  }
+});
diff --git a/node_modules/core-js/modules/es.promise.resolve.js b/node_modules/core-js/modules/es.promise.resolve.js
new file mode 100644
index 0000000..f1a0a0e
--- /dev/null
+++ b/node_modules/core-js/modules/es.promise.resolve.js
@@ -0,0 +1,18 @@
+'use strict';
+var $ = require('../internals/export');
+var getBuiltIn = require('../internals/get-built-in');
+var IS_PURE = require('../internals/is-pure');
+var NativePromiseConstructor = require('../internals/promise-native-constructor');
+var FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;
+var promiseResolve = require('../internals/promise-resolve');
+
+var PromiseConstructorWrapper = getBuiltIn('Promise');
+var CHECK_WRAPPER = IS_PURE && !FORCED_PROMISE_CONSTRUCTOR;
+
+// `Promise.resolve` method
+// https://tc39.es/ecma262/#sec-promise.resolve
+$({ target: 'Promise', stat: true, forced: IS_PURE || FORCED_PROMISE_CONSTRUCTOR }, {
+  resolve: function resolve(x) {
+    return promiseResolve(CHECK_WRAPPER && this === PromiseConstructorWrapper ? NativePromiseConstructor : this, x);
+  }
+});
diff --git a/node_modules/core-js/modules/es.promise.try.js b/node_modules/core-js/modules/es.promise.try.js
new file mode 100644
index 0000000..525b79c
--- /dev/null
+++ b/node_modules/core-js/modules/es.promise.try.js
@@ -0,0 +1,33 @@
+'use strict';
+var $ = require('../internals/export');
+var globalThis = require('../internals/global-this');
+var apply = require('../internals/function-apply');
+var slice = require('../internals/array-slice');
+var newPromiseCapabilityModule = require('../internals/new-promise-capability');
+var aCallable = require('../internals/a-callable');
+var perform = require('../internals/perform');
+
+var Promise = globalThis.Promise;
+
+var ACCEPT_ARGUMENTS = false;
+// Avoiding the use of polyfills of the previous iteration of this proposal
+// that does not accept arguments of the callback
+var FORCED = !Promise || !Promise['try'] || perform(function () {
+  Promise['try'](function (argument) {
+    ACCEPT_ARGUMENTS = argument === 8;
+  }, 8);
+}).error || !ACCEPT_ARGUMENTS;
+
+// `Promise.try` method
+// https://tc39.es/ecma262/#sec-promise.try
+$({ target: 'Promise', stat: true, forced: FORCED }, {
+  'try': function (callbackfn /* , ...args */) {
+    var args = arguments.length > 1 ? slice(arguments, 1) : [];
+    var promiseCapability = newPromiseCapabilityModule.f(this);
+    var result = perform(function () {
+      return apply(aCallable(callbackfn), undefined, args);
+    });
+    (result.error ? promiseCapability.reject : promiseCapability.resolve)(result.value);
+    return promiseCapability.promise;
+  }
+});
diff --git a/node_modules/core-js/modules/es.promise.with-resolvers.js b/node_modules/core-js/modules/es.promise.with-resolvers.js
new file mode 100644
index 0000000..834f0eb
--- /dev/null
+++ b/node_modules/core-js/modules/es.promise.with-resolvers.js
@@ -0,0 +1,16 @@
+'use strict';
+var $ = require('../internals/export');
+var newPromiseCapabilityModule = require('../internals/new-promise-capability');
+
+// `Promise.withResolvers` method
+// https://tc39.es/ecma262/#sec-promise.withResolvers
+$({ target: 'Promise', stat: true }, {
+  withResolvers: function withResolvers() {
+    var promiseCapability = newPromiseCapabilityModule.f(this);
+    return {
+      promise: promiseCapability.promise,
+      resolve: promiseCapability.resolve,
+      reject: promiseCapability.reject
+    };
+  }
+});
diff --git a/node_modules/core-js/modules/es.reflect.apply.js b/node_modules/core-js/modules/es.reflect.apply.js
new file mode 100644
index 0000000..2e19c8f
--- /dev/null
+++ b/node_modules/core-js/modules/es.reflect.apply.js
@@ -0,0 +1,20 @@
+'use strict';
+var $ = require('../internals/export');
+var functionApply = require('../internals/function-apply');
+var aCallable = require('../internals/a-callable');
+var anObject = require('../internals/an-object');
+var fails = require('../internals/fails');
+
+// MS Edge argumentsList argument is optional
+var OPTIONAL_ARGUMENTS_LIST = !fails(function () {
+  // eslint-disable-next-line es/no-reflect -- required for testing
+  Reflect.apply(function () { /* empty */ });
+});
+
+// `Reflect.apply` method
+// https://tc39.es/ecma262/#sec-reflect.apply
+$({ target: 'Reflect', stat: true, forced: OPTIONAL_ARGUMENTS_LIST }, {
+  apply: function apply(target, thisArgument, argumentsList) {
+    return functionApply(aCallable(target), thisArgument, anObject(argumentsList));
+  }
+});
diff --git a/node_modules/core-js/modules/es.reflect.construct.js b/node_modules/core-js/modules/es.reflect.construct.js
new file mode 100644
index 0000000..d2283e3
--- /dev/null
+++ b/node_modules/core-js/modules/es.reflect.construct.js
@@ -0,0 +1,57 @@
+'use strict';
+var $ = require('../internals/export');
+var getBuiltIn = require('../internals/get-built-in');
+var apply = require('../internals/function-apply');
+var bind = require('../internals/function-bind');
+var aConstructor = require('../internals/a-constructor');
+var anObject = require('../internals/an-object');
+var isObject = require('../internals/is-object');
+var create = require('../internals/object-create');
+var fails = require('../internals/fails');
+
+var nativeConstruct = getBuiltIn('Reflect', 'construct');
+var ObjectPrototype = Object.prototype;
+var push = [].push;
+
+// `Reflect.construct` method
+// https://tc39.es/ecma262/#sec-reflect.construct
+// MS Edge supports only 2 arguments and argumentsList argument is optional
+// FF Nightly sets third argument as `new.target`, but does not create `this` from it
+var NEW_TARGET_BUG = fails(function () {
+  function F() { /* empty */ }
+  return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);
+});
+
+var ARGS_BUG = !fails(function () {
+  nativeConstruct(function () { /* empty */ });
+});
+
+var FORCED = NEW_TARGET_BUG || ARGS_BUG;
+
+$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {
+  construct: function construct(Target, args /* , newTarget */) {
+    aConstructor(Target);
+    anObject(args);
+    var newTarget = arguments.length < 3 ? Target : aConstructor(arguments[2]);
+    if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);
+    if (Target === newTarget) {
+      // w/o altered newTarget, optimization for 0-4 arguments
+      switch (args.length) {
+        case 0: return new Target();
+        case 1: return new Target(args[0]);
+        case 2: return new Target(args[0], args[1]);
+        case 3: return new Target(args[0], args[1], args[2]);
+        case 4: return new Target(args[0], args[1], args[2], args[3]);
+      }
+      // w/o altered newTarget, lot of arguments case
+      var $args = [null];
+      apply(push, $args, args);
+      return new (apply(bind, Target, $args))();
+    }
+    // with altered newTarget, not support built-in constructors
+    var proto = newTarget.prototype;
+    var instance = create(isObject(proto) ? proto : ObjectPrototype);
+    var result = apply(Target, instance, args);
+    return isObject(result) ? result : instance;
+  }
+});
diff --git a/node_modules/core-js/modules/es.reflect.define-property.js b/node_modules/core-js/modules/es.reflect.define-property.js
new file mode 100644
index 0000000..c01ee5a
--- /dev/null
+++ b/node_modules/core-js/modules/es.reflect.define-property.js
@@ -0,0 +1,29 @@
+'use strict';
+var $ = require('../internals/export');
+var DESCRIPTORS = require('../internals/descriptors');
+var anObject = require('../internals/an-object');
+var toPropertyKey = require('../internals/to-property-key');
+var definePropertyModule = require('../internals/object-define-property');
+var fails = require('../internals/fails');
+
+// MS Edge has broken Reflect.defineProperty - throwing instead of returning false
+var ERROR_INSTEAD_OF_FALSE = fails(function () {
+  // eslint-disable-next-line es/no-reflect -- required for testing
+  Reflect.defineProperty(definePropertyModule.f({}, 1, { value: 1 }), 1, { value: 2 });
+});
+
+// `Reflect.defineProperty` method
+// https://tc39.es/ecma262/#sec-reflect.defineproperty
+$({ target: 'Reflect', stat: true, forced: ERROR_INSTEAD_OF_FALSE, sham: !DESCRIPTORS }, {
+  defineProperty: function defineProperty(target, propertyKey, attributes) {
+    anObject(target);
+    var key = toPropertyKey(propertyKey);
+    anObject(attributes);
+    try {
+      definePropertyModule.f(target, key, attributes);
+      return true;
+    } catch (error) {
+      return false;
+    }
+  }
+});
diff --git a/node_modules/core-js/modules/es.reflect.delete-property.js b/node_modules/core-js/modules/es.reflect.delete-property.js
new file mode 100644
index 0000000..fa9c1e6
--- /dev/null
+++ b/node_modules/core-js/modules/es.reflect.delete-property.js
@@ -0,0 +1,13 @@
+'use strict';
+var $ = require('../internals/export');
+var anObject = require('../internals/an-object');
+var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;
+
+// `Reflect.deleteProperty` method
+// https://tc39.es/ecma262/#sec-reflect.deleteproperty
+$({ target: 'Reflect', stat: true }, {
+  deleteProperty: function deleteProperty(target, propertyKey) {
+    var descriptor = getOwnPropertyDescriptor(anObject(target), propertyKey);
+    return descriptor && !descriptor.configurable ? false : delete target[propertyKey];
+  }
+});
diff --git a/node_modules/core-js/modules/es.reflect.get-own-property-descriptor.js b/node_modules/core-js/modules/es.reflect.get-own-property-descriptor.js
new file mode 100644
index 0000000..2e978bf
--- /dev/null
+++ b/node_modules/core-js/modules/es.reflect.get-own-property-descriptor.js
@@ -0,0 +1,13 @@
+'use strict';
+var $ = require('../internals/export');
+var DESCRIPTORS = require('../internals/descriptors');
+var anObject = require('../internals/an-object');
+var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');
+
+// `Reflect.getOwnPropertyDescriptor` method
+// https://tc39.es/ecma262/#sec-reflect.getownpropertydescriptor
+$({ target: 'Reflect', stat: true, sham: !DESCRIPTORS }, {
+  getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {
+    return getOwnPropertyDescriptorModule.f(anObject(target), propertyKey);
+  }
+});
diff --git a/node_modules/core-js/modules/es.reflect.get-prototype-of.js b/node_modules/core-js/modules/es.reflect.get-prototype-of.js
new file mode 100644
index 0000000..1fef329
--- /dev/null
+++ b/node_modules/core-js/modules/es.reflect.get-prototype-of.js
@@ -0,0 +1,13 @@
+'use strict';
+var $ = require('../internals/export');
+var anObject = require('../internals/an-object');
+var objectGetPrototypeOf = require('../internals/object-get-prototype-of');
+var CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');
+
+// `Reflect.getPrototypeOf` method
+// https://tc39.es/ecma262/#sec-reflect.getprototypeof
+$({ target: 'Reflect', stat: true, sham: !CORRECT_PROTOTYPE_GETTER }, {
+  getPrototypeOf: function getPrototypeOf(target) {
+    return objectGetPrototypeOf(anObject(target));
+  }
+});
diff --git a/node_modules/core-js/modules/es.reflect.get.js b/node_modules/core-js/modules/es.reflect.get.js
new file mode 100644
index 0000000..e5fc8d1
--- /dev/null
+++ b/node_modules/core-js/modules/es.reflect.get.js
@@ -0,0 +1,25 @@
+'use strict';
+var $ = require('../internals/export');
+var call = require('../internals/function-call');
+var isObject = require('../internals/is-object');
+var anObject = require('../internals/an-object');
+var isDataDescriptor = require('../internals/is-data-descriptor');
+var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');
+var getPrototypeOf = require('../internals/object-get-prototype-of');
+
+// `Reflect.get` method
+// https://tc39.es/ecma262/#sec-reflect.get
+function get(target, propertyKey /* , receiver */) {
+  var receiver = arguments.length < 3 ? target : arguments[2];
+  var descriptor, prototype;
+  if (anObject(target) === receiver) return target[propertyKey];
+  descriptor = getOwnPropertyDescriptorModule.f(target, propertyKey);
+  if (descriptor) return isDataDescriptor(descriptor)
+    ? descriptor.value
+    : descriptor.get === undefined ? undefined : call(descriptor.get, receiver);
+  if (isObject(prototype = getPrototypeOf(target))) return get(prototype, propertyKey, receiver);
+}
+
+$({ target: 'Reflect', stat: true }, {
+  get: get
+});
diff --git a/node_modules/core-js/modules/es.reflect.has.js b/node_modules/core-js/modules/es.reflect.has.js
new file mode 100644
index 0000000..5d4a7f2
--- /dev/null
+++ b/node_modules/core-js/modules/es.reflect.has.js
@@ -0,0 +1,10 @@
+'use strict';
+var $ = require('../internals/export');
+
+// `Reflect.has` method
+// https://tc39.es/ecma262/#sec-reflect.has
+$({ target: 'Reflect', stat: true }, {
+  has: function has(target, propertyKey) {
+    return propertyKey in target;
+  }
+});
diff --git a/node_modules/core-js/modules/es.reflect.is-extensible.js b/node_modules/core-js/modules/es.reflect.is-extensible.js
new file mode 100644
index 0000000..35480ba
--- /dev/null
+++ b/node_modules/core-js/modules/es.reflect.is-extensible.js
@@ -0,0 +1,13 @@
+'use strict';
+var $ = require('../internals/export');
+var anObject = require('../internals/an-object');
+var $isExtensible = require('../internals/object-is-extensible');
+
+// `Reflect.isExtensible` method
+// https://tc39.es/ecma262/#sec-reflect.isextensible
+$({ target: 'Reflect', stat: true }, {
+  isExtensible: function isExtensible(target) {
+    anObject(target);
+    return $isExtensible(target);
+  }
+});
diff --git a/node_modules/core-js/modules/es.reflect.own-keys.js b/node_modules/core-js/modules/es.reflect.own-keys.js
new file mode 100644
index 0000000..1764652
--- /dev/null
+++ b/node_modules/core-js/modules/es.reflect.own-keys.js
@@ -0,0 +1,9 @@
+'use strict';
+var $ = require('../internals/export');
+var ownKeys = require('../internals/own-keys');
+
+// `Reflect.ownKeys` method
+// https://tc39.es/ecma262/#sec-reflect.ownkeys
+$({ target: 'Reflect', stat: true }, {
+  ownKeys: ownKeys
+});
diff --git a/node_modules/core-js/modules/es.reflect.prevent-extensions.js b/node_modules/core-js/modules/es.reflect.prevent-extensions.js
new file mode 100644
index 0000000..57b298d
--- /dev/null
+++ b/node_modules/core-js/modules/es.reflect.prevent-extensions.js
@@ -0,0 +1,20 @@
+'use strict';
+var $ = require('../internals/export');
+var getBuiltIn = require('../internals/get-built-in');
+var anObject = require('../internals/an-object');
+var FREEZING = require('../internals/freezing');
+
+// `Reflect.preventExtensions` method
+// https://tc39.es/ecma262/#sec-reflect.preventextensions
+$({ target: 'Reflect', stat: true, sham: !FREEZING }, {
+  preventExtensions: function preventExtensions(target) {
+    anObject(target);
+    try {
+      var objectPreventExtensions = getBuiltIn('Object', 'preventExtensions');
+      if (objectPreventExtensions) objectPreventExtensions(target);
+      return true;
+    } catch (error) {
+      return false;
+    }
+  }
+});
diff --git a/node_modules/core-js/modules/es.reflect.set-prototype-of.js b/node_modules/core-js/modules/es.reflect.set-prototype-of.js
new file mode 100644
index 0000000..4b7faff
--- /dev/null
+++ b/node_modules/core-js/modules/es.reflect.set-prototype-of.js
@@ -0,0 +1,20 @@
+'use strict';
+var $ = require('../internals/export');
+var anObject = require('../internals/an-object');
+var aPossiblePrototype = require('../internals/a-possible-prototype');
+var objectSetPrototypeOf = require('../internals/object-set-prototype-of');
+
+// `Reflect.setPrototypeOf` method
+// https://tc39.es/ecma262/#sec-reflect.setprototypeof
+if (objectSetPrototypeOf) $({ target: 'Reflect', stat: true }, {
+  setPrototypeOf: function setPrototypeOf(target, proto) {
+    anObject(target);
+    aPossiblePrototype(proto);
+    try {
+      objectSetPrototypeOf(target, proto);
+      return true;
+    } catch (error) {
+      return false;
+    }
+  }
+});
diff --git a/node_modules/core-js/modules/es.reflect.set.js b/node_modules/core-js/modules/es.reflect.set.js
new file mode 100644
index 0000000..5a0d3b1
--- /dev/null
+++ b/node_modules/core-js/modules/es.reflect.set.js
@@ -0,0 +1,50 @@
+'use strict';
+var $ = require('../internals/export');
+var call = require('../internals/function-call');
+var anObject = require('../internals/an-object');
+var isObject = require('../internals/is-object');
+var isDataDescriptor = require('../internals/is-data-descriptor');
+var fails = require('../internals/fails');
+var definePropertyModule = require('../internals/object-define-property');
+var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');
+var getPrototypeOf = require('../internals/object-get-prototype-of');
+var createPropertyDescriptor = require('../internals/create-property-descriptor');
+
+// `Reflect.set` method
+// https://tc39.es/ecma262/#sec-reflect.set
+function set(target, propertyKey, V /* , receiver */) {
+  var receiver = arguments.length < 4 ? target : arguments[3];
+  var ownDescriptor = getOwnPropertyDescriptorModule.f(anObject(target), propertyKey);
+  var existingDescriptor, prototype, setter;
+  if (!ownDescriptor) {
+    if (isObject(prototype = getPrototypeOf(target))) {
+      return set(prototype, propertyKey, V, receiver);
+    }
+    ownDescriptor = createPropertyDescriptor(0);
+  }
+  if (isDataDescriptor(ownDescriptor)) {
+    if (ownDescriptor.writable === false || !isObject(receiver)) return false;
+    if (existingDescriptor = getOwnPropertyDescriptorModule.f(receiver, propertyKey)) {
+      if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;
+      existingDescriptor.value = V;
+      definePropertyModule.f(receiver, propertyKey, existingDescriptor);
+    } else definePropertyModule.f(receiver, propertyKey, createPropertyDescriptor(0, V));
+  } else {
+    setter = ownDescriptor.set;
+    if (setter === undefined) return false;
+    call(setter, receiver, V);
+  } return true;
+}
+
+// MS Edge 17-18 Reflect.set allows setting the property to object
+// with non-writable property on the prototype
+var MS_EDGE_BUG = fails(function () {
+  var Constructor = function () { /* empty */ };
+  var object = definePropertyModule.f(new Constructor(), 'a', { configurable: true });
+  // eslint-disable-next-line es/no-reflect -- required for testing
+  return Reflect.set(Constructor.prototype, 'a', 1, object) !== false;
+});
+
+$({ target: 'Reflect', stat: true, forced: MS_EDGE_BUG }, {
+  set: set
+});
diff --git a/node_modules/core-js/modules/es.reflect.to-string-tag.js b/node_modules/core-js/modules/es.reflect.to-string-tag.js
new file mode 100644
index 0000000..90f12cd
--- /dev/null
+++ b/node_modules/core-js/modules/es.reflect.to-string-tag.js
@@ -0,0 +1,10 @@
+'use strict';
+var $ = require('../internals/export');
+var globalThis = require('../internals/global-this');
+var setToStringTag = require('../internals/set-to-string-tag');
+
+$({ global: true }, { Reflect: {} });
+
+// Reflect[@@toStringTag] property
+// https://tc39.es/ecma262/#sec-reflect-@@tostringtag
+setToStringTag(globalThis.Reflect, 'Reflect', true);
diff --git a/node_modules/core-js/modules/es.regexp.constructor.js b/node_modules/core-js/modules/es.regexp.constructor.js
new file mode 100644
index 0000000..7167c30
--- /dev/null
+++ b/node_modules/core-js/modules/es.regexp.constructor.js
@@ -0,0 +1,197 @@
+'use strict';
+var DESCRIPTORS = require('../internals/descriptors');
+var globalThis = require('../internals/global-this');
+var uncurryThis = require('../internals/function-uncurry-this');
+var isForced = require('../internals/is-forced');
+var inheritIfRequired = require('../internals/inherit-if-required');
+var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
+var create = require('../internals/object-create');
+var getOwnPropertyNames = require('../internals/object-get-own-property-names').f;
+var isPrototypeOf = require('../internals/object-is-prototype-of');
+var isRegExp = require('../internals/is-regexp');
+var toString = require('../internals/to-string');
+var getRegExpFlags = require('../internals/regexp-get-flags');
+var stickyHelpers = require('../internals/regexp-sticky-helpers');
+var proxyAccessor = require('../internals/proxy-accessor');
+var defineBuiltIn = require('../internals/define-built-in');
+var fails = require('../internals/fails');
+var hasOwn = require('../internals/has-own-property');
+var enforceInternalState = require('../internals/internal-state').enforce;
+var setSpecies = require('../internals/set-species');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');
+var UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');
+
+var MATCH = wellKnownSymbol('match');
+var NativeRegExp = globalThis.RegExp;
+var RegExpPrototype = NativeRegExp.prototype;
+var SyntaxError = globalThis.SyntaxError;
+var exec = uncurryThis(RegExpPrototype.exec);
+var charAt = uncurryThis(''.charAt);
+var replace = uncurryThis(''.replace);
+var stringIndexOf = uncurryThis(''.indexOf);
+var stringSlice = uncurryThis(''.slice);
+// TODO: Use only proper RegExpIdentifierName
+var IS_NCG = /^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/;
+var re1 = /a/g;
+var re2 = /a/g;
+
+// "new" should create a new object, old webkit bug
+var CORRECT_NEW = new NativeRegExp(re1) !== re1;
+
+var MISSED_STICKY = stickyHelpers.MISSED_STICKY;
+var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;
+
+var BASE_FORCED = DESCRIPTORS &&
+  (!CORRECT_NEW || MISSED_STICKY || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG || fails(function () {
+    re2[MATCH] = false;
+    // RegExp constructor can alter flags and IsRegExp works correct with @@match
+    // eslint-disable-next-line sonarjs/inconsistent-function-call -- required for testing
+    return NativeRegExp(re1) !== re1 || NativeRegExp(re2) === re2 || String(NativeRegExp(re1, 'i')) !== '/a/i';
+  }));
+
+var handleDotAll = function (string) {
+  var length = string.length;
+  var index = 0;
+  var result = '';
+  var brackets = false;
+  var chr;
+  for (; index <= length; index++) {
+    chr = charAt(string, index);
+    if (chr === '\\') {
+      result += chr + charAt(string, ++index);
+      continue;
+    }
+    if (!brackets && chr === '.') {
+      result += '[\\s\\S]';
+    } else {
+      if (chr === '[') {
+        brackets = true;
+      } else if (chr === ']') {
+        brackets = false;
+      } result += chr;
+    }
+  } return result;
+};
+
+var handleNCG = function (string) {
+  var length = string.length;
+  var index = 0;
+  var result = '';
+  var named = [];
+  var names = create(null);
+  var brackets = false;
+  var ncg = false;
+  var groupid = 0;
+  var groupname = '';
+  var chr;
+  for (; index <= length; index++) {
+    chr = charAt(string, index);
+    if (chr === '\\') {
+      chr += charAt(string, ++index);
+    } else if (chr === ']') {
+      brackets = false;
+    } else if (!brackets) switch (true) {
+      case chr === '[':
+        brackets = true;
+        break;
+      case chr === '(':
+        result += chr;
+        // ignore non-capturing groups
+        if (stringSlice(string, index + 1, index + 3) === '?:') {
+          continue;
+        }
+        if (exec(IS_NCG, stringSlice(string, index + 1))) {
+          index += 2;
+          ncg = true;
+        }
+        groupid++;
+        continue;
+      case chr === '>' && ncg:
+        if (groupname === '' || hasOwn(names, groupname)) {
+          throw new SyntaxError('Invalid capture group name');
+        }
+        names[groupname] = true;
+        named[named.length] = [groupname, groupid];
+        ncg = false;
+        groupname = '';
+        continue;
+    }
+    if (ncg) groupname += chr;
+    else result += chr;
+  } return [result, named];
+};
+
+// `RegExp` constructor
+// https://tc39.es/ecma262/#sec-regexp-constructor
+if (isForced('RegExp', BASE_FORCED)) {
+  var RegExpWrapper = function RegExp(pattern, flags) {
+    var thisIsRegExp = isPrototypeOf(RegExpPrototype, this);
+    var patternIsRegExp = isRegExp(pattern);
+    var flagsAreUndefined = flags === undefined;
+    var groups = [];
+    var rawPattern = pattern;
+    var rawFlags, dotAll, sticky, handled, result, state;
+
+    if (!thisIsRegExp && patternIsRegExp && flagsAreUndefined && pattern.constructor === RegExpWrapper) {
+      return pattern;
+    }
+
+    if (patternIsRegExp || isPrototypeOf(RegExpPrototype, pattern)) {
+      pattern = pattern.source;
+      if (flagsAreUndefined) flags = getRegExpFlags(rawPattern);
+    }
+
+    pattern = pattern === undefined ? '' : toString(pattern);
+    flags = flags === undefined ? '' : toString(flags);
+    rawPattern = pattern;
+
+    if (UNSUPPORTED_DOT_ALL && 'dotAll' in re1) {
+      dotAll = !!flags && stringIndexOf(flags, 's') > -1;
+      if (dotAll) flags = replace(flags, /s/g, '');
+    }
+
+    rawFlags = flags;
+
+    if (MISSED_STICKY && 'sticky' in re1) {
+      sticky = !!flags && stringIndexOf(flags, 'y') > -1;
+      if (sticky && UNSUPPORTED_Y) flags = replace(flags, /y/g, '');
+    }
+
+    if (UNSUPPORTED_NCG) {
+      handled = handleNCG(pattern);
+      pattern = handled[0];
+      groups = handled[1];
+    }
+
+    result = inheritIfRequired(NativeRegExp(pattern, flags), thisIsRegExp ? this : RegExpPrototype, RegExpWrapper);
+
+    if (dotAll || sticky || groups.length) {
+      state = enforceInternalState(result);
+      if (dotAll) {
+        state.dotAll = true;
+        state.raw = RegExpWrapper(handleDotAll(pattern), rawFlags);
+      }
+      if (sticky) state.sticky = true;
+      if (groups.length) state.groups = groups;
+    }
+
+    if (pattern !== rawPattern) try {
+      // fails in old engines, but we have no alternatives for unsupported regex syntax
+      createNonEnumerableProperty(result, 'source', rawPattern === '' ? '(?:)' : rawPattern);
+    } catch (error) { /* empty */ }
+
+    return result;
+  };
+
+  for (var keys = getOwnPropertyNames(NativeRegExp), index = 0; keys.length > index;) {
+    proxyAccessor(RegExpWrapper, NativeRegExp, keys[index++]);
+  }
+
+  RegExpPrototype.constructor = RegExpWrapper;
+  RegExpWrapper.prototype = RegExpPrototype;
+  defineBuiltIn(globalThis, 'RegExp', RegExpWrapper, { constructor: true });
+}
+
+// https://tc39.es/ecma262/#sec-get-regexp-@@species
+setSpecies('RegExp');
diff --git a/node_modules/core-js/modules/es.regexp.dot-all.js b/node_modules/core-js/modules/es.regexp.dot-all.js
new file mode 100644
index 0000000..7ad0f58
--- /dev/null
+++ b/node_modules/core-js/modules/es.regexp.dot-all.js
@@ -0,0 +1,26 @@
+'use strict';
+var DESCRIPTORS = require('../internals/descriptors');
+var UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');
+var classof = require('../internals/classof-raw');
+var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
+var getInternalState = require('../internals/internal-state').get;
+
+var RegExpPrototype = RegExp.prototype;
+var $TypeError = TypeError;
+
+// `RegExp.prototype.dotAll` getter
+// https://tc39.es/ecma262/#sec-get-regexp.prototype.dotall
+if (DESCRIPTORS && UNSUPPORTED_DOT_ALL) {
+  defineBuiltInAccessor(RegExpPrototype, 'dotAll', {
+    configurable: true,
+    get: function dotAll() {
+      if (this === RegExpPrototype) return;
+      // We can't use InternalStateModule.getterFor because
+      // we don't add metadata for regexps created by a literal.
+      if (classof(this) === 'RegExp') {
+        return !!getInternalState(this).dotAll;
+      }
+      throw new $TypeError('Incompatible receiver, RegExp required');
+    }
+  });
+}
diff --git a/node_modules/core-js/modules/es.regexp.escape.js b/node_modules/core-js/modules/es.regexp.escape.js
new file mode 100644
index 0000000..72e09d7
--- /dev/null
+++ b/node_modules/core-js/modules/es.regexp.escape.js
@@ -0,0 +1,70 @@
+'use strict';
+var $ = require('../internals/export');
+var uncurryThis = require('../internals/function-uncurry-this');
+var aString = require('../internals/a-string');
+var hasOwn = require('../internals/has-own-property');
+var padStart = require('../internals/string-pad').start;
+var WHITESPACES = require('../internals/whitespaces');
+
+var $Array = Array;
+var $escape = RegExp.escape;
+var charAt = uncurryThis(''.charAt);
+var charCodeAt = uncurryThis(''.charCodeAt);
+var numberToString = uncurryThis(1.1.toString);
+var join = uncurryThis([].join);
+var FIRST_DIGIT_OR_ASCII = /^[0-9a-z]/i;
+var SYNTAX_SOLIDUS = /^[$()*+./?[\\\]^{|}]/;
+var OTHER_PUNCTUATORS_AND_WHITESPACES = RegExp('^[!"#%&\',\\-:;<=>@`~' + WHITESPACES + ']');
+var exec = uncurryThis(FIRST_DIGIT_OR_ASCII.exec);
+
+var ControlEscape = {
+  '\u0009': 't',
+  '\u000A': 'n',
+  '\u000B': 'v',
+  '\u000C': 'f',
+  '\u000D': 'r'
+};
+
+var escapeChar = function (chr) {
+  var hex = numberToString(charCodeAt(chr, 0), 16);
+  return hex.length < 3 ? '\\x' + padStart(hex, 2, '0') : '\\u' + padStart(hex, 4, '0');
+};
+
+// Avoiding the use of polyfills of the previous iteration of this proposal
+var FORCED = !$escape || $escape('ab') !== '\\x61b';
+
+// `RegExp.escape` method
+// https://tc39.es/ecma262/#sec-regexp.escape
+$({ target: 'RegExp', stat: true, forced: FORCED }, {
+  escape: function escape(S) {
+    aString(S);
+    var length = S.length;
+    var result = $Array(length);
+
+    for (var i = 0; i < length; i++) {
+      var chr = charAt(S, i);
+      if (i === 0 && exec(FIRST_DIGIT_OR_ASCII, chr)) {
+        result[i] = escapeChar(chr);
+      } else if (hasOwn(ControlEscape, chr)) {
+        result[i] = '\\' + ControlEscape[chr];
+      } else if (exec(SYNTAX_SOLIDUS, chr)) {
+        result[i] = '\\' + chr;
+      } else if (exec(OTHER_PUNCTUATORS_AND_WHITESPACES, chr)) {
+        result[i] = escapeChar(chr);
+      } else {
+        var charCode = charCodeAt(chr, 0);
+        // single UTF-16 code unit
+        if ((charCode & 0xF800) !== 0xD800) result[i] = chr;
+        // unpaired surrogate
+        else if (charCode >= 0xDC00 || i + 1 >= length || (charCodeAt(S, i + 1) & 0xFC00) !== 0xDC00) result[i] = escapeChar(chr);
+        // surrogate pair
+        else {
+          result[i] = chr;
+          result[++i] = charAt(S, i);
+        }
+      }
+    }
+
+    return join(result, '');
+  }
+});
diff --git a/node_modules/core-js/modules/es.regexp.exec.js b/node_modules/core-js/modules/es.regexp.exec.js
new file mode 100644
index 0000000..072f2be
--- /dev/null
+++ b/node_modules/core-js/modules/es.regexp.exec.js
@@ -0,0 +1,9 @@
+'use strict';
+var $ = require('../internals/export');
+var exec = require('../internals/regexp-exec');
+
+// `RegExp.prototype.exec` method
+// https://tc39.es/ecma262/#sec-regexp.prototype.exec
+$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {
+  exec: exec
+});
diff --git a/node_modules/core-js/modules/es.regexp.flags.js b/node_modules/core-js/modules/es.regexp.flags.js
new file mode 100644
index 0000000..167dc23
--- /dev/null
+++ b/node_modules/core-js/modules/es.regexp.flags.js
@@ -0,0 +1,56 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+var DESCRIPTORS = require('../internals/descriptors');
+var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
+var regExpFlags = require('../internals/regexp-flags');
+var fails = require('../internals/fails');
+
+// babel-minify and Closure Compiler transpiles RegExp('.', 'd') -> /./d and it causes SyntaxError
+var RegExp = globalThis.RegExp;
+var RegExpPrototype = RegExp.prototype;
+
+var FORCED = DESCRIPTORS && fails(function () {
+  var INDICES_SUPPORT = true;
+  try {
+    RegExp('.', 'd');
+  } catch (error) {
+    INDICES_SUPPORT = false;
+  }
+
+  var O = {};
+  // modern V8 bug
+  var calls = '';
+  var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy';
+
+  var addGetter = function (key, chr) {
+    // eslint-disable-next-line es/no-object-defineproperty -- safe
+    Object.defineProperty(O, key, { get: function () {
+      calls += chr;
+      return true;
+    } });
+  };
+
+  var pairs = {
+    dotAll: 's',
+    global: 'g',
+    ignoreCase: 'i',
+    multiline: 'm',
+    sticky: 'y'
+  };
+
+  if (INDICES_SUPPORT) pairs.hasIndices = 'd';
+
+  for (var key in pairs) addGetter(key, pairs[key]);
+
+  // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
+  var result = Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call(O);
+
+  return result !== expected || calls !== expected;
+});
+
+// `RegExp.prototype.flags` getter
+// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags
+if (FORCED) defineBuiltInAccessor(RegExpPrototype, 'flags', {
+  configurable: true,
+  get: regExpFlags
+});
diff --git a/node_modules/core-js/modules/es.regexp.sticky.js b/node_modules/core-js/modules/es.regexp.sticky.js
new file mode 100644
index 0000000..7a7d2bd
--- /dev/null
+++ b/node_modules/core-js/modules/es.regexp.sticky.js
@@ -0,0 +1,26 @@
+'use strict';
+var DESCRIPTORS = require('../internals/descriptors');
+var MISSED_STICKY = require('../internals/regexp-sticky-helpers').MISSED_STICKY;
+var classof = require('../internals/classof-raw');
+var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
+var getInternalState = require('../internals/internal-state').get;
+
+var RegExpPrototype = RegExp.prototype;
+var $TypeError = TypeError;
+
+// `RegExp.prototype.sticky` getter
+// https://tc39.es/ecma262/#sec-get-regexp.prototype.sticky
+if (DESCRIPTORS && MISSED_STICKY) {
+  defineBuiltInAccessor(RegExpPrototype, 'sticky', {
+    configurable: true,
+    get: function sticky() {
+      if (this === RegExpPrototype) return;
+      // We can't use InternalStateModule.getterFor because
+      // we don't add metadata for regexps created by a literal.
+      if (classof(this) === 'RegExp') {
+        return !!getInternalState(this).sticky;
+      }
+      throw new $TypeError('Incompatible receiver, RegExp required');
+    }
+  });
+}
diff --git a/node_modules/core-js/modules/es.regexp.test.js b/node_modules/core-js/modules/es.regexp.test.js
new file mode 100644
index 0000000..20daaa0
--- /dev/null
+++ b/node_modules/core-js/modules/es.regexp.test.js
@@ -0,0 +1,35 @@
+'use strict';
+// TODO: Remove from `core-js@4` since it's moved to entry points
+require('../modules/es.regexp.exec');
+var $ = require('../internals/export');
+var call = require('../internals/function-call');
+var isCallable = require('../internals/is-callable');
+var anObject = require('../internals/an-object');
+var toString = require('../internals/to-string');
+
+var DELEGATES_TO_EXEC = function () {
+  var execCalled = false;
+  var re = /[ac]/;
+  re.exec = function () {
+    execCalled = true;
+    return /./.exec.apply(this, arguments);
+  };
+  return re.test('abc') === true && execCalled;
+}();
+
+var nativeTest = /./.test;
+
+// `RegExp.prototype.test` method
+// https://tc39.es/ecma262/#sec-regexp.prototype.test
+$({ target: 'RegExp', proto: true, forced: !DELEGATES_TO_EXEC }, {
+  test: function (S) {
+    var R = anObject(this);
+    var string = toString(S);
+    var exec = R.exec;
+    if (!isCallable(exec)) return call(nativeTest, R, string);
+    var result = call(exec, R, string);
+    if (result === null) return false;
+    anObject(result);
+    return true;
+  }
+});
diff --git a/node_modules/core-js/modules/es.regexp.to-string.js b/node_modules/core-js/modules/es.regexp.to-string.js
new file mode 100644
index 0000000..05c763e
--- /dev/null
+++ b/node_modules/core-js/modules/es.regexp.to-string.js
@@ -0,0 +1,26 @@
+'use strict';
+var PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;
+var defineBuiltIn = require('../internals/define-built-in');
+var anObject = require('../internals/an-object');
+var $toString = require('../internals/to-string');
+var fails = require('../internals/fails');
+var getRegExpFlags = require('../internals/regexp-get-flags');
+
+var TO_STRING = 'toString';
+var RegExpPrototype = RegExp.prototype;
+var nativeToString = RegExpPrototype[TO_STRING];
+
+var NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) !== '/a/b'; });
+// FF44- RegExp#toString has a wrong name
+var INCORRECT_NAME = PROPER_FUNCTION_NAME && nativeToString.name !== TO_STRING;
+
+// `RegExp.prototype.toString` method
+// https://tc39.es/ecma262/#sec-regexp.prototype.tostring
+if (NOT_GENERIC || INCORRECT_NAME) {
+  defineBuiltIn(RegExpPrototype, TO_STRING, function toString() {
+    var R = anObject(this);
+    var pattern = $toString(R.source);
+    var flags = $toString(getRegExpFlags(R));
+    return '/' + pattern + '/' + flags;
+  }, { unsafe: true });
+}
diff --git a/node_modules/core-js/modules/es.set.constructor.js b/node_modules/core-js/modules/es.set.constructor.js
new file mode 100644
index 0000000..a35ebe1
--- /dev/null
+++ b/node_modules/core-js/modules/es.set.constructor.js
@@ -0,0 +1,9 @@
+'use strict';
+var collection = require('../internals/collection');
+var collectionStrong = require('../internals/collection-strong');
+
+// `Set` constructor
+// https://tc39.es/ecma262/#sec-set-objects
+collection('Set', function (init) {
+  return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };
+}, collectionStrong);
diff --git a/node_modules/core-js/modules/es.set.difference.v2.js b/node_modules/core-js/modules/es.set.difference.v2.js
new file mode 100644
index 0000000..1316eb4
--- /dev/null
+++ b/node_modules/core-js/modules/es.set.difference.v2.js
@@ -0,0 +1,14 @@
+'use strict';
+var $ = require('../internals/export');
+var difference = require('../internals/set-difference');
+var setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');
+
+var INCORRECT = !setMethodAcceptSetLike('difference', function (result) {
+  return result.size === 0;
+});
+
+// `Set.prototype.difference` method
+// https://tc39.es/ecma262/#sec-set.prototype.difference
+$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {
+  difference: difference
+});
diff --git a/node_modules/core-js/modules/es.set.intersection.v2.js b/node_modules/core-js/modules/es.set.intersection.v2.js
new file mode 100644
index 0000000..e79f1c7
--- /dev/null
+++ b/node_modules/core-js/modules/es.set.intersection.v2.js
@@ -0,0 +1,18 @@
+'use strict';
+var $ = require('../internals/export');
+var fails = require('../internals/fails');
+var intersection = require('../internals/set-intersection');
+var setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');
+
+var INCORRECT = !setMethodAcceptSetLike('intersection', function (result) {
+  return result.size === 2 && result.has(1) && result.has(2);
+}) || fails(function () {
+  // eslint-disable-next-line es/no-array-from, es/no-set, es/no-set-prototype-intersection -- testing
+  return String(Array.from(new Set([1, 2, 3]).intersection(new Set([3, 2])))) !== '3,2';
+});
+
+// `Set.prototype.intersection` method
+// https://tc39.es/ecma262/#sec-set.prototype.intersection
+$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {
+  intersection: intersection
+});
diff --git a/node_modules/core-js/modules/es.set.is-disjoint-from.v2.js b/node_modules/core-js/modules/es.set.is-disjoint-from.v2.js
new file mode 100644
index 0000000..b68fe55
--- /dev/null
+++ b/node_modules/core-js/modules/es.set.is-disjoint-from.v2.js
@@ -0,0 +1,14 @@
+'use strict';
+var $ = require('../internals/export');
+var isDisjointFrom = require('../internals/set-is-disjoint-from');
+var setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');
+
+var INCORRECT = !setMethodAcceptSetLike('isDisjointFrom', function (result) {
+  return !result;
+});
+
+// `Set.prototype.isDisjointFrom` method
+// https://tc39.es/ecma262/#sec-set.prototype.isdisjointfrom
+$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {
+  isDisjointFrom: isDisjointFrom
+});
diff --git a/node_modules/core-js/modules/es.set.is-subset-of.v2.js b/node_modules/core-js/modules/es.set.is-subset-of.v2.js
new file mode 100644
index 0000000..3117f01
--- /dev/null
+++ b/node_modules/core-js/modules/es.set.is-subset-of.v2.js
@@ -0,0 +1,14 @@
+'use strict';
+var $ = require('../internals/export');
+var isSubsetOf = require('../internals/set-is-subset-of');
+var setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');
+
+var INCORRECT = !setMethodAcceptSetLike('isSubsetOf', function (result) {
+  return result;
+});
+
+// `Set.prototype.isSubsetOf` method
+// https://tc39.es/ecma262/#sec-set.prototype.issubsetof
+$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {
+  isSubsetOf: isSubsetOf
+});
diff --git a/node_modules/core-js/modules/es.set.is-superset-of.v2.js b/node_modules/core-js/modules/es.set.is-superset-of.v2.js
new file mode 100644
index 0000000..2d47461
--- /dev/null
+++ b/node_modules/core-js/modules/es.set.is-superset-of.v2.js
@@ -0,0 +1,14 @@
+'use strict';
+var $ = require('../internals/export');
+var isSupersetOf = require('../internals/set-is-superset-of');
+var setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');
+
+var INCORRECT = !setMethodAcceptSetLike('isSupersetOf', function (result) {
+  return !result;
+});
+
+// `Set.prototype.isSupersetOf` method
+// https://tc39.es/ecma262/#sec-set.prototype.issupersetof
+$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {
+  isSupersetOf: isSupersetOf
+});
diff --git a/node_modules/core-js/modules/es.set.js b/node_modules/core-js/modules/es.set.js
new file mode 100644
index 0000000..ff66f70
--- /dev/null
+++ b/node_modules/core-js/modules/es.set.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove this module from `core-js@4` since it's replaced to module below
+require('../modules/es.set.constructor');
diff --git a/node_modules/core-js/modules/es.set.symmetric-difference.v2.js b/node_modules/core-js/modules/es.set.symmetric-difference.v2.js
new file mode 100644
index 0000000..fa4df60
--- /dev/null
+++ b/node_modules/core-js/modules/es.set.symmetric-difference.v2.js
@@ -0,0 +1,10 @@
+'use strict';
+var $ = require('../internals/export');
+var symmetricDifference = require('../internals/set-symmetric-difference');
+var setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');
+
+// `Set.prototype.symmetricDifference` method
+// https://tc39.es/ecma262/#sec-set.prototype.symmetricdifference
+$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('symmetricDifference') }, {
+  symmetricDifference: symmetricDifference
+});
diff --git a/node_modules/core-js/modules/es.set.union.v2.js b/node_modules/core-js/modules/es.set.union.v2.js
new file mode 100644
index 0000000..c184a5b
--- /dev/null
+++ b/node_modules/core-js/modules/es.set.union.v2.js
@@ -0,0 +1,10 @@
+'use strict';
+var $ = require('../internals/export');
+var union = require('../internals/set-union');
+var setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');
+
+// `Set.prototype.union` method
+// https://tc39.es/ecma262/#sec-set.prototype.union
+$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('union') }, {
+  union: union
+});
diff --git a/node_modules/core-js/modules/es.string.anchor.js b/node_modules/core-js/modules/es.string.anchor.js
new file mode 100644
index 0000000..9c0f0da
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.anchor.js
@@ -0,0 +1,12 @@
+'use strict';
+var $ = require('../internals/export');
+var createHTML = require('../internals/create-html');
+var forcedStringHTMLMethod = require('../internals/string-html-forced');
+
+// `String.prototype.anchor` method
+// https://tc39.es/ecma262/#sec-string.prototype.anchor
+$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('anchor') }, {
+  anchor: function anchor(name) {
+    return createHTML(this, 'a', 'name', name);
+  }
+});
diff --git a/node_modules/core-js/modules/es.string.at-alternative.js b/node_modules/core-js/modules/es.string.at-alternative.js
new file mode 100644
index 0000000..b7b99a7
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.at-alternative.js
@@ -0,0 +1,26 @@
+'use strict';
+var $ = require('../internals/export');
+var uncurryThis = require('../internals/function-uncurry-this');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
+var toString = require('../internals/to-string');
+var fails = require('../internals/fails');
+
+var charAt = uncurryThis(''.charAt);
+
+var FORCED = fails(function () {
+  // eslint-disable-next-line es/no-string-prototype-at -- safe
+  return '𠮷'.at(-2) !== '\uD842';
+});
+
+// `String.prototype.at` method
+// https://tc39.es/ecma262/#sec-string.prototype.at
+$({ target: 'String', proto: true, forced: FORCED }, {
+  at: function at(index) {
+    var S = toString(requireObjectCoercible(this));
+    var len = S.length;
+    var relativeIndex = toIntegerOrInfinity(index);
+    var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;
+    return (k < 0 || k >= len) ? undefined : charAt(S, k);
+  }
+});
diff --git a/node_modules/core-js/modules/es.string.big.js b/node_modules/core-js/modules/es.string.big.js
new file mode 100644
index 0000000..478a31c
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.big.js
@@ -0,0 +1,12 @@
+'use strict';
+var $ = require('../internals/export');
+var createHTML = require('../internals/create-html');
+var forcedStringHTMLMethod = require('../internals/string-html-forced');
+
+// `String.prototype.big` method
+// https://tc39.es/ecma262/#sec-string.prototype.big
+$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('big') }, {
+  big: function big() {
+    return createHTML(this, 'big', '', '');
+  }
+});
diff --git a/node_modules/core-js/modules/es.string.blink.js b/node_modules/core-js/modules/es.string.blink.js
new file mode 100644
index 0000000..2599a0f
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.blink.js
@@ -0,0 +1,12 @@
+'use strict';
+var $ = require('../internals/export');
+var createHTML = require('../internals/create-html');
+var forcedStringHTMLMethod = require('../internals/string-html-forced');
+
+// `String.prototype.blink` method
+// https://tc39.es/ecma262/#sec-string.prototype.blink
+$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('blink') }, {
+  blink: function blink() {
+    return createHTML(this, 'blink', '', '');
+  }
+});
diff --git a/node_modules/core-js/modules/es.string.bold.js b/node_modules/core-js/modules/es.string.bold.js
new file mode 100644
index 0000000..ed15e72
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.bold.js
@@ -0,0 +1,12 @@
+'use strict';
+var $ = require('../internals/export');
+var createHTML = require('../internals/create-html');
+var forcedStringHTMLMethod = require('../internals/string-html-forced');
+
+// `String.prototype.bold` method
+// https://tc39.es/ecma262/#sec-string.prototype.bold
+$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('bold') }, {
+  bold: function bold() {
+    return createHTML(this, 'b', '', '');
+  }
+});
diff --git a/node_modules/core-js/modules/es.string.code-point-at.js b/node_modules/core-js/modules/es.string.code-point-at.js
new file mode 100644
index 0000000..927e413
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.code-point-at.js
@@ -0,0 +1,11 @@
+'use strict';
+var $ = require('../internals/export');
+var codeAt = require('../internals/string-multibyte').codeAt;
+
+// `String.prototype.codePointAt` method
+// https://tc39.es/ecma262/#sec-string.prototype.codepointat
+$({ target: 'String', proto: true }, {
+  codePointAt: function codePointAt(pos) {
+    return codeAt(this, pos);
+  }
+});
diff --git a/node_modules/core-js/modules/es.string.ends-with.js b/node_modules/core-js/modules/es.string.ends-with.js
new file mode 100644
index 0000000..04913f8
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.ends-with.js
@@ -0,0 +1,34 @@
+'use strict';
+var $ = require('../internals/export');
+var uncurryThis = require('../internals/function-uncurry-this-clause');
+var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;
+var toLength = require('../internals/to-length');
+var toString = require('../internals/to-string');
+var notARegExp = require('../internals/not-a-regexp');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+var correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');
+var IS_PURE = require('../internals/is-pure');
+
+var slice = uncurryThis(''.slice);
+var min = Math.min;
+
+var CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');
+// https://github.com/zloirock/core-js/pull/702
+var MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {
+  var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');
+  return descriptor && !descriptor.writable;
+}();
+
+// `String.prototype.endsWith` method
+// https://tc39.es/ecma262/#sec-string.prototype.endswith
+$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {
+  endsWith: function endsWith(searchString /* , endPosition = @length */) {
+    var that = toString(requireObjectCoercible(this));
+    notARegExp(searchString);
+    var endPosition = arguments.length > 1 ? arguments[1] : undefined;
+    var len = that.length;
+    var end = endPosition === undefined ? len : min(toLength(endPosition), len);
+    var search = toString(searchString);
+    return slice(that, end - search.length, end) === search;
+  }
+});
diff --git a/node_modules/core-js/modules/es.string.fixed.js b/node_modules/core-js/modules/es.string.fixed.js
new file mode 100644
index 0000000..9f9b87d
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.fixed.js
@@ -0,0 +1,12 @@
+'use strict';
+var $ = require('../internals/export');
+var createHTML = require('../internals/create-html');
+var forcedStringHTMLMethod = require('../internals/string-html-forced');
+
+// `String.prototype.fixed` method
+// https://tc39.es/ecma262/#sec-string.prototype.fixed
+$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fixed') }, {
+  fixed: function fixed() {
+    return createHTML(this, 'tt', '', '');
+  }
+});
diff --git a/node_modules/core-js/modules/es.string.fontcolor.js b/node_modules/core-js/modules/es.string.fontcolor.js
new file mode 100644
index 0000000..f96ebb4
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.fontcolor.js
@@ -0,0 +1,12 @@
+'use strict';
+var $ = require('../internals/export');
+var createHTML = require('../internals/create-html');
+var forcedStringHTMLMethod = require('../internals/string-html-forced');
+
+// `String.prototype.fontcolor` method
+// https://tc39.es/ecma262/#sec-string.prototype.fontcolor
+$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fontcolor') }, {
+  fontcolor: function fontcolor(color) {
+    return createHTML(this, 'font', 'color', color);
+  }
+});
diff --git a/node_modules/core-js/modules/es.string.fontsize.js b/node_modules/core-js/modules/es.string.fontsize.js
new file mode 100644
index 0000000..e576046
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.fontsize.js
@@ -0,0 +1,12 @@
+'use strict';
+var $ = require('../internals/export');
+var createHTML = require('../internals/create-html');
+var forcedStringHTMLMethod = require('../internals/string-html-forced');
+
+// `String.prototype.fontsize` method
+// https://tc39.es/ecma262/#sec-string.prototype.fontsize
+$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fontsize') }, {
+  fontsize: function fontsize(size) {
+    return createHTML(this, 'font', 'size', size);
+  }
+});
diff --git a/node_modules/core-js/modules/es.string.from-code-point.js b/node_modules/core-js/modules/es.string.from-code-point.js
new file mode 100644
index 0000000..112f39a
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.from-code-point.js
@@ -0,0 +1,32 @@
+'use strict';
+var $ = require('../internals/export');
+var uncurryThis = require('../internals/function-uncurry-this');
+var toAbsoluteIndex = require('../internals/to-absolute-index');
+
+var $RangeError = RangeError;
+var fromCharCode = String.fromCharCode;
+// eslint-disable-next-line es/no-string-fromcodepoint -- required for testing
+var $fromCodePoint = String.fromCodePoint;
+var join = uncurryThis([].join);
+
+// length should be 1, old FF problem
+var INCORRECT_LENGTH = !!$fromCodePoint && $fromCodePoint.length !== 1;
+
+// `String.fromCodePoint` method
+// https://tc39.es/ecma262/#sec-string.fromcodepoint
+$({ target: 'String', stat: true, arity: 1, forced: INCORRECT_LENGTH }, {
+  // eslint-disable-next-line no-unused-vars -- required for `.length`
+  fromCodePoint: function fromCodePoint(x) {
+    var elements = [];
+    var length = arguments.length;
+    var i = 0;
+    var code;
+    while (length > i) {
+      code = +arguments[i++];
+      if (toAbsoluteIndex(code, 0x10FFFF) !== code) throw new $RangeError(code + ' is not a valid code point');
+      elements[i] = code < 0x10000
+        ? fromCharCode(code)
+        : fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00);
+    } return join(elements, '');
+  }
+});
diff --git a/node_modules/core-js/modules/es.string.includes.js b/node_modules/core-js/modules/es.string.includes.js
new file mode 100644
index 0000000..22afdca
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.includes.js
@@ -0,0 +1,21 @@
+'use strict';
+var $ = require('../internals/export');
+var uncurryThis = require('../internals/function-uncurry-this');
+var notARegExp = require('../internals/not-a-regexp');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+var toString = require('../internals/to-string');
+var correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');
+
+var stringIndexOf = uncurryThis(''.indexOf);
+
+// `String.prototype.includes` method
+// https://tc39.es/ecma262/#sec-string.prototype.includes
+$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {
+  includes: function includes(searchString /* , position = 0 */) {
+    return !!~stringIndexOf(
+      toString(requireObjectCoercible(this)),
+      toString(notARegExp(searchString)),
+      arguments.length > 1 ? arguments[1] : undefined
+    );
+  }
+});
diff --git a/node_modules/core-js/modules/es.string.is-well-formed.js b/node_modules/core-js/modules/es.string.is-well-formed.js
new file mode 100644
index 0000000..7698440
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.is-well-formed.js
@@ -0,0 +1,23 @@
+'use strict';
+var $ = require('../internals/export');
+var uncurryThis = require('../internals/function-uncurry-this');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+var toString = require('../internals/to-string');
+
+var charCodeAt = uncurryThis(''.charCodeAt);
+
+// `String.prototype.isWellFormed` method
+// https://tc39.es/ecma262/#sec-string.prototype.iswellformed
+$({ target: 'String', proto: true }, {
+  isWellFormed: function isWellFormed() {
+    var S = toString(requireObjectCoercible(this));
+    var length = S.length;
+    for (var i = 0; i < length; i++) {
+      var charCode = charCodeAt(S, i);
+      // single UTF-16 code unit
+      if ((charCode & 0xF800) !== 0xD800) continue;
+      // unpaired surrogate
+      if (charCode >= 0xDC00 || ++i >= length || (charCodeAt(S, i) & 0xFC00) !== 0xDC00) return false;
+    } return true;
+  }
+});
diff --git a/node_modules/core-js/modules/es.string.italics.js b/node_modules/core-js/modules/es.string.italics.js
new file mode 100644
index 0000000..fca5e06
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.italics.js
@@ -0,0 +1,12 @@
+'use strict';
+var $ = require('../internals/export');
+var createHTML = require('../internals/create-html');
+var forcedStringHTMLMethod = require('../internals/string-html-forced');
+
+// `String.prototype.italics` method
+// https://tc39.es/ecma262/#sec-string.prototype.italics
+$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('italics') }, {
+  italics: function italics() {
+    return createHTML(this, 'i', '', '');
+  }
+});
diff --git a/node_modules/core-js/modules/es.string.iterator.js b/node_modules/core-js/modules/es.string.iterator.js
new file mode 100644
index 0000000..cfd486c
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.iterator.js
@@ -0,0 +1,31 @@
+'use strict';
+var charAt = require('../internals/string-multibyte').charAt;
+var toString = require('../internals/to-string');
+var InternalStateModule = require('../internals/internal-state');
+var defineIterator = require('../internals/iterator-define');
+var createIterResultObject = require('../internals/create-iter-result-object');
+
+var STRING_ITERATOR = 'String Iterator';
+var setInternalState = InternalStateModule.set;
+var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);
+
+// `String.prototype[@@iterator]` method
+// https://tc39.es/ecma262/#sec-string.prototype-@@iterator
+defineIterator(String, 'String', function (iterated) {
+  setInternalState(this, {
+    type: STRING_ITERATOR,
+    string: toString(iterated),
+    index: 0
+  });
+// `%StringIteratorPrototype%.next` method
+// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next
+}, function next() {
+  var state = getInternalState(this);
+  var string = state.string;
+  var index = state.index;
+  var point;
+  if (index >= string.length) return createIterResultObject(undefined, true);
+  point = charAt(string, index);
+  state.index += point.length;
+  return createIterResultObject(point, false);
+});
diff --git a/node_modules/core-js/modules/es.string.link.js b/node_modules/core-js/modules/es.string.link.js
new file mode 100644
index 0000000..0d12891
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.link.js
@@ -0,0 +1,12 @@
+'use strict';
+var $ = require('../internals/export');
+var createHTML = require('../internals/create-html');
+var forcedStringHTMLMethod = require('../internals/string-html-forced');
+
+// `String.prototype.link` method
+// https://tc39.es/ecma262/#sec-string.prototype.link
+$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('link') }, {
+  link: function link(url) {
+    return createHTML(this, 'a', 'href', url);
+  }
+});
diff --git a/node_modules/core-js/modules/es.string.match-all.js b/node_modules/core-js/modules/es.string.match-all.js
new file mode 100644
index 0000000..3d1cce1
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.match-all.js
@@ -0,0 +1,102 @@
+'use strict';
+/* eslint-disable es/no-string-prototype-matchall -- safe */
+var $ = require('../internals/export');
+var call = require('../internals/function-call');
+var uncurryThis = require('../internals/function-uncurry-this-clause');
+var createIteratorConstructor = require('../internals/iterator-create-constructor');
+var createIterResultObject = require('../internals/create-iter-result-object');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+var toLength = require('../internals/to-length');
+var toString = require('../internals/to-string');
+var anObject = require('../internals/an-object');
+var isNullOrUndefined = require('../internals/is-null-or-undefined');
+var classof = require('../internals/classof-raw');
+var isRegExp = require('../internals/is-regexp');
+var getRegExpFlags = require('../internals/regexp-get-flags');
+var getMethod = require('../internals/get-method');
+var defineBuiltIn = require('../internals/define-built-in');
+var fails = require('../internals/fails');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var speciesConstructor = require('../internals/species-constructor');
+var advanceStringIndex = require('../internals/advance-string-index');
+var regExpExec = require('../internals/regexp-exec-abstract');
+var InternalStateModule = require('../internals/internal-state');
+var IS_PURE = require('../internals/is-pure');
+
+var MATCH_ALL = wellKnownSymbol('matchAll');
+var REGEXP_STRING = 'RegExp String';
+var REGEXP_STRING_ITERATOR = REGEXP_STRING + ' Iterator';
+var setInternalState = InternalStateModule.set;
+var getInternalState = InternalStateModule.getterFor(REGEXP_STRING_ITERATOR);
+var RegExpPrototype = RegExp.prototype;
+var $TypeError = TypeError;
+var stringIndexOf = uncurryThis(''.indexOf);
+var nativeMatchAll = uncurryThis(''.matchAll);
+
+var WORKS_WITH_NON_GLOBAL_REGEX = !!nativeMatchAll && !fails(function () {
+  nativeMatchAll('a', /./);
+});
+
+var $RegExpStringIterator = createIteratorConstructor(function RegExpStringIterator(regexp, string, $global, fullUnicode) {
+  setInternalState(this, {
+    type: REGEXP_STRING_ITERATOR,
+    regexp: regexp,
+    string: string,
+    global: $global,
+    unicode: fullUnicode,
+    done: false
+  });
+}, REGEXP_STRING, function next() {
+  var state = getInternalState(this);
+  if (state.done) return createIterResultObject(undefined, true);
+  var R = state.regexp;
+  var S = state.string;
+  var match = regExpExec(R, S);
+  if (match === null) {
+    state.done = true;
+    return createIterResultObject(undefined, true);
+  }
+  if (state.global) {
+    if (toString(match[0]) === '') R.lastIndex = advanceStringIndex(S, toLength(R.lastIndex), state.unicode);
+    return createIterResultObject(match, false);
+  }
+  state.done = true;
+  return createIterResultObject(match, false);
+});
+
+var $matchAll = function (string) {
+  var R = anObject(this);
+  var S = toString(string);
+  var C = speciesConstructor(R, RegExp);
+  var flags = toString(getRegExpFlags(R));
+  var matcher, $global, fullUnicode;
+  matcher = new C(C === RegExp ? R.source : R, flags);
+  $global = !!~stringIndexOf(flags, 'g');
+  fullUnicode = !!~stringIndexOf(flags, 'u');
+  matcher.lastIndex = toLength(R.lastIndex);
+  return new $RegExpStringIterator(matcher, S, $global, fullUnicode);
+};
+
+// `String.prototype.matchAll` method
+// https://tc39.es/ecma262/#sec-string.prototype.matchall
+$({ target: 'String', proto: true, forced: WORKS_WITH_NON_GLOBAL_REGEX }, {
+  matchAll: function matchAll(regexp) {
+    var O = requireObjectCoercible(this);
+    var flags, S, matcher, rx;
+    if (!isNullOrUndefined(regexp)) {
+      if (isRegExp(regexp)) {
+        flags = toString(requireObjectCoercible(getRegExpFlags(regexp)));
+        if (!~stringIndexOf(flags, 'g')) throw new $TypeError('`.matchAll` does not allow non-global regexes');
+      }
+      if (WORKS_WITH_NON_GLOBAL_REGEX) return nativeMatchAll(O, regexp);
+      matcher = getMethod(regexp, MATCH_ALL);
+      if (matcher === undefined && IS_PURE && classof(regexp) === 'RegExp') matcher = $matchAll;
+      if (matcher) return call(matcher, regexp, O);
+    } else if (WORKS_WITH_NON_GLOBAL_REGEX) return nativeMatchAll(O, regexp);
+    S = toString(O);
+    rx = new RegExp(regexp, 'g');
+    return IS_PURE ? call($matchAll, rx, S) : rx[MATCH_ALL](S);
+  }
+});
+
+IS_PURE || MATCH_ALL in RegExpPrototype || defineBuiltIn(RegExpPrototype, MATCH_ALL, $matchAll);
diff --git a/node_modules/core-js/modules/es.string.match.js b/node_modules/core-js/modules/es.string.match.js
new file mode 100644
index 0000000..354c40f
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.match.js
@@ -0,0 +1,48 @@
+'use strict';
+var call = require('../internals/function-call');
+var fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');
+var anObject = require('../internals/an-object');
+var isNullOrUndefined = require('../internals/is-null-or-undefined');
+var toLength = require('../internals/to-length');
+var toString = require('../internals/to-string');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+var getMethod = require('../internals/get-method');
+var advanceStringIndex = require('../internals/advance-string-index');
+var regExpExec = require('../internals/regexp-exec-abstract');
+
+// @@match logic
+fixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {
+  return [
+    // `String.prototype.match` method
+    // https://tc39.es/ecma262/#sec-string.prototype.match
+    function match(regexp) {
+      var O = requireObjectCoercible(this);
+      var matcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, MATCH);
+      return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));
+    },
+    // `RegExp.prototype[@@match]` method
+    // https://tc39.es/ecma262/#sec-regexp.prototype-@@match
+    function (string) {
+      var rx = anObject(this);
+      var S = toString(string);
+      var res = maybeCallNative(nativeMatch, rx, S);
+
+      if (res.done) return res.value;
+
+      if (!rx.global) return regExpExec(rx, S);
+
+      var fullUnicode = rx.unicode;
+      rx.lastIndex = 0;
+      var A = [];
+      var n = 0;
+      var result;
+      while ((result = regExpExec(rx, S)) !== null) {
+        var matchStr = toString(result[0]);
+        A[n] = matchStr;
+        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
+        n++;
+      }
+      return n === 0 ? null : A;
+    }
+  ];
+});
diff --git a/node_modules/core-js/modules/es.string.pad-end.js b/node_modules/core-js/modules/es.string.pad-end.js
new file mode 100644
index 0000000..f770a85
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.pad-end.js
@@ -0,0 +1,12 @@
+'use strict';
+var $ = require('../internals/export');
+var $padEnd = require('../internals/string-pad').end;
+var WEBKIT_BUG = require('../internals/string-pad-webkit-bug');
+
+// `String.prototype.padEnd` method
+// https://tc39.es/ecma262/#sec-string.prototype.padend
+$({ target: 'String', proto: true, forced: WEBKIT_BUG }, {
+  padEnd: function padEnd(maxLength /* , fillString = ' ' */) {
+    return $padEnd(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);
+  }
+});
diff --git a/node_modules/core-js/modules/es.string.pad-start.js b/node_modules/core-js/modules/es.string.pad-start.js
new file mode 100644
index 0000000..d213b46
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.pad-start.js
@@ -0,0 +1,12 @@
+'use strict';
+var $ = require('../internals/export');
+var $padStart = require('../internals/string-pad').start;
+var WEBKIT_BUG = require('../internals/string-pad-webkit-bug');
+
+// `String.prototype.padStart` method
+// https://tc39.es/ecma262/#sec-string.prototype.padstart
+$({ target: 'String', proto: true, forced: WEBKIT_BUG }, {
+  padStart: function padStart(maxLength /* , fillString = ' ' */) {
+    return $padStart(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);
+  }
+});
diff --git a/node_modules/core-js/modules/es.string.raw.js b/node_modules/core-js/modules/es.string.raw.js
new file mode 100644
index 0000000..65ed7c8
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.raw.js
@@ -0,0 +1,28 @@
+'use strict';
+var $ = require('../internals/export');
+var uncurryThis = require('../internals/function-uncurry-this');
+var toIndexedObject = require('../internals/to-indexed-object');
+var toObject = require('../internals/to-object');
+var toString = require('../internals/to-string');
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+
+var push = uncurryThis([].push);
+var join = uncurryThis([].join);
+
+// `String.raw` method
+// https://tc39.es/ecma262/#sec-string.raw
+$({ target: 'String', stat: true }, {
+  raw: function raw(template) {
+    var rawTemplate = toIndexedObject(toObject(template).raw);
+    var literalSegments = lengthOfArrayLike(rawTemplate);
+    if (!literalSegments) return '';
+    var argumentsLength = arguments.length;
+    var elements = [];
+    var i = 0;
+    while (true) {
+      push(elements, toString(rawTemplate[i++]));
+      if (i === literalSegments) return join(elements, '');
+      if (i < argumentsLength) push(elements, toString(arguments[i]));
+    }
+  }
+});
diff --git a/node_modules/core-js/modules/es.string.repeat.js b/node_modules/core-js/modules/es.string.repeat.js
new file mode 100644
index 0000000..7ec1c2b
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.repeat.js
@@ -0,0 +1,9 @@
+'use strict';
+var $ = require('../internals/export');
+var repeat = require('../internals/string-repeat');
+
+// `String.prototype.repeat` method
+// https://tc39.es/ecma262/#sec-string.prototype.repeat
+$({ target: 'String', proto: true }, {
+  repeat: repeat
+});
diff --git a/node_modules/core-js/modules/es.string.replace-all.js b/node_modules/core-js/modules/es.string.replace-all.js
new file mode 100644
index 0000000..6904d7f
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.replace-all.js
@@ -0,0 +1,61 @@
+'use strict';
+var $ = require('../internals/export');
+var call = require('../internals/function-call');
+var uncurryThis = require('../internals/function-uncurry-this');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+var isCallable = require('../internals/is-callable');
+var isNullOrUndefined = require('../internals/is-null-or-undefined');
+var isRegExp = require('../internals/is-regexp');
+var toString = require('../internals/to-string');
+var getMethod = require('../internals/get-method');
+var getRegExpFlags = require('../internals/regexp-get-flags');
+var getSubstitution = require('../internals/get-substitution');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var IS_PURE = require('../internals/is-pure');
+
+var REPLACE = wellKnownSymbol('replace');
+var $TypeError = TypeError;
+var indexOf = uncurryThis(''.indexOf);
+var replace = uncurryThis(''.replace);
+var stringSlice = uncurryThis(''.slice);
+var max = Math.max;
+
+// `String.prototype.replaceAll` method
+// https://tc39.es/ecma262/#sec-string.prototype.replaceall
+$({ target: 'String', proto: true }, {
+  replaceAll: function replaceAll(searchValue, replaceValue) {
+    var O = requireObjectCoercible(this);
+    var IS_REG_EXP, flags, replacer, string, searchString, functionalReplace, searchLength, advanceBy, position, replacement;
+    var endOfLastMatch = 0;
+    var result = '';
+    if (!isNullOrUndefined(searchValue)) {
+      IS_REG_EXP = isRegExp(searchValue);
+      if (IS_REG_EXP) {
+        flags = toString(requireObjectCoercible(getRegExpFlags(searchValue)));
+        if (!~indexOf(flags, 'g')) throw new $TypeError('`.replaceAll` does not allow non-global regexes');
+      }
+      replacer = getMethod(searchValue, REPLACE);
+      if (replacer) return call(replacer, searchValue, O, replaceValue);
+      if (IS_PURE && IS_REG_EXP) return replace(toString(O), searchValue, replaceValue);
+    }
+    string = toString(O);
+    searchString = toString(searchValue);
+    functionalReplace = isCallable(replaceValue);
+    if (!functionalReplace) replaceValue = toString(replaceValue);
+    searchLength = searchString.length;
+    advanceBy = max(1, searchLength);
+    position = indexOf(string, searchString);
+    while (position !== -1) {
+      replacement = functionalReplace
+        ? toString(replaceValue(searchString, position, string))
+        : getSubstitution(searchString, string, position, [], undefined, replaceValue);
+      result += stringSlice(string, endOfLastMatch, position) + replacement;
+      endOfLastMatch = position + searchLength;
+      position = position + advanceBy > string.length ? -1 : indexOf(string, searchString, position + advanceBy);
+    }
+    if (endOfLastMatch < string.length) {
+      result += stringSlice(string, endOfLastMatch);
+    }
+    return result;
+  }
+});
diff --git a/node_modules/core-js/modules/es.string.replace.js b/node_modules/core-js/modules/es.string.replace.js
new file mode 100644
index 0000000..c3b8c65
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.replace.js
@@ -0,0 +1,142 @@
+'use strict';
+var apply = require('../internals/function-apply');
+var call = require('../internals/function-call');
+var uncurryThis = require('../internals/function-uncurry-this');
+var fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');
+var fails = require('../internals/fails');
+var anObject = require('../internals/an-object');
+var isCallable = require('../internals/is-callable');
+var isNullOrUndefined = require('../internals/is-null-or-undefined');
+var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
+var toLength = require('../internals/to-length');
+var toString = require('../internals/to-string');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+var advanceStringIndex = require('../internals/advance-string-index');
+var getMethod = require('../internals/get-method');
+var getSubstitution = require('../internals/get-substitution');
+var regExpExec = require('../internals/regexp-exec-abstract');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+var REPLACE = wellKnownSymbol('replace');
+var max = Math.max;
+var min = Math.min;
+var concat = uncurryThis([].concat);
+var push = uncurryThis([].push);
+var stringIndexOf = uncurryThis(''.indexOf);
+var stringSlice = uncurryThis(''.slice);
+
+var maybeToString = function (it) {
+  return it === undefined ? it : String(it);
+};
+
+// IE <= 11 replaces $0 with the whole match, as if it was $&
+// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0
+var REPLACE_KEEPS_$0 = (function () {
+  // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing
+  return 'a'.replace(/./, '$0') === '$0';
+})();
+
+// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string
+var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {
+  if (/./[REPLACE]) {
+    return /./[REPLACE]('a', '$0') === '';
+  }
+  return false;
+})();
+
+var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {
+  var re = /./;
+  re.exec = function () {
+    var result = [];
+    result.groups = { a: '7' };
+    return result;
+  };
+  // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive
+  return ''.replace(re, '$<a>') !== '7';
+});
+
+// @@replace logic
+fixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {
+  var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';
+
+  return [
+    // `String.prototype.replace` method
+    // https://tc39.es/ecma262/#sec-string.prototype.replace
+    function replace(searchValue, replaceValue) {
+      var O = requireObjectCoercible(this);
+      var replacer = isNullOrUndefined(searchValue) ? undefined : getMethod(searchValue, REPLACE);
+      return replacer
+        ? call(replacer, searchValue, O, replaceValue)
+        : call(nativeReplace, toString(O), searchValue, replaceValue);
+    },
+    // `RegExp.prototype[@@replace]` method
+    // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace
+    function (string, replaceValue) {
+      var rx = anObject(this);
+      var S = toString(string);
+
+      if (
+        typeof replaceValue == 'string' &&
+        stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 &&
+        stringIndexOf(replaceValue, '$<') === -1
+      ) {
+        var res = maybeCallNative(nativeReplace, rx, S, replaceValue);
+        if (res.done) return res.value;
+      }
+
+      var functionalReplace = isCallable(replaceValue);
+      if (!functionalReplace) replaceValue = toString(replaceValue);
+
+      var global = rx.global;
+      var fullUnicode;
+      if (global) {
+        fullUnicode = rx.unicode;
+        rx.lastIndex = 0;
+      }
+
+      var results = [];
+      var result;
+      while (true) {
+        result = regExpExec(rx, S);
+        if (result === null) break;
+
+        push(results, result);
+        if (!global) break;
+
+        var matchStr = toString(result[0]);
+        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
+      }
+
+      var accumulatedResult = '';
+      var nextSourcePosition = 0;
+      for (var i = 0; i < results.length; i++) {
+        result = results[i];
+
+        var matched = toString(result[0]);
+        var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);
+        var captures = [];
+        var replacement;
+        // NOTE: This is equivalent to
+        //   captures = result.slice(1).map(maybeToString)
+        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in
+        // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and
+        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.
+        for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j]));
+        var namedCaptures = result.groups;
+        if (functionalReplace) {
+          var replacerArgs = concat([matched], captures, position, S);
+          if (namedCaptures !== undefined) push(replacerArgs, namedCaptures);
+          replacement = toString(apply(replaceValue, undefined, replacerArgs));
+        } else {
+          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);
+        }
+        if (position >= nextSourcePosition) {
+          accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement;
+          nextSourcePosition = position + matched.length;
+        }
+      }
+
+      return accumulatedResult + stringSlice(S, nextSourcePosition);
+    }
+  ];
+}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);
diff --git a/node_modules/core-js/modules/es.string.search.js b/node_modules/core-js/modules/es.string.search.js
new file mode 100644
index 0000000..17bf7ba
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.search.js
@@ -0,0 +1,38 @@
+'use strict';
+var call = require('../internals/function-call');
+var fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');
+var anObject = require('../internals/an-object');
+var isNullOrUndefined = require('../internals/is-null-or-undefined');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+var sameValue = require('../internals/same-value');
+var toString = require('../internals/to-string');
+var getMethod = require('../internals/get-method');
+var regExpExec = require('../internals/regexp-exec-abstract');
+
+// @@search logic
+fixRegExpWellKnownSymbolLogic('search', function (SEARCH, nativeSearch, maybeCallNative) {
+  return [
+    // `String.prototype.search` method
+    // https://tc39.es/ecma262/#sec-string.prototype.search
+    function search(regexp) {
+      var O = requireObjectCoercible(this);
+      var searcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, SEARCH);
+      return searcher ? call(searcher, regexp, O) : new RegExp(regexp)[SEARCH](toString(O));
+    },
+    // `RegExp.prototype[@@search]` method
+    // https://tc39.es/ecma262/#sec-regexp.prototype-@@search
+    function (string) {
+      var rx = anObject(this);
+      var S = toString(string);
+      var res = maybeCallNative(nativeSearch, rx, S);
+
+      if (res.done) return res.value;
+
+      var previousLastIndex = rx.lastIndex;
+      if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;
+      var result = regExpExec(rx, S);
+      if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;
+      return result === null ? -1 : result.index;
+    }
+  ];
+});
diff --git a/node_modules/core-js/modules/es.string.small.js b/node_modules/core-js/modules/es.string.small.js
new file mode 100644
index 0000000..ab9f665
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.small.js
@@ -0,0 +1,12 @@
+'use strict';
+var $ = require('../internals/export');
+var createHTML = require('../internals/create-html');
+var forcedStringHTMLMethod = require('../internals/string-html-forced');
+
+// `String.prototype.small` method
+// https://tc39.es/ecma262/#sec-string.prototype.small
+$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('small') }, {
+  small: function small() {
+    return createHTML(this, 'small', '', '');
+  }
+});
diff --git a/node_modules/core-js/modules/es.string.split.js b/node_modules/core-js/modules/es.string.split.js
new file mode 100644
index 0000000..4d76901
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.split.js
@@ -0,0 +1,111 @@
+'use strict';
+var call = require('../internals/function-call');
+var uncurryThis = require('../internals/function-uncurry-this');
+var fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');
+var anObject = require('../internals/an-object');
+var isNullOrUndefined = require('../internals/is-null-or-undefined');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+var speciesConstructor = require('../internals/species-constructor');
+var advanceStringIndex = require('../internals/advance-string-index');
+var toLength = require('../internals/to-length');
+var toString = require('../internals/to-string');
+var getMethod = require('../internals/get-method');
+var regExpExec = require('../internals/regexp-exec-abstract');
+var stickyHelpers = require('../internals/regexp-sticky-helpers');
+var fails = require('../internals/fails');
+
+var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;
+var MAX_UINT32 = 0xFFFFFFFF;
+var min = Math.min;
+var push = uncurryThis([].push);
+var stringSlice = uncurryThis(''.slice);
+
+// Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec
+// Weex JS has frozen built-in prototypes, so use try / catch wrapper
+var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {
+  // eslint-disable-next-line regexp/no-empty-group -- required for testing
+  var re = /(?:)/;
+  var originalExec = re.exec;
+  re.exec = function () { return originalExec.apply(this, arguments); };
+  var result = 'ab'.split(re);
+  return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';
+});
+
+var BUGGY = 'abbc'.split(/(b)*/)[1] === 'c' ||
+  // eslint-disable-next-line regexp/no-empty-group -- required for testing
+  'test'.split(/(?:)/, -1).length !== 4 ||
+  'ab'.split(/(?:ab)*/).length !== 2 ||
+  '.'.split(/(.?)(.?)/).length !== 4 ||
+  // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing
+  '.'.split(/()()/).length > 1 ||
+  ''.split(/.?/).length;
+
+// @@split logic
+fixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {
+  var internalSplit = '0'.split(undefined, 0).length ? function (separator, limit) {
+    return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit);
+  } : nativeSplit;
+
+  return [
+    // `String.prototype.split` method
+    // https://tc39.es/ecma262/#sec-string.prototype.split
+    function split(separator, limit) {
+      var O = requireObjectCoercible(this);
+      var splitter = isNullOrUndefined(separator) ? undefined : getMethod(separator, SPLIT);
+      return splitter
+        ? call(splitter, separator, O, limit)
+        : call(internalSplit, toString(O), separator, limit);
+    },
+    // `RegExp.prototype[@@split]` method
+    // https://tc39.es/ecma262/#sec-regexp.prototype-@@split
+    //
+    // NOTE: This cannot be properly polyfilled in engines that don't support
+    // the 'y' flag.
+    function (string, limit) {
+      var rx = anObject(this);
+      var S = toString(string);
+
+      if (!BUGGY) {
+        var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);
+        if (res.done) return res.value;
+      }
+
+      var C = speciesConstructor(rx, RegExp);
+      var unicodeMatching = rx.unicode;
+      var flags = (rx.ignoreCase ? 'i' : '') +
+                  (rx.multiline ? 'm' : '') +
+                  (rx.unicode ? 'u' : '') +
+                  (UNSUPPORTED_Y ? 'g' : 'y');
+      // ^(? + rx + ) is needed, in combination with some S slicing, to
+      // simulate the 'y' flag.
+      var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);
+      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;
+      if (lim === 0) return [];
+      if (S.length === 0) return regExpExec(splitter, S) === null ? [S] : [];
+      var p = 0;
+      var q = 0;
+      var A = [];
+      while (q < S.length) {
+        splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;
+        var z = regExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S, q) : S);
+        var e;
+        if (
+          z === null ||
+          (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p
+        ) {
+          q = advanceStringIndex(S, q, unicodeMatching);
+        } else {
+          push(A, stringSlice(S, p, q));
+          if (A.length === lim) return A;
+          for (var i = 1; i <= z.length - 1; i++) {
+            push(A, z[i]);
+            if (A.length === lim) return A;
+          }
+          q = p = e;
+        }
+      }
+      push(A, stringSlice(S, p));
+      return A;
+    }
+  ];
+}, BUGGY || !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);
diff --git a/node_modules/core-js/modules/es.string.starts-with.js b/node_modules/core-js/modules/es.string.starts-with.js
new file mode 100644
index 0000000..c95bc91
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.starts-with.js
@@ -0,0 +1,32 @@
+'use strict';
+var $ = require('../internals/export');
+var uncurryThis = require('../internals/function-uncurry-this-clause');
+var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;
+var toLength = require('../internals/to-length');
+var toString = require('../internals/to-string');
+var notARegExp = require('../internals/not-a-regexp');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+var correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');
+var IS_PURE = require('../internals/is-pure');
+
+var stringSlice = uncurryThis(''.slice);
+var min = Math.min;
+
+var CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');
+// https://github.com/zloirock/core-js/pull/702
+var MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {
+  var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');
+  return descriptor && !descriptor.writable;
+}();
+
+// `String.prototype.startsWith` method
+// https://tc39.es/ecma262/#sec-string.prototype.startswith
+$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {
+  startsWith: function startsWith(searchString /* , position = 0 */) {
+    var that = toString(requireObjectCoercible(this));
+    notARegExp(searchString);
+    var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));
+    var search = toString(searchString);
+    return stringSlice(that, index, index + search.length) === search;
+  }
+});
diff --git a/node_modules/core-js/modules/es.string.strike.js b/node_modules/core-js/modules/es.string.strike.js
new file mode 100644
index 0000000..f78a222
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.strike.js
@@ -0,0 +1,12 @@
+'use strict';
+var $ = require('../internals/export');
+var createHTML = require('../internals/create-html');
+var forcedStringHTMLMethod = require('../internals/string-html-forced');
+
+// `String.prototype.strike` method
+// https://tc39.es/ecma262/#sec-string.prototype.strike
+$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('strike') }, {
+  strike: function strike() {
+    return createHTML(this, 'strike', '', '');
+  }
+});
diff --git a/node_modules/core-js/modules/es.string.sub.js b/node_modules/core-js/modules/es.string.sub.js
new file mode 100644
index 0000000..bc62879
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.sub.js
@@ -0,0 +1,12 @@
+'use strict';
+var $ = require('../internals/export');
+var createHTML = require('../internals/create-html');
+var forcedStringHTMLMethod = require('../internals/string-html-forced');
+
+// `String.prototype.sub` method
+// https://tc39.es/ecma262/#sec-string.prototype.sub
+$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('sub') }, {
+  sub: function sub() {
+    return createHTML(this, 'sub', '', '');
+  }
+});
diff --git a/node_modules/core-js/modules/es.string.substr.js b/node_modules/core-js/modules/es.string.substr.js
new file mode 100644
index 0000000..57595da
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.substr.js
@@ -0,0 +1,30 @@
+'use strict';
+var $ = require('../internals/export');
+var uncurryThis = require('../internals/function-uncurry-this');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
+var toString = require('../internals/to-string');
+
+var stringSlice = uncurryThis(''.slice);
+var max = Math.max;
+var min = Math.min;
+
+// eslint-disable-next-line unicorn/prefer-string-slice -- required for testing
+var FORCED = !''.substr || 'ab'.substr(-1) !== 'b';
+
+// `String.prototype.substr` method
+// https://tc39.es/ecma262/#sec-string.prototype.substr
+$({ target: 'String', proto: true, forced: FORCED }, {
+  substr: function substr(start, length) {
+    var that = toString(requireObjectCoercible(this));
+    var size = that.length;
+    var intStart = toIntegerOrInfinity(start);
+    var intLength, intEnd;
+    if (intStart === Infinity) intStart = 0;
+    if (intStart < 0) intStart = max(size + intStart, 0);
+    intLength = length === undefined ? size : toIntegerOrInfinity(length);
+    if (intLength <= 0 || intLength === Infinity) return '';
+    intEnd = min(intStart + intLength, size);
+    return intStart >= intEnd ? '' : stringSlice(that, intStart, intEnd);
+  }
+});
diff --git a/node_modules/core-js/modules/es.string.sup.js b/node_modules/core-js/modules/es.string.sup.js
new file mode 100644
index 0000000..6e1e5cb
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.sup.js
@@ -0,0 +1,12 @@
+'use strict';
+var $ = require('../internals/export');
+var createHTML = require('../internals/create-html');
+var forcedStringHTMLMethod = require('../internals/string-html-forced');
+
+// `String.prototype.sup` method
+// https://tc39.es/ecma262/#sec-string.prototype.sup
+$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('sup') }, {
+  sup: function sup() {
+    return createHTML(this, 'sup', '', '');
+  }
+});
diff --git a/node_modules/core-js/modules/es.string.to-well-formed.js b/node_modules/core-js/modules/es.string.to-well-formed.js
new file mode 100644
index 0000000..5f18c97
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.to-well-formed.js
@@ -0,0 +1,43 @@
+'use strict';
+var $ = require('../internals/export');
+var call = require('../internals/function-call');
+var uncurryThis = require('../internals/function-uncurry-this');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+var toString = require('../internals/to-string');
+var fails = require('../internals/fails');
+
+var $Array = Array;
+var charAt = uncurryThis(''.charAt);
+var charCodeAt = uncurryThis(''.charCodeAt);
+var join = uncurryThis([].join);
+// eslint-disable-next-line es/no-string-prototype-towellformed -- safe
+var $toWellFormed = ''.toWellFormed;
+var REPLACEMENT_CHARACTER = '\uFFFD';
+
+// Safari bug
+var TO_STRING_CONVERSION_BUG = $toWellFormed && fails(function () {
+  return call($toWellFormed, 1) !== '1';
+});
+
+// `String.prototype.toWellFormed` method
+// https://tc39.es/ecma262/#sec-string.prototype.towellformed
+$({ target: 'String', proto: true, forced: TO_STRING_CONVERSION_BUG }, {
+  toWellFormed: function toWellFormed() {
+    var S = toString(requireObjectCoercible(this));
+    if (TO_STRING_CONVERSION_BUG) return call($toWellFormed, S);
+    var length = S.length;
+    var result = $Array(length);
+    for (var i = 0; i < length; i++) {
+      var charCode = charCodeAt(S, i);
+      // single UTF-16 code unit
+      if ((charCode & 0xF800) !== 0xD800) result[i] = charAt(S, i);
+      // unpaired surrogate
+      else if (charCode >= 0xDC00 || i + 1 >= length || (charCodeAt(S, i + 1) & 0xFC00) !== 0xDC00) result[i] = REPLACEMENT_CHARACTER;
+      // surrogate pair
+      else {
+        result[i] = charAt(S, i);
+        result[++i] = charAt(S, i);
+      }
+    } return join(result, '');
+  }
+});
diff --git a/node_modules/core-js/modules/es.string.trim-end.js b/node_modules/core-js/modules/es.string.trim-end.js
new file mode 100644
index 0000000..7d218db
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.trim-end.js
@@ -0,0 +1,12 @@
+'use strict';
+// TODO: Remove this line from `core-js@4`
+require('../modules/es.string.trim-right');
+var $ = require('../internals/export');
+var trimEnd = require('../internals/string-trim-end');
+
+// `String.prototype.trimEnd` method
+// https://tc39.es/ecma262/#sec-string.prototype.trimend
+// eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe
+$({ target: 'String', proto: true, name: 'trimEnd', forced: ''.trimEnd !== trimEnd }, {
+  trimEnd: trimEnd
+});
diff --git a/node_modules/core-js/modules/es.string.trim-left.js b/node_modules/core-js/modules/es.string.trim-left.js
new file mode 100644
index 0000000..55a38f4
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.trim-left.js
@@ -0,0 +1,10 @@
+'use strict';
+var $ = require('../internals/export');
+var trimStart = require('../internals/string-trim-start');
+
+// `String.prototype.trimLeft` method
+// https://tc39.es/ecma262/#sec-string.prototype.trimleft
+// eslint-disable-next-line es/no-string-prototype-trimleft-trimright -- safe
+$({ target: 'String', proto: true, name: 'trimStart', forced: ''.trimLeft !== trimStart }, {
+  trimLeft: trimStart
+});
diff --git a/node_modules/core-js/modules/es.string.trim-right.js b/node_modules/core-js/modules/es.string.trim-right.js
new file mode 100644
index 0000000..eb33758
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.trim-right.js
@@ -0,0 +1,10 @@
+'use strict';
+var $ = require('../internals/export');
+var trimEnd = require('../internals/string-trim-end');
+
+// `String.prototype.trimRight` method
+// https://tc39.es/ecma262/#sec-string.prototype.trimend
+// eslint-disable-next-line es/no-string-prototype-trimleft-trimright -- safe
+$({ target: 'String', proto: true, name: 'trimEnd', forced: ''.trimRight !== trimEnd }, {
+  trimRight: trimEnd
+});
diff --git a/node_modules/core-js/modules/es.string.trim-start.js b/node_modules/core-js/modules/es.string.trim-start.js
new file mode 100644
index 0000000..c09ce7a
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.trim-start.js
@@ -0,0 +1,12 @@
+'use strict';
+// TODO: Remove this line from `core-js@4`
+require('../modules/es.string.trim-left');
+var $ = require('../internals/export');
+var trimStart = require('../internals/string-trim-start');
+
+// `String.prototype.trimStart` method
+// https://tc39.es/ecma262/#sec-string.prototype.trimstart
+// eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe
+$({ target: 'String', proto: true, name: 'trimStart', forced: ''.trimStart !== trimStart }, {
+  trimStart: trimStart
+});
diff --git a/node_modules/core-js/modules/es.string.trim.js b/node_modules/core-js/modules/es.string.trim.js
new file mode 100644
index 0000000..e9cfb4b
--- /dev/null
+++ b/node_modules/core-js/modules/es.string.trim.js
@@ -0,0 +1,12 @@
+'use strict';
+var $ = require('../internals/export');
+var $trim = require('../internals/string-trim').trim;
+var forcedStringTrimMethod = require('../internals/string-trim-forced');
+
+// `String.prototype.trim` method
+// https://tc39.es/ecma262/#sec-string.prototype.trim
+$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {
+  trim: function trim() {
+    return $trim(this);
+  }
+});
diff --git a/node_modules/core-js/modules/es.symbol.async-iterator.js b/node_modules/core-js/modules/es.symbol.async-iterator.js
new file mode 100644
index 0000000..40d1930
--- /dev/null
+++ b/node_modules/core-js/modules/es.symbol.async-iterator.js
@@ -0,0 +1,6 @@
+'use strict';
+var defineWellKnownSymbol = require('../internals/well-known-symbol-define');
+
+// `Symbol.asyncIterator` well-known symbol
+// https://tc39.es/ecma262/#sec-symbol.asynciterator
+defineWellKnownSymbol('asyncIterator');
diff --git a/node_modules/core-js/modules/es.symbol.constructor.js b/node_modules/core-js/modules/es.symbol.constructor.js
new file mode 100644
index 0000000..274e2ef
--- /dev/null
+++ b/node_modules/core-js/modules/es.symbol.constructor.js
@@ -0,0 +1,263 @@
+'use strict';
+var $ = require('../internals/export');
+var globalThis = require('../internals/global-this');
+var call = require('../internals/function-call');
+var uncurryThis = require('../internals/function-uncurry-this');
+var IS_PURE = require('../internals/is-pure');
+var DESCRIPTORS = require('../internals/descriptors');
+var NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');
+var fails = require('../internals/fails');
+var hasOwn = require('../internals/has-own-property');
+var isPrototypeOf = require('../internals/object-is-prototype-of');
+var anObject = require('../internals/an-object');
+var toIndexedObject = require('../internals/to-indexed-object');
+var toPropertyKey = require('../internals/to-property-key');
+var $toString = require('../internals/to-string');
+var createPropertyDescriptor = require('../internals/create-property-descriptor');
+var nativeObjectCreate = require('../internals/object-create');
+var objectKeys = require('../internals/object-keys');
+var getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');
+var getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');
+var getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');
+var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');
+var definePropertyModule = require('../internals/object-define-property');
+var definePropertiesModule = require('../internals/object-define-properties');
+var propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');
+var defineBuiltIn = require('../internals/define-built-in');
+var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
+var shared = require('../internals/shared');
+var sharedKey = require('../internals/shared-key');
+var hiddenKeys = require('../internals/hidden-keys');
+var uid = require('../internals/uid');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');
+var defineWellKnownSymbol = require('../internals/well-known-symbol-define');
+var defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');
+var setToStringTag = require('../internals/set-to-string-tag');
+var InternalStateModule = require('../internals/internal-state');
+var $forEach = require('../internals/array-iteration').forEach;
+
+var HIDDEN = sharedKey('hidden');
+var SYMBOL = 'Symbol';
+var PROTOTYPE = 'prototype';
+
+var setInternalState = InternalStateModule.set;
+var getInternalState = InternalStateModule.getterFor(SYMBOL);
+
+var ObjectPrototype = Object[PROTOTYPE];
+var $Symbol = globalThis.Symbol;
+var SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];
+var RangeError = globalThis.RangeError;
+var TypeError = globalThis.TypeError;
+var QObject = globalThis.QObject;
+var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
+var nativeDefineProperty = definePropertyModule.f;
+var nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;
+var nativePropertyIsEnumerable = propertyIsEnumerableModule.f;
+var push = uncurryThis([].push);
+
+var AllSymbols = shared('symbols');
+var ObjectPrototypeSymbols = shared('op-symbols');
+var WellKnownSymbolsStore = shared('wks');
+
+// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
+var USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;
+
+// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
+var fallbackDefineProperty = function (O, P, Attributes) {
+  var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);
+  if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];
+  nativeDefineProperty(O, P, Attributes);
+  if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {
+    nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);
+  }
+};
+
+var setSymbolDescriptor = DESCRIPTORS && fails(function () {
+  return nativeObjectCreate(nativeDefineProperty({}, 'a', {
+    get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }
+  })).a !== 7;
+}) ? fallbackDefineProperty : nativeDefineProperty;
+
+var wrap = function (tag, description) {
+  var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype);
+  setInternalState(symbol, {
+    type: SYMBOL,
+    tag: tag,
+    description: description
+  });
+  if (!DESCRIPTORS) symbol.description = description;
+  return symbol;
+};
+
+var $defineProperty = function defineProperty(O, P, Attributes) {
+  if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);
+  anObject(O);
+  var key = toPropertyKey(P);
+  anObject(Attributes);
+  if (hasOwn(AllSymbols, key)) {
+    if (!Attributes.enumerable) {
+      if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, nativeObjectCreate(null)));
+      O[HIDDEN][key] = true;
+    } else {
+      if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;
+      Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });
+    } return setSymbolDescriptor(O, key, Attributes);
+  } return nativeDefineProperty(O, key, Attributes);
+};
+
+var $defineProperties = function defineProperties(O, Properties) {
+  anObject(O);
+  var properties = toIndexedObject(Properties);
+  var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));
+  $forEach(keys, function (key) {
+    if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]);
+  });
+  return O;
+};
+
+var $create = function create(O, Properties) {
+  return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);
+};
+
+var $propertyIsEnumerable = function propertyIsEnumerable(V) {
+  var P = toPropertyKey(V);
+  var enumerable = call(nativePropertyIsEnumerable, this, P);
+  if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;
+  return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]
+    ? enumerable : true;
+};
+
+var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {
+  var it = toIndexedObject(O);
+  var key = toPropertyKey(P);
+  if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;
+  var descriptor = nativeGetOwnPropertyDescriptor(it, key);
+  if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) {
+    descriptor.enumerable = true;
+  }
+  return descriptor;
+};
+
+var $getOwnPropertyNames = function getOwnPropertyNames(O) {
+  var names = nativeGetOwnPropertyNames(toIndexedObject(O));
+  var result = [];
+  $forEach(names, function (key) {
+    if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key);
+  });
+  return result;
+};
+
+var $getOwnPropertySymbols = function (O) {
+  var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;
+  var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));
+  var result = [];
+  $forEach(names, function (key) {
+    if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {
+      push(result, AllSymbols[key]);
+    }
+  });
+  return result;
+};
+
+// `Symbol` constructor
+// https://tc39.es/ecma262/#sec-symbol-constructor
+if (!NATIVE_SYMBOL) {
+  $Symbol = function Symbol() {
+    if (isPrototypeOf(SymbolPrototype, this)) throw new TypeError('Symbol is not a constructor');
+    var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);
+    var tag = uid(description);
+    var setter = function (value) {
+      var $this = this === undefined ? globalThis : this;
+      if ($this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);
+      if (hasOwn($this, HIDDEN) && hasOwn($this[HIDDEN], tag)) $this[HIDDEN][tag] = false;
+      var descriptor = createPropertyDescriptor(1, value);
+      try {
+        setSymbolDescriptor($this, tag, descriptor);
+      } catch (error) {
+        if (!(error instanceof RangeError)) throw error;
+        fallbackDefineProperty($this, tag, descriptor);
+      }
+    };
+    if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });
+    return wrap(tag, description);
+  };
+
+  SymbolPrototype = $Symbol[PROTOTYPE];
+
+  defineBuiltIn(SymbolPrototype, 'toString', function toString() {
+    return getInternalState(this).tag;
+  });
+
+  defineBuiltIn($Symbol, 'withoutSetter', function (description) {
+    return wrap(uid(description), description);
+  });
+
+  propertyIsEnumerableModule.f = $propertyIsEnumerable;
+  definePropertyModule.f = $defineProperty;
+  definePropertiesModule.f = $defineProperties;
+  getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;
+  getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;
+  getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;
+
+  wrappedWellKnownSymbolModule.f = function (name) {
+    return wrap(wellKnownSymbol(name), name);
+  };
+
+  if (DESCRIPTORS) {
+    // https://github.com/tc39/proposal-Symbol-description
+    defineBuiltInAccessor(SymbolPrototype, 'description', {
+      configurable: true,
+      get: function description() {
+        return getInternalState(this).description;
+      }
+    });
+    if (!IS_PURE) {
+      defineBuiltIn(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });
+    }
+  }
+}
+
+$({ global: true, constructor: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {
+  Symbol: $Symbol
+});
+
+$forEach(objectKeys(WellKnownSymbolsStore), function (name) {
+  defineWellKnownSymbol(name);
+});
+
+$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {
+  useSetter: function () { USE_SETTER = true; },
+  useSimple: function () { USE_SETTER = false; }
+});
+
+$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {
+  // `Object.create` method
+  // https://tc39.es/ecma262/#sec-object.create
+  create: $create,
+  // `Object.defineProperty` method
+  // https://tc39.es/ecma262/#sec-object.defineproperty
+  defineProperty: $defineProperty,
+  // `Object.defineProperties` method
+  // https://tc39.es/ecma262/#sec-object.defineproperties
+  defineProperties: $defineProperties,
+  // `Object.getOwnPropertyDescriptor` method
+  // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors
+  getOwnPropertyDescriptor: $getOwnPropertyDescriptor
+});
+
+$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {
+  // `Object.getOwnPropertyNames` method
+  // https://tc39.es/ecma262/#sec-object.getownpropertynames
+  getOwnPropertyNames: $getOwnPropertyNames
+});
+
+// `Symbol.prototype[@@toPrimitive]` method
+// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive
+defineSymbolToPrimitive();
+
+// `Symbol.prototype[@@toStringTag]` property
+// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag
+setToStringTag($Symbol, SYMBOL);
+
+hiddenKeys[HIDDEN] = true;
diff --git a/node_modules/core-js/modules/es.symbol.description.js b/node_modules/core-js/modules/es.symbol.description.js
new file mode 100644
index 0000000..7f2458f
--- /dev/null
+++ b/node_modules/core-js/modules/es.symbol.description.js
@@ -0,0 +1,60 @@
+// `Symbol.prototype.description` getter
+// https://tc39.es/ecma262/#sec-symbol.prototype.description
+'use strict';
+var $ = require('../internals/export');
+var DESCRIPTORS = require('../internals/descriptors');
+var globalThis = require('../internals/global-this');
+var uncurryThis = require('../internals/function-uncurry-this');
+var hasOwn = require('../internals/has-own-property');
+var isCallable = require('../internals/is-callable');
+var isPrototypeOf = require('../internals/object-is-prototype-of');
+var toString = require('../internals/to-string');
+var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
+var copyConstructorProperties = require('../internals/copy-constructor-properties');
+
+var NativeSymbol = globalThis.Symbol;
+var SymbolPrototype = NativeSymbol && NativeSymbol.prototype;
+
+if (DESCRIPTORS && isCallable(NativeSymbol) && (!('description' in SymbolPrototype) ||
+  // Safari 12 bug
+  NativeSymbol().description !== undefined
+)) {
+  var EmptyStringDescriptionStore = {};
+  // wrap Symbol constructor for correct work with undefined description
+  var SymbolWrapper = function Symbol() {
+    var description = arguments.length < 1 || arguments[0] === undefined ? undefined : toString(arguments[0]);
+    var result = isPrototypeOf(SymbolPrototype, this)
+      // eslint-disable-next-line sonarjs/inconsistent-function-call -- ok
+      ? new NativeSymbol(description)
+      // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'
+      : description === undefined ? NativeSymbol() : NativeSymbol(description);
+    if (description === '') EmptyStringDescriptionStore[result] = true;
+    return result;
+  };
+
+  copyConstructorProperties(SymbolWrapper, NativeSymbol);
+  SymbolWrapper.prototype = SymbolPrototype;
+  SymbolPrototype.constructor = SymbolWrapper;
+
+  var NATIVE_SYMBOL = String(NativeSymbol('description detection')) === 'Symbol(description detection)';
+  var thisSymbolValue = uncurryThis(SymbolPrototype.valueOf);
+  var symbolDescriptiveString = uncurryThis(SymbolPrototype.toString);
+  var regexp = /^Symbol\((.*)\)[^)]+$/;
+  var replace = uncurryThis(''.replace);
+  var stringSlice = uncurryThis(''.slice);
+
+  defineBuiltInAccessor(SymbolPrototype, 'description', {
+    configurable: true,
+    get: function description() {
+      var symbol = thisSymbolValue(this);
+      if (hasOwn(EmptyStringDescriptionStore, symbol)) return '';
+      var string = symbolDescriptiveString(symbol);
+      var desc = NATIVE_SYMBOL ? stringSlice(string, 7, -1) : replace(string, regexp, '$1');
+      return desc === '' ? undefined : desc;
+    }
+  });
+
+  $({ global: true, constructor: true, forced: true }, {
+    Symbol: SymbolWrapper
+  });
+}
diff --git a/node_modules/core-js/modules/es.symbol.for.js b/node_modules/core-js/modules/es.symbol.for.js
new file mode 100644
index 0000000..e056b6b
--- /dev/null
+++ b/node_modules/core-js/modules/es.symbol.for.js
@@ -0,0 +1,23 @@
+'use strict';
+var $ = require('../internals/export');
+var getBuiltIn = require('../internals/get-built-in');
+var hasOwn = require('../internals/has-own-property');
+var toString = require('../internals/to-string');
+var shared = require('../internals/shared');
+var NATIVE_SYMBOL_REGISTRY = require('../internals/symbol-registry-detection');
+
+var StringToSymbolRegistry = shared('string-to-symbol-registry');
+var SymbolToStringRegistry = shared('symbol-to-string-registry');
+
+// `Symbol.for` method
+// https://tc39.es/ecma262/#sec-symbol.for
+$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {
+  'for': function (key) {
+    var string = toString(key);
+    if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];
+    var symbol = getBuiltIn('Symbol')(string);
+    StringToSymbolRegistry[string] = symbol;
+    SymbolToStringRegistry[symbol] = string;
+    return symbol;
+  }
+});
diff --git a/node_modules/core-js/modules/es.symbol.has-instance.js b/node_modules/core-js/modules/es.symbol.has-instance.js
new file mode 100644
index 0000000..a37c666
--- /dev/null
+++ b/node_modules/core-js/modules/es.symbol.has-instance.js
@@ -0,0 +1,6 @@
+'use strict';
+var defineWellKnownSymbol = require('../internals/well-known-symbol-define');
+
+// `Symbol.hasInstance` well-known symbol
+// https://tc39.es/ecma262/#sec-symbol.hasinstance
+defineWellKnownSymbol('hasInstance');
diff --git a/node_modules/core-js/modules/es.symbol.is-concat-spreadable.js b/node_modules/core-js/modules/es.symbol.is-concat-spreadable.js
new file mode 100644
index 0000000..f449e79
--- /dev/null
+++ b/node_modules/core-js/modules/es.symbol.is-concat-spreadable.js
@@ -0,0 +1,6 @@
+'use strict';
+var defineWellKnownSymbol = require('../internals/well-known-symbol-define');
+
+// `Symbol.isConcatSpreadable` well-known symbol
+// https://tc39.es/ecma262/#sec-symbol.isconcatspreadable
+defineWellKnownSymbol('isConcatSpreadable');
diff --git a/node_modules/core-js/modules/es.symbol.iterator.js b/node_modules/core-js/modules/es.symbol.iterator.js
new file mode 100644
index 0000000..545ad97
--- /dev/null
+++ b/node_modules/core-js/modules/es.symbol.iterator.js
@@ -0,0 +1,6 @@
+'use strict';
+var defineWellKnownSymbol = require('../internals/well-known-symbol-define');
+
+// `Symbol.iterator` well-known symbol
+// https://tc39.es/ecma262/#sec-symbol.iterator
+defineWellKnownSymbol('iterator');
diff --git a/node_modules/core-js/modules/es.symbol.js b/node_modules/core-js/modules/es.symbol.js
new file mode 100644
index 0000000..aaef3c1
--- /dev/null
+++ b/node_modules/core-js/modules/es.symbol.js
@@ -0,0 +1,7 @@
+'use strict';
+// TODO: Remove this module from `core-js@4` since it's split to modules listed below
+require('../modules/es.symbol.constructor');
+require('../modules/es.symbol.for');
+require('../modules/es.symbol.key-for');
+require('../modules/es.json.stringify');
+require('../modules/es.object.get-own-property-symbols');
diff --git a/node_modules/core-js/modules/es.symbol.key-for.js b/node_modules/core-js/modules/es.symbol.key-for.js
new file mode 100644
index 0000000..c7f4d25
--- /dev/null
+++ b/node_modules/core-js/modules/es.symbol.key-for.js
@@ -0,0 +1,18 @@
+'use strict';
+var $ = require('../internals/export');
+var hasOwn = require('../internals/has-own-property');
+var isSymbol = require('../internals/is-symbol');
+var tryToString = require('../internals/try-to-string');
+var shared = require('../internals/shared');
+var NATIVE_SYMBOL_REGISTRY = require('../internals/symbol-registry-detection');
+
+var SymbolToStringRegistry = shared('symbol-to-string-registry');
+
+// `Symbol.keyFor` method
+// https://tc39.es/ecma262/#sec-symbol.keyfor
+$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {
+  keyFor: function keyFor(sym) {
+    if (!isSymbol(sym)) throw new TypeError(tryToString(sym) + ' is not a symbol');
+    if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];
+  }
+});
diff --git a/node_modules/core-js/modules/es.symbol.match-all.js b/node_modules/core-js/modules/es.symbol.match-all.js
new file mode 100644
index 0000000..19a3bd0
--- /dev/null
+++ b/node_modules/core-js/modules/es.symbol.match-all.js
@@ -0,0 +1,6 @@
+'use strict';
+var defineWellKnownSymbol = require('../internals/well-known-symbol-define');
+
+// `Symbol.matchAll` well-known symbol
+// https://tc39.es/ecma262/#sec-symbol.matchall
+defineWellKnownSymbol('matchAll');
diff --git a/node_modules/core-js/modules/es.symbol.match.js b/node_modules/core-js/modules/es.symbol.match.js
new file mode 100644
index 0000000..4947d02
--- /dev/null
+++ b/node_modules/core-js/modules/es.symbol.match.js
@@ -0,0 +1,6 @@
+'use strict';
+var defineWellKnownSymbol = require('../internals/well-known-symbol-define');
+
+// `Symbol.match` well-known symbol
+// https://tc39.es/ecma262/#sec-symbol.match
+defineWellKnownSymbol('match');
diff --git a/node_modules/core-js/modules/es.symbol.replace.js b/node_modules/core-js/modules/es.symbol.replace.js
new file mode 100644
index 0000000..7306209
--- /dev/null
+++ b/node_modules/core-js/modules/es.symbol.replace.js
@@ -0,0 +1,6 @@
+'use strict';
+var defineWellKnownSymbol = require('../internals/well-known-symbol-define');
+
+// `Symbol.replace` well-known symbol
+// https://tc39.es/ecma262/#sec-symbol.replace
+defineWellKnownSymbol('replace');
diff --git a/node_modules/core-js/modules/es.symbol.search.js b/node_modules/core-js/modules/es.symbol.search.js
new file mode 100644
index 0000000..61bdf8a
--- /dev/null
+++ b/node_modules/core-js/modules/es.symbol.search.js
@@ -0,0 +1,6 @@
+'use strict';
+var defineWellKnownSymbol = require('../internals/well-known-symbol-define');
+
+// `Symbol.search` well-known symbol
+// https://tc39.es/ecma262/#sec-symbol.search
+defineWellKnownSymbol('search');
diff --git a/node_modules/core-js/modules/es.symbol.species.js b/node_modules/core-js/modules/es.symbol.species.js
new file mode 100644
index 0000000..67b995c
--- /dev/null
+++ b/node_modules/core-js/modules/es.symbol.species.js
@@ -0,0 +1,6 @@
+'use strict';
+var defineWellKnownSymbol = require('../internals/well-known-symbol-define');
+
+// `Symbol.species` well-known symbol
+// https://tc39.es/ecma262/#sec-symbol.species
+defineWellKnownSymbol('species');
diff --git a/node_modules/core-js/modules/es.symbol.split.js b/node_modules/core-js/modules/es.symbol.split.js
new file mode 100644
index 0000000..926e02c
--- /dev/null
+++ b/node_modules/core-js/modules/es.symbol.split.js
@@ -0,0 +1,6 @@
+'use strict';
+var defineWellKnownSymbol = require('../internals/well-known-symbol-define');
+
+// `Symbol.split` well-known symbol
+// https://tc39.es/ecma262/#sec-symbol.split
+defineWellKnownSymbol('split');
diff --git a/node_modules/core-js/modules/es.symbol.to-primitive.js b/node_modules/core-js/modules/es.symbol.to-primitive.js
new file mode 100644
index 0000000..c263093
--- /dev/null
+++ b/node_modules/core-js/modules/es.symbol.to-primitive.js
@@ -0,0 +1,11 @@
+'use strict';
+var defineWellKnownSymbol = require('../internals/well-known-symbol-define');
+var defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');
+
+// `Symbol.toPrimitive` well-known symbol
+// https://tc39.es/ecma262/#sec-symbol.toprimitive
+defineWellKnownSymbol('toPrimitive');
+
+// `Symbol.prototype[@@toPrimitive]` method
+// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive
+defineSymbolToPrimitive();
diff --git a/node_modules/core-js/modules/es.symbol.to-string-tag.js b/node_modules/core-js/modules/es.symbol.to-string-tag.js
new file mode 100644
index 0000000..4a09f11
--- /dev/null
+++ b/node_modules/core-js/modules/es.symbol.to-string-tag.js
@@ -0,0 +1,12 @@
+'use strict';
+var getBuiltIn = require('../internals/get-built-in');
+var defineWellKnownSymbol = require('../internals/well-known-symbol-define');
+var setToStringTag = require('../internals/set-to-string-tag');
+
+// `Symbol.toStringTag` well-known symbol
+// https://tc39.es/ecma262/#sec-symbol.tostringtag
+defineWellKnownSymbol('toStringTag');
+
+// `Symbol.prototype[@@toStringTag]` property
+// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag
+setToStringTag(getBuiltIn('Symbol'), 'Symbol');
diff --git a/node_modules/core-js/modules/es.symbol.unscopables.js b/node_modules/core-js/modules/es.symbol.unscopables.js
new file mode 100644
index 0000000..e5df05e
--- /dev/null
+++ b/node_modules/core-js/modules/es.symbol.unscopables.js
@@ -0,0 +1,6 @@
+'use strict';
+var defineWellKnownSymbol = require('../internals/well-known-symbol-define');
+
+// `Symbol.unscopables` well-known symbol
+// https://tc39.es/ecma262/#sec-symbol.unscopables
+defineWellKnownSymbol('unscopables');
diff --git a/node_modules/core-js/modules/es.typed-array.at.js b/node_modules/core-js/modules/es.typed-array.at.js
new file mode 100644
index 0000000..c2c2208
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.at.js
@@ -0,0 +1,17 @@
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+// `%TypedArray%.prototype.at` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.at
+exportTypedArrayMethod('at', function at(index) {
+  var O = aTypedArray(this);
+  var len = lengthOfArrayLike(O);
+  var relativeIndex = toIntegerOrInfinity(index);
+  var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;
+  return (k < 0 || k >= len) ? undefined : O[k];
+});
diff --git a/node_modules/core-js/modules/es.typed-array.copy-within.js b/node_modules/core-js/modules/es.typed-array.copy-within.js
new file mode 100644
index 0000000..ec0baff
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.copy-within.js
@@ -0,0 +1,14 @@
+'use strict';
+var uncurryThis = require('../internals/function-uncurry-this');
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var $ArrayCopyWithin = require('../internals/array-copy-within');
+
+var u$ArrayCopyWithin = uncurryThis($ArrayCopyWithin);
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+// `%TypedArray%.prototype.copyWithin` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.copywithin
+exportTypedArrayMethod('copyWithin', function copyWithin(target, start /* , end */) {
+  return u$ArrayCopyWithin(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);
+});
diff --git a/node_modules/core-js/modules/es.typed-array.every.js b/node_modules/core-js/modules/es.typed-array.every.js
new file mode 100644
index 0000000..625a0c5
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.every.js
@@ -0,0 +1,12 @@
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var $every = require('../internals/array-iteration').every;
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+// `%TypedArray%.prototype.every` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.every
+exportTypedArrayMethod('every', function every(callbackfn /* , thisArg */) {
+  return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+});
diff --git a/node_modules/core-js/modules/es.typed-array.fill.js b/node_modules/core-js/modules/es.typed-array.fill.js
new file mode 100644
index 0000000..3fa8a87
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.fill.js
@@ -0,0 +1,29 @@
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var $fill = require('../internals/array-fill');
+var toBigInt = require('../internals/to-big-int');
+var classof = require('../internals/classof');
+var call = require('../internals/function-call');
+var uncurryThis = require('../internals/function-uncurry-this');
+var fails = require('../internals/fails');
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+var slice = uncurryThis(''.slice);
+
+// V8 ~ Chrome < 59, Safari < 14.1, FF < 55, Edge <=18
+var CONVERSION_BUG = fails(function () {
+  var count = 0;
+  // eslint-disable-next-line es/no-typed-arrays -- safe
+  new Int8Array(2).fill({ valueOf: function () { return count++; } });
+  return count !== 1;
+});
+
+// `%TypedArray%.prototype.fill` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill
+exportTypedArrayMethod('fill', function fill(value /* , start, end */) {
+  var length = arguments.length;
+  aTypedArray(this);
+  var actualValue = slice(classof(this), 0, 3) === 'Big' ? toBigInt(value) : +value;
+  return call($fill, this, actualValue, length > 1 ? arguments[1] : undefined, length > 2 ? arguments[2] : undefined);
+}, CONVERSION_BUG);
diff --git a/node_modules/core-js/modules/es.typed-array.filter.js b/node_modules/core-js/modules/es.typed-array.filter.js
new file mode 100644
index 0000000..51d5bc9
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.filter.js
@@ -0,0 +1,14 @@
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var $filter = require('../internals/array-iteration').filter;
+var fromSameTypeAndList = require('../internals/typed-array-from-same-type-and-list');
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+// `%TypedArray%.prototype.filter` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.filter
+exportTypedArrayMethod('filter', function filter(callbackfn /* , thisArg */) {
+  var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+  return fromSameTypeAndList(this, list);
+});
diff --git a/node_modules/core-js/modules/es.typed-array.find-index.js b/node_modules/core-js/modules/es.typed-array.find-index.js
new file mode 100644
index 0000000..b126656
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.find-index.js
@@ -0,0 +1,12 @@
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var $findIndex = require('../internals/array-iteration').findIndex;
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+// `%TypedArray%.prototype.findIndex` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findindex
+exportTypedArrayMethod('findIndex', function findIndex(predicate /* , thisArg */) {
+  return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
+});
diff --git a/node_modules/core-js/modules/es.typed-array.find-last-index.js b/node_modules/core-js/modules/es.typed-array.find-last-index.js
new file mode 100644
index 0000000..5e8b501
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.find-last-index.js
@@ -0,0 +1,12 @@
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var $findLastIndex = require('../internals/array-iteration-from-last').findLastIndex;
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+// `%TypedArray%.prototype.findLastIndex` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findlastindex
+exportTypedArrayMethod('findLastIndex', function findLastIndex(predicate /* , thisArg */) {
+  return $findLastIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
+});
diff --git a/node_modules/core-js/modules/es.typed-array.find-last.js b/node_modules/core-js/modules/es.typed-array.find-last.js
new file mode 100644
index 0000000..2b124cf
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.find-last.js
@@ -0,0 +1,12 @@
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var $findLast = require('../internals/array-iteration-from-last').findLast;
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+// `%TypedArray%.prototype.findLast` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findlast
+exportTypedArrayMethod('findLast', function findLast(predicate /* , thisArg */) {
+  return $findLast(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
+});
diff --git a/node_modules/core-js/modules/es.typed-array.find.js b/node_modules/core-js/modules/es.typed-array.find.js
new file mode 100644
index 0000000..db7ee3f
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.find.js
@@ -0,0 +1,12 @@
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var $find = require('../internals/array-iteration').find;
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+// `%TypedArray%.prototype.find` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.find
+exportTypedArrayMethod('find', function find(predicate /* , thisArg */) {
+  return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
+});
diff --git a/node_modules/core-js/modules/es.typed-array.float32-array.js b/node_modules/core-js/modules/es.typed-array.float32-array.js
new file mode 100644
index 0000000..95b8481
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.float32-array.js
@@ -0,0 +1,10 @@
+'use strict';
+var createTypedArrayConstructor = require('../internals/typed-array-constructor');
+
+// `Float32Array` constructor
+// https://tc39.es/ecma262/#sec-typedarray-objects
+createTypedArrayConstructor('Float32', function (init) {
+  return function Float32Array(data, byteOffset, length) {
+    return init(this, data, byteOffset, length);
+  };
+});
diff --git a/node_modules/core-js/modules/es.typed-array.float64-array.js b/node_modules/core-js/modules/es.typed-array.float64-array.js
new file mode 100644
index 0000000..da82da2
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.float64-array.js
@@ -0,0 +1,10 @@
+'use strict';
+var createTypedArrayConstructor = require('../internals/typed-array-constructor');
+
+// `Float64Array` constructor
+// https://tc39.es/ecma262/#sec-typedarray-objects
+createTypedArrayConstructor('Float64', function (init) {
+  return function Float64Array(data, byteOffset, length) {
+    return init(this, data, byteOffset, length);
+  };
+});
diff --git a/node_modules/core-js/modules/es.typed-array.for-each.js b/node_modules/core-js/modules/es.typed-array.for-each.js
new file mode 100644
index 0000000..bc2f28f
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.for-each.js
@@ -0,0 +1,12 @@
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var $forEach = require('../internals/array-iteration').forEach;
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+// `%TypedArray%.prototype.forEach` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.foreach
+exportTypedArrayMethod('forEach', function forEach(callbackfn /* , thisArg */) {
+  $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+});
diff --git a/node_modules/core-js/modules/es.typed-array.from.js b/node_modules/core-js/modules/es.typed-array.from.js
new file mode 100644
index 0000000..79ad0f1
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.from.js
@@ -0,0 +1,8 @@
+'use strict';
+var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');
+var exportTypedArrayStaticMethod = require('../internals/array-buffer-view-core').exportTypedArrayStaticMethod;
+var typedArrayFrom = require('../internals/typed-array-from');
+
+// `%TypedArray%.from` method
+// https://tc39.es/ecma262/#sec-%typedarray%.from
+exportTypedArrayStaticMethod('from', typedArrayFrom, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS);
diff --git a/node_modules/core-js/modules/es.typed-array.includes.js b/node_modules/core-js/modules/es.typed-array.includes.js
new file mode 100644
index 0000000..b465840
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.includes.js
@@ -0,0 +1,12 @@
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var $includes = require('../internals/array-includes').includes;
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+// `%TypedArray%.prototype.includes` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.includes
+exportTypedArrayMethod('includes', function includes(searchElement /* , fromIndex */) {
+  return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
+});
diff --git a/node_modules/core-js/modules/es.typed-array.index-of.js b/node_modules/core-js/modules/es.typed-array.index-of.js
new file mode 100644
index 0000000..b369f5c
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.index-of.js
@@ -0,0 +1,12 @@
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var $indexOf = require('../internals/array-includes').indexOf;
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+// `%TypedArray%.prototype.indexOf` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.indexof
+exportTypedArrayMethod('indexOf', function indexOf(searchElement /* , fromIndex */) {
+  return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
+});
diff --git a/node_modules/core-js/modules/es.typed-array.int16-array.js b/node_modules/core-js/modules/es.typed-array.int16-array.js
new file mode 100644
index 0000000..fe3da1d
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.int16-array.js
@@ -0,0 +1,10 @@
+'use strict';
+var createTypedArrayConstructor = require('../internals/typed-array-constructor');
+
+// `Int16Array` constructor
+// https://tc39.es/ecma262/#sec-typedarray-objects
+createTypedArrayConstructor('Int16', function (init) {
+  return function Int16Array(data, byteOffset, length) {
+    return init(this, data, byteOffset, length);
+  };
+});
diff --git a/node_modules/core-js/modules/es.typed-array.int32-array.js b/node_modules/core-js/modules/es.typed-array.int32-array.js
new file mode 100644
index 0000000..38afed5
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.int32-array.js
@@ -0,0 +1,10 @@
+'use strict';
+var createTypedArrayConstructor = require('../internals/typed-array-constructor');
+
+// `Int32Array` constructor
+// https://tc39.es/ecma262/#sec-typedarray-objects
+createTypedArrayConstructor('Int32', function (init) {
+  return function Int32Array(data, byteOffset, length) {
+    return init(this, data, byteOffset, length);
+  };
+});
diff --git a/node_modules/core-js/modules/es.typed-array.int8-array.js b/node_modules/core-js/modules/es.typed-array.int8-array.js
new file mode 100644
index 0000000..dda9bd4
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.int8-array.js
@@ -0,0 +1,10 @@
+'use strict';
+var createTypedArrayConstructor = require('../internals/typed-array-constructor');
+
+// `Int8Array` constructor
+// https://tc39.es/ecma262/#sec-typedarray-objects
+createTypedArrayConstructor('Int8', function (init) {
+  return function Int8Array(data, byteOffset, length) {
+    return init(this, data, byteOffset, length);
+  };
+});
diff --git a/node_modules/core-js/modules/es.typed-array.iterator.js b/node_modules/core-js/modules/es.typed-array.iterator.js
new file mode 100644
index 0000000..55bdbbc
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.iterator.js
@@ -0,0 +1,46 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+var fails = require('../internals/fails');
+var uncurryThis = require('../internals/function-uncurry-this');
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var ArrayIterators = require('../modules/es.array.iterator');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+var ITERATOR = wellKnownSymbol('iterator');
+var Uint8Array = globalThis.Uint8Array;
+var arrayValues = uncurryThis(ArrayIterators.values);
+var arrayKeys = uncurryThis(ArrayIterators.keys);
+var arrayEntries = uncurryThis(ArrayIterators.entries);
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+var TypedArrayPrototype = Uint8Array && Uint8Array.prototype;
+
+var GENERIC = !fails(function () {
+  TypedArrayPrototype[ITERATOR].call([1]);
+});
+
+var ITERATOR_IS_VALUES = !!TypedArrayPrototype
+  && TypedArrayPrototype.values
+  && TypedArrayPrototype[ITERATOR] === TypedArrayPrototype.values
+  && TypedArrayPrototype.values.name === 'values';
+
+var typedArrayValues = function values() {
+  return arrayValues(aTypedArray(this));
+};
+
+// `%TypedArray%.prototype.entries` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.entries
+exportTypedArrayMethod('entries', function entries() {
+  return arrayEntries(aTypedArray(this));
+}, GENERIC);
+// `%TypedArray%.prototype.keys` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys
+exportTypedArrayMethod('keys', function keys() {
+  return arrayKeys(aTypedArray(this));
+}, GENERIC);
+// `%TypedArray%.prototype.values` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.values
+exportTypedArrayMethod('values', typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' });
+// `%TypedArray%.prototype[@@iterator]` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator
+exportTypedArrayMethod(ITERATOR, typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' });
diff --git a/node_modules/core-js/modules/es.typed-array.join.js b/node_modules/core-js/modules/es.typed-array.join.js
new file mode 100644
index 0000000..e8e7720
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.join.js
@@ -0,0 +1,13 @@
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var uncurryThis = require('../internals/function-uncurry-this');
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+var $join = uncurryThis([].join);
+
+// `%TypedArray%.prototype.join` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.join
+exportTypedArrayMethod('join', function join(separator) {
+  return $join(aTypedArray(this), separator);
+});
diff --git a/node_modules/core-js/modules/es.typed-array.last-index-of.js b/node_modules/core-js/modules/es.typed-array.last-index-of.js
new file mode 100644
index 0000000..89c2fc2
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.last-index-of.js
@@ -0,0 +1,14 @@
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var apply = require('../internals/function-apply');
+var $lastIndexOf = require('../internals/array-last-index-of');
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+// `%TypedArray%.prototype.lastIndexOf` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.lastindexof
+exportTypedArrayMethod('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {
+  var length = arguments.length;
+  return apply($lastIndexOf, aTypedArray(this), length > 1 ? [searchElement, arguments[1]] : [searchElement]);
+});
diff --git a/node_modules/core-js/modules/es.typed-array.map.js b/node_modules/core-js/modules/es.typed-array.map.js
new file mode 100644
index 0000000..103b6bb
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.map.js
@@ -0,0 +1,15 @@
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var $map = require('../internals/array-iteration').map;
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+// `%TypedArray%.prototype.map` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.map
+exportTypedArrayMethod('map', function map(mapfn /* , thisArg */) {
+  return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {
+    return new (getTypedArrayConstructor(O))(length);
+  });
+});
diff --git a/node_modules/core-js/modules/es.typed-array.of.js b/node_modules/core-js/modules/es.typed-array.of.js
new file mode 100644
index 0000000..2c9064b
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.of.js
@@ -0,0 +1,16 @@
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');
+
+var aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;
+var exportTypedArrayStaticMethod = ArrayBufferViewCore.exportTypedArrayStaticMethod;
+
+// `%TypedArray%.of` method
+// https://tc39.es/ecma262/#sec-%typedarray%.of
+exportTypedArrayStaticMethod('of', function of(/* ...items */) {
+  var index = 0;
+  var length = arguments.length;
+  var result = new (aTypedArrayConstructor(this))(length);
+  while (length > index) result[index] = arguments[index++];
+  return result;
+}, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS);
diff --git a/node_modules/core-js/modules/es.typed-array.reduce-right.js b/node_modules/core-js/modules/es.typed-array.reduce-right.js
new file mode 100644
index 0000000..5df1ca1
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.reduce-right.js
@@ -0,0 +1,13 @@
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var $reduceRight = require('../internals/array-reduce').right;
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+// `%TypedArray%.prototype.reduceRight` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduceright
+exportTypedArrayMethod('reduceRight', function reduceRight(callbackfn /* , initialValue */) {
+  var length = arguments.length;
+  return $reduceRight(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined);
+});
diff --git a/node_modules/core-js/modules/es.typed-array.reduce.js b/node_modules/core-js/modules/es.typed-array.reduce.js
new file mode 100644
index 0000000..4a71707
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.reduce.js
@@ -0,0 +1,13 @@
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var $reduce = require('../internals/array-reduce').left;
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+// `%TypedArray%.prototype.reduce` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduce
+exportTypedArrayMethod('reduce', function reduce(callbackfn /* , initialValue */) {
+  var length = arguments.length;
+  return $reduce(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined);
+});
diff --git a/node_modules/core-js/modules/es.typed-array.reverse.js b/node_modules/core-js/modules/es.typed-array.reverse.js
new file mode 100644
index 0000000..4a5a870
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.reverse.js
@@ -0,0 +1,21 @@
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+var floor = Math.floor;
+
+// `%TypedArray%.prototype.reverse` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reverse
+exportTypedArrayMethod('reverse', function reverse() {
+  var that = this;
+  var length = aTypedArray(that).length;
+  var middle = floor(length / 2);
+  var index = 0;
+  var value;
+  while (index < middle) {
+    value = that[index];
+    that[index++] = that[--length];
+    that[length] = value;
+  } return that;
+});
diff --git a/node_modules/core-js/modules/es.typed-array.set.js b/node_modules/core-js/modules/es.typed-array.set.js
new file mode 100644
index 0000000..8248ce2
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.set.js
@@ -0,0 +1,44 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+var call = require('../internals/function-call');
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+var toOffset = require('../internals/to-offset');
+var toIndexedObject = require('../internals/to-object');
+var fails = require('../internals/fails');
+
+var RangeError = globalThis.RangeError;
+var Int8Array = globalThis.Int8Array;
+var Int8ArrayPrototype = Int8Array && Int8Array.prototype;
+var $set = Int8ArrayPrototype && Int8ArrayPrototype.set;
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+var WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS = !fails(function () {
+  // eslint-disable-next-line es/no-typed-arrays -- required for testing
+  var array = new Uint8ClampedArray(2);
+  call($set, array, { length: 1, 0: 3 }, 1);
+  return array[1] !== 3;
+});
+
+// https://bugs.chromium.org/p/v8/issues/detail?id=11294 and other
+var TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS && fails(function () {
+  var array = new Int8Array(2);
+  array.set(1);
+  array.set('2', 1);
+  return array[0] !== 0 || array[1] !== 2;
+});
+
+// `%TypedArray%.prototype.set` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set
+exportTypedArrayMethod('set', function set(arrayLike /* , offset */) {
+  aTypedArray(this);
+  var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);
+  var src = toIndexedObject(arrayLike);
+  if (WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS) return call($set, this, src, offset);
+  var length = this.length;
+  var len = lengthOfArrayLike(src);
+  var index = 0;
+  if (len + offset > length) throw new RangeError('Wrong length');
+  while (index < len) this[offset + index] = src[index++];
+}, !WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG);
diff --git a/node_modules/core-js/modules/es.typed-array.slice.js b/node_modules/core-js/modules/es.typed-array.slice.js
new file mode 100644
index 0000000..810fb5a
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.slice.js
@@ -0,0 +1,25 @@
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var fails = require('../internals/fails');
+var arraySlice = require('../internals/array-slice');
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+var FORCED = fails(function () {
+  // eslint-disable-next-line es/no-typed-arrays -- required for testing
+  new Int8Array(1).slice();
+});
+
+// `%TypedArray%.prototype.slice` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.slice
+exportTypedArrayMethod('slice', function slice(start, end) {
+  var list = arraySlice(aTypedArray(this), start, end);
+  var C = getTypedArrayConstructor(this);
+  var index = 0;
+  var length = list.length;
+  var result = new C(length);
+  while (length > index) result[index] = list[index++];
+  return result;
+}, FORCED);
diff --git a/node_modules/core-js/modules/es.typed-array.some.js b/node_modules/core-js/modules/es.typed-array.some.js
new file mode 100644
index 0000000..214115b
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.some.js
@@ -0,0 +1,12 @@
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var $some = require('../internals/array-iteration').some;
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+// `%TypedArray%.prototype.some` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.some
+exportTypedArrayMethod('some', function some(callbackfn /* , thisArg */) {
+  return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+});
diff --git a/node_modules/core-js/modules/es.typed-array.sort.js b/node_modules/core-js/modules/es.typed-array.sort.js
new file mode 100644
index 0000000..5fddfb1
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.sort.js
@@ -0,0 +1,70 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+var uncurryThis = require('../internals/function-uncurry-this-clause');
+var fails = require('../internals/fails');
+var aCallable = require('../internals/a-callable');
+var internalSort = require('../internals/array-sort');
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var FF = require('../internals/environment-ff-version');
+var IE_OR_EDGE = require('../internals/environment-is-ie-or-edge');
+var V8 = require('../internals/environment-v8-version');
+var WEBKIT = require('../internals/environment-webkit-version');
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+var Uint16Array = globalThis.Uint16Array;
+var nativeSort = Uint16Array && uncurryThis(Uint16Array.prototype.sort);
+
+// WebKit
+var ACCEPT_INCORRECT_ARGUMENTS = !!nativeSort && !(fails(function () {
+  nativeSort(new Uint16Array(2), null);
+}) && fails(function () {
+  nativeSort(new Uint16Array(2), {});
+}));
+
+var STABLE_SORT = !!nativeSort && !fails(function () {
+  // feature detection can be too slow, so check engines versions
+  if (V8) return V8 < 74;
+  if (FF) return FF < 67;
+  if (IE_OR_EDGE) return true;
+  if (WEBKIT) return WEBKIT < 602;
+
+  var array = new Uint16Array(516);
+  var expected = Array(516);
+  var index, mod;
+
+  for (index = 0; index < 516; index++) {
+    mod = index % 4;
+    array[index] = 515 - index;
+    expected[index] = index - 2 * mod + 3;
+  }
+
+  nativeSort(array, function (a, b) {
+    return (a / 4 | 0) - (b / 4 | 0);
+  });
+
+  for (index = 0; index < 516; index++) {
+    if (array[index] !== expected[index]) return true;
+  }
+});
+
+var getSortCompare = function (comparefn) {
+  return function (x, y) {
+    if (comparefn !== undefined) return +comparefn(x, y) || 0;
+    // eslint-disable-next-line no-self-compare -- NaN check
+    if (y !== y) return -1;
+    // eslint-disable-next-line no-self-compare -- NaN check
+    if (x !== x) return 1;
+    if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1;
+    return x > y;
+  };
+};
+
+// `%TypedArray%.prototype.sort` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort
+exportTypedArrayMethod('sort', function sort(comparefn) {
+  if (comparefn !== undefined) aCallable(comparefn);
+  if (STABLE_SORT) return nativeSort(this, comparefn);
+
+  return internalSort(aTypedArray(this), getSortCompare(comparefn));
+}, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS);
diff --git a/node_modules/core-js/modules/es.typed-array.subarray.js b/node_modules/core-js/modules/es.typed-array.subarray.js
new file mode 100644
index 0000000..5bf9855
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.subarray.js
@@ -0,0 +1,22 @@
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var toLength = require('../internals/to-length');
+var toAbsoluteIndex = require('../internals/to-absolute-index');
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+// `%TypedArray%.prototype.subarray` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.subarray
+exportTypedArrayMethod('subarray', function subarray(begin, end) {
+  var O = aTypedArray(this);
+  var length = O.length;
+  var beginIndex = toAbsoluteIndex(begin, length);
+  var C = getTypedArrayConstructor(O);
+  return new C(
+    O.buffer,
+    O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,
+    toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)
+  );
+});
diff --git a/node_modules/core-js/modules/es.typed-array.to-locale-string.js b/node_modules/core-js/modules/es.typed-array.to-locale-string.js
new file mode 100644
index 0000000..714e50f
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.to-locale-string.js
@@ -0,0 +1,32 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+var apply = require('../internals/function-apply');
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var fails = require('../internals/fails');
+var arraySlice = require('../internals/array-slice');
+
+var Int8Array = globalThis.Int8Array;
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+var $toLocaleString = [].toLocaleString;
+
+// iOS Safari 6.x fails here
+var TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {
+  $toLocaleString.call(new Int8Array(1));
+});
+
+var FORCED = fails(function () {
+  return [1, 2].toLocaleString() !== new Int8Array([1, 2]).toLocaleString();
+}) || !fails(function () {
+  Int8Array.prototype.toLocaleString.call([1, 2]);
+});
+
+// `%TypedArray%.prototype.toLocaleString` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring
+exportTypedArrayMethod('toLocaleString', function toLocaleString() {
+  return apply(
+    $toLocaleString,
+    TO_LOCALE_STRING_BUG ? arraySlice(aTypedArray(this)) : aTypedArray(this),
+    arraySlice(arguments)
+  );
+}, FORCED);
diff --git a/node_modules/core-js/modules/es.typed-array.to-reversed.js b/node_modules/core-js/modules/es.typed-array.to-reversed.js
new file mode 100644
index 0000000..500d44f
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.to-reversed.js
@@ -0,0 +1,13 @@
+'use strict';
+var arrayToReversed = require('../internals/array-to-reversed');
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+var getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;
+
+// `%TypedArray%.prototype.toReversed` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.toreversed
+exportTypedArrayMethod('toReversed', function toReversed() {
+  return arrayToReversed(aTypedArray(this), getTypedArrayConstructor(this));
+});
diff --git a/node_modules/core-js/modules/es.typed-array.to-sorted.js b/node_modules/core-js/modules/es.typed-array.to-sorted.js
new file mode 100644
index 0000000..09b9afd
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.to-sorted.js
@@ -0,0 +1,19 @@
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var uncurryThis = require('../internals/function-uncurry-this');
+var aCallable = require('../internals/a-callable');
+var arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+var sort = uncurryThis(ArrayBufferViewCore.TypedArrayPrototype.sort);
+
+// `%TypedArray%.prototype.toSorted` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tosorted
+exportTypedArrayMethod('toSorted', function toSorted(compareFn) {
+  if (compareFn !== undefined) aCallable(compareFn);
+  var O = aTypedArray(this);
+  var A = arrayFromConstructorAndList(getTypedArrayConstructor(O), O);
+  return sort(A, compareFn);
+});
diff --git a/node_modules/core-js/modules/es.typed-array.to-string.js b/node_modules/core-js/modules/es.typed-array.to-string.js
new file mode 100644
index 0000000..c7b9459
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.to-string.js
@@ -0,0 +1,22 @@
+'use strict';
+var exportTypedArrayMethod = require('../internals/array-buffer-view-core').exportTypedArrayMethod;
+var fails = require('../internals/fails');
+var globalThis = require('../internals/global-this');
+var uncurryThis = require('../internals/function-uncurry-this');
+
+var Uint8Array = globalThis.Uint8Array;
+var Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {};
+var arrayToString = [].toString;
+var join = uncurryThis([].join);
+
+if (fails(function () { arrayToString.call({}); })) {
+  arrayToString = function toString() {
+    return join(this);
+  };
+}
+
+var IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString !== arrayToString;
+
+// `%TypedArray%.prototype.toString` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tostring
+exportTypedArrayMethod('toString', arrayToString, IS_NOT_ARRAY_METHOD);
diff --git a/node_modules/core-js/modules/es.typed-array.uint16-array.js b/node_modules/core-js/modules/es.typed-array.uint16-array.js
new file mode 100644
index 0000000..81750e1
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.uint16-array.js
@@ -0,0 +1,10 @@
+'use strict';
+var createTypedArrayConstructor = require('../internals/typed-array-constructor');
+
+// `Uint16Array` constructor
+// https://tc39.es/ecma262/#sec-typedarray-objects
+createTypedArrayConstructor('Uint16', function (init) {
+  return function Uint16Array(data, byteOffset, length) {
+    return init(this, data, byteOffset, length);
+  };
+});
diff --git a/node_modules/core-js/modules/es.typed-array.uint32-array.js b/node_modules/core-js/modules/es.typed-array.uint32-array.js
new file mode 100644
index 0000000..eb3e9d1
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.uint32-array.js
@@ -0,0 +1,10 @@
+'use strict';
+var createTypedArrayConstructor = require('../internals/typed-array-constructor');
+
+// `Uint32Array` constructor
+// https://tc39.es/ecma262/#sec-typedarray-objects
+createTypedArrayConstructor('Uint32', function (init) {
+  return function Uint32Array(data, byteOffset, length) {
+    return init(this, data, byteOffset, length);
+  };
+});
diff --git a/node_modules/core-js/modules/es.typed-array.uint8-array.js b/node_modules/core-js/modules/es.typed-array.uint8-array.js
new file mode 100644
index 0000000..24a1830
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.uint8-array.js
@@ -0,0 +1,10 @@
+'use strict';
+var createTypedArrayConstructor = require('../internals/typed-array-constructor');
+
+// `Uint8Array` constructor
+// https://tc39.es/ecma262/#sec-typedarray-objects
+createTypedArrayConstructor('Uint8', function (init) {
+  return function Uint8Array(data, byteOffset, length) {
+    return init(this, data, byteOffset, length);
+  };
+});
diff --git a/node_modules/core-js/modules/es.typed-array.uint8-clamped-array.js b/node_modules/core-js/modules/es.typed-array.uint8-clamped-array.js
new file mode 100644
index 0000000..46103ce
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.uint8-clamped-array.js
@@ -0,0 +1,10 @@
+'use strict';
+var createTypedArrayConstructor = require('../internals/typed-array-constructor');
+
+// `Uint8ClampedArray` constructor
+// https://tc39.es/ecma262/#sec-typedarray-objects
+createTypedArrayConstructor('Uint8', function (init) {
+  return function Uint8ClampedArray(data, byteOffset, length) {
+    return init(this, data, byteOffset, length);
+  };
+}, true);
diff --git a/node_modules/core-js/modules/es.typed-array.with.js b/node_modules/core-js/modules/es.typed-array.with.js
new file mode 100644
index 0000000..f9e83cd
--- /dev/null
+++ b/node_modules/core-js/modules/es.typed-array.with.js
@@ -0,0 +1,30 @@
+'use strict';
+var arrayWith = require('../internals/array-with');
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var isBigIntArray = require('../internals/is-big-int-array');
+var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
+var toBigInt = require('../internals/to-big-int');
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+var PROPER_ORDER = !!function () {
+  try {
+    // eslint-disable-next-line no-throw-literal, es/no-typed-arrays, es/no-array-prototype-with -- required for testing
+    new Int8Array(1)['with'](2, { valueOf: function () { throw 8; } });
+  } catch (error) {
+    // some early implementations, like WebKit, does not follow the final semantic
+    // https://github.com/tc39/proposal-change-array-by-copy/pull/86
+    return error === 8;
+  }
+}();
+
+// `%TypedArray%.prototype.with` method
+// https://tc39.es/ecma262/#sec-%typedarray%.prototype.with
+exportTypedArrayMethod('with', { 'with': function (index, value) {
+  var O = aTypedArray(this);
+  var relativeIndex = toIntegerOrInfinity(index);
+  var actualValue = isBigIntArray(O) ? toBigInt(value) : +value;
+  return arrayWith(O, getTypedArrayConstructor(O), relativeIndex, actualValue);
+} }['with'], !PROPER_ORDER);
diff --git a/node_modules/core-js/modules/es.unescape.js b/node_modules/core-js/modules/es.unescape.js
new file mode 100644
index 0000000..c23b68c
--- /dev/null
+++ b/node_modules/core-js/modules/es.unescape.js
@@ -0,0 +1,45 @@
+'use strict';
+var $ = require('../internals/export');
+var uncurryThis = require('../internals/function-uncurry-this');
+var toString = require('../internals/to-string');
+
+var fromCharCode = String.fromCharCode;
+var charAt = uncurryThis(''.charAt);
+var exec = uncurryThis(/./.exec);
+var stringSlice = uncurryThis(''.slice);
+
+var hex2 = /^[\da-f]{2}$/i;
+var hex4 = /^[\da-f]{4}$/i;
+
+// `unescape` method
+// https://tc39.es/ecma262/#sec-unescape-string
+$({ global: true }, {
+  unescape: function unescape(string) {
+    var str = toString(string);
+    var result = '';
+    var length = str.length;
+    var index = 0;
+    var chr, part;
+    while (index < length) {
+      chr = charAt(str, index++);
+      if (chr === '%') {
+        if (charAt(str, index) === 'u') {
+          part = stringSlice(str, index + 1, index + 5);
+          if (exec(hex4, part)) {
+            result += fromCharCode(parseInt(part, 16));
+            index += 5;
+            continue;
+          }
+        } else {
+          part = stringSlice(str, index, index + 2);
+          if (exec(hex2, part)) {
+            result += fromCharCode(parseInt(part, 16));
+            index += 2;
+            continue;
+          }
+        }
+      }
+      result += chr;
+    } return result;
+  }
+});
diff --git a/node_modules/core-js/modules/es.weak-map.constructor.js b/node_modules/core-js/modules/es.weak-map.constructor.js
new file mode 100644
index 0000000..d5105e4
--- /dev/null
+++ b/node_modules/core-js/modules/es.weak-map.constructor.js
@@ -0,0 +1,106 @@
+'use strict';
+var FREEZING = require('../internals/freezing');
+var globalThis = require('../internals/global-this');
+var uncurryThis = require('../internals/function-uncurry-this');
+var defineBuiltIns = require('../internals/define-built-ins');
+var InternalMetadataModule = require('../internals/internal-metadata');
+var collection = require('../internals/collection');
+var collectionWeak = require('../internals/collection-weak');
+var isObject = require('../internals/is-object');
+var enforceInternalState = require('../internals/internal-state').enforce;
+var fails = require('../internals/fails');
+var NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');
+
+var $Object = Object;
+// eslint-disable-next-line es/no-array-isarray -- safe
+var isArray = Array.isArray;
+// eslint-disable-next-line es/no-object-isextensible -- safe
+var isExtensible = $Object.isExtensible;
+// eslint-disable-next-line es/no-object-isfrozen -- safe
+var isFrozen = $Object.isFrozen;
+// eslint-disable-next-line es/no-object-issealed -- safe
+var isSealed = $Object.isSealed;
+// eslint-disable-next-line es/no-object-freeze -- safe
+var freeze = $Object.freeze;
+// eslint-disable-next-line es/no-object-seal -- safe
+var seal = $Object.seal;
+
+var IS_IE11 = !globalThis.ActiveXObject && 'ActiveXObject' in globalThis;
+var InternalWeakMap;
+
+var wrapper = function (init) {
+  return function WeakMap() {
+    return init(this, arguments.length ? arguments[0] : undefined);
+  };
+};
+
+// `WeakMap` constructor
+// https://tc39.es/ecma262/#sec-weakmap-constructor
+var $WeakMap = collection('WeakMap', wrapper, collectionWeak);
+var WeakMapPrototype = $WeakMap.prototype;
+var nativeSet = uncurryThis(WeakMapPrototype.set);
+
+// Chakra Edge bug: adding frozen arrays to WeakMap unfreeze them
+var hasMSEdgeFreezingBug = function () {
+  return FREEZING && fails(function () {
+    var frozenArray = freeze([]);
+    nativeSet(new $WeakMap(), frozenArray, 1);
+    return !isFrozen(frozenArray);
+  });
+};
+
+// IE11 WeakMap frozen keys fix
+// We can't use feature detection because it crash some old IE builds
+// https://github.com/zloirock/core-js/issues/485
+if (NATIVE_WEAK_MAP) if (IS_IE11) {
+  InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true);
+  InternalMetadataModule.enable();
+  var nativeDelete = uncurryThis(WeakMapPrototype['delete']);
+  var nativeHas = uncurryThis(WeakMapPrototype.has);
+  var nativeGet = uncurryThis(WeakMapPrototype.get);
+  defineBuiltIns(WeakMapPrototype, {
+    'delete': function (key) {
+      if (isObject(key) && !isExtensible(key)) {
+        var state = enforceInternalState(this);
+        if (!state.frozen) state.frozen = new InternalWeakMap();
+        return nativeDelete(this, key) || state.frozen['delete'](key);
+      } return nativeDelete(this, key);
+    },
+    has: function has(key) {
+      if (isObject(key) && !isExtensible(key)) {
+        var state = enforceInternalState(this);
+        if (!state.frozen) state.frozen = new InternalWeakMap();
+        return nativeHas(this, key) || state.frozen.has(key);
+      } return nativeHas(this, key);
+    },
+    get: function get(key) {
+      if (isObject(key) && !isExtensible(key)) {
+        var state = enforceInternalState(this);
+        if (!state.frozen) state.frozen = new InternalWeakMap();
+        return nativeHas(this, key) ? nativeGet(this, key) : state.frozen.get(key);
+      } return nativeGet(this, key);
+    },
+    set: function set(key, value) {
+      if (isObject(key) && !isExtensible(key)) {
+        var state = enforceInternalState(this);
+        if (!state.frozen) state.frozen = new InternalWeakMap();
+        nativeHas(this, key) ? nativeSet(this, key, value) : state.frozen.set(key, value);
+      } else nativeSet(this, key, value);
+      return this;
+    }
+  });
+// Chakra Edge frozen keys fix
+} else if (hasMSEdgeFreezingBug()) {
+  defineBuiltIns(WeakMapPrototype, {
+    set: function set(key, value) {
+      var arrayIntegrityLevel;
+      if (isArray(key)) {
+        if (isFrozen(key)) arrayIntegrityLevel = freeze;
+        else if (isSealed(key)) arrayIntegrityLevel = seal;
+      }
+      nativeSet(this, key, value);
+      if (arrayIntegrityLevel) arrayIntegrityLevel(key);
+      return this;
+    }
+  });
+}
diff --git a/node_modules/core-js/modules/es.weak-map.js b/node_modules/core-js/modules/es.weak-map.js
new file mode 100644
index 0000000..d59a49f
--- /dev/null
+++ b/node_modules/core-js/modules/es.weak-map.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove this module from `core-js@4` since it's replaced to module below
+require('../modules/es.weak-map.constructor');
diff --git a/node_modules/core-js/modules/es.weak-set.constructor.js b/node_modules/core-js/modules/es.weak-set.constructor.js
new file mode 100644
index 0000000..80d9c34
--- /dev/null
+++ b/node_modules/core-js/modules/es.weak-set.constructor.js
@@ -0,0 +1,9 @@
+'use strict';
+var collection = require('../internals/collection');
+var collectionWeak = require('../internals/collection-weak');
+
+// `WeakSet` constructor
+// https://tc39.es/ecma262/#sec-weakset-constructor
+collection('WeakSet', function (init) {
+  return function WeakSet() { return init(this, arguments.length ? arguments[0] : undefined); };
+}, collectionWeak);
diff --git a/node_modules/core-js/modules/es.weak-set.js b/node_modules/core-js/modules/es.weak-set.js
new file mode 100644
index 0000000..7d3d93e
--- /dev/null
+++ b/node_modules/core-js/modules/es.weak-set.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove this module from `core-js@4` since it's replaced to module below
+require('../modules/es.weak-set.constructor');
diff --git a/node_modules/core-js/modules/esnext.aggregate-error.js b/node_modules/core-js/modules/esnext.aggregate-error.js
new file mode 100644
index 0000000..677193d
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.aggregate-error.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.aggregate-error');
diff --git a/node_modules/core-js/modules/esnext.array-buffer.detached.js b/node_modules/core-js/modules/esnext.array-buffer.detached.js
new file mode 100644
index 0000000..c8db3f0
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.array-buffer.detached.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.array-buffer.detached');
diff --git a/node_modules/core-js/modules/esnext.array-buffer.transfer-to-fixed-length.js b/node_modules/core-js/modules/esnext.array-buffer.transfer-to-fixed-length.js
new file mode 100644
index 0000000..9bc38eb
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.array-buffer.transfer-to-fixed-length.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.array-buffer.transfer-to-fixed-length');
diff --git a/node_modules/core-js/modules/esnext.array-buffer.transfer.js b/node_modules/core-js/modules/esnext.array-buffer.transfer.js
new file mode 100644
index 0000000..f5f939b
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.array-buffer.transfer.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.array-buffer.transfer');
diff --git a/node_modules/core-js/modules/esnext.array.at.js b/node_modules/core-js/modules/esnext.array.at.js
new file mode 100644
index 0000000..13a671b
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.array.at.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.array.at');
diff --git a/node_modules/core-js/modules/esnext.array.filter-out.js b/node_modules/core-js/modules/esnext.array.filter-out.js
new file mode 100644
index 0000000..fc737f2
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.array.filter-out.js
@@ -0,0 +1,15 @@
+'use strict';
+// TODO: remove from `core-js@4`
+var $ = require('../internals/export');
+var $filterReject = require('../internals/array-iteration').filterReject;
+var addToUnscopables = require('../internals/add-to-unscopables');
+
+// `Array.prototype.filterOut` method
+// https://github.com/tc39/proposal-array-filtering
+$({ target: 'Array', proto: true, forced: true }, {
+  filterOut: function filterOut(callbackfn /* , thisArg */) {
+    return $filterReject(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+  }
+});
+
+addToUnscopables('filterOut');
diff --git a/node_modules/core-js/modules/esnext.array.filter-reject.js b/node_modules/core-js/modules/esnext.array.filter-reject.js
new file mode 100644
index 0000000..8a9ee56
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.array.filter-reject.js
@@ -0,0 +1,14 @@
+'use strict';
+var $ = require('../internals/export');
+var $filterReject = require('../internals/array-iteration').filterReject;
+var addToUnscopables = require('../internals/add-to-unscopables');
+
+// `Array.prototype.filterReject` method
+// https://github.com/tc39/proposal-array-filtering
+$({ target: 'Array', proto: true, forced: true }, {
+  filterReject: function filterReject(callbackfn /* , thisArg */) {
+    return $filterReject(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+  }
+});
+
+addToUnscopables('filterReject');
diff --git a/node_modules/core-js/modules/esnext.array.find-last-index.js b/node_modules/core-js/modules/esnext.array.find-last-index.js
new file mode 100644
index 0000000..bc997fe
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.array.find-last-index.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.array.find-last-index');
diff --git a/node_modules/core-js/modules/esnext.array.find-last.js b/node_modules/core-js/modules/esnext.array.find-last.js
new file mode 100644
index 0000000..04f1cd8
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.array.find-last.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.array.find-last');
diff --git a/node_modules/core-js/modules/esnext.array.from-async.js b/node_modules/core-js/modules/esnext.array.from-async.js
new file mode 100644
index 0000000..1d9e615
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.array.from-async.js
@@ -0,0 +1,22 @@
+'use strict';
+var $ = require('../internals/export');
+var fromAsync = require('../internals/array-from-async');
+var fails = require('../internals/fails');
+
+// eslint-disable-next-line es/no-nonstandard-array-properties -- safe
+var nativeFromAsync = Array.fromAsync;
+// https://bugs.webkit.org/show_bug.cgi?id=271703
+var INCORRECT_CONSTRUCTURING = !nativeFromAsync || fails(function () {
+  var counter = 0;
+  nativeFromAsync.call(function () {
+    counter++;
+    return [];
+  }, { length: 0 });
+  return counter !== 1;
+});
+
+// `Array.fromAsync` method
+// https://github.com/tc39/proposal-array-from-async
+$({ target: 'Array', stat: true, forced: INCORRECT_CONSTRUCTURING }, {
+  fromAsync: fromAsync
+});
diff --git a/node_modules/core-js/modules/esnext.array.group-by-to-map.js b/node_modules/core-js/modules/esnext.array.group-by-to-map.js
new file mode 100644
index 0000000..f2919a2
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.array.group-by-to-map.js
@@ -0,0 +1,16 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+var $ = require('../internals/export');
+var arrayMethodIsStrict = require('../internals/array-method-is-strict');
+var addToUnscopables = require('../internals/add-to-unscopables');
+var $groupToMap = require('../internals/array-group-to-map');
+var IS_PURE = require('../internals/is-pure');
+
+// `Array.prototype.groupByToMap` method
+// https://github.com/tc39/proposal-array-grouping
+// https://bugs.webkit.org/show_bug.cgi?id=236541
+$({ target: 'Array', proto: true, name: 'groupToMap', forced: IS_PURE || !arrayMethodIsStrict('groupByToMap') }, {
+  groupByToMap: $groupToMap
+});
+
+addToUnscopables('groupByToMap');
diff --git a/node_modules/core-js/modules/esnext.array.group-by.js b/node_modules/core-js/modules/esnext.array.group-by.js
new file mode 100644
index 0000000..f5b9abf
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.array.group-by.js
@@ -0,0 +1,18 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+var $ = require('../internals/export');
+var $group = require('../internals/array-group');
+var arrayMethodIsStrict = require('../internals/array-method-is-strict');
+var addToUnscopables = require('../internals/add-to-unscopables');
+
+// `Array.prototype.groupBy` method
+// https://github.com/tc39/proposal-array-grouping
+// https://bugs.webkit.org/show_bug.cgi?id=236541
+$({ target: 'Array', proto: true, forced: !arrayMethodIsStrict('groupBy') }, {
+  groupBy: function groupBy(callbackfn /* , thisArg */) {
+    var thisArg = arguments.length > 1 ? arguments[1] : undefined;
+    return $group(this, callbackfn, thisArg);
+  }
+});
+
+addToUnscopables('groupBy');
diff --git a/node_modules/core-js/modules/esnext.array.group-to-map.js b/node_modules/core-js/modules/esnext.array.group-to-map.js
new file mode 100644
index 0000000..4250264
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.array.group-to-map.js
@@ -0,0 +1,13 @@
+'use strict';
+var $ = require('../internals/export');
+var addToUnscopables = require('../internals/add-to-unscopables');
+var $groupToMap = require('../internals/array-group-to-map');
+var IS_PURE = require('../internals/is-pure');
+
+// `Array.prototype.groupToMap` method
+// https://github.com/tc39/proposal-array-grouping
+$({ target: 'Array', proto: true, forced: IS_PURE }, {
+  groupToMap: $groupToMap
+});
+
+addToUnscopables('groupToMap');
diff --git a/node_modules/core-js/modules/esnext.array.group.js b/node_modules/core-js/modules/esnext.array.group.js
new file mode 100644
index 0000000..9afca8c
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.array.group.js
@@ -0,0 +1,15 @@
+'use strict';
+var $ = require('../internals/export');
+var $group = require('../internals/array-group');
+var addToUnscopables = require('../internals/add-to-unscopables');
+
+// `Array.prototype.group` method
+// https://github.com/tc39/proposal-array-grouping
+$({ target: 'Array', proto: true }, {
+  group: function group(callbackfn /* , thisArg */) {
+    var thisArg = arguments.length > 1 ? arguments[1] : undefined;
+    return $group(this, callbackfn, thisArg);
+  }
+});
+
+addToUnscopables('group');
diff --git a/node_modules/core-js/modules/esnext.array.is-template-object.js b/node_modules/core-js/modules/esnext.array.is-template-object.js
new file mode 100644
index 0000000..0f1a826
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.array.is-template-object.js
@@ -0,0 +1,29 @@
+'use strict';
+var $ = require('../internals/export');
+var isArray = require('../internals/is-array');
+
+// eslint-disable-next-line es/no-object-isfrozen -- safe
+var isFrozen = Object.isFrozen;
+
+var isFrozenStringArray = function (array, allowUndefined) {
+  if (!isFrozen || !isArray(array) || !isFrozen(array)) return false;
+  var index = 0;
+  var length = array.length;
+  var element;
+  while (index < length) {
+    element = array[index++];
+    if (!(typeof element == 'string' || (allowUndefined && element === undefined))) {
+      return false;
+    }
+  } return length !== 0;
+};
+
+// `Array.isTemplateObject` method
+// https://github.com/tc39/proposal-array-is-template-object
+$({ target: 'Array', stat: true, sham: true, forced: true }, {
+  isTemplateObject: function isTemplateObject(value) {
+    if (!isFrozenStringArray(value, true)) return false;
+    var raw = value.raw;
+    return raw.length === value.length && isFrozenStringArray(raw, false);
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.array.last-index.js b/node_modules/core-js/modules/esnext.array.last-index.js
new file mode 100644
index 0000000..48d4997
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.array.last-index.js
@@ -0,0 +1,22 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+var DESCRIPTORS = require('../internals/descriptors');
+var addToUnscopables = require('../internals/add-to-unscopables');
+var toObject = require('../internals/to-object');
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
+
+// `Array.prototype.lastIndex` getter
+// https://github.com/keithamus/proposal-array-last
+if (DESCRIPTORS) {
+  defineBuiltInAccessor(Array.prototype, 'lastIndex', {
+    configurable: true,
+    get: function lastIndex() {
+      var O = toObject(this);
+      var len = lengthOfArrayLike(O);
+      return len === 0 ? 0 : len - 1;
+    }
+  });
+
+  addToUnscopables('lastIndex');
+}
diff --git a/node_modules/core-js/modules/esnext.array.last-item.js b/node_modules/core-js/modules/esnext.array.last-item.js
new file mode 100644
index 0000000..c1704cb
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.array.last-item.js
@@ -0,0 +1,27 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+var DESCRIPTORS = require('../internals/descriptors');
+var addToUnscopables = require('../internals/add-to-unscopables');
+var toObject = require('../internals/to-object');
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
+
+// `Array.prototype.lastIndex` accessor
+// https://github.com/keithamus/proposal-array-last
+if (DESCRIPTORS) {
+  defineBuiltInAccessor(Array.prototype, 'lastItem', {
+    configurable: true,
+    get: function lastItem() {
+      var O = toObject(this);
+      var len = lengthOfArrayLike(O);
+      return len === 0 ? undefined : O[len - 1];
+    },
+    set: function lastItem(value) {
+      var O = toObject(this);
+      var len = lengthOfArrayLike(O);
+      return O[len === 0 ? 0 : len - 1] = value;
+    }
+  });
+
+  addToUnscopables('lastItem');
+}
diff --git a/node_modules/core-js/modules/esnext.array.to-reversed.js b/node_modules/core-js/modules/esnext.array.to-reversed.js
new file mode 100644
index 0000000..258a90a
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.array.to-reversed.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.array.to-reversed');
diff --git a/node_modules/core-js/modules/esnext.array.to-sorted.js b/node_modules/core-js/modules/esnext.array.to-sorted.js
new file mode 100644
index 0000000..4ef39e5
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.array.to-sorted.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.array.to-sorted');
diff --git a/node_modules/core-js/modules/esnext.array.to-spliced.js b/node_modules/core-js/modules/esnext.array.to-spliced.js
new file mode 100644
index 0000000..f8d18fb
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.array.to-spliced.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.array.to-spliced');
diff --git a/node_modules/core-js/modules/esnext.array.unique-by.js b/node_modules/core-js/modules/esnext.array.unique-by.js
new file mode 100644
index 0000000..ea8f4f9
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.array.unique-by.js
@@ -0,0 +1,12 @@
+'use strict';
+var $ = require('../internals/export');
+var addToUnscopables = require('../internals/add-to-unscopables');
+var uniqueBy = require('../internals/array-unique-by');
+
+// `Array.prototype.uniqueBy` method
+// https://github.com/tc39/proposal-array-unique
+$({ target: 'Array', proto: true, forced: true }, {
+  uniqueBy: uniqueBy
+});
+
+addToUnscopables('uniqueBy');
diff --git a/node_modules/core-js/modules/esnext.array.with.js b/node_modules/core-js/modules/esnext.array.with.js
new file mode 100644
index 0000000..a1e20a1
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.array.with.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.array.with');
diff --git a/node_modules/core-js/modules/esnext.async-disposable-stack.constructor.js b/node_modules/core-js/modules/esnext.async-disposable-stack.constructor.js
new file mode 100644
index 0000000..58b7276
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.async-disposable-stack.constructor.js
@@ -0,0 +1,135 @@
+'use strict';
+// https://github.com/tc39/proposal-async-explicit-resource-management
+var $ = require('../internals/export');
+var DESCRIPTORS = require('../internals/descriptors');
+var getBuiltIn = require('../internals/get-built-in');
+var aCallable = require('../internals/a-callable');
+var anInstance = require('../internals/an-instance');
+var defineBuiltIn = require('../internals/define-built-in');
+var defineBuiltIns = require('../internals/define-built-ins');
+var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var InternalStateModule = require('../internals/internal-state');
+var addDisposableResource = require('../internals/add-disposable-resource');
+var V8_VERSION = require('../internals/environment-v8-version');
+
+var Promise = getBuiltIn('Promise');
+var SuppressedError = getBuiltIn('SuppressedError');
+var $ReferenceError = ReferenceError;
+
+var ASYNC_DISPOSE = wellKnownSymbol('asyncDispose');
+var TO_STRING_TAG = wellKnownSymbol('toStringTag');
+
+var ASYNC_DISPOSABLE_STACK = 'AsyncDisposableStack';
+var setInternalState = InternalStateModule.set;
+var getAsyncDisposableStackInternalState = InternalStateModule.getterFor(ASYNC_DISPOSABLE_STACK);
+
+var HINT = 'async-dispose';
+var DISPOSED = 'disposed';
+var PENDING = 'pending';
+
+var getPendingAsyncDisposableStackInternalState = function (stack) {
+  var internalState = getAsyncDisposableStackInternalState(stack);
+  if (internalState.state === DISPOSED) throw new $ReferenceError(ASYNC_DISPOSABLE_STACK + ' already disposed');
+  return internalState;
+};
+
+var $AsyncDisposableStack = function AsyncDisposableStack() {
+  setInternalState(anInstance(this, AsyncDisposableStackPrototype), {
+    type: ASYNC_DISPOSABLE_STACK,
+    state: PENDING,
+    stack: []
+  });
+
+  if (!DESCRIPTORS) this.disposed = false;
+};
+
+var AsyncDisposableStackPrototype = $AsyncDisposableStack.prototype;
+
+defineBuiltIns(AsyncDisposableStackPrototype, {
+  disposeAsync: function disposeAsync() {
+    var asyncDisposableStack = this;
+    return new Promise(function (resolve, reject) {
+      var internalState = getAsyncDisposableStackInternalState(asyncDisposableStack);
+      if (internalState.state === DISPOSED) return resolve(undefined);
+      internalState.state = DISPOSED;
+      if (!DESCRIPTORS) asyncDisposableStack.disposed = true;
+      var stack = internalState.stack;
+      var i = stack.length;
+      var thrown = false;
+      var suppressed;
+
+      var handleError = function (result) {
+        if (thrown) {
+          suppressed = new SuppressedError(result, suppressed);
+        } else {
+          thrown = true;
+          suppressed = result;
+        }
+
+        loop();
+      };
+
+      var loop = function () {
+        if (i) {
+          var disposeMethod = stack[--i];
+          stack[i] = null;
+          try {
+            Promise.resolve(disposeMethod()).then(loop, handleError);
+          } catch (error) {
+            handleError(error);
+          }
+        } else {
+          internalState.stack = null;
+          thrown ? reject(suppressed) : resolve(undefined);
+        }
+      };
+
+      loop();
+    });
+  },
+  use: function use(value) {
+    addDisposableResource(getPendingAsyncDisposableStackInternalState(this), value, HINT);
+    return value;
+  },
+  adopt: function adopt(value, onDispose) {
+    var internalState = getPendingAsyncDisposableStackInternalState(this);
+    aCallable(onDispose);
+    addDisposableResource(internalState, undefined, HINT, function () {
+      return onDispose(value);
+    });
+    return value;
+  },
+  defer: function defer(onDispose) {
+    var internalState = getPendingAsyncDisposableStackInternalState(this);
+    aCallable(onDispose);
+    addDisposableResource(internalState, undefined, HINT, onDispose);
+  },
+  move: function move() {
+    var internalState = getPendingAsyncDisposableStackInternalState(this);
+    var newAsyncDisposableStack = new $AsyncDisposableStack();
+    getAsyncDisposableStackInternalState(newAsyncDisposableStack).stack = internalState.stack;
+    internalState.stack = [];
+    internalState.state = DISPOSED;
+    if (!DESCRIPTORS) this.disposed = true;
+    return newAsyncDisposableStack;
+  }
+});
+
+if (DESCRIPTORS) defineBuiltInAccessor(AsyncDisposableStackPrototype, 'disposed', {
+  configurable: true,
+  get: function disposed() {
+    return getAsyncDisposableStackInternalState(this).state === DISPOSED;
+  }
+});
+
+defineBuiltIn(AsyncDisposableStackPrototype, ASYNC_DISPOSE, AsyncDisposableStackPrototype.disposeAsync, { name: 'disposeAsync' });
+defineBuiltIn(AsyncDisposableStackPrototype, TO_STRING_TAG, ASYNC_DISPOSABLE_STACK, { nonWritable: true });
+
+// https://github.com/tc39/proposal-explicit-resource-management/issues/256
+// can't be detected synchronously
+var SYNC_DISPOSE_RETURNING_PROMISE_RESOLUTION_BUG = V8_VERSION && V8_VERSION < 136;
+
+$({ global: true, constructor: true, forced: SYNC_DISPOSE_RETURNING_PROMISE_RESOLUTION_BUG }, {
+  AsyncDisposableStack: $AsyncDisposableStack
+});
diff --git a/node_modules/core-js/modules/esnext.async-iterator.as-indexed-pairs.js b/node_modules/core-js/modules/esnext.async-iterator.as-indexed-pairs.js
new file mode 100644
index 0000000..bd4e3d8
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.async-iterator.as-indexed-pairs.js
@@ -0,0 +1,10 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+var $ = require('../internals/export');
+var indexed = require('../internals/async-iterator-indexed');
+
+// `AsyncIterator.prototype.asIndexedPairs` method
+// https://github.com/tc39/proposal-iterator-helpers
+$({ target: 'AsyncIterator', name: 'indexed', proto: true, real: true, forced: true }, {
+  asIndexedPairs: indexed
+});
diff --git a/node_modules/core-js/modules/esnext.async-iterator.async-dispose.js b/node_modules/core-js/modules/esnext.async-iterator.async-dispose.js
new file mode 100644
index 0000000..d6c1cd1
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.async-iterator.async-dispose.js
@@ -0,0 +1,26 @@
+'use strict';
+// https://github.com/tc39/proposal-async-explicit-resource-management
+var call = require('../internals/function-call');
+var defineBuiltIn = require('../internals/define-built-in');
+var getBuiltIn = require('../internals/get-built-in');
+var getMethod = require('../internals/get-method');
+var hasOwn = require('../internals/has-own-property');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var AsyncIteratorPrototype = require('../internals/async-iterator-prototype');
+
+var ASYNC_DISPOSE = wellKnownSymbol('asyncDispose');
+var Promise = getBuiltIn('Promise');
+
+if (!hasOwn(AsyncIteratorPrototype, ASYNC_DISPOSE)) {
+  defineBuiltIn(AsyncIteratorPrototype, ASYNC_DISPOSE, function () {
+    var O = this;
+    return new Promise(function (resolve, reject) {
+      var $return = getMethod(O, 'return');
+      if ($return) {
+        Promise.resolve(call($return, O)).then(function () {
+          resolve(undefined);
+        }, reject);
+      } else resolve(undefined);
+    });
+  });
+}
diff --git a/node_modules/core-js/modules/esnext.async-iterator.constructor.js b/node_modules/core-js/modules/esnext.async-iterator.constructor.js
new file mode 100644
index 0000000..b82b373
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.async-iterator.constructor.js
@@ -0,0 +1,34 @@
+'use strict';
+var $ = require('../internals/export');
+var anInstance = require('../internals/an-instance');
+var getPrototypeOf = require('../internals/object-get-prototype-of');
+var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
+var hasOwn = require('../internals/has-own-property');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var AsyncIteratorPrototype = require('../internals/async-iterator-prototype');
+var IS_PURE = require('../internals/is-pure');
+
+var TO_STRING_TAG = wellKnownSymbol('toStringTag');
+
+var $TypeError = TypeError;
+
+var AsyncIteratorConstructor = function AsyncIterator() {
+  anInstance(this, AsyncIteratorPrototype);
+  if (getPrototypeOf(this) === AsyncIteratorPrototype) throw new $TypeError('Abstract class AsyncIterator not directly constructable');
+};
+
+AsyncIteratorConstructor.prototype = AsyncIteratorPrototype;
+
+if (!hasOwn(AsyncIteratorPrototype, TO_STRING_TAG)) {
+  createNonEnumerableProperty(AsyncIteratorPrototype, TO_STRING_TAG, 'AsyncIterator');
+}
+
+if (IS_PURE || !hasOwn(AsyncIteratorPrototype, 'constructor') || AsyncIteratorPrototype.constructor === Object) {
+  createNonEnumerableProperty(AsyncIteratorPrototype, 'constructor', AsyncIteratorConstructor);
+}
+
+// `AsyncIterator` constructor
+// https://github.com/tc39/proposal-async-iterator-helpers
+$({ global: true, constructor: true, forced: IS_PURE }, {
+  AsyncIterator: AsyncIteratorConstructor
+});
diff --git a/node_modules/core-js/modules/esnext.async-iterator.drop.js b/node_modules/core-js/modules/esnext.async-iterator.drop.js
new file mode 100644
index 0000000..f6535ba
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.async-iterator.drop.js
@@ -0,0 +1,51 @@
+'use strict';
+var $ = require('../internals/export');
+var call = require('../internals/function-call');
+var anObject = require('../internals/an-object');
+var getIteratorDirect = require('../internals/get-iterator-direct');
+var notANaN = require('../internals/not-a-nan');
+var toPositiveInteger = require('../internals/to-positive-integer');
+var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');
+var createIterResultObject = require('../internals/create-iter-result-object');
+var IS_PURE = require('../internals/is-pure');
+
+var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise) {
+  var state = this;
+
+  return new Promise(function (resolve, reject) {
+    var doneAndReject = function (error) {
+      state.done = true;
+      reject(error);
+    };
+
+    var loop = function () {
+      try {
+        Promise.resolve(anObject(call(state.next, state.iterator))).then(function (step) {
+          try {
+            if (anObject(step).done) {
+              state.done = true;
+              resolve(createIterResultObject(undefined, true));
+            } else if (state.remaining) {
+              state.remaining--;
+              loop();
+            } else resolve(createIterResultObject(step.value, false));
+          } catch (err) { doneAndReject(err); }
+        }, doneAndReject);
+      } catch (error) { doneAndReject(error); }
+    };
+
+    loop();
+  });
+});
+
+// `AsyncIterator.prototype.drop` method
+// https://github.com/tc39/proposal-async-iterator-helpers
+$({ target: 'AsyncIterator', proto: true, real: true, forced: IS_PURE }, {
+  drop: function drop(limit) {
+    anObject(this);
+    var remaining = toPositiveInteger(notANaN(+limit));
+    return new AsyncIteratorProxy(getIteratorDirect(this), {
+      remaining: remaining
+    });
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.async-iterator.every.js b/node_modules/core-js/modules/esnext.async-iterator.every.js
new file mode 100644
index 0000000..f8a7773
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.async-iterator.every.js
@@ -0,0 +1,11 @@
+'use strict';
+var $ = require('../internals/export');
+var $every = require('../internals/async-iterator-iteration').every;
+
+// `AsyncIterator.prototype.every` method
+// https://github.com/tc39/proposal-async-iterator-helpers
+$({ target: 'AsyncIterator', proto: true, real: true }, {
+  every: function every(predicate) {
+    return $every(this, predicate);
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.async-iterator.filter.js b/node_modules/core-js/modules/esnext.async-iterator.filter.js
new file mode 100644
index 0000000..1455504
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.async-iterator.filter.js
@@ -0,0 +1,67 @@
+'use strict';
+var $ = require('../internals/export');
+var call = require('../internals/function-call');
+var aCallable = require('../internals/a-callable');
+var anObject = require('../internals/an-object');
+var isObject = require('../internals/is-object');
+var getIteratorDirect = require('../internals/get-iterator-direct');
+var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');
+var createIterResultObject = require('../internals/create-iter-result-object');
+var closeAsyncIteration = require('../internals/async-iterator-close');
+var IS_PURE = require('../internals/is-pure');
+
+var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise) {
+  var state = this;
+  var iterator = state.iterator;
+  var predicate = state.predicate;
+
+  return new Promise(function (resolve, reject) {
+    var doneAndReject = function (error) {
+      state.done = true;
+      reject(error);
+    };
+
+    var ifAbruptCloseAsyncIterator = function (error) {
+      closeAsyncIteration(iterator, doneAndReject, error, doneAndReject);
+    };
+
+    var loop = function () {
+      try {
+        Promise.resolve(anObject(call(state.next, iterator))).then(function (step) {
+          try {
+            if (anObject(step).done) {
+              state.done = true;
+              resolve(createIterResultObject(undefined, true));
+            } else {
+              var value = step.value;
+              try {
+                var result = predicate(value, state.counter++);
+
+                var handler = function (selected) {
+                  selected ? resolve(createIterResultObject(value, false)) : loop();
+                };
+
+                if (isObject(result)) Promise.resolve(result).then(handler, ifAbruptCloseAsyncIterator);
+                else handler(result);
+              } catch (error3) { ifAbruptCloseAsyncIterator(error3); }
+            }
+          } catch (error2) { doneAndReject(error2); }
+        }, doneAndReject);
+      } catch (error) { doneAndReject(error); }
+    };
+
+    loop();
+  });
+});
+
+// `AsyncIterator.prototype.filter` method
+// https://github.com/tc39/proposal-async-iterator-helpers
+$({ target: 'AsyncIterator', proto: true, real: true, forced: IS_PURE }, {
+  filter: function filter(predicate) {
+    anObject(this);
+    aCallable(predicate);
+    return new AsyncIteratorProxy(getIteratorDirect(this), {
+      predicate: predicate
+    });
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.async-iterator.find.js b/node_modules/core-js/modules/esnext.async-iterator.find.js
new file mode 100644
index 0000000..beb6946
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.async-iterator.find.js
@@ -0,0 +1,11 @@
+'use strict';
+var $ = require('../internals/export');
+var $find = require('../internals/async-iterator-iteration').find;
+
+// `AsyncIterator.prototype.find` method
+// https://github.com/tc39/proposal-async-iterator-helpers
+$({ target: 'AsyncIterator', proto: true, real: true }, {
+  find: function find(predicate) {
+    return $find(this, predicate);
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.async-iterator.flat-map.js b/node_modules/core-js/modules/esnext.async-iterator.flat-map.js
new file mode 100644
index 0000000..3a286ff
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.async-iterator.flat-map.js
@@ -0,0 +1,88 @@
+'use strict';
+var $ = require('../internals/export');
+var call = require('../internals/function-call');
+var aCallable = require('../internals/a-callable');
+var anObject = require('../internals/an-object');
+var isObject = require('../internals/is-object');
+var getIteratorDirect = require('../internals/get-iterator-direct');
+var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');
+var createIterResultObject = require('../internals/create-iter-result-object');
+var getAsyncIteratorFlattenable = require('../internals/get-async-iterator-flattenable');
+var closeAsyncIteration = require('../internals/async-iterator-close');
+var IS_PURE = require('../internals/is-pure');
+
+var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise) {
+  var state = this;
+  var iterator = state.iterator;
+  var mapper = state.mapper;
+
+  return new Promise(function (resolve, reject) {
+    var doneAndReject = function (error) {
+      state.done = true;
+      reject(error);
+    };
+
+    var ifAbruptCloseAsyncIterator = function (error) {
+      closeAsyncIteration(iterator, doneAndReject, error, doneAndReject);
+    };
+
+    var outerLoop = function () {
+      try {
+        Promise.resolve(anObject(call(state.next, iterator))).then(function (step) {
+          try {
+            if (anObject(step).done) {
+              state.done = true;
+              resolve(createIterResultObject(undefined, true));
+            } else {
+              var value = step.value;
+              try {
+                var result = mapper(value, state.counter++);
+
+                var handler = function (mapped) {
+                  try {
+                    state.inner = getAsyncIteratorFlattenable(mapped);
+                    innerLoop();
+                  } catch (error4) { ifAbruptCloseAsyncIterator(error4); }
+                };
+
+                if (isObject(result)) Promise.resolve(result).then(handler, ifAbruptCloseAsyncIterator);
+                else handler(result);
+              } catch (error3) { ifAbruptCloseAsyncIterator(error3); }
+            }
+          } catch (error2) { doneAndReject(error2); }
+        }, doneAndReject);
+      } catch (error) { doneAndReject(error); }
+    };
+
+    var innerLoop = function () {
+      var inner = state.inner;
+      if (inner) {
+        try {
+          Promise.resolve(anObject(call(inner.next, inner.iterator))).then(function (result) {
+            try {
+              if (anObject(result).done) {
+                state.inner = null;
+                outerLoop();
+              } else resolve(createIterResultObject(result.value, false));
+            } catch (error1) { ifAbruptCloseAsyncIterator(error1); }
+          }, ifAbruptCloseAsyncIterator);
+        } catch (error) { ifAbruptCloseAsyncIterator(error); }
+      } else outerLoop();
+    };
+
+    innerLoop();
+  });
+});
+
+// `AsyncIterator.prototype.flatMap` method
+// https://github.com/tc39/proposal-async-iterator-helpers
+$({ target: 'AsyncIterator', proto: true, real: true, forced: IS_PURE }, {
+  flatMap: function flatMap(mapper) {
+    anObject(this);
+    aCallable(mapper);
+    return new AsyncIteratorProxy(getIteratorDirect(this), {
+      mapper: mapper,
+      inner: null
+    });
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.async-iterator.for-each.js b/node_modules/core-js/modules/esnext.async-iterator.for-each.js
new file mode 100644
index 0000000..c56ad13
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.async-iterator.for-each.js
@@ -0,0 +1,11 @@
+'use strict';
+var $ = require('../internals/export');
+var $forEach = require('../internals/async-iterator-iteration').forEach;
+
+// `AsyncIterator.prototype.forEach` method
+// https://github.com/tc39/proposal-async-iterator-helpers
+$({ target: 'AsyncIterator', proto: true, real: true }, {
+  forEach: function forEach(fn) {
+    return $forEach(this, fn);
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.async-iterator.from.js b/node_modules/core-js/modules/esnext.async-iterator.from.js
new file mode 100644
index 0000000..8eed980
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.async-iterator.from.js
@@ -0,0 +1,19 @@
+'use strict';
+var $ = require('../internals/export');
+var toObject = require('../internals/to-object');
+var isPrototypeOf = require('../internals/object-is-prototype-of');
+var getAsyncIteratorFlattenable = require('../internals/get-async-iterator-flattenable');
+var AsyncIteratorPrototype = require('../internals/async-iterator-prototype');
+var WrapAsyncIterator = require('../internals/async-iterator-wrap');
+var IS_PURE = require('../internals/is-pure');
+
+// `AsyncIterator.from` method
+// https://github.com/tc39/proposal-async-iterator-helpers
+$({ target: 'AsyncIterator', stat: true, forced: IS_PURE }, {
+  from: function from(O) {
+    var iteratorRecord = getAsyncIteratorFlattenable(typeof O == 'string' ? toObject(O) : O);
+    return isPrototypeOf(AsyncIteratorPrototype, iteratorRecord.iterator)
+      ? iteratorRecord.iterator
+      : new WrapAsyncIterator(iteratorRecord);
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.async-iterator.indexed.js b/node_modules/core-js/modules/esnext.async-iterator.indexed.js
new file mode 100644
index 0000000..6601822
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.async-iterator.indexed.js
@@ -0,0 +1,10 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+var $ = require('../internals/export');
+var indexed = require('../internals/async-iterator-indexed');
+
+// `AsyncIterator.prototype.indexed` method
+// https://github.com/tc39/proposal-iterator-helpers
+$({ target: 'AsyncIterator', proto: true, real: true, forced: true }, {
+  indexed: indexed
+});
diff --git a/node_modules/core-js/modules/esnext.async-iterator.map.js b/node_modules/core-js/modules/esnext.async-iterator.map.js
new file mode 100644
index 0000000..da1a330
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.async-iterator.map.js
@@ -0,0 +1,11 @@
+'use strict';
+var $ = require('../internals/export');
+var map = require('../internals/async-iterator-map');
+var IS_PURE = require('../internals/is-pure');
+
+// `AsyncIterator.prototype.map` method
+// https://github.com/tc39/proposal-async-iterator-helpers
+$({ target: 'AsyncIterator', proto: true, real: true, forced: IS_PURE }, {
+  map: map
+});
+
diff --git a/node_modules/core-js/modules/esnext.async-iterator.reduce.js b/node_modules/core-js/modules/esnext.async-iterator.reduce.js
new file mode 100644
index 0000000..b417a51
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.async-iterator.reduce.js
@@ -0,0 +1,65 @@
+'use strict';
+var $ = require('../internals/export');
+var call = require('../internals/function-call');
+var aCallable = require('../internals/a-callable');
+var anObject = require('../internals/an-object');
+var isObject = require('../internals/is-object');
+var getBuiltIn = require('../internals/get-built-in');
+var getIteratorDirect = require('../internals/get-iterator-direct');
+var closeAsyncIteration = require('../internals/async-iterator-close');
+
+var Promise = getBuiltIn('Promise');
+var $TypeError = TypeError;
+
+// `AsyncIterator.prototype.reduce` method
+// https://github.com/tc39/proposal-async-iterator-helpers
+$({ target: 'AsyncIterator', proto: true, real: true }, {
+  reduce: function reduce(reducer /* , initialValue */) {
+    anObject(this);
+    aCallable(reducer);
+    var record = getIteratorDirect(this);
+    var iterator = record.iterator;
+    var next = record.next;
+    var noInitial = arguments.length < 2;
+    var accumulator = noInitial ? undefined : arguments[1];
+    var counter = 0;
+
+    return new Promise(function (resolve, reject) {
+      var ifAbruptCloseAsyncIterator = function (error) {
+        closeAsyncIteration(iterator, reject, error, reject);
+      };
+
+      var loop = function () {
+        try {
+          Promise.resolve(anObject(call(next, iterator))).then(function (step) {
+            try {
+              if (anObject(step).done) {
+                noInitial ? reject(new $TypeError('Reduce of empty iterator with no initial value')) : resolve(accumulator);
+              } else {
+                var value = step.value;
+                if (noInitial) {
+                  noInitial = false;
+                  accumulator = value;
+                  loop();
+                } else try {
+                  var result = reducer(accumulator, value, counter);
+
+                  var handler = function ($result) {
+                    accumulator = $result;
+                    loop();
+                  };
+
+                  if (isObject(result)) Promise.resolve(result).then(handler, ifAbruptCloseAsyncIterator);
+                  else handler(result);
+                } catch (error3) { ifAbruptCloseAsyncIterator(error3); }
+              }
+              counter++;
+            } catch (error2) { reject(error2); }
+          }, reject);
+        } catch (error) { reject(error); }
+      };
+
+      loop();
+    });
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.async-iterator.some.js b/node_modules/core-js/modules/esnext.async-iterator.some.js
new file mode 100644
index 0000000..1dc324d
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.async-iterator.some.js
@@ -0,0 +1,11 @@
+'use strict';
+var $ = require('../internals/export');
+var $some = require('../internals/async-iterator-iteration').some;
+
+// `AsyncIterator.prototype.some` method
+// https://github.com/tc39/proposal-async-iterator-helpers
+$({ target: 'AsyncIterator', proto: true, real: true }, {
+  some: function some(predicate) {
+    return $some(this, predicate);
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.async-iterator.take.js b/node_modules/core-js/modules/esnext.async-iterator.take.js
new file mode 100644
index 0000000..977feba
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.async-iterator.take.js
@@ -0,0 +1,48 @@
+'use strict';
+var $ = require('../internals/export');
+var call = require('../internals/function-call');
+var anObject = require('../internals/an-object');
+var getIteratorDirect = require('../internals/get-iterator-direct');
+var notANaN = require('../internals/not-a-nan');
+var toPositiveInteger = require('../internals/to-positive-integer');
+var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');
+var createIterResultObject = require('../internals/create-iter-result-object');
+var IS_PURE = require('../internals/is-pure');
+
+var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise) {
+  var state = this;
+  var iterator = state.iterator;
+  var returnMethod;
+
+  if (!state.remaining--) {
+    var resultDone = createIterResultObject(undefined, true);
+    state.done = true;
+    returnMethod = iterator['return'];
+    if (returnMethod !== undefined) {
+      return Promise.resolve(call(returnMethod, iterator, undefined)).then(function () {
+        return resultDone;
+      });
+    }
+    return resultDone;
+  } return Promise.resolve(call(state.next, iterator)).then(function (step) {
+    if (anObject(step).done) {
+      state.done = true;
+      return createIterResultObject(undefined, true);
+    } return createIterResultObject(step.value, false);
+  }).then(null, function (error) {
+    state.done = true;
+    throw error;
+  });
+});
+
+// `AsyncIterator.prototype.take` method
+// https://github.com/tc39/proposal-async-iterator-helpers
+$({ target: 'AsyncIterator', proto: true, real: true, forced: IS_PURE }, {
+  take: function take(limit) {
+    anObject(this);
+    var remaining = toPositiveInteger(notANaN(+limit));
+    return new AsyncIteratorProxy(getIteratorDirect(this), {
+      remaining: remaining
+    });
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.async-iterator.to-array.js b/node_modules/core-js/modules/esnext.async-iterator.to-array.js
new file mode 100644
index 0000000..4476457
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.async-iterator.to-array.js
@@ -0,0 +1,11 @@
+'use strict';
+var $ = require('../internals/export');
+var $toArray = require('../internals/async-iterator-iteration').toArray;
+
+// `AsyncIterator.prototype.toArray` method
+// https://github.com/tc39/proposal-async-iterator-helpers
+$({ target: 'AsyncIterator', proto: true, real: true }, {
+  toArray: function toArray() {
+    return $toArray(this, undefined, []);
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.bigint.range.js b/node_modules/core-js/modules/esnext.bigint.range.js
new file mode 100644
index 0000000..1e86869
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.bigint.range.js
@@ -0,0 +1,15 @@
+'use strict';
+/* eslint-disable es/no-bigint -- safe */
+var $ = require('../internals/export');
+var NumericRangeIterator = require('../internals/numeric-range-iterator');
+
+// `BigInt.range` method
+// https://github.com/tc39/proposal-Number.range
+// TODO: Remove from `core-js@4`
+if (typeof BigInt == 'function') {
+  $({ target: 'BigInt', stat: true, forced: true }, {
+    range: function range(start, end, option) {
+      return new NumericRangeIterator(start, end, option, 'bigint', BigInt(0), BigInt(1));
+    }
+  });
+}
diff --git a/node_modules/core-js/modules/esnext.composite-key.js b/node_modules/core-js/modules/esnext.composite-key.js
new file mode 100644
index 0000000..5eeacfb
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.composite-key.js
@@ -0,0 +1,20 @@
+'use strict';
+var $ = require('../internals/export');
+var apply = require('../internals/function-apply');
+var getCompositeKeyNode = require('../internals/composite-key');
+var getBuiltIn = require('../internals/get-built-in');
+var create = require('../internals/object-create');
+
+var $Object = Object;
+
+var initializer = function () {
+  var freeze = getBuiltIn('Object', 'freeze');
+  return freeze ? freeze(create(null)) : create(null);
+};
+
+// https://github.com/tc39/proposal-richer-keys/tree/master/compositeKey
+$({ global: true, forced: true }, {
+  compositeKey: function compositeKey() {
+    return apply(getCompositeKeyNode, $Object, arguments).get('object', initializer);
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.composite-symbol.js b/node_modules/core-js/modules/esnext.composite-symbol.js
new file mode 100644
index 0000000..93f5a08
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.composite-symbol.js
@@ -0,0 +1,13 @@
+'use strict';
+var $ = require('../internals/export');
+var getCompositeKeyNode = require('../internals/composite-key');
+var getBuiltIn = require('../internals/get-built-in');
+var apply = require('../internals/function-apply');
+
+// https://github.com/tc39/proposal-richer-keys/tree/master/compositeKey
+$({ global: true, forced: true }, {
+  compositeSymbol: function compositeSymbol() {
+    if (arguments.length === 1 && typeof arguments[0] == 'string') return getBuiltIn('Symbol')['for'](arguments[0]);
+    return apply(getCompositeKeyNode, null, arguments).get('symbol', getBuiltIn('Symbol'));
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.data-view.get-float16.js b/node_modules/core-js/modules/esnext.data-view.get-float16.js
new file mode 100644
index 0000000..c662e91
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.data-view.get-float16.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.data-view.get-float16');
diff --git a/node_modules/core-js/modules/esnext.data-view.get-uint8-clamped.js b/node_modules/core-js/modules/esnext.data-view.get-uint8-clamped.js
new file mode 100644
index 0000000..a292082
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.data-view.get-uint8-clamped.js
@@ -0,0 +1,14 @@
+'use strict';
+var $ = require('../internals/export');
+var uncurryThis = require('../internals/function-uncurry-this');
+
+// eslint-disable-next-line es/no-typed-arrays -- safe
+var getUint8 = uncurryThis(DataView.prototype.getUint8);
+
+// `DataView.prototype.getUint8Clamped` method
+// https://github.com/tc39/proposal-dataview-get-set-uint8clamped
+$({ target: 'DataView', proto: true, forced: true }, {
+  getUint8Clamped: function getUint8Clamped(byteOffset) {
+    return getUint8(this, byteOffset);
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.data-view.set-float16.js b/node_modules/core-js/modules/esnext.data-view.set-float16.js
new file mode 100644
index 0000000..b313982
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.data-view.set-float16.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.data-view.set-float16');
diff --git a/node_modules/core-js/modules/esnext.data-view.set-uint8-clamped.js b/node_modules/core-js/modules/esnext.data-view.set-uint8-clamped.js
new file mode 100644
index 0000000..ec60716
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.data-view.set-uint8-clamped.js
@@ -0,0 +1,19 @@
+'use strict';
+var $ = require('../internals/export');
+var uncurryThis = require('../internals/function-uncurry-this');
+var aDataView = require('../internals/a-data-view');
+var toIndex = require('../internals/to-index');
+var toUint8Clamped = require('../internals/to-uint8-clamped');
+
+// eslint-disable-next-line es/no-typed-arrays -- safe
+var setUint8 = uncurryThis(DataView.prototype.setUint8);
+
+// `DataView.prototype.setUint8Clamped` method
+// https://github.com/tc39/proposal-dataview-get-set-uint8clamped
+$({ target: 'DataView', proto: true, forced: true }, {
+  setUint8Clamped: function setUint8Clamped(byteOffset, value) {
+    aDataView(this);
+    var offset = toIndex(byteOffset);
+    return setUint8(this, offset, toUint8Clamped(value));
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.disposable-stack.constructor.js b/node_modules/core-js/modules/esnext.disposable-stack.constructor.js
new file mode 100644
index 0000000..435e21f
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.disposable-stack.constructor.js
@@ -0,0 +1,114 @@
+'use strict';
+// https://github.com/tc39/proposal-explicit-resource-management
+var $ = require('../internals/export');
+var DESCRIPTORS = require('../internals/descriptors');
+var getBuiltIn = require('../internals/get-built-in');
+var aCallable = require('../internals/a-callable');
+var anInstance = require('../internals/an-instance');
+var defineBuiltIn = require('../internals/define-built-in');
+var defineBuiltIns = require('../internals/define-built-ins');
+var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var InternalStateModule = require('../internals/internal-state');
+var addDisposableResource = require('../internals/add-disposable-resource');
+
+var SuppressedError = getBuiltIn('SuppressedError');
+var $ReferenceError = ReferenceError;
+
+var DISPOSE = wellKnownSymbol('dispose');
+var TO_STRING_TAG = wellKnownSymbol('toStringTag');
+
+var DISPOSABLE_STACK = 'DisposableStack';
+var setInternalState = InternalStateModule.set;
+var getDisposableStackInternalState = InternalStateModule.getterFor(DISPOSABLE_STACK);
+
+var HINT = 'sync-dispose';
+var DISPOSED = 'disposed';
+var PENDING = 'pending';
+
+var getPendingDisposableStackInternalState = function (stack) {
+  var internalState = getDisposableStackInternalState(stack);
+  if (internalState.state === DISPOSED) throw new $ReferenceError(DISPOSABLE_STACK + ' already disposed');
+  return internalState;
+};
+
+var $DisposableStack = function DisposableStack() {
+  setInternalState(anInstance(this, DisposableStackPrototype), {
+    type: DISPOSABLE_STACK,
+    state: PENDING,
+    stack: []
+  });
+
+  if (!DESCRIPTORS) this.disposed = false;
+};
+
+var DisposableStackPrototype = $DisposableStack.prototype;
+
+defineBuiltIns(DisposableStackPrototype, {
+  dispose: function dispose() {
+    var internalState = getDisposableStackInternalState(this);
+    if (internalState.state === DISPOSED) return;
+    internalState.state = DISPOSED;
+    if (!DESCRIPTORS) this.disposed = true;
+    var stack = internalState.stack;
+    var i = stack.length;
+    var thrown = false;
+    var suppressed;
+    while (i) {
+      var disposeMethod = stack[--i];
+      stack[i] = null;
+      try {
+        disposeMethod();
+      } catch (errorResult) {
+        if (thrown) {
+          suppressed = new SuppressedError(errorResult, suppressed);
+        } else {
+          thrown = true;
+          suppressed = errorResult;
+        }
+      }
+    }
+    internalState.stack = null;
+    if (thrown) throw suppressed;
+  },
+  use: function use(value) {
+    addDisposableResource(getPendingDisposableStackInternalState(this), value, HINT);
+    return value;
+  },
+  adopt: function adopt(value, onDispose) {
+    var internalState = getPendingDisposableStackInternalState(this);
+    aCallable(onDispose);
+    addDisposableResource(internalState, undefined, HINT, function () {
+      onDispose(value);
+    });
+    return value;
+  },
+  defer: function defer(onDispose) {
+    var internalState = getPendingDisposableStackInternalState(this);
+    aCallable(onDispose);
+    addDisposableResource(internalState, undefined, HINT, onDispose);
+  },
+  move: function move() {
+    var internalState = getPendingDisposableStackInternalState(this);
+    var newDisposableStack = new $DisposableStack();
+    getDisposableStackInternalState(newDisposableStack).stack = internalState.stack;
+    internalState.stack = [];
+    internalState.state = DISPOSED;
+    if (!DESCRIPTORS) this.disposed = true;
+    return newDisposableStack;
+  }
+});
+
+if (DESCRIPTORS) defineBuiltInAccessor(DisposableStackPrototype, 'disposed', {
+  configurable: true,
+  get: function disposed() {
+    return getDisposableStackInternalState(this).state === DISPOSED;
+  }
+});
+
+defineBuiltIn(DisposableStackPrototype, DISPOSE, DisposableStackPrototype.dispose, { name: 'dispose' });
+defineBuiltIn(DisposableStackPrototype, TO_STRING_TAG, DISPOSABLE_STACK, { nonWritable: true });
+
+$({ global: true, constructor: true }, {
+  DisposableStack: $DisposableStack
+});
diff --git a/node_modules/core-js/modules/esnext.error.is-error.js b/node_modules/core-js/modules/esnext.error.is-error.js
new file mode 100644
index 0000000..6d4f6a4
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.error.is-error.js
@@ -0,0 +1,36 @@
+'use strict';
+var $ = require('../internals/export');
+var getBuiltIn = require('../internals/get-built-in');
+var isObject = require('../internals/is-object');
+var classof = require('../internals/classof');
+var fails = require('../internals/fails');
+
+var ERROR = 'Error';
+var DOM_EXCEPTION = 'DOMException';
+// eslint-disable-next-line es/no-object-setprototypeof, no-proto -- safe
+var PROTOTYPE_SETTING_AVAILABLE = Object.setPrototypeOf || ({}).__proto__;
+
+var DOMException = getBuiltIn(DOM_EXCEPTION);
+var $Error = Error;
+var $isError = $Error.isError;
+
+var FORCED = !$isError || !PROTOTYPE_SETTING_AVAILABLE || fails(function () {
+  // Bun, isNativeError-based implementations, some buggy structuredClone-based implementations, etc.
+  // https://github.com/oven-sh/bun/issues/15821
+  return (DOMException && !$isError(new DOMException(DOM_EXCEPTION))) ||
+    // structuredClone-based implementations
+    // eslint-disable-next-line es/no-error-cause -- detection
+    !$isError(new $Error(ERROR, { cause: function () { /* empty */ } })) ||
+    // instanceof-based and FF Error#stack-based implementations
+    $isError(getBuiltIn('Object', 'create')($Error.prototype));
+});
+
+// `Error.isError` method
+// https://github.com/tc39/proposal-is-error
+$({ target: 'Error', stat: true, sham: true, forced: FORCED }, {
+  isError: function isError(arg) {
+    if (!isObject(arg)) return false;
+    var tag = classof(arg);
+    return tag === ERROR || tag === DOM_EXCEPTION;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.function.demethodize.js b/node_modules/core-js/modules/esnext.function.demethodize.js
new file mode 100644
index 0000000..2e17f65
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.function.demethodize.js
@@ -0,0 +1,9 @@
+'use strict';
+var $ = require('../internals/export');
+var demethodize = require('../internals/function-demethodize');
+
+// `Function.prototype.demethodize` method
+// https://github.com/js-choi/proposal-function-demethodize
+$({ target: 'Function', proto: true, forced: true }, {
+  demethodize: demethodize
+});
diff --git a/node_modules/core-js/modules/esnext.function.is-callable.js b/node_modules/core-js/modules/esnext.function.is-callable.js
new file mode 100644
index 0000000..6dac60c
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.function.is-callable.js
@@ -0,0 +1,30 @@
+'use strict';
+var $ = require('../internals/export');
+var uncurryThis = require('../internals/function-uncurry-this');
+var $isCallable = require('../internals/is-callable');
+var inspectSource = require('../internals/inspect-source');
+var hasOwn = require('../internals/has-own-property');
+var DESCRIPTORS = require('../internals/descriptors');
+
+// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
+var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
+var classRegExp = /^\s*class\b/;
+var exec = uncurryThis(classRegExp.exec);
+
+var isClassConstructor = function (argument) {
+  try {
+    // `Function#toString` throws on some built-it function in some legacy engines
+    // (for example, `DOMQuad` and similar in FF41-)
+    if (!DESCRIPTORS || !exec(classRegExp, inspectSource(argument))) return false;
+  } catch (error) { /* empty */ }
+  var prototype = getOwnPropertyDescriptor(argument, 'prototype');
+  return !!prototype && hasOwn(prototype, 'writable') && !prototype.writable;
+};
+
+// `Function.isCallable` method
+// https://github.com/caitp/TC39-Proposals/blob/trunk/tc39-reflect-isconstructor-iscallable.md
+$({ target: 'Function', stat: true, sham: true, forced: true }, {
+  isCallable: function isCallable(argument) {
+    return $isCallable(argument) && !isClassConstructor(argument);
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.function.is-constructor.js b/node_modules/core-js/modules/esnext.function.is-constructor.js
new file mode 100644
index 0000000..5ad81e1
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.function.is-constructor.js
@@ -0,0 +1,9 @@
+'use strict';
+var $ = require('../internals/export');
+var isConstructor = require('../internals/is-constructor');
+
+// `Function.isConstructor` method
+// https://github.com/caitp/TC39-Proposals/blob/trunk/tc39-reflect-isconstructor-iscallable.md
+$({ target: 'Function', stat: true, forced: true }, {
+  isConstructor: isConstructor
+});
diff --git a/node_modules/core-js/modules/esnext.function.metadata.js b/node_modules/core-js/modules/esnext.function.metadata.js
new file mode 100644
index 0000000..58dfa7a
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.function.metadata.js
@@ -0,0 +1,14 @@
+'use strict';
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var defineProperty = require('../internals/object-define-property').f;
+
+var METADATA = wellKnownSymbol('metadata');
+var FunctionPrototype = Function.prototype;
+
+// Function.prototype[@@metadata]
+// https://github.com/tc39/proposal-decorator-metadata
+if (FunctionPrototype[METADATA] === undefined) {
+  defineProperty(FunctionPrototype, METADATA, {
+    value: null
+  });
+}
diff --git a/node_modules/core-js/modules/esnext.function.un-this.js b/node_modules/core-js/modules/esnext.function.un-this.js
new file mode 100644
index 0000000..020539b
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.function.un-this.js
@@ -0,0 +1,10 @@
+'use strict';
+var $ = require('../internals/export');
+var demethodize = require('../internals/function-demethodize');
+
+// `Function.prototype.unThis` method
+// https://github.com/js-choi/proposal-function-demethodize
+// TODO: Remove from `core-js@4`
+$({ target: 'Function', proto: true, forced: true, name: 'demethodize' }, {
+  unThis: demethodize
+});
diff --git a/node_modules/core-js/modules/esnext.global-this.js b/node_modules/core-js/modules/esnext.global-this.js
new file mode 100644
index 0000000..1115dfa
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.global-this.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.global-this');
diff --git a/node_modules/core-js/modules/esnext.iterator.as-indexed-pairs.js b/node_modules/core-js/modules/esnext.iterator.as-indexed-pairs.js
new file mode 100644
index 0000000..6cc3792
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.iterator.as-indexed-pairs.js
@@ -0,0 +1,10 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+var $ = require('../internals/export');
+var indexed = require('../internals/iterator-indexed');
+
+// `Iterator.prototype.asIndexedPairs` method
+// https://github.com/tc39/proposal-iterator-helpers
+$({ target: 'Iterator', name: 'indexed', proto: true, real: true, forced: true }, {
+  asIndexedPairs: indexed
+});
diff --git a/node_modules/core-js/modules/esnext.iterator.concat.js b/node_modules/core-js/modules/esnext.iterator.concat.js
new file mode 100644
index 0000000..c59969d
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.iterator.concat.js
@@ -0,0 +1,57 @@
+'use strict';
+var $ = require('../internals/export');
+var call = require('../internals/function-call');
+var aCallable = require('../internals/a-callable');
+var anObject = require('../internals/an-object');
+var getIteratorMethod = require('../internals/get-iterator-method');
+var createIteratorProxy = require('../internals/iterator-create-proxy');
+var createIterResultObject = require('../internals/create-iter-result-object');
+
+var $Array = Array;
+
+var IteratorProxy = createIteratorProxy(function () {
+  while (true) {
+    var iterator = this.iterator;
+    if (!iterator) {
+      var iterableIndex = this.nextIterableIndex++;
+      var iterables = this.iterables;
+      if (iterableIndex >= iterables.length) {
+        this.done = true;
+        return createIterResultObject(undefined, true);
+      }
+      var entry = iterables[iterableIndex];
+      this.iterables[iterableIndex] = null;
+      iterator = this.iterator = call(entry.method, entry.iterable);
+      this.next = iterator.next;
+    }
+    var result = anObject(call(this.next, iterator));
+    if (result.done) {
+      this.iterator = null;
+      this.next = null;
+      continue;
+    }
+    return result;
+  }
+}, false, true);
+
+// `Iterator.concat` method
+// https://github.com/tc39/proposal-iterator-sequencing
+$({ target: 'Iterator', stat: true, forced: true }, {
+  concat: function concat() {
+    var length = arguments.length;
+    var iterables = $Array(length);
+    for (var index = 0; index < length; index++) {
+      var item = anObject(arguments[index]);
+      iterables[index] = {
+        iterable: item,
+        method: aCallable(getIteratorMethod(item))
+      };
+    }
+    return new IteratorProxy({
+      iterables: iterables,
+      nextIterableIndex: 0,
+      iterator: null,
+      next: null
+    });
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.iterator.constructor.js b/node_modules/core-js/modules/esnext.iterator.constructor.js
new file mode 100644
index 0000000..bdc2881
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.iterator.constructor.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.iterator.constructor');
diff --git a/node_modules/core-js/modules/esnext.iterator.dispose.js b/node_modules/core-js/modules/esnext.iterator.dispose.js
new file mode 100644
index 0000000..ac463ee
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.iterator.dispose.js
@@ -0,0 +1,17 @@
+'use strict';
+// https://github.com/tc39/proposal-explicit-resource-management
+var call = require('../internals/function-call');
+var defineBuiltIn = require('../internals/define-built-in');
+var getMethod = require('../internals/get-method');
+var hasOwn = require('../internals/has-own-property');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;
+
+var DISPOSE = wellKnownSymbol('dispose');
+
+if (!hasOwn(IteratorPrototype, DISPOSE)) {
+  defineBuiltIn(IteratorPrototype, DISPOSE, function () {
+    var $return = getMethod(this, 'return');
+    if ($return) call($return, this);
+  });
+}
diff --git a/node_modules/core-js/modules/esnext.iterator.drop.js b/node_modules/core-js/modules/esnext.iterator.drop.js
new file mode 100644
index 0000000..cacf188
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.iterator.drop.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.iterator.drop');
diff --git a/node_modules/core-js/modules/esnext.iterator.every.js b/node_modules/core-js/modules/esnext.iterator.every.js
new file mode 100644
index 0000000..2be29b2
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.iterator.every.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.iterator.every');
diff --git a/node_modules/core-js/modules/esnext.iterator.filter.js b/node_modules/core-js/modules/esnext.iterator.filter.js
new file mode 100644
index 0000000..5917c40
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.iterator.filter.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.iterator.filter');
diff --git a/node_modules/core-js/modules/esnext.iterator.find.js b/node_modules/core-js/modules/esnext.iterator.find.js
new file mode 100644
index 0000000..dd728fd
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.iterator.find.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.iterator.find');
diff --git a/node_modules/core-js/modules/esnext.iterator.flat-map.js b/node_modules/core-js/modules/esnext.iterator.flat-map.js
new file mode 100644
index 0000000..a11305f
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.iterator.flat-map.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.iterator.flat-map');
diff --git a/node_modules/core-js/modules/esnext.iterator.for-each.js b/node_modules/core-js/modules/esnext.iterator.for-each.js
new file mode 100644
index 0000000..6ac88f8
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.iterator.for-each.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.iterator.for-each');
diff --git a/node_modules/core-js/modules/esnext.iterator.from.js b/node_modules/core-js/modules/esnext.iterator.from.js
new file mode 100644
index 0000000..446b421
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.iterator.from.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.iterator.from');
diff --git a/node_modules/core-js/modules/esnext.iterator.indexed.js b/node_modules/core-js/modules/esnext.iterator.indexed.js
new file mode 100644
index 0000000..3d44a3c
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.iterator.indexed.js
@@ -0,0 +1,10 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+var $ = require('../internals/export');
+var indexed = require('../internals/iterator-indexed');
+
+// `Iterator.prototype.indexed` method
+// https://github.com/tc39/proposal-iterator-helpers
+$({ target: 'Iterator', proto: true, real: true, forced: true }, {
+  indexed: indexed
+});
diff --git a/node_modules/core-js/modules/esnext.iterator.map.js b/node_modules/core-js/modules/esnext.iterator.map.js
new file mode 100644
index 0000000..97261f3
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.iterator.map.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.iterator.map');
diff --git a/node_modules/core-js/modules/esnext.iterator.range.js b/node_modules/core-js/modules/esnext.iterator.range.js
new file mode 100644
index 0000000..876940b
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.iterator.range.js
@@ -0,0 +1,16 @@
+'use strict';
+/* eslint-disable es/no-bigint -- safe */
+var $ = require('../internals/export');
+var NumericRangeIterator = require('../internals/numeric-range-iterator');
+
+var $TypeError = TypeError;
+
+// `Iterator.range` method
+// https://github.com/tc39/proposal-Number.range
+$({ target: 'Iterator', stat: true, forced: true }, {
+  range: function range(start, end, option) {
+    if (typeof start == 'number') return new NumericRangeIterator(start, end, option, 'number', 0, 1);
+    if (typeof start == 'bigint') return new NumericRangeIterator(start, end, option, 'bigint', BigInt(0), BigInt(1));
+    throw new $TypeError('Incorrect Iterator.range arguments');
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.iterator.reduce.js b/node_modules/core-js/modules/esnext.iterator.reduce.js
new file mode 100644
index 0000000..0c7fe4a
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.iterator.reduce.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.iterator.reduce');
diff --git a/node_modules/core-js/modules/esnext.iterator.some.js b/node_modules/core-js/modules/esnext.iterator.some.js
new file mode 100644
index 0000000..2f283ad
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.iterator.some.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.iterator.some');
diff --git a/node_modules/core-js/modules/esnext.iterator.take.js b/node_modules/core-js/modules/esnext.iterator.take.js
new file mode 100644
index 0000000..717dabc
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.iterator.take.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.iterator.take');
diff --git a/node_modules/core-js/modules/esnext.iterator.to-array.js b/node_modules/core-js/modules/esnext.iterator.to-array.js
new file mode 100644
index 0000000..3efc408
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.iterator.to-array.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.iterator.to-array');
diff --git a/node_modules/core-js/modules/esnext.iterator.to-async.js b/node_modules/core-js/modules/esnext.iterator.to-async.js
new file mode 100644
index 0000000..fa7ee2e
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.iterator.to-async.js
@@ -0,0 +1,15 @@
+'use strict';
+var $ = require('../internals/export');
+var anObject = require('../internals/an-object');
+var AsyncFromSyncIterator = require('../internals/async-from-sync-iterator');
+var WrapAsyncIterator = require('../internals/async-iterator-wrap');
+var getIteratorDirect = require('../internals/get-iterator-direct');
+var IS_PURE = require('../internals/is-pure');
+
+// `Iterator.prototype.toAsync` method
+// https://github.com/tc39/proposal-async-iterator-helpers
+$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {
+  toAsync: function toAsync() {
+    return new WrapAsyncIterator(getIteratorDirect(new AsyncFromSyncIterator(getIteratorDirect(anObject(this)))));
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.json.is-raw-json.js b/node_modules/core-js/modules/esnext.json.is-raw-json.js
new file mode 100644
index 0000000..2fbc950
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.json.is-raw-json.js
@@ -0,0 +1,11 @@
+'use strict';
+var $ = require('../internals/export');
+var NATIVE_RAW_JSON = require('../internals/native-raw-json');
+var isRawJSON = require('../internals/is-raw-json');
+
+// `JSON.parse` method
+// https://tc39.es/proposal-json-parse-with-source/#sec-json.israwjson
+// https://github.com/tc39/proposal-json-parse-with-source
+$({ target: 'JSON', stat: true, forced: !NATIVE_RAW_JSON }, {
+  isRawJSON: isRawJSON
+});
diff --git a/node_modules/core-js/modules/esnext.json.parse.js b/node_modules/core-js/modules/esnext.json.parse.js
new file mode 100644
index 0000000..c51aa7f
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.json.parse.js
@@ -0,0 +1,251 @@
+'use strict';
+var $ = require('../internals/export');
+var DESCRIPTORS = require('../internals/descriptors');
+var globalThis = require('../internals/global-this');
+var getBuiltIn = require('../internals/get-built-in');
+var uncurryThis = require('../internals/function-uncurry-this');
+var call = require('../internals/function-call');
+var isCallable = require('../internals/is-callable');
+var isObject = require('../internals/is-object');
+var isArray = require('../internals/is-array');
+var hasOwn = require('../internals/has-own-property');
+var toString = require('../internals/to-string');
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+var createProperty = require('../internals/create-property');
+var fails = require('../internals/fails');
+var parseJSONString = require('../internals/parse-json-string');
+var NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');
+
+var JSON = globalThis.JSON;
+var Number = globalThis.Number;
+var SyntaxError = globalThis.SyntaxError;
+var nativeParse = JSON && JSON.parse;
+var enumerableOwnProperties = getBuiltIn('Object', 'keys');
+// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
+var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
+var at = uncurryThis(''.charAt);
+var slice = uncurryThis(''.slice);
+var exec = uncurryThis(/./.exec);
+var push = uncurryThis([].push);
+
+var IS_DIGIT = /^\d$/;
+var IS_NON_ZERO_DIGIT = /^[1-9]$/;
+var IS_NUMBER_START = /^[\d-]$/;
+var IS_WHITESPACE = /^[\t\n\r ]$/;
+
+var PRIMITIVE = 0;
+var OBJECT = 1;
+
+var $parse = function (source, reviver) {
+  source = toString(source);
+  var context = new Context(source, 0, '');
+  var root = context.parse();
+  var value = root.value;
+  var endIndex = context.skip(IS_WHITESPACE, root.end);
+  if (endIndex < source.length) {
+    throw new SyntaxError('Unexpected extra character: "' + at(source, endIndex) + '" after the parsed data at: ' + endIndex);
+  }
+  return isCallable(reviver) ? internalize({ '': value }, '', reviver, root) : value;
+};
+
+var internalize = function (holder, name, reviver, node) {
+  var val = holder[name];
+  var unmodified = node && val === node.value;
+  var context = unmodified && typeof node.source == 'string' ? { source: node.source } : {};
+  var elementRecordsLen, keys, len, i, P;
+  if (isObject(val)) {
+    var nodeIsArray = isArray(val);
+    var nodes = unmodified ? node.nodes : nodeIsArray ? [] : {};
+    if (nodeIsArray) {
+      elementRecordsLen = nodes.length;
+      len = lengthOfArrayLike(val);
+      for (i = 0; i < len; i++) {
+        internalizeProperty(val, i, internalize(val, '' + i, reviver, i < elementRecordsLen ? nodes[i] : undefined));
+      }
+    } else {
+      keys = enumerableOwnProperties(val);
+      len = lengthOfArrayLike(keys);
+      for (i = 0; i < len; i++) {
+        P = keys[i];
+        internalizeProperty(val, P, internalize(val, P, reviver, hasOwn(nodes, P) ? nodes[P] : undefined));
+      }
+    }
+  }
+  return call(reviver, holder, name, val, context);
+};
+
+var internalizeProperty = function (object, key, value) {
+  if (DESCRIPTORS) {
+    var descriptor = getOwnPropertyDescriptor(object, key);
+    if (descriptor && !descriptor.configurable) return;
+  }
+  if (value === undefined) delete object[key];
+  else createProperty(object, key, value);
+};
+
+var Node = function (value, end, source, nodes) {
+  this.value = value;
+  this.end = end;
+  this.source = source;
+  this.nodes = nodes;
+};
+
+var Context = function (source, index) {
+  this.source = source;
+  this.index = index;
+};
+
+// https://www.json.org/json-en.html
+Context.prototype = {
+  fork: function (nextIndex) {
+    return new Context(this.source, nextIndex);
+  },
+  parse: function () {
+    var source = this.source;
+    var i = this.skip(IS_WHITESPACE, this.index);
+    var fork = this.fork(i);
+    var chr = at(source, i);
+    if (exec(IS_NUMBER_START, chr)) return fork.number();
+    switch (chr) {
+      case '{':
+        return fork.object();
+      case '[':
+        return fork.array();
+      case '"':
+        return fork.string();
+      case 't':
+        return fork.keyword(true);
+      case 'f':
+        return fork.keyword(false);
+      case 'n':
+        return fork.keyword(null);
+    } throw new SyntaxError('Unexpected character: "' + chr + '" at: ' + i);
+  },
+  node: function (type, value, start, end, nodes) {
+    return new Node(value, end, type ? null : slice(this.source, start, end), nodes);
+  },
+  object: function () {
+    var source = this.source;
+    var i = this.index + 1;
+    var expectKeypair = false;
+    var object = {};
+    var nodes = {};
+    while (i < source.length) {
+      i = this.until(['"', '}'], i);
+      if (at(source, i) === '}' && !expectKeypair) {
+        i++;
+        break;
+      }
+      // Parsing the key
+      var result = this.fork(i).string();
+      var key = result.value;
+      i = result.end;
+      i = this.until([':'], i) + 1;
+      // Parsing value
+      i = this.skip(IS_WHITESPACE, i);
+      result = this.fork(i).parse();
+      createProperty(nodes, key, result);
+      createProperty(object, key, result.value);
+      i = this.until([',', '}'], result.end);
+      var chr = at(source, i);
+      if (chr === ',') {
+        expectKeypair = true;
+        i++;
+      } else if (chr === '}') {
+        i++;
+        break;
+      }
+    }
+    return this.node(OBJECT, object, this.index, i, nodes);
+  },
+  array: function () {
+    var source = this.source;
+    var i = this.index + 1;
+    var expectElement = false;
+    var array = [];
+    var nodes = [];
+    while (i < source.length) {
+      i = this.skip(IS_WHITESPACE, i);
+      if (at(source, i) === ']' && !expectElement) {
+        i++;
+        break;
+      }
+      var result = this.fork(i).parse();
+      push(nodes, result);
+      push(array, result.value);
+      i = this.until([',', ']'], result.end);
+      if (at(source, i) === ',') {
+        expectElement = true;
+        i++;
+      } else if (at(source, i) === ']') {
+        i++;
+        break;
+      }
+    }
+    return this.node(OBJECT, array, this.index, i, nodes);
+  },
+  string: function () {
+    var index = this.index;
+    var parsed = parseJSONString(this.source, this.index + 1);
+    return this.node(PRIMITIVE, parsed.value, index, parsed.end);
+  },
+  number: function () {
+    var source = this.source;
+    var startIndex = this.index;
+    var i = startIndex;
+    if (at(source, i) === '-') i++;
+    if (at(source, i) === '0') i++;
+    else if (exec(IS_NON_ZERO_DIGIT, at(source, i))) i = this.skip(IS_DIGIT, i + 1);
+    else throw new SyntaxError('Failed to parse number at: ' + i);
+    if (at(source, i) === '.') i = this.skip(IS_DIGIT, i + 1);
+    if (at(source, i) === 'e' || at(source, i) === 'E') {
+      i++;
+      if (at(source, i) === '+' || at(source, i) === '-') i++;
+      var exponentStartIndex = i;
+      i = this.skip(IS_DIGIT, i);
+      if (exponentStartIndex === i) throw new SyntaxError("Failed to parse number's exponent value at: " + i);
+    }
+    return this.node(PRIMITIVE, Number(slice(source, startIndex, i)), startIndex, i);
+  },
+  keyword: function (value) {
+    var keyword = '' + value;
+    var index = this.index;
+    var endIndex = index + keyword.length;
+    if (slice(this.source, index, endIndex) !== keyword) throw new SyntaxError('Failed to parse value at: ' + index);
+    return this.node(PRIMITIVE, value, index, endIndex);
+  },
+  skip: function (regex, i) {
+    var source = this.source;
+    for (; i < source.length; i++) if (!exec(regex, at(source, i))) break;
+    return i;
+  },
+  until: function (array, i) {
+    i = this.skip(IS_WHITESPACE, i);
+    var chr = at(this.source, i);
+    for (var j = 0; j < array.length; j++) if (array[j] === chr) return i;
+    throw new SyntaxError('Unexpected character: "' + chr + '" at: ' + i);
+  }
+};
+
+var NO_SOURCE_SUPPORT = fails(function () {
+  var unsafeInt = '9007199254740993';
+  var source;
+  nativeParse(unsafeInt, function (key, value, context) {
+    source = context.source;
+  });
+  return source !== unsafeInt;
+});
+
+var PROPER_BASE_PARSE = NATIVE_SYMBOL && !fails(function () {
+  // Safari 9 bug
+  return 1 / nativeParse('-0 \t') !== -Infinity;
+});
+
+// `JSON.parse` method
+// https://tc39.es/ecma262/#sec-json.parse
+// https://github.com/tc39/proposal-json-parse-with-source
+$({ target: 'JSON', stat: true, forced: NO_SOURCE_SUPPORT }, {
+  parse: function parse(text, reviver) {
+    return PROPER_BASE_PARSE && !isCallable(reviver) ? nativeParse(text) : $parse(text, reviver);
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.json.raw-json.js b/node_modules/core-js/modules/esnext.json.raw-json.js
new file mode 100644
index 0000000..34d8734
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.json.raw-json.js
@@ -0,0 +1,86 @@
+'use strict';
+var $ = require('../internals/export');
+var FREEZING = require('../internals/freezing');
+var NATIVE_RAW_JSON = require('../internals/native-raw-json');
+var getBuiltIn = require('../internals/get-built-in');
+var call = require('../internals/function-call');
+var uncurryThis = require('../internals/function-uncurry-this');
+var isCallable = require('../internals/is-callable');
+var isRawJSON = require('../internals/is-raw-json');
+var toString = require('../internals/to-string');
+var createProperty = require('../internals/create-property');
+var parseJSONString = require('../internals/parse-json-string');
+var getReplacerFunction = require('../internals/get-json-replacer-function');
+var uid = require('../internals/uid');
+var setInternalState = require('../internals/internal-state').set;
+
+var $String = String;
+var $SyntaxError = SyntaxError;
+var parse = getBuiltIn('JSON', 'parse');
+var $stringify = getBuiltIn('JSON', 'stringify');
+var create = getBuiltIn('Object', 'create');
+var freeze = getBuiltIn('Object', 'freeze');
+var at = uncurryThis(''.charAt);
+var slice = uncurryThis(''.slice);
+var push = uncurryThis([].push);
+
+var MARK = uid();
+var MARK_LENGTH = MARK.length;
+var ERROR_MESSAGE = 'Unacceptable as raw JSON';
+
+var isWhitespace = function (it) {
+  return it === ' ' || it === '\t' || it === '\n' || it === '\r';
+};
+
+// `JSON.parse` method
+// https://tc39.es/proposal-json-parse-with-source/#sec-json.israwjson
+// https://github.com/tc39/proposal-json-parse-with-source
+$({ target: 'JSON', stat: true, forced: !NATIVE_RAW_JSON }, {
+  rawJSON: function rawJSON(text) {
+    var jsonString = toString(text);
+    if (jsonString === '' || isWhitespace(at(jsonString, 0)) || isWhitespace(at(jsonString, jsonString.length - 1))) {
+      throw new $SyntaxError(ERROR_MESSAGE);
+    }
+    var parsed = parse(jsonString);
+    if (typeof parsed == 'object' && parsed !== null) throw new $SyntaxError(ERROR_MESSAGE);
+    var obj = create(null);
+    setInternalState(obj, { type: 'RawJSON' });
+    createProperty(obj, 'rawJSON', jsonString);
+    return FREEZING ? freeze(obj) : obj;
+  }
+});
+
+// `JSON.stringify` method
+// https://tc39.es/ecma262/#sec-json.stringify
+// https://github.com/tc39/proposal-json-parse-with-source
+if ($stringify) $({ target: 'JSON', stat: true, arity: 3, forced: !NATIVE_RAW_JSON }, {
+  stringify: function stringify(text, replacer, space) {
+    var replacerFunction = getReplacerFunction(replacer);
+    var rawStrings = [];
+
+    var json = $stringify(text, function (key, value) {
+      // some old implementations (like WebKit) could pass numbers as keys
+      var v = isCallable(replacerFunction) ? call(replacerFunction, this, $String(key), value) : value;
+      return isRawJSON(v) ? MARK + (push(rawStrings, v.rawJSON) - 1) : v;
+    }, space);
+
+    if (typeof json != 'string') return json;
+
+    var result = '';
+    var length = json.length;
+
+    for (var i = 0; i < length; i++) {
+      var chr = at(json, i);
+      if (chr === '"') {
+        var end = parseJSONString(json, ++i).end - 1;
+        var string = slice(json, i, end);
+        result += slice(string, 0, MARK_LENGTH) === MARK
+          ? rawStrings[slice(string, MARK_LENGTH)]
+          : '"' + string + '"';
+        i = end;
+      } else result += chr;
+    }
+
+    return result;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.map.delete-all.js b/node_modules/core-js/modules/esnext.map.delete-all.js
new file mode 100644
index 0000000..5a0d242
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.map.delete-all.js
@@ -0,0 +1,18 @@
+'use strict';
+var $ = require('../internals/export');
+var aMap = require('../internals/a-map');
+var remove = require('../internals/map-helpers').remove;
+
+// `Map.prototype.deleteAll` method
+// https://github.com/tc39/proposal-collection-methods
+$({ target: 'Map', proto: true, real: true, forced: true }, {
+  deleteAll: function deleteAll(/* ...elements */) {
+    var collection = aMap(this);
+    var allDeleted = true;
+    var wasDeleted;
+    for (var k = 0, len = arguments.length; k < len; k++) {
+      wasDeleted = remove(collection, arguments[k]);
+      allDeleted = allDeleted && wasDeleted;
+    } return !!allDeleted;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.map.emplace.js b/node_modules/core-js/modules/esnext.map.emplace.js
new file mode 100644
index 0000000..24fe86e
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.map.emplace.js
@@ -0,0 +1,27 @@
+'use strict';
+var $ = require('../internals/export');
+var aMap = require('../internals/a-map');
+var MapHelpers = require('../internals/map-helpers');
+
+var get = MapHelpers.get;
+var has = MapHelpers.has;
+var set = MapHelpers.set;
+
+// `Map.prototype.emplace` method
+// https://github.com/tc39/proposal-upsert
+$({ target: 'Map', proto: true, real: true, forced: true }, {
+  emplace: function emplace(key, handler) {
+    var map = aMap(this);
+    var value, inserted;
+    if (has(map, key)) {
+      value = get(map, key);
+      if ('update' in handler) {
+        value = handler.update(value, key, map);
+        set(map, key, value);
+      } return value;
+    }
+    inserted = handler.insert(key, map);
+    set(map, key, inserted);
+    return inserted;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.map.every.js b/node_modules/core-js/modules/esnext.map.every.js
new file mode 100644
index 0000000..85264c7
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.map.every.js
@@ -0,0 +1,17 @@
+'use strict';
+var $ = require('../internals/export');
+var bind = require('../internals/function-bind-context');
+var aMap = require('../internals/a-map');
+var iterate = require('../internals/map-iterate');
+
+// `Map.prototype.every` method
+// https://github.com/tc39/proposal-collection-methods
+$({ target: 'Map', proto: true, real: true, forced: true }, {
+  every: function every(callbackfn /* , thisArg */) {
+    var map = aMap(this);
+    var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+    return iterate(map, function (value, key) {
+      if (!boundFunction(value, key, map)) return false;
+    }, true) !== false;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.map.filter.js b/node_modules/core-js/modules/esnext.map.filter.js
new file mode 100644
index 0000000..67ffe5c
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.map.filter.js
@@ -0,0 +1,23 @@
+'use strict';
+var $ = require('../internals/export');
+var bind = require('../internals/function-bind-context');
+var aMap = require('../internals/a-map');
+var MapHelpers = require('../internals/map-helpers');
+var iterate = require('../internals/map-iterate');
+
+var Map = MapHelpers.Map;
+var set = MapHelpers.set;
+
+// `Map.prototype.filter` method
+// https://github.com/tc39/proposal-collection-methods
+$({ target: 'Map', proto: true, real: true, forced: true }, {
+  filter: function filter(callbackfn /* , thisArg */) {
+    var map = aMap(this);
+    var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+    var newMap = new Map();
+    iterate(map, function (value, key) {
+      if (boundFunction(value, key, map)) set(newMap, key, value);
+    });
+    return newMap;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.map.find-key.js b/node_modules/core-js/modules/esnext.map.find-key.js
new file mode 100644
index 0000000..c3779a8
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.map.find-key.js
@@ -0,0 +1,18 @@
+'use strict';
+var $ = require('../internals/export');
+var bind = require('../internals/function-bind-context');
+var aMap = require('../internals/a-map');
+var iterate = require('../internals/map-iterate');
+
+// `Map.prototype.findKey` method
+// https://github.com/tc39/proposal-collection-methods
+$({ target: 'Map', proto: true, real: true, forced: true }, {
+  findKey: function findKey(callbackfn /* , thisArg */) {
+    var map = aMap(this);
+    var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+    var result = iterate(map, function (value, key) {
+      if (boundFunction(value, key, map)) return { key: key };
+    }, true);
+    return result && result.key;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.map.find.js b/node_modules/core-js/modules/esnext.map.find.js
new file mode 100644
index 0000000..ca1f0f9
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.map.find.js
@@ -0,0 +1,18 @@
+'use strict';
+var $ = require('../internals/export');
+var bind = require('../internals/function-bind-context');
+var aMap = require('../internals/a-map');
+var iterate = require('../internals/map-iterate');
+
+// `Map.prototype.find` method
+// https://github.com/tc39/proposal-collection-methods
+$({ target: 'Map', proto: true, real: true, forced: true }, {
+  find: function find(callbackfn /* , thisArg */) {
+    var map = aMap(this);
+    var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+    var result = iterate(map, function (value, key) {
+      if (boundFunction(value, key, map)) return { value: value };
+    }, true);
+    return result && result.value;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.map.from.js b/node_modules/core-js/modules/esnext.map.from.js
new file mode 100644
index 0000000..2d916b2
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.map.from.js
@@ -0,0 +1,10 @@
+'use strict';
+var $ = require('../internals/export');
+var MapHelpers = require('../internals/map-helpers');
+var createCollectionFrom = require('../internals/collection-from');
+
+// `Map.from` method
+// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from
+$({ target: 'Map', stat: true, forced: true }, {
+  from: createCollectionFrom(MapHelpers.Map, MapHelpers.set, true)
+});
diff --git a/node_modules/core-js/modules/esnext.map.get-or-insert-computed.js b/node_modules/core-js/modules/esnext.map.get-or-insert-computed.js
new file mode 100644
index 0000000..b62c10d
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.map.get-or-insert-computed.js
@@ -0,0 +1,24 @@
+'use strict';
+var $ = require('../internals/export');
+var aCallable = require('../internals/a-callable');
+var aMap = require('../internals/a-map');
+var MapHelpers = require('../internals/map-helpers');
+
+var get = MapHelpers.get;
+var has = MapHelpers.has;
+var set = MapHelpers.set;
+
+// `Map.prototype.getOrInsertComputed` method
+// https://github.com/tc39/proposal-upsert
+$({ target: 'Map', proto: true, real: true, forced: true }, {
+  getOrInsertComputed: function getOrInsertComputed(key, callbackfn) {
+    aMap(this);
+    aCallable(callbackfn);
+    if (has(this, key)) return get(this, key);
+    // CanonicalizeKeyedCollectionKey
+    if (key === 0 && 1 / key === -Infinity) key = 0;
+    var value = callbackfn(key);
+    set(this, key, value);
+    return value;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.map.get-or-insert.js b/node_modules/core-js/modules/esnext.map.get-or-insert.js
new file mode 100644
index 0000000..e26f150
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.map.get-or-insert.js
@@ -0,0 +1,18 @@
+'use strict';
+var $ = require('../internals/export');
+var aMap = require('../internals/a-map');
+var MapHelpers = require('../internals/map-helpers');
+
+var get = MapHelpers.get;
+var has = MapHelpers.has;
+var set = MapHelpers.set;
+
+// `Map.prototype.getOrInsert` method
+// https://github.com/tc39/proposal-upsert
+$({ target: 'Map', proto: true, real: true, forced: true }, {
+  getOrInsert: function getOrInsert(key, value) {
+    if (has(aMap(this), key)) return get(this, key);
+    set(this, key, value);
+    return value;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.map.group-by.js b/node_modules/core-js/modules/esnext.map.group-by.js
new file mode 100644
index 0000000..116b89a
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.map.group-by.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.map.group-by');
diff --git a/node_modules/core-js/modules/esnext.map.includes.js b/node_modules/core-js/modules/esnext.map.includes.js
new file mode 100644
index 0000000..14b51ab
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.map.includes.js
@@ -0,0 +1,15 @@
+'use strict';
+var $ = require('../internals/export');
+var sameValueZero = require('../internals/same-value-zero');
+var aMap = require('../internals/a-map');
+var iterate = require('../internals/map-iterate');
+
+// `Map.prototype.includes` method
+// https://github.com/tc39/proposal-collection-methods
+$({ target: 'Map', proto: true, real: true, forced: true }, {
+  includes: function includes(searchElement) {
+    return iterate(aMap(this), function (value) {
+      if (sameValueZero(value, searchElement)) return true;
+    }, true) === true;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.map.key-by.js b/node_modules/core-js/modules/esnext.map.key-by.js
new file mode 100644
index 0000000..67933b5
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.map.key-by.js
@@ -0,0 +1,22 @@
+'use strict';
+var $ = require('../internals/export');
+var call = require('../internals/function-call');
+var iterate = require('../internals/iterate');
+var isCallable = require('../internals/is-callable');
+var aCallable = require('../internals/a-callable');
+var Map = require('../internals/map-helpers').Map;
+
+// `Map.keyBy` method
+// https://github.com/tc39/proposal-collection-methods
+$({ target: 'Map', stat: true, forced: true }, {
+  keyBy: function keyBy(iterable, keyDerivative) {
+    var C = isCallable(this) ? this : Map;
+    var newMap = new C();
+    aCallable(keyDerivative);
+    var setter = aCallable(newMap.set);
+    iterate(iterable, function (element) {
+      call(setter, newMap, keyDerivative(element), element);
+    });
+    return newMap;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.map.key-of.js b/node_modules/core-js/modules/esnext.map.key-of.js
new file mode 100644
index 0000000..07d5d18
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.map.key-of.js
@@ -0,0 +1,15 @@
+'use strict';
+var $ = require('../internals/export');
+var aMap = require('../internals/a-map');
+var iterate = require('../internals/map-iterate');
+
+// `Map.prototype.keyOf` method
+// https://github.com/tc39/proposal-collection-methods
+$({ target: 'Map', proto: true, real: true, forced: true }, {
+  keyOf: function keyOf(searchElement) {
+    var result = iterate(aMap(this), function (value, key) {
+      if (value === searchElement) return { key: key };
+    }, true);
+    return result && result.key;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.map.map-keys.js b/node_modules/core-js/modules/esnext.map.map-keys.js
new file mode 100644
index 0000000..dcb1ea8
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.map.map-keys.js
@@ -0,0 +1,23 @@
+'use strict';
+var $ = require('../internals/export');
+var bind = require('../internals/function-bind-context');
+var aMap = require('../internals/a-map');
+var MapHelpers = require('../internals/map-helpers');
+var iterate = require('../internals/map-iterate');
+
+var Map = MapHelpers.Map;
+var set = MapHelpers.set;
+
+// `Map.prototype.mapKeys` method
+// https://github.com/tc39/proposal-collection-methods
+$({ target: 'Map', proto: true, real: true, forced: true }, {
+  mapKeys: function mapKeys(callbackfn /* , thisArg */) {
+    var map = aMap(this);
+    var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+    var newMap = new Map();
+    iterate(map, function (value, key) {
+      set(newMap, boundFunction(value, key, map), value);
+    });
+    return newMap;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.map.map-values.js b/node_modules/core-js/modules/esnext.map.map-values.js
new file mode 100644
index 0000000..e10f42b
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.map.map-values.js
@@ -0,0 +1,23 @@
+'use strict';
+var $ = require('../internals/export');
+var bind = require('../internals/function-bind-context');
+var aMap = require('../internals/a-map');
+var MapHelpers = require('../internals/map-helpers');
+var iterate = require('../internals/map-iterate');
+
+var Map = MapHelpers.Map;
+var set = MapHelpers.set;
+
+// `Map.prototype.mapValues` method
+// https://github.com/tc39/proposal-collection-methods
+$({ target: 'Map', proto: true, real: true, forced: true }, {
+  mapValues: function mapValues(callbackfn /* , thisArg */) {
+    var map = aMap(this);
+    var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+    var newMap = new Map();
+    iterate(map, function (value, key) {
+      set(newMap, key, boundFunction(value, key, map));
+    });
+    return newMap;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.map.merge.js b/node_modules/core-js/modules/esnext.map.merge.js
new file mode 100644
index 0000000..d2174f8
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.map.merge.js
@@ -0,0 +1,22 @@
+'use strict';
+var $ = require('../internals/export');
+var aMap = require('../internals/a-map');
+var iterate = require('../internals/iterate');
+var set = require('../internals/map-helpers').set;
+
+// `Map.prototype.merge` method
+// https://github.com/tc39/proposal-collection-methods
+$({ target: 'Map', proto: true, real: true, arity: 1, forced: true }, {
+  // eslint-disable-next-line no-unused-vars -- required for `.length`
+  merge: function merge(iterable /* ...iterables */) {
+    var map = aMap(this);
+    var argumentsLength = arguments.length;
+    var i = 0;
+    while (i < argumentsLength) {
+      iterate(arguments[i++], function (key, value) {
+        set(map, key, value);
+      }, { AS_ENTRIES: true });
+    }
+    return map;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.map.of.js b/node_modules/core-js/modules/esnext.map.of.js
new file mode 100644
index 0000000..5fc111e
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.map.of.js
@@ -0,0 +1,10 @@
+'use strict';
+var $ = require('../internals/export');
+var MapHelpers = require('../internals/map-helpers');
+var createCollectionOf = require('../internals/collection-of');
+
+// `Map.of` method
+// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of
+$({ target: 'Map', stat: true, forced: true }, {
+  of: createCollectionOf(MapHelpers.Map, MapHelpers.set, true)
+});
diff --git a/node_modules/core-js/modules/esnext.map.reduce.js b/node_modules/core-js/modules/esnext.map.reduce.js
new file mode 100644
index 0000000..1067337
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.map.reduce.js
@@ -0,0 +1,28 @@
+'use strict';
+var $ = require('../internals/export');
+var aCallable = require('../internals/a-callable');
+var aMap = require('../internals/a-map');
+var iterate = require('../internals/map-iterate');
+
+var $TypeError = TypeError;
+
+// `Map.prototype.reduce` method
+// https://github.com/tc39/proposal-collection-methods
+$({ target: 'Map', proto: true, real: true, forced: true }, {
+  reduce: function reduce(callbackfn /* , initialValue */) {
+    var map = aMap(this);
+    var noInitial = arguments.length < 2;
+    var accumulator = noInitial ? undefined : arguments[1];
+    aCallable(callbackfn);
+    iterate(map, function (value, key) {
+      if (noInitial) {
+        noInitial = false;
+        accumulator = value;
+      } else {
+        accumulator = callbackfn(accumulator, value, key, map);
+      }
+    });
+    if (noInitial) throw new $TypeError('Reduce of empty map with no initial value');
+    return accumulator;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.map.some.js b/node_modules/core-js/modules/esnext.map.some.js
new file mode 100644
index 0000000..c3d6421
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.map.some.js
@@ -0,0 +1,17 @@
+'use strict';
+var $ = require('../internals/export');
+var bind = require('../internals/function-bind-context');
+var aMap = require('../internals/a-map');
+var iterate = require('../internals/map-iterate');
+
+// `Map.prototype.some` method
+// https://github.com/tc39/proposal-collection-methods
+$({ target: 'Map', proto: true, real: true, forced: true }, {
+  some: function some(callbackfn /* , thisArg */) {
+    var map = aMap(this);
+    var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+    return iterate(map, function (value, key) {
+      if (boundFunction(value, key, map)) return true;
+    }, true) === true;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.map.update-or-insert.js b/node_modules/core-js/modules/esnext.map.update-or-insert.js
new file mode 100644
index 0000000..0500321
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.map.update-or-insert.js
@@ -0,0 +1,10 @@
+'use strict';
+// TODO: remove from `core-js@4`
+var $ = require('../internals/export');
+var upsert = require('../internals/map-upsert');
+
+// `Map.prototype.updateOrInsert` method (replaced by `Map.prototype.emplace`)
+// https://github.com/thumbsupep/proposal-upsert
+$({ target: 'Map', proto: true, real: true, name: 'upsert', forced: true }, {
+  updateOrInsert: upsert
+});
diff --git a/node_modules/core-js/modules/esnext.map.update.js b/node_modules/core-js/modules/esnext.map.update.js
new file mode 100644
index 0000000..a112f71
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.map.update.js
@@ -0,0 +1,27 @@
+'use strict';
+var $ = require('../internals/export');
+var aCallable = require('../internals/a-callable');
+var aMap = require('../internals/a-map');
+var MapHelpers = require('../internals/map-helpers');
+
+var $TypeError = TypeError;
+var get = MapHelpers.get;
+var has = MapHelpers.has;
+var set = MapHelpers.set;
+
+// `Map.prototype.update` method
+// https://github.com/tc39/proposal-collection-methods
+$({ target: 'Map', proto: true, real: true, forced: true }, {
+  update: function update(key, callback /* , thunk */) {
+    var map = aMap(this);
+    var length = arguments.length;
+    aCallable(callback);
+    var isPresentInMap = has(map, key);
+    if (!isPresentInMap && length < 3) {
+      throw new $TypeError('Updating absent value');
+    }
+    var value = isPresentInMap ? get(map, key) : aCallable(length > 2 ? arguments[2] : undefined)(key, map);
+    set(map, key, callback(value, key, map));
+    return map;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.map.upsert.js b/node_modules/core-js/modules/esnext.map.upsert.js
new file mode 100644
index 0000000..10d9ad8
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.map.upsert.js
@@ -0,0 +1,10 @@
+'use strict';
+// TODO: remove from `core-js@4`
+var $ = require('../internals/export');
+var upsert = require('../internals/map-upsert');
+
+// `Map.prototype.upsert` method (replaced by `Map.prototype.emplace`)
+// https://github.com/thumbsupep/proposal-upsert
+$({ target: 'Map', proto: true, real: true, forced: true }, {
+  upsert: upsert
+});
diff --git a/node_modules/core-js/modules/esnext.math.clamp.js b/node_modules/core-js/modules/esnext.math.clamp.js
new file mode 100644
index 0000000..cb60582
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.math.clamp.js
@@ -0,0 +1,21 @@
+'use strict';
+var $ = require('../internals/export');
+var aNumber = require('../internals/a-number');
+var notANaN = require('../internals/not-a-nan');
+var sameValue = require('../internals/same-value');
+
+var $RangeError = RangeError;
+var $min = Math.min;
+var $max = Math.max;
+
+// `Math.clamp` method
+// https://github.com/tc39/proposal-math-clamp
+$({ target: 'Math', stat: true, forced: true }, {
+  clamp: function clamp(value, min, max) {
+    aNumber(value);
+    notANaN(aNumber(min));
+    notANaN(aNumber(max));
+    if ((sameValue(min, 0) && sameValue(max, -0)) || min > max) throw new $RangeError('`min` should be smaller than `max`');
+    return $min(max, $max(min, value));
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.math.deg-per-rad.js b/node_modules/core-js/modules/esnext.math.deg-per-rad.js
new file mode 100644
index 0000000..2b1d8c4
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.math.deg-per-rad.js
@@ -0,0 +1,8 @@
+'use strict';
+var $ = require('../internals/export');
+
+// `Math.DEG_PER_RAD` constant
+// https://rwaldron.github.io/proposal-math-extensions/
+$({ target: 'Math', stat: true, nonConfigurable: true, nonWritable: true }, {
+  DEG_PER_RAD: Math.PI / 180
+});
diff --git a/node_modules/core-js/modules/esnext.math.degrees.js b/node_modules/core-js/modules/esnext.math.degrees.js
new file mode 100644
index 0000000..aa21ad7
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.math.degrees.js
@@ -0,0 +1,12 @@
+'use strict';
+var $ = require('../internals/export');
+
+var RAD_PER_DEG = 180 / Math.PI;
+
+// `Math.degrees` method
+// https://rwaldron.github.io/proposal-math-extensions/
+$({ target: 'Math', stat: true, forced: true }, {
+  degrees: function degrees(radians) {
+    return radians * RAD_PER_DEG;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.math.f16round.js b/node_modules/core-js/modules/esnext.math.f16round.js
new file mode 100644
index 0000000..136f019
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.math.f16round.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.math.f16round');
diff --git a/node_modules/core-js/modules/esnext.math.fscale.js b/node_modules/core-js/modules/esnext.math.fscale.js
new file mode 100644
index 0000000..d9767c5
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.math.fscale.js
@@ -0,0 +1,13 @@
+'use strict';
+var $ = require('../internals/export');
+
+var scale = require('../internals/math-scale');
+var fround = require('../internals/math-fround');
+
+// `Math.fscale` method
+// https://rwaldron.github.io/proposal-math-extensions/
+$({ target: 'Math', stat: true, forced: true }, {
+  fscale: function fscale(x, inLow, inHigh, outLow, outHigh) {
+    return fround(scale(x, inLow, inHigh, outLow, outHigh));
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.math.iaddh.js b/node_modules/core-js/modules/esnext.math.iaddh.js
new file mode 100644
index 0000000..f446d88
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.math.iaddh.js
@@ -0,0 +1,14 @@
+'use strict';
+var $ = require('../internals/export');
+
+// `Math.iaddh` method
+// https://gist.github.com/BrendanEich/4294d5c212a6d2254703
+// TODO: Remove from `core-js@4`
+$({ target: 'Math', stat: true, forced: true }, {
+  iaddh: function iaddh(x0, x1, y0, y1) {
+    var $x0 = x0 >>> 0;
+    var $x1 = x1 >>> 0;
+    var $y0 = y0 >>> 0;
+    return $x1 + (y1 >>> 0) + (($x0 & $y0 | ($x0 | $y0) & ~($x0 + $y0 >>> 0)) >>> 31) | 0;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.math.imulh.js b/node_modules/core-js/modules/esnext.math.imulh.js
new file mode 100644
index 0000000..b3c8ad6
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.math.imulh.js
@@ -0,0 +1,19 @@
+'use strict';
+var $ = require('../internals/export');
+
+// `Math.imulh` method
+// https://gist.github.com/BrendanEich/4294d5c212a6d2254703
+// TODO: Remove from `core-js@4`
+$({ target: 'Math', stat: true, forced: true }, {
+  imulh: function imulh(u, v) {
+    var UINT16 = 0xFFFF;
+    var $u = +u;
+    var $v = +v;
+    var u0 = $u & UINT16;
+    var v0 = $v & UINT16;
+    var u1 = $u >> 16;
+    var v1 = $v >> 16;
+    var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);
+    return u1 * v1 + (t >> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >> 16);
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.math.isubh.js b/node_modules/core-js/modules/esnext.math.isubh.js
new file mode 100644
index 0000000..92674e5
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.math.isubh.js
@@ -0,0 +1,14 @@
+'use strict';
+var $ = require('../internals/export');
+
+// `Math.isubh` method
+// https://gist.github.com/BrendanEich/4294d5c212a6d2254703
+// TODO: Remove from `core-js@4`
+$({ target: 'Math', stat: true, forced: true }, {
+  isubh: function isubh(x0, x1, y0, y1) {
+    var $x0 = x0 >>> 0;
+    var $x1 = x1 >>> 0;
+    var $y0 = y0 >>> 0;
+    return $x1 - (y1 >>> 0) - ((~$x0 & $y0 | ~($x0 ^ $y0) & $x0 - $y0 >>> 0) >>> 31) | 0;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.math.rad-per-deg.js b/node_modules/core-js/modules/esnext.math.rad-per-deg.js
new file mode 100644
index 0000000..ea50751
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.math.rad-per-deg.js
@@ -0,0 +1,8 @@
+'use strict';
+var $ = require('../internals/export');
+
+// `Math.RAD_PER_DEG` constant
+// https://rwaldron.github.io/proposal-math-extensions/
+$({ target: 'Math', stat: true, nonConfigurable: true, nonWritable: true }, {
+  RAD_PER_DEG: 180 / Math.PI
+});
diff --git a/node_modules/core-js/modules/esnext.math.radians.js b/node_modules/core-js/modules/esnext.math.radians.js
new file mode 100644
index 0000000..ea62271
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.math.radians.js
@@ -0,0 +1,12 @@
+'use strict';
+var $ = require('../internals/export');
+
+var DEG_PER_RAD = Math.PI / 180;
+
+// `Math.radians` method
+// https://rwaldron.github.io/proposal-math-extensions/
+$({ target: 'Math', stat: true, forced: true }, {
+  radians: function radians(degrees) {
+    return degrees * DEG_PER_RAD;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.math.scale.js b/node_modules/core-js/modules/esnext.math.scale.js
new file mode 100644
index 0000000..be0b6c4
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.math.scale.js
@@ -0,0 +1,9 @@
+'use strict';
+var $ = require('../internals/export');
+var scale = require('../internals/math-scale');
+
+// `Math.scale` method
+// https://rwaldron.github.io/proposal-math-extensions/
+$({ target: 'Math', stat: true, forced: true }, {
+  scale: scale
+});
diff --git a/node_modules/core-js/modules/esnext.math.seeded-prng.js b/node_modules/core-js/modules/esnext.math.seeded-prng.js
new file mode 100644
index 0000000..3ca520d
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.math.seeded-prng.js
@@ -0,0 +1,36 @@
+'use strict';
+var $ = require('../internals/export');
+var anObject = require('../internals/an-object');
+var numberIsFinite = require('../internals/number-is-finite');
+var createIteratorConstructor = require('../internals/iterator-create-constructor');
+var createIterResultObject = require('../internals/create-iter-result-object');
+var InternalStateModule = require('../internals/internal-state');
+
+var SEEDED_RANDOM = 'Seeded Random';
+var SEEDED_RANDOM_GENERATOR = SEEDED_RANDOM + ' Generator';
+var SEED_TYPE_ERROR = 'Math.seededPRNG() argument should have a "seed" field with a finite value.';
+var setInternalState = InternalStateModule.set;
+var getInternalState = InternalStateModule.getterFor(SEEDED_RANDOM_GENERATOR);
+var $TypeError = TypeError;
+
+var $SeededRandomGenerator = createIteratorConstructor(function SeededRandomGenerator(seed) {
+  setInternalState(this, {
+    type: SEEDED_RANDOM_GENERATOR,
+    seed: seed % 2147483647
+  });
+}, SEEDED_RANDOM, function next() {
+  var state = getInternalState(this);
+  var seed = state.seed = (state.seed * 1103515245 + 12345) % 2147483647;
+  return createIterResultObject((seed & 1073741823) / 1073741823, false);
+});
+
+// `Math.seededPRNG` method
+// https://github.com/tc39/proposal-seeded-random
+// based on https://github.com/tc39/proposal-seeded-random/blob/78b8258835b57fc2100d076151ab506bc3202ae6/demo.html
+$({ target: 'Math', stat: true, forced: true }, {
+  seededPRNG: function seededPRNG(it) {
+    var seed = anObject(it).seed;
+    if (!numberIsFinite(seed)) throw new $TypeError(SEED_TYPE_ERROR);
+    return new $SeededRandomGenerator(seed);
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.math.signbit.js b/node_modules/core-js/modules/esnext.math.signbit.js
new file mode 100644
index 0000000..1d4cad0
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.math.signbit.js
@@ -0,0 +1,12 @@
+'use strict';
+var $ = require('../internals/export');
+
+// `Math.signbit` method
+// https://github.com/tc39/proposal-Math.signbit
+$({ target: 'Math', stat: true, forced: true }, {
+  signbit: function signbit(x) {
+    var n = +x;
+    // eslint-disable-next-line no-self-compare -- NaN check
+    return n === n && n === 0 ? 1 / n === -Infinity : n < 0;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.math.sum-precise.js b/node_modules/core-js/modules/esnext.math.sum-precise.js
new file mode 100644
index 0000000..80ba8d4
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.math.sum-precise.js
@@ -0,0 +1,151 @@
+'use strict';
+// based on Shewchuk's algorithm for exactly floating point addition
+// adapted from https://github.com/tc39/proposal-math-sum/blob/3513d58323a1ae25560e8700aa5294500c6c9287/polyfill/polyfill.mjs
+var $ = require('../internals/export');
+var uncurryThis = require('../internals/function-uncurry-this');
+var iterate = require('../internals/iterate');
+
+var $RangeError = RangeError;
+var $TypeError = TypeError;
+var $Infinity = Infinity;
+var $NaN = NaN;
+var abs = Math.abs;
+var pow = Math.pow;
+var push = uncurryThis([].push);
+
+var POW_2_1023 = pow(2, 1023);
+var MAX_SAFE_INTEGER = pow(2, 53) - 1; // 2 ** 53 - 1 === 9007199254740992
+var MAX_DOUBLE = Number.MAX_VALUE; // 2 ** 1024 - 2 ** (1023 - 52) === 1.79769313486231570815e+308
+var MAX_ULP = pow(2, 971); // 2 ** (1023 - 52) === 1.99584030953471981166e+292
+
+var NOT_A_NUMBER = {};
+var MINUS_INFINITY = {};
+var PLUS_INFINITY = {};
+var MINUS_ZERO = {};
+var FINITE = {};
+
+// prerequisite: abs(x) >= abs(y)
+var twosum = function (x, y) {
+  var hi = x + y;
+  var lo = y - (hi - x);
+  return { hi: hi, lo: lo };
+};
+
+// `Math.sumPrecise` method
+// https://github.com/tc39/proposal-math-sum
+$({ target: 'Math', stat: true }, {
+  // eslint-disable-next-line max-statements -- ok
+  sumPrecise: function sumPrecise(items) {
+    var numbers = [];
+    var count = 0;
+    var state = MINUS_ZERO;
+
+    iterate(items, function (n) {
+      if (++count >= MAX_SAFE_INTEGER) throw new $RangeError('Maximum allowed index exceeded');
+      if (typeof n != 'number') throw new $TypeError('Value is not a number');
+      if (state !== NOT_A_NUMBER) {
+        // eslint-disable-next-line no-self-compare -- NaN check
+        if (n !== n) state = NOT_A_NUMBER;
+        else if (n === $Infinity) state = state === MINUS_INFINITY ? NOT_A_NUMBER : PLUS_INFINITY;
+        else if (n === -$Infinity) state = state === PLUS_INFINITY ? NOT_A_NUMBER : MINUS_INFINITY;
+        else if ((n !== 0 || (1 / n) === $Infinity) && (state === MINUS_ZERO || state === FINITE)) {
+          state = FINITE;
+          push(numbers, n);
+        }
+      }
+    });
+
+    switch (state) {
+      case NOT_A_NUMBER: return $NaN;
+      case MINUS_INFINITY: return -$Infinity;
+      case PLUS_INFINITY: return $Infinity;
+      case MINUS_ZERO: return -0;
+    }
+
+    var partials = [];
+    var overflow = 0; // conceptually 2 ** 1024 times this value; the final partial is biased by this amount
+    var x, y, sum, hi, lo, tmp;
+
+    for (var i = 0; i < numbers.length; i++) {
+      x = numbers[i];
+      var actuallyUsedPartials = 0;
+      for (var j = 0; j < partials.length; j++) {
+        y = partials[j];
+        if (abs(x) < abs(y)) {
+          tmp = x;
+          x = y;
+          y = tmp;
+        }
+        sum = twosum(x, y);
+        hi = sum.hi;
+        lo = sum.lo;
+        if (abs(hi) === $Infinity) {
+          var sign = hi === $Infinity ? 1 : -1;
+          overflow += sign;
+
+          x = (x - (sign * POW_2_1023)) - (sign * POW_2_1023);
+          if (abs(x) < abs(y)) {
+            tmp = x;
+            x = y;
+            y = tmp;
+          }
+          sum = twosum(x, y);
+          hi = sum.hi;
+          lo = sum.lo;
+        }
+        if (lo !== 0) partials[actuallyUsedPartials++] = lo;
+        x = hi;
+      }
+      partials.length = actuallyUsedPartials;
+      if (x !== 0) push(partials, x);
+    }
+
+    // compute the exact sum of partials, stopping once we lose precision
+    var n = partials.length - 1;
+    hi = 0;
+    lo = 0;
+
+    if (overflow !== 0) {
+      var next = n >= 0 ? partials[n] : 0;
+      n--;
+      if (abs(overflow) > 1 || (overflow > 0 && next > 0) || (overflow < 0 && next < 0)) {
+        return overflow > 0 ? $Infinity : -$Infinity;
+      }
+      // here we actually have to do the arithmetic
+      // drop a factor of 2 so we can do it without overflow
+      // assert(abs(overflow) === 1)
+      sum = twosum(overflow * POW_2_1023, next / 2);
+      hi = sum.hi;
+      lo = sum.lo;
+      lo *= 2;
+      if (abs(2 * hi) === $Infinity) {
+        // rounding to the maximum value
+        if (hi > 0) {
+          return (hi === POW_2_1023 && lo === -(MAX_ULP / 2) && n >= 0 && partials[n] < 0) ? MAX_DOUBLE : $Infinity;
+        } return (hi === -POW_2_1023 && lo === (MAX_ULP / 2) && n >= 0 && partials[n] > 0) ? -MAX_DOUBLE : -$Infinity;
+      }
+
+      if (lo !== 0) {
+        partials[++n] = lo;
+        lo = 0;
+      }
+
+      hi *= 2;
+    }
+
+    while (n >= 0) {
+      sum = twosum(hi, partials[n--]);
+      hi = sum.hi;
+      lo = sum.lo;
+      if (lo !== 0) break;
+    }
+
+    if (n >= 0 && ((lo < 0 && partials[n] < 0) || (lo > 0 && partials[n] > 0))) {
+      y = lo * 2;
+      x = hi + y;
+      if (y === x - hi) hi = x;
+    }
+
+    return hi;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.math.umulh.js b/node_modules/core-js/modules/esnext.math.umulh.js
new file mode 100644
index 0000000..db995ce
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.math.umulh.js
@@ -0,0 +1,19 @@
+'use strict';
+var $ = require('../internals/export');
+
+// `Math.umulh` method
+// https://gist.github.com/BrendanEich/4294d5c212a6d2254703
+// TODO: Remove from `core-js@4`
+$({ target: 'Math', stat: true, forced: true }, {
+  umulh: function umulh(u, v) {
+    var UINT16 = 0xFFFF;
+    var $u = +u;
+    var $v = +v;
+    var u0 = $u & UINT16;
+    var v0 = $v & UINT16;
+    var u1 = $u >>> 16;
+    var v1 = $v >>> 16;
+    var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);
+    return u1 * v1 + (t >>> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >>> 16);
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.number.from-string.js b/node_modules/core-js/modules/esnext.number.from-string.js
new file mode 100644
index 0000000..f3851ae
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.number.from-string.js
@@ -0,0 +1,41 @@
+'use strict';
+var $ = require('../internals/export');
+var uncurryThis = require('../internals/function-uncurry-this');
+var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
+
+var INVALID_NUMBER_REPRESENTATION = 'Invalid number representation';
+var INVALID_RADIX = 'Invalid radix';
+var $RangeError = RangeError;
+var $SyntaxError = SyntaxError;
+var $TypeError = TypeError;
+var $parseInt = parseInt;
+var pow = Math.pow;
+var valid = /^[\d.a-z]+$/;
+var charAt = uncurryThis(''.charAt);
+var exec = uncurryThis(valid.exec);
+var numberToString = uncurryThis(1.0.toString);
+var stringSlice = uncurryThis(''.slice);
+var split = uncurryThis(''.split);
+
+// `Number.fromString` method
+// https://github.com/tc39/proposal-number-fromstring
+$({ target: 'Number', stat: true, forced: true }, {
+  fromString: function fromString(string, radix) {
+    var sign = 1;
+    if (typeof string != 'string') throw new $TypeError(INVALID_NUMBER_REPRESENTATION);
+    if (!string.length) throw new $SyntaxError(INVALID_NUMBER_REPRESENTATION);
+    if (charAt(string, 0) === '-') {
+      sign = -1;
+      string = stringSlice(string, 1);
+      if (!string.length) throw new $SyntaxError(INVALID_NUMBER_REPRESENTATION);
+    }
+    var R = radix === undefined ? 10 : toIntegerOrInfinity(radix);
+    if (R < 2 || R > 36) throw new $RangeError(INVALID_RADIX);
+    if (!exec(valid, string)) throw new $SyntaxError(INVALID_NUMBER_REPRESENTATION);
+    var parts = split(string, '.');
+    var mathNum = $parseInt(parts[0], R);
+    if (parts.length > 1) mathNum += $parseInt(parts[1], R) / pow(R, parts[1].length);
+    if (R === 10 && numberToString(mathNum, R) !== string) throw new $SyntaxError(INVALID_NUMBER_REPRESENTATION);
+    return sign * mathNum;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.number.range.js b/node_modules/core-js/modules/esnext.number.range.js
new file mode 100644
index 0000000..5f44694
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.number.range.js
@@ -0,0 +1,12 @@
+'use strict';
+var $ = require('../internals/export');
+var NumericRangeIterator = require('../internals/numeric-range-iterator');
+
+// `Number.range` method
+// https://github.com/tc39/proposal-Number.range
+// TODO: Remove from `core-js@4`
+$({ target: 'Number', stat: true, forced: true }, {
+  range: function range(start, end, option) {
+    return new NumericRangeIterator(start, end, option, 'number', 0, 1);
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.object.group-by.js b/node_modules/core-js/modules/esnext.object.group-by.js
new file mode 100644
index 0000000..80845bc
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.object.group-by.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.object.group-by');
diff --git a/node_modules/core-js/modules/esnext.object.has-own.js b/node_modules/core-js/modules/esnext.object.has-own.js
new file mode 100644
index 0000000..12bf558
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.object.has-own.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.object.has-own');
diff --git a/node_modules/core-js/modules/esnext.object.iterate-entries.js b/node_modules/core-js/modules/esnext.object.iterate-entries.js
new file mode 100644
index 0000000..f93b684
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.object.iterate-entries.js
@@ -0,0 +1,12 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+var $ = require('../internals/export');
+var ObjectIterator = require('../internals/object-iterator');
+
+// `Object.iterateEntries` method
+// https://github.com/tc39/proposal-object-iteration
+$({ target: 'Object', stat: true, forced: true }, {
+  iterateEntries: function iterateEntries(object) {
+    return new ObjectIterator(object, 'entries');
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.object.iterate-keys.js b/node_modules/core-js/modules/esnext.object.iterate-keys.js
new file mode 100644
index 0000000..41e5de9
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.object.iterate-keys.js
@@ -0,0 +1,12 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+var $ = require('../internals/export');
+var ObjectIterator = require('../internals/object-iterator');
+
+// `Object.iterateKeys` method
+// https://github.com/tc39/proposal-object-iteration
+$({ target: 'Object', stat: true, forced: true }, {
+  iterateKeys: function iterateKeys(object) {
+    return new ObjectIterator(object, 'keys');
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.object.iterate-values.js b/node_modules/core-js/modules/esnext.object.iterate-values.js
new file mode 100644
index 0000000..490abc8
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.object.iterate-values.js
@@ -0,0 +1,12 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+var $ = require('../internals/export');
+var ObjectIterator = require('../internals/object-iterator');
+
+// `Object.iterateValues` method
+// https://github.com/tc39/proposal-object-iteration
+$({ target: 'Object', stat: true, forced: true }, {
+  iterateValues: function iterateValues(object) {
+    return new ObjectIterator(object, 'values');
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.observable.constructor.js b/node_modules/core-js/modules/esnext.observable.constructor.js
new file mode 100644
index 0000000..47761a7
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.observable.constructor.js
@@ -0,0 +1,187 @@
+'use strict';
+// https://github.com/tc39/proposal-observable
+var $ = require('../internals/export');
+var call = require('../internals/function-call');
+var DESCRIPTORS = require('../internals/descriptors');
+var setSpecies = require('../internals/set-species');
+var aCallable = require('../internals/a-callable');
+var anObject = require('../internals/an-object');
+var anInstance = require('../internals/an-instance');
+var isCallable = require('../internals/is-callable');
+var isNullOrUndefined = require('../internals/is-null-or-undefined');
+var isObject = require('../internals/is-object');
+var getMethod = require('../internals/get-method');
+var defineBuiltIn = require('../internals/define-built-in');
+var defineBuiltIns = require('../internals/define-built-ins');
+var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
+var hostReportErrors = require('../internals/host-report-errors');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var InternalStateModule = require('../internals/internal-state');
+
+var $$OBSERVABLE = wellKnownSymbol('observable');
+var OBSERVABLE = 'Observable';
+var SUBSCRIPTION = 'Subscription';
+var SUBSCRIPTION_OBSERVER = 'SubscriptionObserver';
+var getterFor = InternalStateModule.getterFor;
+var setInternalState = InternalStateModule.set;
+var getObservableInternalState = getterFor(OBSERVABLE);
+var getSubscriptionInternalState = getterFor(SUBSCRIPTION);
+var getSubscriptionObserverInternalState = getterFor(SUBSCRIPTION_OBSERVER);
+
+var SubscriptionState = function (observer) {
+  this.observer = anObject(observer);
+  this.cleanup = null;
+  this.subscriptionObserver = null;
+};
+
+SubscriptionState.prototype = {
+  type: SUBSCRIPTION,
+  clean: function () {
+    var cleanup = this.cleanup;
+    if (cleanup) {
+      this.cleanup = null;
+      try {
+        cleanup();
+      } catch (error) {
+        hostReportErrors(error);
+      }
+    }
+  },
+  close: function () {
+    if (!DESCRIPTORS) {
+      var subscription = this.facade;
+      var subscriptionObserver = this.subscriptionObserver;
+      subscription.closed = true;
+      if (subscriptionObserver) subscriptionObserver.closed = true;
+    } this.observer = null;
+  },
+  isClosed: function () {
+    return this.observer === null;
+  }
+};
+
+var Subscription = function (observer, subscriber) {
+  var subscriptionState = setInternalState(this, new SubscriptionState(observer));
+  var start;
+  if (!DESCRIPTORS) this.closed = false;
+  try {
+    if (start = getMethod(observer, 'start')) call(start, observer, this);
+  } catch (error) {
+    hostReportErrors(error);
+  }
+  if (subscriptionState.isClosed()) return;
+  var subscriptionObserver = subscriptionState.subscriptionObserver = new SubscriptionObserver(subscriptionState);
+  try {
+    var cleanup = subscriber(subscriptionObserver);
+    var subscription = cleanup;
+    if (!isNullOrUndefined(cleanup)) subscriptionState.cleanup = isCallable(cleanup.unsubscribe)
+      ? function () { subscription.unsubscribe(); }
+      : aCallable(cleanup);
+  } catch (error) {
+    subscriptionObserver.error(error);
+    return;
+  } if (subscriptionState.isClosed()) subscriptionState.clean();
+};
+
+Subscription.prototype = defineBuiltIns({}, {
+  unsubscribe: function unsubscribe() {
+    var subscriptionState = getSubscriptionInternalState(this);
+    if (!subscriptionState.isClosed()) {
+      subscriptionState.close();
+      subscriptionState.clean();
+    }
+  }
+});
+
+if (DESCRIPTORS) defineBuiltInAccessor(Subscription.prototype, 'closed', {
+  configurable: true,
+  get: function closed() {
+    return getSubscriptionInternalState(this).isClosed();
+  }
+});
+
+var SubscriptionObserver = function (subscriptionState) {
+  setInternalState(this, {
+    type: SUBSCRIPTION_OBSERVER,
+    subscriptionState: subscriptionState
+  });
+  if (!DESCRIPTORS) this.closed = false;
+};
+
+SubscriptionObserver.prototype = defineBuiltIns({}, {
+  next: function next(value) {
+    var subscriptionState = getSubscriptionObserverInternalState(this).subscriptionState;
+    if (!subscriptionState.isClosed()) {
+      var observer = subscriptionState.observer;
+      try {
+        var nextMethod = getMethod(observer, 'next');
+        if (nextMethod) call(nextMethod, observer, value);
+      } catch (error) {
+        hostReportErrors(error);
+      }
+    }
+  },
+  error: function error(value) {
+    var subscriptionState = getSubscriptionObserverInternalState(this).subscriptionState;
+    if (!subscriptionState.isClosed()) {
+      var observer = subscriptionState.observer;
+      subscriptionState.close();
+      try {
+        var errorMethod = getMethod(observer, 'error');
+        if (errorMethod) call(errorMethod, observer, value);
+        else hostReportErrors(value);
+      } catch (err) {
+        hostReportErrors(err);
+      } subscriptionState.clean();
+    }
+  },
+  complete: function complete() {
+    var subscriptionState = getSubscriptionObserverInternalState(this).subscriptionState;
+    if (!subscriptionState.isClosed()) {
+      var observer = subscriptionState.observer;
+      subscriptionState.close();
+      try {
+        var completeMethod = getMethod(observer, 'complete');
+        if (completeMethod) call(completeMethod, observer);
+      } catch (error) {
+        hostReportErrors(error);
+      } subscriptionState.clean();
+    }
+  }
+});
+
+if (DESCRIPTORS) defineBuiltInAccessor(SubscriptionObserver.prototype, 'closed', {
+  configurable: true,
+  get: function closed() {
+    return getSubscriptionObserverInternalState(this).subscriptionState.isClosed();
+  }
+});
+
+var $Observable = function Observable(subscriber) {
+  anInstance(this, ObservablePrototype);
+  setInternalState(this, {
+    type: OBSERVABLE,
+    subscriber: aCallable(subscriber)
+  });
+};
+
+var ObservablePrototype = $Observable.prototype;
+
+defineBuiltIns(ObservablePrototype, {
+  subscribe: function subscribe(observer) {
+    var length = arguments.length;
+    return new Subscription(isCallable(observer) ? {
+      next: observer,
+      error: length > 1 ? arguments[1] : undefined,
+      complete: length > 2 ? arguments[2] : undefined
+    } : isObject(observer) ? observer : {}, getObservableInternalState(this).subscriber);
+  }
+});
+
+defineBuiltIn(ObservablePrototype, $$OBSERVABLE, function () { return this; });
+
+$({ global: true, constructor: true, forced: true }, {
+  Observable: $Observable
+});
+
+setSpecies(OBSERVABLE);
diff --git a/node_modules/core-js/modules/esnext.observable.from.js b/node_modules/core-js/modules/esnext.observable.from.js
new file mode 100644
index 0000000..e1f81c1
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.observable.from.js
@@ -0,0 +1,35 @@
+'use strict';
+var $ = require('../internals/export');
+var getBuiltIn = require('../internals/get-built-in');
+var call = require('../internals/function-call');
+var anObject = require('../internals/an-object');
+var isConstructor = require('../internals/is-constructor');
+var getIterator = require('../internals/get-iterator');
+var getMethod = require('../internals/get-method');
+var iterate = require('../internals/iterate');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+var $$OBSERVABLE = wellKnownSymbol('observable');
+
+// `Observable.from` method
+// https://github.com/tc39/proposal-observable
+$({ target: 'Observable', stat: true, forced: true }, {
+  from: function from(x) {
+    var C = isConstructor(this) ? this : getBuiltIn('Observable');
+    var observableMethod = getMethod(anObject(x), $$OBSERVABLE);
+    if (observableMethod) {
+      var observable = anObject(call(observableMethod, x));
+      return observable.constructor === C ? observable : new C(function (observer) {
+        return observable.subscribe(observer);
+      });
+    }
+    var iterator = getIterator(x);
+    return new C(function (observer) {
+      iterate(iterator, function (it, stop) {
+        observer.next(it);
+        if (observer.closed) return stop();
+      }, { IS_ITERATOR: true, INTERRUPTED: true });
+      observer.complete();
+    });
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.observable.js b/node_modules/core-js/modules/esnext.observable.js
new file mode 100644
index 0000000..7f37b46
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.observable.js
@@ -0,0 +1,5 @@
+'use strict';
+// TODO: Remove this module from `core-js@4` since it's split to modules listed below
+require('../modules/esnext.observable.constructor');
+require('../modules/esnext.observable.from');
+require('../modules/esnext.observable.of');
diff --git a/node_modules/core-js/modules/esnext.observable.of.js b/node_modules/core-js/modules/esnext.observable.of.js
new file mode 100644
index 0000000..3082f04
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.observable.of.js
@@ -0,0 +1,24 @@
+'use strict';
+var $ = require('../internals/export');
+var getBuiltIn = require('../internals/get-built-in');
+var isConstructor = require('../internals/is-constructor');
+
+var Array = getBuiltIn('Array');
+
+// `Observable.of` method
+// https://github.com/tc39/proposal-observable
+$({ target: 'Observable', stat: true, forced: true }, {
+  of: function of() {
+    var C = isConstructor(this) ? this : getBuiltIn('Observable');
+    var length = arguments.length;
+    var items = Array(length);
+    var index = 0;
+    while (index < length) items[index] = arguments[index++];
+    return new C(function (observer) {
+      for (var i = 0; i < length; i++) {
+        observer.next(items[i]);
+        if (observer.closed) return;
+      } observer.complete();
+    });
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.promise.all-settled.js b/node_modules/core-js/modules/esnext.promise.all-settled.js
new file mode 100644
index 0000000..d7ba53d
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.promise.all-settled.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.promise.all-settled.js');
diff --git a/node_modules/core-js/modules/esnext.promise.any.js b/node_modules/core-js/modules/esnext.promise.any.js
new file mode 100644
index 0000000..b50dede
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.promise.any.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.promise.any');
diff --git a/node_modules/core-js/modules/esnext.promise.try.js b/node_modules/core-js/modules/esnext.promise.try.js
new file mode 100644
index 0000000..2f2c04b
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.promise.try.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.promise.try.js');
diff --git a/node_modules/core-js/modules/esnext.promise.with-resolvers.js b/node_modules/core-js/modules/esnext.promise.with-resolvers.js
new file mode 100644
index 0000000..1a34a66
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.promise.with-resolvers.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.promise.with-resolvers');
diff --git a/node_modules/core-js/modules/esnext.reflect.define-metadata.js b/node_modules/core-js/modules/esnext.reflect.define-metadata.js
new file mode 100644
index 0000000..8ace9f4
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.reflect.define-metadata.js
@@ -0,0 +1,17 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+var $ = require('../internals/export');
+var ReflectMetadataModule = require('../internals/reflect-metadata');
+var anObject = require('../internals/an-object');
+
+var toMetadataKey = ReflectMetadataModule.toKey;
+var ordinaryDefineOwnMetadata = ReflectMetadataModule.set;
+
+// `Reflect.defineMetadata` method
+// https://github.com/rbuckton/reflect-metadata
+$({ target: 'Reflect', stat: true }, {
+  defineMetadata: function defineMetadata(metadataKey, metadataValue, target /* , targetKey */) {
+    var targetKey = arguments.length < 4 ? undefined : toMetadataKey(arguments[3]);
+    ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), targetKey);
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.reflect.delete-metadata.js b/node_modules/core-js/modules/esnext.reflect.delete-metadata.js
new file mode 100644
index 0000000..13ba13d
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.reflect.delete-metadata.js
@@ -0,0 +1,22 @@
+'use strict';
+var $ = require('../internals/export');
+var ReflectMetadataModule = require('../internals/reflect-metadata');
+var anObject = require('../internals/an-object');
+
+var toMetadataKey = ReflectMetadataModule.toKey;
+var getOrCreateMetadataMap = ReflectMetadataModule.getMap;
+var store = ReflectMetadataModule.store;
+
+// `Reflect.deleteMetadata` method
+// https://github.com/rbuckton/reflect-metadata
+$({ target: 'Reflect', stat: true }, {
+  deleteMetadata: function deleteMetadata(metadataKey, target /* , targetKey */) {
+    var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]);
+    var metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false);
+    if (metadataMap === undefined || !metadataMap['delete'](metadataKey)) return false;
+    if (metadataMap.size) return true;
+    var targetMetadata = store.get(target);
+    targetMetadata['delete'](targetKey);
+    return !!targetMetadata.size || store['delete'](target);
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.reflect.get-metadata-keys.js b/node_modules/core-js/modules/esnext.reflect.get-metadata-keys.js
new file mode 100644
index 0000000..34fad84
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.reflect.get-metadata-keys.js
@@ -0,0 +1,30 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+var $ = require('../internals/export');
+var uncurryThis = require('../internals/function-uncurry-this');
+var ReflectMetadataModule = require('../internals/reflect-metadata');
+var anObject = require('../internals/an-object');
+var getPrototypeOf = require('../internals/object-get-prototype-of');
+var $arrayUniqueBy = require('../internals/array-unique-by');
+
+var arrayUniqueBy = uncurryThis($arrayUniqueBy);
+var concat = uncurryThis([].concat);
+var ordinaryOwnMetadataKeys = ReflectMetadataModule.keys;
+var toMetadataKey = ReflectMetadataModule.toKey;
+
+var ordinaryMetadataKeys = function (O, P) {
+  var oKeys = ordinaryOwnMetadataKeys(O, P);
+  var parent = getPrototypeOf(O);
+  if (parent === null) return oKeys;
+  var pKeys = ordinaryMetadataKeys(parent, P);
+  return pKeys.length ? oKeys.length ? arrayUniqueBy(concat(oKeys, pKeys)) : pKeys : oKeys;
+};
+
+// `Reflect.getMetadataKeys` method
+// https://github.com/rbuckton/reflect-metadata
+$({ target: 'Reflect', stat: true }, {
+  getMetadataKeys: function getMetadataKeys(target /* , targetKey */) {
+    var targetKey = arguments.length < 2 ? undefined : toMetadataKey(arguments[1]);
+    return ordinaryMetadataKeys(anObject(target), targetKey);
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.reflect.get-metadata.js b/node_modules/core-js/modules/esnext.reflect.get-metadata.js
new file mode 100644
index 0000000..7258252
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.reflect.get-metadata.js
@@ -0,0 +1,26 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+var $ = require('../internals/export');
+var ReflectMetadataModule = require('../internals/reflect-metadata');
+var anObject = require('../internals/an-object');
+var getPrototypeOf = require('../internals/object-get-prototype-of');
+
+var ordinaryHasOwnMetadata = ReflectMetadataModule.has;
+var ordinaryGetOwnMetadata = ReflectMetadataModule.get;
+var toMetadataKey = ReflectMetadataModule.toKey;
+
+var ordinaryGetMetadata = function (MetadataKey, O, P) {
+  var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);
+  if (hasOwn) return ordinaryGetOwnMetadata(MetadataKey, O, P);
+  var parent = getPrototypeOf(O);
+  return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined;
+};
+
+// `Reflect.getMetadata` method
+// https://github.com/rbuckton/reflect-metadata
+$({ target: 'Reflect', stat: true }, {
+  getMetadata: function getMetadata(metadataKey, target /* , targetKey */) {
+    var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]);
+    return ordinaryGetMetadata(metadataKey, anObject(target), targetKey);
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.reflect.get-own-metadata-keys.js b/node_modules/core-js/modules/esnext.reflect.get-own-metadata-keys.js
new file mode 100644
index 0000000..3b44e0f
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.reflect.get-own-metadata-keys.js
@@ -0,0 +1,17 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+var $ = require('../internals/export');
+var ReflectMetadataModule = require('../internals/reflect-metadata');
+var anObject = require('../internals/an-object');
+
+var ordinaryOwnMetadataKeys = ReflectMetadataModule.keys;
+var toMetadataKey = ReflectMetadataModule.toKey;
+
+// `Reflect.getOwnMetadataKeys` method
+// https://github.com/rbuckton/reflect-metadata
+$({ target: 'Reflect', stat: true }, {
+  getOwnMetadataKeys: function getOwnMetadataKeys(target /* , targetKey */) {
+    var targetKey = arguments.length < 2 ? undefined : toMetadataKey(arguments[1]);
+    return ordinaryOwnMetadataKeys(anObject(target), targetKey);
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.reflect.get-own-metadata.js b/node_modules/core-js/modules/esnext.reflect.get-own-metadata.js
new file mode 100644
index 0000000..e1f62fc
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.reflect.get-own-metadata.js
@@ -0,0 +1,17 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+var $ = require('../internals/export');
+var ReflectMetadataModule = require('../internals/reflect-metadata');
+var anObject = require('../internals/an-object');
+
+var ordinaryGetOwnMetadata = ReflectMetadataModule.get;
+var toMetadataKey = ReflectMetadataModule.toKey;
+
+// `Reflect.getOwnMetadata` method
+// https://github.com/rbuckton/reflect-metadata
+$({ target: 'Reflect', stat: true }, {
+  getOwnMetadata: function getOwnMetadata(metadataKey, target /* , targetKey */) {
+    var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]);
+    return ordinaryGetOwnMetadata(metadataKey, anObject(target), targetKey);
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.reflect.has-metadata.js b/node_modules/core-js/modules/esnext.reflect.has-metadata.js
new file mode 100644
index 0000000..26ce256
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.reflect.has-metadata.js
@@ -0,0 +1,25 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+var $ = require('../internals/export');
+var ReflectMetadataModule = require('../internals/reflect-metadata');
+var anObject = require('../internals/an-object');
+var getPrototypeOf = require('../internals/object-get-prototype-of');
+
+var ordinaryHasOwnMetadata = ReflectMetadataModule.has;
+var toMetadataKey = ReflectMetadataModule.toKey;
+
+var ordinaryHasMetadata = function (MetadataKey, O, P) {
+  var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);
+  if (hasOwn) return true;
+  var parent = getPrototypeOf(O);
+  return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false;
+};
+
+// `Reflect.hasMetadata` method
+// https://github.com/rbuckton/reflect-metadata
+$({ target: 'Reflect', stat: true }, {
+  hasMetadata: function hasMetadata(metadataKey, target /* , targetKey */) {
+    var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]);
+    return ordinaryHasMetadata(metadataKey, anObject(target), targetKey);
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.reflect.has-own-metadata.js b/node_modules/core-js/modules/esnext.reflect.has-own-metadata.js
new file mode 100644
index 0000000..5e38885
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.reflect.has-own-metadata.js
@@ -0,0 +1,17 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+var $ = require('../internals/export');
+var ReflectMetadataModule = require('../internals/reflect-metadata');
+var anObject = require('../internals/an-object');
+
+var ordinaryHasOwnMetadata = ReflectMetadataModule.has;
+var toMetadataKey = ReflectMetadataModule.toKey;
+
+// `Reflect.hasOwnMetadata` method
+// https://github.com/rbuckton/reflect-metadata
+$({ target: 'Reflect', stat: true }, {
+  hasOwnMetadata: function hasOwnMetadata(metadataKey, target /* , targetKey */) {
+    var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]);
+    return ordinaryHasOwnMetadata(metadataKey, anObject(target), targetKey);
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.reflect.metadata.js b/node_modules/core-js/modules/esnext.reflect.metadata.js
new file mode 100644
index 0000000..5d98d03
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.reflect.metadata.js
@@ -0,0 +1,17 @@
+'use strict';
+var $ = require('../internals/export');
+var ReflectMetadataModule = require('../internals/reflect-metadata');
+var anObject = require('../internals/an-object');
+
+var toMetadataKey = ReflectMetadataModule.toKey;
+var ordinaryDefineOwnMetadata = ReflectMetadataModule.set;
+
+// `Reflect.metadata` method
+// https://github.com/rbuckton/reflect-metadata
+$({ target: 'Reflect', stat: true }, {
+  metadata: function metadata(metadataKey, metadataValue) {
+    return function decorator(target, key) {
+      ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetadataKey(key));
+    };
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.regexp.escape.js b/node_modules/core-js/modules/esnext.regexp.escape.js
new file mode 100644
index 0000000..19ade17
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.regexp.escape.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.regexp.escape.js');
diff --git a/node_modules/core-js/modules/esnext.set.add-all.js b/node_modules/core-js/modules/esnext.set.add-all.js
new file mode 100644
index 0000000..d168fbe
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.set.add-all.js
@@ -0,0 +1,15 @@
+'use strict';
+var $ = require('../internals/export');
+var aSet = require('../internals/a-set');
+var add = require('../internals/set-helpers').add;
+
+// `Set.prototype.addAll` method
+// https://github.com/tc39/proposal-collection-methods
+$({ target: 'Set', proto: true, real: true, forced: true }, {
+  addAll: function addAll(/* ...elements */) {
+    var set = aSet(this);
+    for (var k = 0, len = arguments.length; k < len; k++) {
+      add(set, arguments[k]);
+    } return set;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.set.delete-all.js b/node_modules/core-js/modules/esnext.set.delete-all.js
new file mode 100644
index 0000000..cbba874
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.set.delete-all.js
@@ -0,0 +1,18 @@
+'use strict';
+var $ = require('../internals/export');
+var aSet = require('../internals/a-set');
+var remove = require('../internals/set-helpers').remove;
+
+// `Set.prototype.deleteAll` method
+// https://github.com/tc39/proposal-collection-methods
+$({ target: 'Set', proto: true, real: true, forced: true }, {
+  deleteAll: function deleteAll(/* ...elements */) {
+    var collection = aSet(this);
+    var allDeleted = true;
+    var wasDeleted;
+    for (var k = 0, len = arguments.length; k < len; k++) {
+      wasDeleted = remove(collection, arguments[k]);
+      allDeleted = allDeleted && wasDeleted;
+    } return !!allDeleted;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.set.difference.js b/node_modules/core-js/modules/esnext.set.difference.js
new file mode 100644
index 0000000..d2a4008
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.set.difference.js
@@ -0,0 +1,14 @@
+'use strict';
+var $ = require('../internals/export');
+var call = require('../internals/function-call');
+var toSetLike = require('../internals/to-set-like');
+var $difference = require('../internals/set-difference');
+
+// `Set.prototype.difference` method
+// https://github.com/tc39/proposal-set-methods
+// TODO: Obsolete version, remove from `core-js@4`
+$({ target: 'Set', proto: true, real: true, forced: true }, {
+  difference: function difference(other) {
+    return call($difference, this, toSetLike(other));
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.set.difference.v2.js b/node_modules/core-js/modules/esnext.set.difference.v2.js
new file mode 100644
index 0000000..4fe7c7d
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.set.difference.v2.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.set.difference.v2');
diff --git a/node_modules/core-js/modules/esnext.set.every.js b/node_modules/core-js/modules/esnext.set.every.js
new file mode 100644
index 0000000..999c6be
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.set.every.js
@@ -0,0 +1,17 @@
+'use strict';
+var $ = require('../internals/export');
+var bind = require('../internals/function-bind-context');
+var aSet = require('../internals/a-set');
+var iterate = require('../internals/set-iterate');
+
+// `Set.prototype.every` method
+// https://github.com/tc39/proposal-collection-methods
+$({ target: 'Set', proto: true, real: true, forced: true }, {
+  every: function every(callbackfn /* , thisArg */) {
+    var set = aSet(this);
+    var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+    return iterate(set, function (value) {
+      if (!boundFunction(value, value, set)) return false;
+    }, true) !== false;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.set.filter.js b/node_modules/core-js/modules/esnext.set.filter.js
new file mode 100644
index 0000000..84e1dac
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.set.filter.js
@@ -0,0 +1,23 @@
+'use strict';
+var $ = require('../internals/export');
+var bind = require('../internals/function-bind-context');
+var aSet = require('../internals/a-set');
+var SetHelpers = require('../internals/set-helpers');
+var iterate = require('../internals/set-iterate');
+
+var Set = SetHelpers.Set;
+var add = SetHelpers.add;
+
+// `Set.prototype.filter` method
+// https://github.com/tc39/proposal-collection-methods
+$({ target: 'Set', proto: true, real: true, forced: true }, {
+  filter: function filter(callbackfn /* , thisArg */) {
+    var set = aSet(this);
+    var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+    var newSet = new Set();
+    iterate(set, function (value) {
+      if (boundFunction(value, value, set)) add(newSet, value);
+    });
+    return newSet;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.set.find.js b/node_modules/core-js/modules/esnext.set.find.js
new file mode 100644
index 0000000..ae18ca7
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.set.find.js
@@ -0,0 +1,18 @@
+'use strict';
+var $ = require('../internals/export');
+var bind = require('../internals/function-bind-context');
+var aSet = require('../internals/a-set');
+var iterate = require('../internals/set-iterate');
+
+// `Set.prototype.find` method
+// https://github.com/tc39/proposal-collection-methods
+$({ target: 'Set', proto: true, real: true, forced: true }, {
+  find: function find(callbackfn /* , thisArg */) {
+    var set = aSet(this);
+    var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+    var result = iterate(set, function (value) {
+      if (boundFunction(value, value, set)) return { value: value };
+    }, true);
+    return result && result.value;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.set.from.js b/node_modules/core-js/modules/esnext.set.from.js
new file mode 100644
index 0000000..1704a4b
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.set.from.js
@@ -0,0 +1,10 @@
+'use strict';
+var $ = require('../internals/export');
+var SetHelpers = require('../internals/set-helpers');
+var createCollectionFrom = require('../internals/collection-from');
+
+// `Set.from` method
+// https://tc39.github.io/proposal-setmap-offrom/#sec-set.from
+$({ target: 'Set', stat: true, forced: true }, {
+  from: createCollectionFrom(SetHelpers.Set, SetHelpers.add, false)
+});
diff --git a/node_modules/core-js/modules/esnext.set.intersection.js b/node_modules/core-js/modules/esnext.set.intersection.js
new file mode 100644
index 0000000..fed2c43
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.set.intersection.js
@@ -0,0 +1,14 @@
+'use strict';
+var $ = require('../internals/export');
+var call = require('../internals/function-call');
+var toSetLike = require('../internals/to-set-like');
+var $intersection = require('../internals/set-intersection');
+
+// `Set.prototype.intersection` method
+// https://github.com/tc39/proposal-set-methods
+// TODO: Obsolete version, remove from `core-js@4`
+$({ target: 'Set', proto: true, real: true, forced: true }, {
+  intersection: function intersection(other) {
+    return call($intersection, this, toSetLike(other));
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.set.intersection.v2.js b/node_modules/core-js/modules/esnext.set.intersection.v2.js
new file mode 100644
index 0000000..c417a81
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.set.intersection.v2.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.set.intersection.v2');
diff --git a/node_modules/core-js/modules/esnext.set.is-disjoint-from.js b/node_modules/core-js/modules/esnext.set.is-disjoint-from.js
new file mode 100644
index 0000000..bec2b23
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.set.is-disjoint-from.js
@@ -0,0 +1,14 @@
+'use strict';
+var $ = require('../internals/export');
+var call = require('../internals/function-call');
+var toSetLike = require('../internals/to-set-like');
+var $isDisjointFrom = require('../internals/set-is-disjoint-from');
+
+// `Set.prototype.isDisjointFrom` method
+// https://github.com/tc39/proposal-set-methods
+// TODO: Obsolete version, remove from `core-js@4`
+$({ target: 'Set', proto: true, real: true, forced: true }, {
+  isDisjointFrom: function isDisjointFrom(other) {
+    return call($isDisjointFrom, this, toSetLike(other));
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.set.is-disjoint-from.v2.js b/node_modules/core-js/modules/esnext.set.is-disjoint-from.v2.js
new file mode 100644
index 0000000..1aec2f8
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.set.is-disjoint-from.v2.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.set.is-disjoint-from.v2');
diff --git a/node_modules/core-js/modules/esnext.set.is-subset-of.js b/node_modules/core-js/modules/esnext.set.is-subset-of.js
new file mode 100644
index 0000000..7b30e93
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.set.is-subset-of.js
@@ -0,0 +1,14 @@
+'use strict';
+var $ = require('../internals/export');
+var call = require('../internals/function-call');
+var toSetLike = require('../internals/to-set-like');
+var $isSubsetOf = require('../internals/set-is-subset-of');
+
+// `Set.prototype.isSubsetOf` method
+// https://github.com/tc39/proposal-set-methods
+// TODO: Obsolete version, remove from `core-js@4`
+$({ target: 'Set', proto: true, real: true, forced: true }, {
+  isSubsetOf: function isSubsetOf(other) {
+    return call($isSubsetOf, this, toSetLike(other));
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.set.is-subset-of.v2.js b/node_modules/core-js/modules/esnext.set.is-subset-of.v2.js
new file mode 100644
index 0000000..a89f266
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.set.is-subset-of.v2.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.set.is-subset-of.v2');
diff --git a/node_modules/core-js/modules/esnext.set.is-superset-of.js b/node_modules/core-js/modules/esnext.set.is-superset-of.js
new file mode 100644
index 0000000..4325085
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.set.is-superset-of.js
@@ -0,0 +1,14 @@
+'use strict';
+var $ = require('../internals/export');
+var call = require('../internals/function-call');
+var toSetLike = require('../internals/to-set-like');
+var $isSupersetOf = require('../internals/set-is-superset-of');
+
+// `Set.prototype.isSupersetOf` method
+// https://github.com/tc39/proposal-set-methods
+// TODO: Obsolete version, remove from `core-js@4`
+$({ target: 'Set', proto: true, real: true, forced: true }, {
+  isSupersetOf: function isSupersetOf(other) {
+    return call($isSupersetOf, this, toSetLike(other));
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.set.is-superset-of.v2.js b/node_modules/core-js/modules/esnext.set.is-superset-of.v2.js
new file mode 100644
index 0000000..c539c66
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.set.is-superset-of.v2.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.set.is-superset-of.v2');
diff --git a/node_modules/core-js/modules/esnext.set.join.js b/node_modules/core-js/modules/esnext.set.join.js
new file mode 100644
index 0000000..4f7a62a
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.set.join.js
@@ -0,0 +1,23 @@
+'use strict';
+var $ = require('../internals/export');
+var uncurryThis = require('../internals/function-uncurry-this');
+var aSet = require('../internals/a-set');
+var iterate = require('../internals/set-iterate');
+var toString = require('../internals/to-string');
+
+var arrayJoin = uncurryThis([].join);
+var push = uncurryThis([].push);
+
+// `Set.prototype.join` method
+// https://github.com/tc39/proposal-collection-methods
+$({ target: 'Set', proto: true, real: true, forced: true }, {
+  join: function join(separator) {
+    var set = aSet(this);
+    var sep = separator === undefined ? ',' : toString(separator);
+    var array = [];
+    iterate(set, function (value) {
+      push(array, value);
+    });
+    return arrayJoin(array, sep);
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.set.map.js b/node_modules/core-js/modules/esnext.set.map.js
new file mode 100644
index 0000000..2eea3de
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.set.map.js
@@ -0,0 +1,23 @@
+'use strict';
+var $ = require('../internals/export');
+var bind = require('../internals/function-bind-context');
+var aSet = require('../internals/a-set');
+var SetHelpers = require('../internals/set-helpers');
+var iterate = require('../internals/set-iterate');
+
+var Set = SetHelpers.Set;
+var add = SetHelpers.add;
+
+// `Set.prototype.map` method
+// https://github.com/tc39/proposal-collection-methods
+$({ target: 'Set', proto: true, real: true, forced: true }, {
+  map: function map(callbackfn /* , thisArg */) {
+    var set = aSet(this);
+    var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+    var newSet = new Set();
+    iterate(set, function (value) {
+      add(newSet, boundFunction(value, value, set));
+    });
+    return newSet;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.set.of.js b/node_modules/core-js/modules/esnext.set.of.js
new file mode 100644
index 0000000..a1a5424
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.set.of.js
@@ -0,0 +1,10 @@
+'use strict';
+var $ = require('../internals/export');
+var SetHelpers = require('../internals/set-helpers');
+var createCollectionOf = require('../internals/collection-of');
+
+// `Set.of` method
+// https://tc39.github.io/proposal-setmap-offrom/#sec-set.of
+$({ target: 'Set', stat: true, forced: true }, {
+  of: createCollectionOf(SetHelpers.Set, SetHelpers.add, false)
+});
diff --git a/node_modules/core-js/modules/esnext.set.reduce.js b/node_modules/core-js/modules/esnext.set.reduce.js
new file mode 100644
index 0000000..988af32
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.set.reduce.js
@@ -0,0 +1,28 @@
+'use strict';
+var $ = require('../internals/export');
+var aCallable = require('../internals/a-callable');
+var aSet = require('../internals/a-set');
+var iterate = require('../internals/set-iterate');
+
+var $TypeError = TypeError;
+
+// `Set.prototype.reduce` method
+// https://github.com/tc39/proposal-collection-methods
+$({ target: 'Set', proto: true, real: true, forced: true }, {
+  reduce: function reduce(callbackfn /* , initialValue */) {
+    var set = aSet(this);
+    var noInitial = arguments.length < 2;
+    var accumulator = noInitial ? undefined : arguments[1];
+    aCallable(callbackfn);
+    iterate(set, function (value) {
+      if (noInitial) {
+        noInitial = false;
+        accumulator = value;
+      } else {
+        accumulator = callbackfn(accumulator, value, value, set);
+      }
+    });
+    if (noInitial) throw new $TypeError('Reduce of empty set with no initial value');
+    return accumulator;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.set.some.js b/node_modules/core-js/modules/esnext.set.some.js
new file mode 100644
index 0000000..ab86d1c
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.set.some.js
@@ -0,0 +1,17 @@
+'use strict';
+var $ = require('../internals/export');
+var bind = require('../internals/function-bind-context');
+var aSet = require('../internals/a-set');
+var iterate = require('../internals/set-iterate');
+
+// `Set.prototype.some` method
+// https://github.com/tc39/proposal-collection-methods
+$({ target: 'Set', proto: true, real: true, forced: true }, {
+  some: function some(callbackfn /* , thisArg */) {
+    var set = aSet(this);
+    var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+    return iterate(set, function (value) {
+      if (boundFunction(value, value, set)) return true;
+    }, true) === true;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.set.symmetric-difference.js b/node_modules/core-js/modules/esnext.set.symmetric-difference.js
new file mode 100644
index 0000000..fa697f0
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.set.symmetric-difference.js
@@ -0,0 +1,14 @@
+'use strict';
+var $ = require('../internals/export');
+var call = require('../internals/function-call');
+var toSetLike = require('../internals/to-set-like');
+var $symmetricDifference = require('../internals/set-symmetric-difference');
+
+// `Set.prototype.symmetricDifference` method
+// https://github.com/tc39/proposal-set-methods
+// TODO: Obsolete version, remove from `core-js@4`
+$({ target: 'Set', proto: true, real: true, forced: true }, {
+  symmetricDifference: function symmetricDifference(other) {
+    return call($symmetricDifference, this, toSetLike(other));
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.set.symmetric-difference.v2.js b/node_modules/core-js/modules/esnext.set.symmetric-difference.v2.js
new file mode 100644
index 0000000..0d1f18a
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.set.symmetric-difference.v2.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.set.symmetric-difference.v2');
diff --git a/node_modules/core-js/modules/esnext.set.union.js b/node_modules/core-js/modules/esnext.set.union.js
new file mode 100644
index 0000000..0ff0696
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.set.union.js
@@ -0,0 +1,14 @@
+'use strict';
+var $ = require('../internals/export');
+var call = require('../internals/function-call');
+var toSetLike = require('../internals/to-set-like');
+var $union = require('../internals/set-union');
+
+// `Set.prototype.union` method
+// https://github.com/tc39/proposal-set-methods
+// TODO: Obsolete version, remove from `core-js@4`
+$({ target: 'Set', proto: true, real: true, forced: true }, {
+  union: function union(other) {
+    return call($union, this, toSetLike(other));
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.set.union.v2.js b/node_modules/core-js/modules/esnext.set.union.v2.js
new file mode 100644
index 0000000..cd5c93f
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.set.union.v2.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.set.union.v2');
diff --git a/node_modules/core-js/modules/esnext.string.at-alternative.js b/node_modules/core-js/modules/esnext.string.at-alternative.js
new file mode 100644
index 0000000..50bc7d1
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.string.at-alternative.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.string.at-alternative');
diff --git a/node_modules/core-js/modules/esnext.string.at.js b/node_modules/core-js/modules/esnext.string.at.js
new file mode 100644
index 0000000..88d4c95
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.string.at.js
@@ -0,0 +1,19 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+var $ = require('../internals/export');
+var charAt = require('../internals/string-multibyte').charAt;
+var requireObjectCoercible = require('../internals/require-object-coercible');
+var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
+var toString = require('../internals/to-string');
+
+// `String.prototype.at` method
+// https://github.com/mathiasbynens/String.prototype.at
+$({ target: 'String', proto: true, forced: true }, {
+  at: function at(index) {
+    var S = toString(requireObjectCoercible(this));
+    var len = S.length;
+    var relativeIndex = toIntegerOrInfinity(index);
+    var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;
+    return (k < 0 || k >= len) ? undefined : charAt(S, k);
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.string.code-points.js b/node_modules/core-js/modules/esnext.string.code-points.js
new file mode 100644
index 0000000..68720f4
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.string.code-points.js
@@ -0,0 +1,40 @@
+'use strict';
+var $ = require('../internals/export');
+var createIteratorConstructor = require('../internals/iterator-create-constructor');
+var createIterResultObject = require('../internals/create-iter-result-object');
+var requireObjectCoercible = require('../internals/require-object-coercible');
+var toString = require('../internals/to-string');
+var InternalStateModule = require('../internals/internal-state');
+var StringMultibyteModule = require('../internals/string-multibyte');
+
+var codeAt = StringMultibyteModule.codeAt;
+var charAt = StringMultibyteModule.charAt;
+var STRING_ITERATOR = 'String Iterator';
+var setInternalState = InternalStateModule.set;
+var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);
+
+// TODO: unify with String#@@iterator
+var $StringIterator = createIteratorConstructor(function StringIterator(string) {
+  setInternalState(this, {
+    type: STRING_ITERATOR,
+    string: string,
+    index: 0
+  });
+}, 'String', function next() {
+  var state = getInternalState(this);
+  var string = state.string;
+  var index = state.index;
+  var point;
+  if (index >= string.length) return createIterResultObject(undefined, true);
+  point = charAt(string, index);
+  state.index += point.length;
+  return createIterResultObject({ codePoint: codeAt(point, 0), position: index }, false);
+});
+
+// `String.prototype.codePoints` method
+// https://github.com/tc39/proposal-string-prototype-codepoints
+$({ target: 'String', proto: true, forced: true }, {
+  codePoints: function codePoints() {
+    return new $StringIterator(toString(requireObjectCoercible(this)));
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.string.cooked.js b/node_modules/core-js/modules/esnext.string.cooked.js
new file mode 100644
index 0000000..68c7e0a
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.string.cooked.js
@@ -0,0 +1,9 @@
+'use strict';
+var $ = require('../internals/export');
+var cooked = require('../internals/string-cooked');
+
+// `String.cooked` method
+// https://github.com/tc39/proposal-string-cooked
+$({ target: 'String', stat: true, forced: true }, {
+  cooked: cooked
+});
diff --git a/node_modules/core-js/modules/esnext.string.dedent.js b/node_modules/core-js/modules/esnext.string.dedent.js
new file mode 100644
index 0000000..571f084
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.string.dedent.js
@@ -0,0 +1,153 @@
+'use strict';
+var FREEZING = require('../internals/freezing');
+var $ = require('../internals/export');
+var makeBuiltIn = require('../internals/make-built-in');
+var uncurryThis = require('../internals/function-uncurry-this');
+var apply = require('../internals/function-apply');
+var anObject = require('../internals/an-object');
+var toObject = require('../internals/to-object');
+var isCallable = require('../internals/is-callable');
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+var defineProperty = require('../internals/object-define-property').f;
+var createArrayFromList = require('../internals/array-slice');
+var WeakMapHelpers = require('../internals/weak-map-helpers');
+var cooked = require('../internals/string-cooked');
+var parse = require('../internals/string-parse');
+var whitespaces = require('../internals/whitespaces');
+
+var DedentMap = new WeakMapHelpers.WeakMap();
+var weakMapGet = WeakMapHelpers.get;
+var weakMapHas = WeakMapHelpers.has;
+var weakMapSet = WeakMapHelpers.set;
+
+var $Array = Array;
+var $TypeError = TypeError;
+// eslint-disable-next-line es/no-object-freeze -- safe
+var freeze = Object.freeze || Object;
+// eslint-disable-next-line es/no-object-isfrozen -- safe
+var isFrozen = Object.isFrozen;
+var min = Math.min;
+var charAt = uncurryThis(''.charAt);
+var stringSlice = uncurryThis(''.slice);
+var split = uncurryThis(''.split);
+var exec = uncurryThis(/./.exec);
+
+var NEW_LINE = /([\n\u2028\u2029]|\r\n?)/g;
+var LEADING_WHITESPACE = RegExp('^[' + whitespaces + ']*');
+var NON_WHITESPACE = RegExp('[^' + whitespaces + ']');
+var INVALID_TAG = 'Invalid tag';
+var INVALID_OPENING_LINE = 'Invalid opening line';
+var INVALID_CLOSING_LINE = 'Invalid closing line';
+
+var dedentTemplateStringsArray = function (template) {
+  var rawInput = template.raw;
+  // https://github.com/tc39/proposal-string-dedent/issues/75
+  if (FREEZING && !isFrozen(rawInput)) throw new $TypeError('Raw template should be frozen');
+  if (weakMapHas(DedentMap, rawInput)) return weakMapGet(DedentMap, rawInput);
+  var raw = dedentStringsArray(rawInput);
+  var cookedArr = cookStrings(raw);
+  defineProperty(cookedArr, 'raw', {
+    value: freeze(raw)
+  });
+  freeze(cookedArr);
+  weakMapSet(DedentMap, rawInput, cookedArr);
+  return cookedArr;
+};
+
+var dedentStringsArray = function (template) {
+  var t = toObject(template);
+  var length = lengthOfArrayLike(t);
+  var blocks = $Array(length);
+  var dedented = $Array(length);
+  var i = 0;
+  var lines, common, quasi, k;
+
+  if (!length) throw new $TypeError(INVALID_TAG);
+
+  for (; i < length; i++) {
+    var element = t[i];
+    if (typeof element == 'string') blocks[i] = split(element, NEW_LINE);
+    else throw new $TypeError(INVALID_TAG);
+  }
+
+  for (i = 0; i < length; i++) {
+    var lastSplit = i + 1 === length;
+    lines = blocks[i];
+    if (i === 0) {
+      if (lines.length === 1 || lines[0].length > 0) {
+        throw new $TypeError(INVALID_OPENING_LINE);
+      }
+      lines[1] = '';
+    }
+    if (lastSplit) {
+      if (lines.length === 1 || exec(NON_WHITESPACE, lines[lines.length - 1])) {
+        throw new $TypeError(INVALID_CLOSING_LINE);
+      }
+      lines[lines.length - 2] = '';
+      lines[lines.length - 1] = '';
+    }
+    // eslint-disable-next-line sonarjs/no-redundant-assignments -- false positive, https://github.com/SonarSource/SonarJS/issues/4767
+    for (var j = 2; j < lines.length; j += 2) {
+      var text = lines[j];
+      var lineContainsTemplateExpression = j + 1 === lines.length && !lastSplit;
+      var leading = exec(LEADING_WHITESPACE, text)[0];
+      if (!lineContainsTemplateExpression && leading.length === text.length) {
+        lines[j] = '';
+        continue;
+      }
+      common = commonLeadingIndentation(leading, common);
+    }
+  }
+
+  var count = common ? common.length : 0;
+
+  for (i = 0; i < length; i++) {
+    lines = blocks[i];
+    quasi = lines[0];
+    k = 1;
+    for (; k < lines.length; k += 2) {
+      quasi += lines[k] + stringSlice(lines[k + 1], count);
+    }
+    dedented[i] = quasi;
+  }
+
+  return dedented;
+};
+
+var commonLeadingIndentation = function (a, b) {
+  if (b === undefined || a === b) return a;
+  var i = 0;
+  for (var len = min(a.length, b.length); i < len; i++) {
+    if (charAt(a, i) !== charAt(b, i)) break;
+  }
+  return stringSlice(a, 0, i);
+};
+
+var cookStrings = function (raw) {
+  var i = 0;
+  var length = raw.length;
+  var result = $Array(length);
+  for (; i < length; i++) {
+    result[i] = parse(raw[i]);
+  } return result;
+};
+
+var makeDedentTag = function (tag) {
+  return makeBuiltIn(function (template /* , ...substitutions */) {
+    var args = createArrayFromList(arguments);
+    args[0] = dedentTemplateStringsArray(anObject(template));
+    return apply(tag, this, args);
+  }, '');
+};
+
+var cookedDedentTag = makeDedentTag(cooked);
+
+// `String.dedent` method
+// https://github.com/tc39/proposal-string-dedent
+$({ target: 'String', stat: true, forced: true }, {
+  dedent: function dedent(templateOrFn /* , ...substitutions */) {
+    anObject(templateOrFn);
+    if (isCallable(templateOrFn)) return makeDedentTag(templateOrFn);
+    return apply(cookedDedentTag, this, arguments);
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.string.is-well-formed.js b/node_modules/core-js/modules/esnext.string.is-well-formed.js
new file mode 100644
index 0000000..f6205b4
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.string.is-well-formed.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.string.is-well-formed');
diff --git a/node_modules/core-js/modules/esnext.string.match-all.js b/node_modules/core-js/modules/esnext.string.match-all.js
new file mode 100644
index 0000000..420374c
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.string.match-all.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.string.match-all');
diff --git a/node_modules/core-js/modules/esnext.string.replace-all.js b/node_modules/core-js/modules/esnext.string.replace-all.js
new file mode 100644
index 0000000..74d6117
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.string.replace-all.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.string.replace-all');
diff --git a/node_modules/core-js/modules/esnext.string.to-well-formed.js b/node_modules/core-js/modules/esnext.string.to-well-formed.js
new file mode 100644
index 0000000..4fcdcf2
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.string.to-well-formed.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.string.to-well-formed');
diff --git a/node_modules/core-js/modules/esnext.suppressed-error.constructor.js b/node_modules/core-js/modules/esnext.suppressed-error.constructor.js
new file mode 100644
index 0000000..f1f57e9
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.suppressed-error.constructor.js
@@ -0,0 +1,64 @@
+'use strict';
+var $ = require('../internals/export');
+var globalThis = require('../internals/global-this');
+var isPrototypeOf = require('../internals/object-is-prototype-of');
+var getPrototypeOf = require('../internals/object-get-prototype-of');
+var setPrototypeOf = require('../internals/object-set-prototype-of');
+var copyConstructorProperties = require('../internals/copy-constructor-properties');
+var create = require('../internals/object-create');
+var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
+var createPropertyDescriptor = require('../internals/create-property-descriptor');
+var installErrorStack = require('../internals/error-stack-install');
+var normalizeStringArgument = require('../internals/normalize-string-argument');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var fails = require('../internals/fails');
+var IS_PURE = require('../internals/is-pure');
+
+var NativeSuppressedError = globalThis.SuppressedError;
+var TO_STRING_TAG = wellKnownSymbol('toStringTag');
+var $Error = Error;
+
+// https://github.com/oven-sh/bun/issues/9282
+var WRONG_ARITY = !!NativeSuppressedError && NativeSuppressedError.length !== 3;
+
+// https://github.com/oven-sh/bun/issues/9283
+var EXTRA_ARGS_SUPPORT = !!NativeSuppressedError && fails(function () {
+  return new NativeSuppressedError(1, 2, 3, { cause: 4 }).cause === 4;
+});
+
+var PATCH = WRONG_ARITY || EXTRA_ARGS_SUPPORT;
+
+var $SuppressedError = function SuppressedError(error, suppressed, message) {
+  var isInstance = isPrototypeOf(SuppressedErrorPrototype, this);
+  var that;
+  if (setPrototypeOf) {
+    that = PATCH && (!isInstance || getPrototypeOf(this) === SuppressedErrorPrototype)
+      ? new NativeSuppressedError()
+      : setPrototypeOf(new $Error(), isInstance ? getPrototypeOf(this) : SuppressedErrorPrototype);
+  } else {
+    that = isInstance ? this : create(SuppressedErrorPrototype);
+    createNonEnumerableProperty(that, TO_STRING_TAG, 'Error');
+  }
+  if (message !== undefined) createNonEnumerableProperty(that, 'message', normalizeStringArgument(message));
+  installErrorStack(that, $SuppressedError, that.stack, 1);
+  createNonEnumerableProperty(that, 'error', error);
+  createNonEnumerableProperty(that, 'suppressed', suppressed);
+  return that;
+};
+
+if (setPrototypeOf) setPrototypeOf($SuppressedError, $Error);
+else copyConstructorProperties($SuppressedError, $Error, { name: true });
+
+var SuppressedErrorPrototype = $SuppressedError.prototype = PATCH ? NativeSuppressedError.prototype : create($Error.prototype, {
+  constructor: createPropertyDescriptor(1, $SuppressedError),
+  message: createPropertyDescriptor(1, ''),
+  name: createPropertyDescriptor(1, 'SuppressedError')
+});
+
+if (PATCH && !IS_PURE) SuppressedErrorPrototype.constructor = $SuppressedError;
+
+// `SuppressedError` constructor
+// https://github.com/tc39/proposal-explicit-resource-management
+$({ global: true, constructor: true, arity: 3, forced: PATCH }, {
+  SuppressedError: $SuppressedError
+});
diff --git a/node_modules/core-js/modules/esnext.symbol.async-dispose.js b/node_modules/core-js/modules/esnext.symbol.async-dispose.js
new file mode 100644
index 0000000..76d7ede
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.symbol.async-dispose.js
@@ -0,0 +1,21 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+var defineWellKnownSymbol = require('../internals/well-known-symbol-define');
+var defineProperty = require('../internals/object-define-property').f;
+var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;
+
+var Symbol = globalThis.Symbol;
+
+// `Symbol.asyncDispose` well-known symbol
+// https://github.com/tc39/proposal-async-explicit-resource-management
+defineWellKnownSymbol('asyncDispose');
+
+if (Symbol) {
+  var descriptor = getOwnPropertyDescriptor(Symbol, 'asyncDispose');
+  // workaround of NodeJS 20.4 bug
+  // https://github.com/nodejs/node/issues/48699
+  // and incorrect descriptor from some transpilers and userland helpers
+  if (descriptor.enumerable && descriptor.configurable && descriptor.writable) {
+    defineProperty(Symbol, 'asyncDispose', { value: descriptor.value, enumerable: false, configurable: false, writable: false });
+  }
+}
diff --git a/node_modules/core-js/modules/esnext.symbol.custom-matcher.js b/node_modules/core-js/modules/esnext.symbol.custom-matcher.js
new file mode 100644
index 0000000..0950470
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.symbol.custom-matcher.js
@@ -0,0 +1,6 @@
+'use strict';
+var defineWellKnownSymbol = require('../internals/well-known-symbol-define');
+
+// `Symbol.customMatcher` well-known symbol
+// https://github.com/tc39/proposal-pattern-matching
+defineWellKnownSymbol('customMatcher');
diff --git a/node_modules/core-js/modules/esnext.symbol.dispose.js b/node_modules/core-js/modules/esnext.symbol.dispose.js
new file mode 100644
index 0000000..4cae30c
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.symbol.dispose.js
@@ -0,0 +1,21 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+var defineWellKnownSymbol = require('../internals/well-known-symbol-define');
+var defineProperty = require('../internals/object-define-property').f;
+var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;
+
+var Symbol = globalThis.Symbol;
+
+// `Symbol.dispose` well-known symbol
+// https://github.com/tc39/proposal-explicit-resource-management
+defineWellKnownSymbol('dispose');
+
+if (Symbol) {
+  var descriptor = getOwnPropertyDescriptor(Symbol, 'dispose');
+  // workaround of NodeJS 20.4 bug
+  // https://github.com/nodejs/node/issues/48699
+  // and incorrect descriptor from some transpilers and userland helpers
+  if (descriptor.enumerable && descriptor.configurable && descriptor.writable) {
+    defineProperty(Symbol, 'dispose', { value: descriptor.value, enumerable: false, configurable: false, writable: false });
+  }
+}
diff --git a/node_modules/core-js/modules/esnext.symbol.is-registered-symbol.js b/node_modules/core-js/modules/esnext.symbol.is-registered-symbol.js
new file mode 100644
index 0000000..5cd5c20
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.symbol.is-registered-symbol.js
@@ -0,0 +1,9 @@
+'use strict';
+var $ = require('../internals/export');
+var isRegisteredSymbol = require('../internals/symbol-is-registered');
+
+// `Symbol.isRegisteredSymbol` method
+// https://tc39.es/proposal-symbol-predicates/#sec-symbol-isregisteredsymbol
+$({ target: 'Symbol', stat: true }, {
+  isRegisteredSymbol: isRegisteredSymbol
+});
diff --git a/node_modules/core-js/modules/esnext.symbol.is-registered.js b/node_modules/core-js/modules/esnext.symbol.is-registered.js
new file mode 100644
index 0000000..777c972
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.symbol.is-registered.js
@@ -0,0 +1,9 @@
+'use strict';
+var $ = require('../internals/export');
+var isRegisteredSymbol = require('../internals/symbol-is-registered');
+
+// `Symbol.isRegistered` method
+// obsolete version of https://tc39.es/proposal-symbol-predicates/#sec-symbol-isregisteredsymbol
+$({ target: 'Symbol', stat: true, name: 'isRegisteredSymbol' }, {
+  isRegistered: isRegisteredSymbol
+});
diff --git a/node_modules/core-js/modules/esnext.symbol.is-well-known-symbol.js b/node_modules/core-js/modules/esnext.symbol.is-well-known-symbol.js
new file mode 100644
index 0000000..8663e05
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.symbol.is-well-known-symbol.js
@@ -0,0 +1,10 @@
+'use strict';
+var $ = require('../internals/export');
+var isWellKnownSymbol = require('../internals/symbol-is-well-known');
+
+// `Symbol.isWellKnownSymbol` method
+// https://tc39.es/proposal-symbol-predicates/#sec-symbol-iswellknownsymbol
+// We should patch it for newly added well-known symbols. If it's not required, this module just will not be injected
+$({ target: 'Symbol', stat: true, forced: true }, {
+  isWellKnownSymbol: isWellKnownSymbol
+});
diff --git a/node_modules/core-js/modules/esnext.symbol.is-well-known.js b/node_modules/core-js/modules/esnext.symbol.is-well-known.js
new file mode 100644
index 0000000..6c0e000
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.symbol.is-well-known.js
@@ -0,0 +1,10 @@
+'use strict';
+var $ = require('../internals/export');
+var isWellKnownSymbol = require('../internals/symbol-is-well-known');
+
+// `Symbol.isWellKnown` method
+// obsolete version of https://tc39.es/proposal-symbol-predicates/#sec-symbol-iswellknownsymbol
+// We should patch it for newly added well-known symbols. If it's not required, this module just will not be injected
+$({ target: 'Symbol', stat: true, name: 'isWellKnownSymbol', forced: true }, {
+  isWellKnown: isWellKnownSymbol
+});
diff --git a/node_modules/core-js/modules/esnext.symbol.matcher.js b/node_modules/core-js/modules/esnext.symbol.matcher.js
new file mode 100644
index 0000000..ec224ae
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.symbol.matcher.js
@@ -0,0 +1,6 @@
+'use strict';
+var defineWellKnownSymbol = require('../internals/well-known-symbol-define');
+
+// `Symbol.matcher` well-known symbol
+// https://github.com/tc39/proposal-pattern-matching
+defineWellKnownSymbol('matcher');
diff --git a/node_modules/core-js/modules/esnext.symbol.metadata-key.js b/node_modules/core-js/modules/esnext.symbol.metadata-key.js
new file mode 100644
index 0000000..f0435c6
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.symbol.metadata-key.js
@@ -0,0 +1,7 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+var defineWellKnownSymbol = require('../internals/well-known-symbol-define');
+
+// `Symbol.metadataKey` well-known symbol
+// https://github.com/tc39/proposal-decorator-metadata
+defineWellKnownSymbol('metadataKey');
diff --git a/node_modules/core-js/modules/esnext.symbol.metadata.js b/node_modules/core-js/modules/esnext.symbol.metadata.js
new file mode 100644
index 0000000..182c936
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.symbol.metadata.js
@@ -0,0 +1,6 @@
+'use strict';
+var defineWellKnownSymbol = require('../internals/well-known-symbol-define');
+
+// `Symbol.metadata` well-known symbol
+// https://github.com/tc39/proposal-decorators
+defineWellKnownSymbol('metadata');
diff --git a/node_modules/core-js/modules/esnext.symbol.observable.js b/node_modules/core-js/modules/esnext.symbol.observable.js
new file mode 100644
index 0000000..100044d
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.symbol.observable.js
@@ -0,0 +1,6 @@
+'use strict';
+var defineWellKnownSymbol = require('../internals/well-known-symbol-define');
+
+// `Symbol.observable` well-known symbol
+// https://github.com/tc39/proposal-observable
+defineWellKnownSymbol('observable');
diff --git a/node_modules/core-js/modules/esnext.symbol.pattern-match.js b/node_modules/core-js/modules/esnext.symbol.pattern-match.js
new file mode 100644
index 0000000..bd58723
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.symbol.pattern-match.js
@@ -0,0 +1,7 @@
+'use strict';
+// TODO: remove from `core-js@4`
+var defineWellKnownSymbol = require('../internals/well-known-symbol-define');
+
+// `Symbol.patternMatch` well-known symbol
+// https://github.com/tc39/proposal-pattern-matching
+defineWellKnownSymbol('patternMatch');
diff --git a/node_modules/core-js/modules/esnext.symbol.replace-all.js b/node_modules/core-js/modules/esnext.symbol.replace-all.js
new file mode 100644
index 0000000..1bd2e1b
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.symbol.replace-all.js
@@ -0,0 +1,5 @@
+'use strict';
+// TODO: remove from `core-js@4`
+var defineWellKnownSymbol = require('../internals/well-known-symbol-define');
+
+defineWellKnownSymbol('replaceAll');
diff --git a/node_modules/core-js/modules/esnext.typed-array.at.js b/node_modules/core-js/modules/esnext.typed-array.at.js
new file mode 100644
index 0000000..e9d808c
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.typed-array.at.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.typed-array.at');
diff --git a/node_modules/core-js/modules/esnext.typed-array.filter-out.js b/node_modules/core-js/modules/esnext.typed-array.filter-out.js
new file mode 100644
index 0000000..ce5ec73
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.typed-array.filter-out.js
@@ -0,0 +1,15 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var $filterReject = require('../internals/array-iteration').filterReject;
+var fromSameTypeAndList = require('../internals/typed-array-from-same-type-and-list');
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+// `%TypedArray%.prototype.filterOut` method
+// https://github.com/tc39/proposal-array-filtering
+exportTypedArrayMethod('filterOut', function filterOut(callbackfn /* , thisArg */) {
+  var list = $filterReject(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+  return fromSameTypeAndList(this, list);
+}, true);
diff --git a/node_modules/core-js/modules/esnext.typed-array.filter-reject.js b/node_modules/core-js/modules/esnext.typed-array.filter-reject.js
new file mode 100644
index 0000000..78e60d9
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.typed-array.filter-reject.js
@@ -0,0 +1,14 @@
+'use strict';
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var $filterReject = require('../internals/array-iteration').filterReject;
+var fromSameTypeAndList = require('../internals/typed-array-from-same-type-and-list');
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+// `%TypedArray%.prototype.filterReject` method
+// https://github.com/tc39/proposal-array-filtering
+exportTypedArrayMethod('filterReject', function filterReject(callbackfn /* , thisArg */) {
+  var list = $filterReject(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+  return fromSameTypeAndList(this, list);
+}, true);
diff --git a/node_modules/core-js/modules/esnext.typed-array.find-last-index.js b/node_modules/core-js/modules/esnext.typed-array.find-last-index.js
new file mode 100644
index 0000000..9b35fb3
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.typed-array.find-last-index.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.typed-array.find-last-index');
diff --git a/node_modules/core-js/modules/esnext.typed-array.find-last.js b/node_modules/core-js/modules/esnext.typed-array.find-last.js
new file mode 100644
index 0000000..ed44d53
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.typed-array.find-last.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.typed-array.find-last');
diff --git a/node_modules/core-js/modules/esnext.typed-array.from-async.js b/node_modules/core-js/modules/esnext.typed-array.from-async.js
new file mode 100644
index 0000000..64c57d7
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.typed-array.from-async.js
@@ -0,0 +1,25 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+var getBuiltIn = require('../internals/get-built-in');
+var aConstructor = require('../internals/a-constructor');
+var arrayFromAsync = require('../internals/array-from-async');
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');
+
+var aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;
+var exportTypedArrayStaticMethod = ArrayBufferViewCore.exportTypedArrayStaticMethod;
+
+// `%TypedArray%.fromAsync` method
+// https://github.com/tc39/proposal-array-from-async
+exportTypedArrayStaticMethod('fromAsync', function fromAsync(asyncItems /* , mapfn = undefined, thisArg = undefined */) {
+  var C = this;
+  var argumentsLength = arguments.length;
+  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;
+  var thisArg = argumentsLength > 2 ? arguments[2] : undefined;
+  return new (getBuiltIn('Promise'))(function (resolve) {
+    aConstructor(C);
+    resolve(arrayFromAsync(asyncItems, mapfn, thisArg));
+  }).then(function (list) {
+    return arrayFromConstructorAndList(aTypedArrayConstructor(C), list);
+  });
+}, true);
diff --git a/node_modules/core-js/modules/esnext.typed-array.group-by.js b/node_modules/core-js/modules/esnext.typed-array.group-by.js
new file mode 100644
index 0000000..9fe6354
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.typed-array.group-by.js
@@ -0,0 +1,15 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var $group = require('../internals/array-group');
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+
+// `%TypedArray%.prototype.groupBy` method
+// https://github.com/tc39/proposal-array-grouping
+exportTypedArrayMethod('groupBy', function groupBy(callbackfn /* , thisArg */) {
+  var thisArg = arguments.length > 1 ? arguments[1] : undefined;
+  return $group(aTypedArray(this), callbackfn, thisArg, getTypedArrayConstructor);
+}, true);
diff --git a/node_modules/core-js/modules/esnext.typed-array.to-reversed.js b/node_modules/core-js/modules/esnext.typed-array.to-reversed.js
new file mode 100644
index 0000000..ba5bcd5
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.typed-array.to-reversed.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.typed-array.to-reversed');
diff --git a/node_modules/core-js/modules/esnext.typed-array.to-sorted.js b/node_modules/core-js/modules/esnext.typed-array.to-sorted.js
new file mode 100644
index 0000000..c38f3b8
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.typed-array.to-sorted.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.typed-array.to-sorted');
diff --git a/node_modules/core-js/modules/esnext.typed-array.to-spliced.js b/node_modules/core-js/modules/esnext.typed-array.to-spliced.js
new file mode 100644
index 0000000..710f296
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.typed-array.to-spliced.js
@@ -0,0 +1,52 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+var isBigIntArray = require('../internals/is-big-int-array');
+var toAbsoluteIndex = require('../internals/to-absolute-index');
+var toBigInt = require('../internals/to-big-int');
+var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+var max = Math.max;
+var min = Math.min;
+
+// `%TypedArray%.prototype.toSpliced` method
+// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.toSpliced
+exportTypedArrayMethod('toSpliced', function toSpliced(start, deleteCount /* , ...items */) {
+  var O = aTypedArray(this);
+  var C = getTypedArrayConstructor(O);
+  var len = lengthOfArrayLike(O);
+  var actualStart = toAbsoluteIndex(start, len);
+  var argumentsLength = arguments.length;
+  var k = 0;
+  var insertCount, actualDeleteCount, thisIsBigIntArray, convertedItems, value, newLen, A;
+  if (argumentsLength === 0) {
+    insertCount = actualDeleteCount = 0;
+  } else if (argumentsLength === 1) {
+    insertCount = 0;
+    actualDeleteCount = len - actualStart;
+  } else {
+    actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);
+    insertCount = argumentsLength - 2;
+    if (insertCount) {
+      convertedItems = new C(insertCount);
+      thisIsBigIntArray = isBigIntArray(convertedItems);
+      for (var i = 2; i < argumentsLength; i++) {
+        value = arguments[i];
+        // FF30- typed arrays doesn't properly convert objects to typed array values
+        convertedItems[i - 2] = thisIsBigIntArray ? toBigInt(value) : +value;
+      }
+    }
+  }
+  newLen = len + insertCount - actualDeleteCount;
+  A = new C(newLen);
+
+  for (; k < actualStart; k++) A[k] = O[k];
+  for (; k < actualStart + insertCount; k++) A[k] = convertedItems[k - actualStart];
+  for (; k < newLen; k++) A[k] = O[k + actualDeleteCount - insertCount];
+
+  return A;
+}, true);
diff --git a/node_modules/core-js/modules/esnext.typed-array.unique-by.js b/node_modules/core-js/modules/esnext.typed-array.unique-by.js
new file mode 100644
index 0000000..4a99e6d
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.typed-array.unique-by.js
@@ -0,0 +1,17 @@
+'use strict';
+var uncurryThis = require('../internals/function-uncurry-this');
+var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
+var arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');
+var $arrayUniqueBy = require('../internals/array-unique-by');
+
+var aTypedArray = ArrayBufferViewCore.aTypedArray;
+var getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;
+var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
+var arrayUniqueBy = uncurryThis($arrayUniqueBy);
+
+// `%TypedArray%.prototype.uniqueBy` method
+// https://github.com/tc39/proposal-array-unique
+exportTypedArrayMethod('uniqueBy', function uniqueBy(resolver) {
+  aTypedArray(this);
+  return arrayFromConstructorAndList(getTypedArrayConstructor(this), arrayUniqueBy(this, resolver));
+}, true);
diff --git a/node_modules/core-js/modules/esnext.typed-array.with.js b/node_modules/core-js/modules/esnext.typed-array.with.js
new file mode 100644
index 0000000..14bc75c
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.typed-array.with.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+require('../modules/es.typed-array.with');
diff --git a/node_modules/core-js/modules/esnext.uint8-array.from-base64.js b/node_modules/core-js/modules/esnext.uint8-array.from-base64.js
new file mode 100644
index 0000000..1dfc859
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.uint8-array.from-base64.js
@@ -0,0 +1,16 @@
+'use strict';
+var $ = require('../internals/export');
+var globalThis = require('../internals/global-this');
+var arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');
+var $fromBase64 = require('../internals/uint8-from-base64');
+
+var Uint8Array = globalThis.Uint8Array;
+
+// `Uint8Array.fromBase64` method
+// https://github.com/tc39/proposal-arraybuffer-base64
+if (Uint8Array) $({ target: 'Uint8Array', stat: true }, {
+  fromBase64: function fromBase64(string /* , options */) {
+    var result = $fromBase64(string, arguments.length > 1 ? arguments[1] : undefined, null, 0x1FFFFFFFFFFFFF);
+    return arrayFromConstructorAndList(Uint8Array, result.bytes);
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.uint8-array.from-hex.js b/node_modules/core-js/modules/esnext.uint8-array.from-hex.js
new file mode 100644
index 0000000..036f3a8
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.uint8-array.from-hex.js
@@ -0,0 +1,13 @@
+'use strict';
+var $ = require('../internals/export');
+var globalThis = require('../internals/global-this');
+var aString = require('../internals/a-string');
+var $fromHex = require('../internals/uint8-from-hex');
+
+// `Uint8Array.fromHex` method
+// https://github.com/tc39/proposal-arraybuffer-base64
+if (globalThis.Uint8Array) $({ target: 'Uint8Array', stat: true }, {
+  fromHex: function fromHex(string) {
+    return $fromHex(aString(string)).bytes;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.uint8-array.set-from-base64.js b/node_modules/core-js/modules/esnext.uint8-array.set-from-base64.js
new file mode 100644
index 0000000..976fcb1
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.uint8-array.set-from-base64.js
@@ -0,0 +1,19 @@
+'use strict';
+var $ = require('../internals/export');
+var globalThis = require('../internals/global-this');
+var $fromBase64 = require('../internals/uint8-from-base64');
+var anUint8Array = require('../internals/an-uint8-array');
+
+var Uint8Array = globalThis.Uint8Array;
+
+// `Uint8Array.prototype.setFromBase64` method
+// https://github.com/tc39/proposal-arraybuffer-base64
+if (Uint8Array) $({ target: 'Uint8Array', proto: true }, {
+  setFromBase64: function setFromBase64(string /* , options */) {
+    anUint8Array(this);
+
+    var result = $fromBase64(string, arguments.length > 1 ? arguments[1] : undefined, this, this.length);
+
+    return { read: result.read, written: result.written };
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.uint8-array.set-from-hex.js b/node_modules/core-js/modules/esnext.uint8-array.set-from-hex.js
new file mode 100644
index 0000000..29f5420
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.uint8-array.set-from-hex.js
@@ -0,0 +1,19 @@
+'use strict';
+var $ = require('../internals/export');
+var globalThis = require('../internals/global-this');
+var aString = require('../internals/a-string');
+var anUint8Array = require('../internals/an-uint8-array');
+var notDetached = require('../internals/array-buffer-not-detached');
+var $fromHex = require('../internals/uint8-from-hex');
+
+// `Uint8Array.prototype.setFromHex` method
+// https://github.com/tc39/proposal-arraybuffer-base64
+if (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {
+  setFromHex: function setFromHex(string) {
+    anUint8Array(this);
+    aString(string);
+    notDetached(this.buffer);
+    var read = $fromHex(string, this).read;
+    return { read: read, written: read / 2 };
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.uint8-array.to-base64.js b/node_modules/core-js/modules/esnext.uint8-array.to-base64.js
new file mode 100644
index 0000000..e7426e3
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.uint8-array.to-base64.js
@@ -0,0 +1,49 @@
+'use strict';
+var $ = require('../internals/export');
+var globalThis = require('../internals/global-this');
+var uncurryThis = require('../internals/function-uncurry-this');
+var anObjectOrUndefined = require('../internals/an-object-or-undefined');
+var anUint8Array = require('../internals/an-uint8-array');
+var notDetached = require('../internals/array-buffer-not-detached');
+var base64Map = require('../internals/base64-map');
+var getAlphabetOption = require('../internals/get-alphabet-option');
+
+var base64Alphabet = base64Map.i2c;
+var base64UrlAlphabet = base64Map.i2cUrl;
+
+var charAt = uncurryThis(''.charAt);
+
+// `Uint8Array.prototype.toBase64` method
+// https://github.com/tc39/proposal-arraybuffer-base64
+if (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {
+  toBase64: function toBase64(/* options */) {
+    var array = anUint8Array(this);
+    var options = arguments.length ? anObjectOrUndefined(arguments[0]) : undefined;
+    var alphabet = getAlphabetOption(options) === 'base64' ? base64Alphabet : base64UrlAlphabet;
+    var omitPadding = !!options && !!options.omitPadding;
+    notDetached(this.buffer);
+
+    var result = '';
+    var i = 0;
+    var length = array.length;
+    var triplet;
+
+    var at = function (shift) {
+      return charAt(alphabet, (triplet >> (6 * shift)) & 63);
+    };
+
+    for (; i + 2 < length; i += 3) {
+      triplet = (array[i] << 16) + (array[i + 1] << 8) + array[i + 2];
+      result += at(3) + at(2) + at(1) + at(0);
+    }
+    if (i + 2 === length) {
+      triplet = (array[i] << 16) + (array[i + 1] << 8);
+      result += at(3) + at(2) + at(1) + (omitPadding ? '' : '=');
+    } else if (i + 1 === length) {
+      triplet = array[i] << 16;
+      result += at(3) + at(2) + (omitPadding ? '' : '==');
+    }
+
+    return result;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.uint8-array.to-hex.js b/node_modules/core-js/modules/esnext.uint8-array.to-hex.js
new file mode 100644
index 0000000..e023ad0
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.uint8-array.to-hex.js
@@ -0,0 +1,23 @@
+'use strict';
+var $ = require('../internals/export');
+var globalThis = require('../internals/global-this');
+var uncurryThis = require('../internals/function-uncurry-this');
+var anUint8Array = require('../internals/an-uint8-array');
+var notDetached = require('../internals/array-buffer-not-detached');
+
+var numberToString = uncurryThis(1.0.toString);
+
+// `Uint8Array.prototype.toHex` method
+// https://github.com/tc39/proposal-arraybuffer-base64
+if (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {
+  toHex: function toHex() {
+    anUint8Array(this);
+    notDetached(this.buffer);
+    var result = '';
+    for (var i = 0, length = this.length; i < length; i++) {
+      var hex = numberToString(this[i], 16);
+      result += hex.length === 1 ? '0' + hex : hex;
+    }
+    return result;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.weak-map.delete-all.js b/node_modules/core-js/modules/esnext.weak-map.delete-all.js
new file mode 100644
index 0000000..7d83a4a
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.weak-map.delete-all.js
@@ -0,0 +1,18 @@
+'use strict';
+var $ = require('../internals/export');
+var aWeakMap = require('../internals/a-weak-map');
+var remove = require('../internals/weak-map-helpers').remove;
+
+// `WeakMap.prototype.deleteAll` method
+// https://github.com/tc39/proposal-collection-methods
+$({ target: 'WeakMap', proto: true, real: true, forced: true }, {
+  deleteAll: function deleteAll(/* ...elements */) {
+    var collection = aWeakMap(this);
+    var allDeleted = true;
+    var wasDeleted;
+    for (var k = 0, len = arguments.length; k < len; k++) {
+      wasDeleted = remove(collection, arguments[k]);
+      allDeleted = allDeleted && wasDeleted;
+    } return !!allDeleted;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.weak-map.emplace.js b/node_modules/core-js/modules/esnext.weak-map.emplace.js
new file mode 100644
index 0000000..9050c15
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.weak-map.emplace.js
@@ -0,0 +1,27 @@
+'use strict';
+var $ = require('../internals/export');
+var aWeakMap = require('../internals/a-weak-map');
+var WeakMapHelpers = require('../internals/weak-map-helpers');
+
+var get = WeakMapHelpers.get;
+var has = WeakMapHelpers.has;
+var set = WeakMapHelpers.set;
+
+// `WeakMap.prototype.emplace` method
+// https://github.com/tc39/proposal-upsert
+$({ target: 'WeakMap', proto: true, real: true, forced: true }, {
+  emplace: function emplace(key, handler) {
+    var map = aWeakMap(this);
+    var value, inserted;
+    if (has(map, key)) {
+      value = get(map, key);
+      if ('update' in handler) {
+        value = handler.update(value, key, map);
+        set(map, key, value);
+      } return value;
+    }
+    inserted = handler.insert(key, map);
+    set(map, key, inserted);
+    return inserted;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.weak-map.from.js b/node_modules/core-js/modules/esnext.weak-map.from.js
new file mode 100644
index 0000000..a14b008
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.weak-map.from.js
@@ -0,0 +1,10 @@
+'use strict';
+var $ = require('../internals/export');
+var WeakMapHelpers = require('../internals/weak-map-helpers');
+var createCollectionFrom = require('../internals/collection-from');
+
+// `WeakMap.from` method
+// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.from
+$({ target: 'WeakMap', stat: true, forced: true }, {
+  from: createCollectionFrom(WeakMapHelpers.WeakMap, WeakMapHelpers.set, true)
+});
diff --git a/node_modules/core-js/modules/esnext.weak-map.get-or-insert-computed.js b/node_modules/core-js/modules/esnext.weak-map.get-or-insert-computed.js
new file mode 100644
index 0000000..37f389f
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.weak-map.get-or-insert-computed.js
@@ -0,0 +1,23 @@
+'use strict';
+var $ = require('../internals/export');
+var aCallable = require('../internals/a-callable');
+var aWeakMap = require('../internals/a-weak-map');
+var WeakMapHelpers = require('../internals/weak-map-helpers');
+
+var get = WeakMapHelpers.get;
+var has = WeakMapHelpers.has;
+var set = WeakMapHelpers.set;
+
+// `WeakMap.prototype.getOrInsertComputed` method
+// https://github.com/tc39/proposal-upsert
+$({ target: 'WeakMap', proto: true, real: true, forced: true }, {
+  getOrInsertComputed: function getOrInsertComputed(key, callbackfn) {
+    aWeakMap(this);
+    aCallable(callbackfn);
+    if (has(this, key)) return get(this, key);
+    set(this, key); // key validation
+    var value = callbackfn(key);
+    set(this, key, value);
+    return value;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.weak-map.get-or-insert.js b/node_modules/core-js/modules/esnext.weak-map.get-or-insert.js
new file mode 100644
index 0000000..f1e345f
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.weak-map.get-or-insert.js
@@ -0,0 +1,18 @@
+'use strict';
+var $ = require('../internals/export');
+var aWeakMap = require('../internals/a-weak-map');
+var WeakMapHelpers = require('../internals/weak-map-helpers');
+
+var get = WeakMapHelpers.get;
+var has = WeakMapHelpers.has;
+var set = WeakMapHelpers.set;
+
+// `WeakMap.prototype.getOrInsert` method
+// https://github.com/tc39/proposal-upsert
+$({ target: 'WeakMap', proto: true, real: true, forced: true }, {
+  getOrInsert: function getOrInsert(key, value) {
+    if (has(aWeakMap(this), key)) return get(this, key);
+    set(this, key, value);
+    return value;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.weak-map.of.js b/node_modules/core-js/modules/esnext.weak-map.of.js
new file mode 100644
index 0000000..e411172
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.weak-map.of.js
@@ -0,0 +1,10 @@
+'use strict';
+var $ = require('../internals/export');
+var WeakMapHelpers = require('../internals/weak-map-helpers');
+var createCollectionOf = require('../internals/collection-of');
+
+// `WeakMap.of` method
+// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.of
+$({ target: 'WeakMap', stat: true, forced: true }, {
+  of: createCollectionOf(WeakMapHelpers.WeakMap, WeakMapHelpers.set, true)
+});
diff --git a/node_modules/core-js/modules/esnext.weak-map.upsert.js b/node_modules/core-js/modules/esnext.weak-map.upsert.js
new file mode 100644
index 0000000..ddef2d8
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.weak-map.upsert.js
@@ -0,0 +1,10 @@
+'use strict';
+// TODO: remove from `core-js@4`
+var $ = require('../internals/export');
+var upsert = require('../internals/map-upsert');
+
+// `WeakMap.prototype.upsert` method (replaced by `WeakMap.prototype.emplace`)
+// https://github.com/tc39/proposal-upsert
+$({ target: 'WeakMap', proto: true, real: true, forced: true }, {
+  upsert: upsert
+});
diff --git a/node_modules/core-js/modules/esnext.weak-set.add-all.js b/node_modules/core-js/modules/esnext.weak-set.add-all.js
new file mode 100644
index 0000000..3880c70
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.weak-set.add-all.js
@@ -0,0 +1,15 @@
+'use strict';
+var $ = require('../internals/export');
+var aWeakSet = require('../internals/a-weak-set');
+var add = require('../internals/weak-set-helpers').add;
+
+// `WeakSet.prototype.addAll` method
+// https://github.com/tc39/proposal-collection-methods
+$({ target: 'WeakSet', proto: true, real: true, forced: true }, {
+  addAll: function addAll(/* ...elements */) {
+    var set = aWeakSet(this);
+    for (var k = 0, len = arguments.length; k < len; k++) {
+      add(set, arguments[k]);
+    } return set;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.weak-set.delete-all.js b/node_modules/core-js/modules/esnext.weak-set.delete-all.js
new file mode 100644
index 0000000..a3913ac
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.weak-set.delete-all.js
@@ -0,0 +1,18 @@
+'use strict';
+var $ = require('../internals/export');
+var aWeakSet = require('../internals/a-weak-set');
+var remove = require('../internals/weak-set-helpers').remove;
+
+// `WeakSet.prototype.deleteAll` method
+// https://github.com/tc39/proposal-collection-methods
+$({ target: 'WeakSet', proto: true, real: true, forced: true }, {
+  deleteAll: function deleteAll(/* ...elements */) {
+    var collection = aWeakSet(this);
+    var allDeleted = true;
+    var wasDeleted;
+    for (var k = 0, len = arguments.length; k < len; k++) {
+      wasDeleted = remove(collection, arguments[k]);
+      allDeleted = allDeleted && wasDeleted;
+    } return !!allDeleted;
+  }
+});
diff --git a/node_modules/core-js/modules/esnext.weak-set.from.js b/node_modules/core-js/modules/esnext.weak-set.from.js
new file mode 100644
index 0000000..a2143e1
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.weak-set.from.js
@@ -0,0 +1,10 @@
+'use strict';
+var $ = require('../internals/export');
+var WeakSetHelpers = require('../internals/weak-set-helpers');
+var createCollectionFrom = require('../internals/collection-from');
+
+// `WeakSet.from` method
+// https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.from
+$({ target: 'WeakSet', stat: true, forced: true }, {
+  from: createCollectionFrom(WeakSetHelpers.WeakSet, WeakSetHelpers.add, false)
+});
diff --git a/node_modules/core-js/modules/esnext.weak-set.of.js b/node_modules/core-js/modules/esnext.weak-set.of.js
new file mode 100644
index 0000000..92cfd49
--- /dev/null
+++ b/node_modules/core-js/modules/esnext.weak-set.of.js
@@ -0,0 +1,10 @@
+'use strict';
+var $ = require('../internals/export');
+var WeakSetHelpers = require('../internals/weak-set-helpers');
+var createCollectionOf = require('../internals/collection-of');
+
+// `WeakSet.of` method
+// https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.of
+$({ target: 'WeakSet', stat: true, forced: true }, {
+  of: createCollectionOf(WeakSetHelpers.WeakSet, WeakSetHelpers.add, false)
+});
diff --git a/node_modules/core-js/modules/web.atob.js b/node_modules/core-js/modules/web.atob.js
new file mode 100644
index 0000000..c3221c6
--- /dev/null
+++ b/node_modules/core-js/modules/web.atob.js
@@ -0,0 +1,67 @@
+'use strict';
+var $ = require('../internals/export');
+var globalThis = require('../internals/global-this');
+var getBuiltIn = require('../internals/get-built-in');
+var uncurryThis = require('../internals/function-uncurry-this');
+var call = require('../internals/function-call');
+var fails = require('../internals/fails');
+var toString = require('../internals/to-string');
+var validateArgumentsLength = require('../internals/validate-arguments-length');
+var c2i = require('../internals/base64-map').c2i;
+
+var disallowed = /[^\d+/a-z]/i;
+var whitespaces = /[\t\n\f\r ]+/g;
+var finalEq = /[=]{1,2}$/;
+
+var $atob = getBuiltIn('atob');
+var fromCharCode = String.fromCharCode;
+var charAt = uncurryThis(''.charAt);
+var replace = uncurryThis(''.replace);
+var exec = uncurryThis(disallowed.exec);
+
+var BASIC = !!$atob && !fails(function () {
+  return $atob('aGk=') !== 'hi';
+});
+
+var NO_SPACES_IGNORE = BASIC && fails(function () {
+  return $atob(' ') !== '';
+});
+
+var NO_ENCODING_CHECK = BASIC && !fails(function () {
+  $atob('a');
+});
+
+var NO_ARG_RECEIVING_CHECK = BASIC && !fails(function () {
+  $atob();
+});
+
+var WRONG_ARITY = BASIC && $atob.length !== 1;
+
+var FORCED = !BASIC || NO_SPACES_IGNORE || NO_ENCODING_CHECK || NO_ARG_RECEIVING_CHECK || WRONG_ARITY;
+
+// `atob` method
+// https://html.spec.whatwg.org/multipage/webappapis.html#dom-atob
+$({ global: true, bind: true, enumerable: true, forced: FORCED }, {
+  atob: function atob(data) {
+    validateArgumentsLength(arguments.length, 1);
+    // `webpack` dev server bug on IE global methods - use call(fn, global, ...)
+    if (BASIC && !NO_SPACES_IGNORE && !NO_ENCODING_CHECK) return call($atob, globalThis, data);
+    var string = replace(toString(data), whitespaces, '');
+    var output = '';
+    var position = 0;
+    var bc = 0;
+    var length, chr, bs;
+    if (string.length % 4 === 0) {
+      string = replace(string, finalEq, '');
+    }
+    length = string.length;
+    if (length % 4 === 1 || exec(disallowed, string)) {
+      throw new (getBuiltIn('DOMException'))('The string is not correctly encoded', 'InvalidCharacterError');
+    }
+    while (position < length) {
+      chr = charAt(string, position++);
+      bs = bc % 4 ? bs * 64 + c2i[chr] : c2i[chr];
+      if (bc++ % 4) output += fromCharCode(255 & bs >> (-2 * bc & 6));
+    } return output;
+  }
+});
diff --git a/node_modules/core-js/modules/web.btoa.js b/node_modules/core-js/modules/web.btoa.js
new file mode 100644
index 0000000..b8bda16
--- /dev/null
+++ b/node_modules/core-js/modules/web.btoa.js
@@ -0,0 +1,51 @@
+'use strict';
+var $ = require('../internals/export');
+var globalThis = require('../internals/global-this');
+var getBuiltIn = require('../internals/get-built-in');
+var uncurryThis = require('../internals/function-uncurry-this');
+var call = require('../internals/function-call');
+var fails = require('../internals/fails');
+var toString = require('../internals/to-string');
+var validateArgumentsLength = require('../internals/validate-arguments-length');
+var i2c = require('../internals/base64-map').i2c;
+
+var $btoa = getBuiltIn('btoa');
+var charAt = uncurryThis(''.charAt);
+var charCodeAt = uncurryThis(''.charCodeAt);
+
+var BASIC = !!$btoa && !fails(function () {
+  return $btoa('hi') !== 'aGk=';
+});
+
+var NO_ARG_RECEIVING_CHECK = BASIC && !fails(function () {
+  $btoa();
+});
+
+var WRONG_ARG_CONVERSION = BASIC && fails(function () {
+  return $btoa(null) !== 'bnVsbA==';
+});
+
+var WRONG_ARITY = BASIC && $btoa.length !== 1;
+
+// `btoa` method
+// https://html.spec.whatwg.org/multipage/webappapis.html#dom-btoa
+$({ global: true, bind: true, enumerable: true, forced: !BASIC || NO_ARG_RECEIVING_CHECK || WRONG_ARG_CONVERSION || WRONG_ARITY }, {
+  btoa: function btoa(data) {
+    validateArgumentsLength(arguments.length, 1);
+    // `webpack` dev server bug on IE global methods - use call(fn, global, ...)
+    if (BASIC) return call($btoa, globalThis, toString(data));
+    var string = toString(data);
+    var output = '';
+    var position = 0;
+    var map = i2c;
+    var block, charCode;
+    while (charAt(string, position) || (map = '=', position % 1)) {
+      charCode = charCodeAt(string, position += 3 / 4);
+      if (charCode > 0xFF) {
+        throw new (getBuiltIn('DOMException'))('The string contains characters outside of the Latin1 range', 'InvalidCharacterError');
+      }
+      block = block << 8 | charCode;
+      output += charAt(map, 63 & block >> 8 - position % 1 * 8);
+    } return output;
+  }
+});
diff --git a/node_modules/core-js/modules/web.clear-immediate.js b/node_modules/core-js/modules/web.clear-immediate.js
new file mode 100644
index 0000000..e2d8eb5
--- /dev/null
+++ b/node_modules/core-js/modules/web.clear-immediate.js
@@ -0,0 +1,10 @@
+'use strict';
+var $ = require('../internals/export');
+var globalThis = require('../internals/global-this');
+var clearImmediate = require('../internals/task').clear;
+
+// `clearImmediate` method
+// http://w3c.github.io/setImmediate/#si-clearImmediate
+$({ global: true, bind: true, enumerable: true, forced: globalThis.clearImmediate !== clearImmediate }, {
+  clearImmediate: clearImmediate
+});
diff --git a/node_modules/core-js/modules/web.dom-collections.for-each.js b/node_modules/core-js/modules/web.dom-collections.for-each.js
new file mode 100644
index 0000000..bbbdef2
--- /dev/null
+++ b/node_modules/core-js/modules/web.dom-collections.for-each.js
@@ -0,0 +1,23 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+var DOMIterables = require('../internals/dom-iterables');
+var DOMTokenListPrototype = require('../internals/dom-token-list-prototype');
+var forEach = require('../internals/array-for-each');
+var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
+
+var handlePrototype = function (CollectionPrototype) {
+  // some Chrome versions have non-configurable methods on DOMTokenList
+  if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {
+    createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);
+  } catch (error) {
+    CollectionPrototype.forEach = forEach;
+  }
+};
+
+for (var COLLECTION_NAME in DOMIterables) {
+  if (DOMIterables[COLLECTION_NAME]) {
+    handlePrototype(globalThis[COLLECTION_NAME] && globalThis[COLLECTION_NAME].prototype);
+  }
+}
+
+handlePrototype(DOMTokenListPrototype);
diff --git a/node_modules/core-js/modules/web.dom-collections.iterator.js b/node_modules/core-js/modules/web.dom-collections.iterator.js
new file mode 100644
index 0000000..882a828
--- /dev/null
+++ b/node_modules/core-js/modules/web.dom-collections.iterator.js
@@ -0,0 +1,37 @@
+'use strict';
+var globalThis = require('../internals/global-this');
+var DOMIterables = require('../internals/dom-iterables');
+var DOMTokenListPrototype = require('../internals/dom-token-list-prototype');
+var ArrayIteratorMethods = require('../modules/es.array.iterator');
+var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
+var setToStringTag = require('../internals/set-to-string-tag');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+
+var ITERATOR = wellKnownSymbol('iterator');
+var ArrayValues = ArrayIteratorMethods.values;
+
+var handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {
+  if (CollectionPrototype) {
+    // some Chrome versions have non-configurable methods on DOMTokenList
+    if (CollectionPrototype[ITERATOR] !== ArrayValues) try {
+      createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);
+    } catch (error) {
+      CollectionPrototype[ITERATOR] = ArrayValues;
+    }
+    setToStringTag(CollectionPrototype, COLLECTION_NAME, true);
+    if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {
+      // some Chrome versions have non-configurable methods on DOMTokenList
+      if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {
+        createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);
+      } catch (error) {
+        CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];
+      }
+    }
+  }
+};
+
+for (var COLLECTION_NAME in DOMIterables) {
+  handlePrototype(globalThis[COLLECTION_NAME] && globalThis[COLLECTION_NAME].prototype, COLLECTION_NAME);
+}
+
+handlePrototype(DOMTokenListPrototype, 'DOMTokenList');
diff --git a/node_modules/core-js/modules/web.dom-exception.constructor.js b/node_modules/core-js/modules/web.dom-exception.constructor.js
new file mode 100644
index 0000000..f5cf6aa
--- /dev/null
+++ b/node_modules/core-js/modules/web.dom-exception.constructor.js
@@ -0,0 +1,145 @@
+'use strict';
+var $ = require('../internals/export');
+var getBuiltIn = require('../internals/get-built-in');
+var getBuiltInNodeModule = require('../internals/get-built-in-node-module');
+var fails = require('../internals/fails');
+var create = require('../internals/object-create');
+var createPropertyDescriptor = require('../internals/create-property-descriptor');
+var defineProperty = require('../internals/object-define-property').f;
+var defineBuiltIn = require('../internals/define-built-in');
+var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
+var hasOwn = require('../internals/has-own-property');
+var anInstance = require('../internals/an-instance');
+var anObject = require('../internals/an-object');
+var errorToString = require('../internals/error-to-string');
+var normalizeStringArgument = require('../internals/normalize-string-argument');
+var DOMExceptionConstants = require('../internals/dom-exception-constants');
+var clearErrorStack = require('../internals/error-stack-clear');
+var InternalStateModule = require('../internals/internal-state');
+var DESCRIPTORS = require('../internals/descriptors');
+var IS_PURE = require('../internals/is-pure');
+
+var DOM_EXCEPTION = 'DOMException';
+var DATA_CLONE_ERR = 'DATA_CLONE_ERR';
+var Error = getBuiltIn('Error');
+// NodeJS < 17.0 does not expose `DOMException` to global
+var NativeDOMException = getBuiltIn(DOM_EXCEPTION) || (function () {
+  try {
+    // NodeJS < 15.0 does not expose `MessageChannel` to global
+    var MessageChannel = getBuiltIn('MessageChannel') || getBuiltInNodeModule('worker_threads').MessageChannel;
+    // eslint-disable-next-line es/no-weak-map, unicorn/require-post-message-target-origin -- safe
+    new MessageChannel().port1.postMessage(new WeakMap());
+  } catch (error) {
+    if (error.name === DATA_CLONE_ERR && error.code === 25) return error.constructor;
+  }
+})();
+var NativeDOMExceptionPrototype = NativeDOMException && NativeDOMException.prototype;
+var ErrorPrototype = Error.prototype;
+var setInternalState = InternalStateModule.set;
+var getInternalState = InternalStateModule.getterFor(DOM_EXCEPTION);
+var HAS_STACK = 'stack' in new Error(DOM_EXCEPTION);
+
+var codeFor = function (name) {
+  return hasOwn(DOMExceptionConstants, name) && DOMExceptionConstants[name].m ? DOMExceptionConstants[name].c : 0;
+};
+
+var $DOMException = function DOMException() {
+  anInstance(this, DOMExceptionPrototype);
+  var argumentsLength = arguments.length;
+  var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]);
+  var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error');
+  var code = codeFor(name);
+  setInternalState(this, {
+    type: DOM_EXCEPTION,
+    name: name,
+    message: message,
+    code: code
+  });
+  if (!DESCRIPTORS) {
+    this.name = name;
+    this.message = message;
+    this.code = code;
+  }
+  if (HAS_STACK) {
+    var error = new Error(message);
+    error.name = DOM_EXCEPTION;
+    defineProperty(this, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));
+  }
+};
+
+var DOMExceptionPrototype = $DOMException.prototype = create(ErrorPrototype);
+
+var createGetterDescriptor = function (get) {
+  return { enumerable: true, configurable: true, get: get };
+};
+
+var getterFor = function (key) {
+  return createGetterDescriptor(function () {
+    return getInternalState(this)[key];
+  });
+};
+
+if (DESCRIPTORS) {
+  // `DOMException.prototype.code` getter
+  defineBuiltInAccessor(DOMExceptionPrototype, 'code', getterFor('code'));
+  // `DOMException.prototype.message` getter
+  defineBuiltInAccessor(DOMExceptionPrototype, 'message', getterFor('message'));
+  // `DOMException.prototype.name` getter
+  defineBuiltInAccessor(DOMExceptionPrototype, 'name', getterFor('name'));
+}
+
+defineProperty(DOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, $DOMException));
+
+// FF36- DOMException is a function, but can't be constructed
+var INCORRECT_CONSTRUCTOR = fails(function () {
+  return !(new NativeDOMException() instanceof Error);
+});
+
+// Safari 10.1 / Chrome 32- / IE8- DOMException.prototype.toString bugs
+var INCORRECT_TO_STRING = INCORRECT_CONSTRUCTOR || fails(function () {
+  return ErrorPrototype.toString !== errorToString || String(new NativeDOMException(1, 2)) !== '2: 1';
+});
+
+// Deno 1.6.3- DOMException.prototype.code just missed
+var INCORRECT_CODE = INCORRECT_CONSTRUCTOR || fails(function () {
+  return new NativeDOMException(1, 'DataCloneError').code !== 25;
+});
+
+// Deno 1.6.3- DOMException constants just missed
+var MISSED_CONSTANTS = INCORRECT_CONSTRUCTOR
+  || NativeDOMException[DATA_CLONE_ERR] !== 25
+  || NativeDOMExceptionPrototype[DATA_CLONE_ERR] !== 25;
+
+var FORCED_CONSTRUCTOR = IS_PURE ? INCORRECT_TO_STRING || INCORRECT_CODE || MISSED_CONSTANTS : INCORRECT_CONSTRUCTOR;
+
+// `DOMException` constructor
+// https://webidl.spec.whatwg.org/#idl-DOMException
+$({ global: true, constructor: true, forced: FORCED_CONSTRUCTOR }, {
+  DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException
+});
+
+var PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);
+var PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;
+
+if (INCORRECT_TO_STRING && (IS_PURE || NativeDOMException === PolyfilledDOMException)) {
+  defineBuiltIn(PolyfilledDOMExceptionPrototype, 'toString', errorToString);
+}
+
+if (INCORRECT_CODE && DESCRIPTORS && NativeDOMException === PolyfilledDOMException) {
+  defineBuiltInAccessor(PolyfilledDOMExceptionPrototype, 'code', createGetterDescriptor(function () {
+    return codeFor(anObject(this).name);
+  }));
+}
+
+// `DOMException` constants
+for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {
+  var constant = DOMExceptionConstants[key];
+  var constantName = constant.s;
+  var descriptor = createPropertyDescriptor(6, constant.c);
+  if (!hasOwn(PolyfilledDOMException, constantName)) {
+    defineProperty(PolyfilledDOMException, constantName, descriptor);
+  }
+  if (!hasOwn(PolyfilledDOMExceptionPrototype, constantName)) {
+    defineProperty(PolyfilledDOMExceptionPrototype, constantName, descriptor);
+  }
+}
diff --git a/node_modules/core-js/modules/web.dom-exception.stack.js b/node_modules/core-js/modules/web.dom-exception.stack.js
new file mode 100644
index 0000000..f166de3
--- /dev/null
+++ b/node_modules/core-js/modules/web.dom-exception.stack.js
@@ -0,0 +1,68 @@
+'use strict';
+var $ = require('../internals/export');
+var globalThis = require('../internals/global-this');
+var getBuiltIn = require('../internals/get-built-in');
+var createPropertyDescriptor = require('../internals/create-property-descriptor');
+var defineProperty = require('../internals/object-define-property').f;
+var hasOwn = require('../internals/has-own-property');
+var anInstance = require('../internals/an-instance');
+var inheritIfRequired = require('../internals/inherit-if-required');
+var normalizeStringArgument = require('../internals/normalize-string-argument');
+var DOMExceptionConstants = require('../internals/dom-exception-constants');
+var clearErrorStack = require('../internals/error-stack-clear');
+var DESCRIPTORS = require('../internals/descriptors');
+var IS_PURE = require('../internals/is-pure');
+
+var DOM_EXCEPTION = 'DOMException';
+var Error = getBuiltIn('Error');
+var NativeDOMException = getBuiltIn(DOM_EXCEPTION);
+
+var $DOMException = function DOMException() {
+  anInstance(this, DOMExceptionPrototype);
+  var argumentsLength = arguments.length;
+  var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]);
+  var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error');
+  var that = new NativeDOMException(message, name);
+  var error = new Error(message);
+  error.name = DOM_EXCEPTION;
+  defineProperty(that, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));
+  inheritIfRequired(that, this, $DOMException);
+  return that;
+};
+
+var DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype;
+
+var ERROR_HAS_STACK = 'stack' in new Error(DOM_EXCEPTION);
+var DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2);
+
+// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
+var descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(globalThis, DOM_EXCEPTION);
+
+// Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it
+// https://github.com/Jarred-Sumner/bun/issues/399
+var BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable);
+
+var FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK;
+
+// `DOMException` constructor patch for `.stack` where it's required
+// https://webidl.spec.whatwg.org/#es-DOMException-specialness
+$({ global: true, constructor: true, forced: IS_PURE || FORCED_CONSTRUCTOR }, { // TODO: fix export logic
+  DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException
+});
+
+var PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);
+var PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;
+
+if (PolyfilledDOMExceptionPrototype.constructor !== PolyfilledDOMException) {
+  if (!IS_PURE) {
+    defineProperty(PolyfilledDOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, PolyfilledDOMException));
+  }
+
+  for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {
+    var constant = DOMExceptionConstants[key];
+    var constantName = constant.s;
+    if (!hasOwn(PolyfilledDOMException, constantName)) {
+      defineProperty(PolyfilledDOMException, constantName, createPropertyDescriptor(6, constant.c));
+    }
+  }
+}
diff --git a/node_modules/core-js/modules/web.dom-exception.to-string-tag.js b/node_modules/core-js/modules/web.dom-exception.to-string-tag.js
new file mode 100644
index 0000000..f53c6d5
--- /dev/null
+++ b/node_modules/core-js/modules/web.dom-exception.to-string-tag.js
@@ -0,0 +1,8 @@
+'use strict';
+var getBuiltIn = require('../internals/get-built-in');
+var setToStringTag = require('../internals/set-to-string-tag');
+
+var DOM_EXCEPTION = 'DOMException';
+
+// `DOMException.prototype[@@toStringTag]` property
+setToStringTag(getBuiltIn(DOM_EXCEPTION), DOM_EXCEPTION);
diff --git a/node_modules/core-js/modules/web.immediate.js b/node_modules/core-js/modules/web.immediate.js
new file mode 100644
index 0000000..170a00e
--- /dev/null
+++ b/node_modules/core-js/modules/web.immediate.js
@@ -0,0 +1,4 @@
+'use strict';
+// TODO: Remove this module from `core-js@4` since it's split to modules listed below
+require('../modules/web.clear-immediate');
+require('../modules/web.set-immediate');
diff --git a/node_modules/core-js/modules/web.queue-microtask.js b/node_modules/core-js/modules/web.queue-microtask.js
new file mode 100644
index 0000000..d34de67
--- /dev/null
+++ b/node_modules/core-js/modules/web.queue-microtask.js
@@ -0,0 +1,25 @@
+'use strict';
+var $ = require('../internals/export');
+var globalThis = require('../internals/global-this');
+var microtask = require('../internals/microtask');
+var aCallable = require('../internals/a-callable');
+var validateArgumentsLength = require('../internals/validate-arguments-length');
+var fails = require('../internals/fails');
+var DESCRIPTORS = require('../internals/descriptors');
+
+// Bun ~ 1.0.30 bug
+// https://github.com/oven-sh/bun/issues/9249
+var WRONG_ARITY = fails(function () {
+  // getOwnPropertyDescriptor for prevent experimental warning in Node 11
+  // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
+  return DESCRIPTORS && Object.getOwnPropertyDescriptor(globalThis, 'queueMicrotask').value.length !== 1;
+});
+
+// `queueMicrotask` method
+// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-queuemicrotask
+$({ global: true, enumerable: true, dontCallGetSet: true, forced: WRONG_ARITY }, {
+  queueMicrotask: function queueMicrotask(fn) {
+    validateArgumentsLength(arguments.length, 1);
+    microtask(aCallable(fn));
+  }
+});
diff --git a/node_modules/core-js/modules/web.self.js b/node_modules/core-js/modules/web.self.js
new file mode 100644
index 0000000..f409cc0
--- /dev/null
+++ b/node_modules/core-js/modules/web.self.js
@@ -0,0 +1,41 @@
+'use strict';
+var $ = require('../internals/export');
+var globalThis = require('../internals/global-this');
+var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
+var DESCRIPTORS = require('../internals/descriptors');
+
+var $TypeError = TypeError;
+// eslint-disable-next-line es/no-object-defineproperty -- safe
+var defineProperty = Object.defineProperty;
+var INCORRECT_VALUE = globalThis.self !== globalThis;
+
+// `self` getter
+// https://html.spec.whatwg.org/multipage/window-object.html#dom-self
+try {
+  if (DESCRIPTORS) {
+    // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
+    var descriptor = Object.getOwnPropertyDescriptor(globalThis, 'self');
+    // some engines have `self`, but with incorrect descriptor
+    // https://github.com/denoland/deno/issues/15765
+    if (INCORRECT_VALUE || !descriptor || !descriptor.get || !descriptor.enumerable) {
+      defineBuiltInAccessor(globalThis, 'self', {
+        get: function self() {
+          return globalThis;
+        },
+        set: function self(value) {
+          if (this !== globalThis) throw new $TypeError('Illegal invocation');
+          defineProperty(globalThis, 'self', {
+            value: value,
+            writable: true,
+            configurable: true,
+            enumerable: true
+          });
+        },
+        configurable: true,
+        enumerable: true
+      });
+    }
+  } else $({ global: true, simple: true, forced: INCORRECT_VALUE }, {
+    self: globalThis
+  });
+} catch (error) { /* empty */ }
diff --git a/node_modules/core-js/modules/web.set-immediate.js b/node_modules/core-js/modules/web.set-immediate.js
new file mode 100644
index 0000000..8aa3dc8
--- /dev/null
+++ b/node_modules/core-js/modules/web.set-immediate.js
@@ -0,0 +1,14 @@
+'use strict';
+var $ = require('../internals/export');
+var globalThis = require('../internals/global-this');
+var setTask = require('../internals/task').set;
+var schedulersFix = require('../internals/schedulers-fix');
+
+// https://github.com/oven-sh/bun/issues/1633
+var setImmediate = globalThis.setImmediate ? schedulersFix(setTask, false) : setTask;
+
+// `setImmediate` method
+// http://w3c.github.io/setImmediate/#si-setImmediate
+$({ global: true, bind: true, enumerable: true, forced: globalThis.setImmediate !== setImmediate }, {
+  setImmediate: setImmediate
+});
diff --git a/node_modules/core-js/modules/web.set-interval.js b/node_modules/core-js/modules/web.set-interval.js
new file mode 100644
index 0000000..d0b6bb7
--- /dev/null
+++ b/node_modules/core-js/modules/web.set-interval.js
@@ -0,0 +1,12 @@
+'use strict';
+var $ = require('../internals/export');
+var globalThis = require('../internals/global-this');
+var schedulersFix = require('../internals/schedulers-fix');
+
+var setInterval = schedulersFix(globalThis.setInterval, true);
+
+// Bun / IE9- setInterval additional parameters fix
+// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval
+$({ global: true, bind: true, forced: globalThis.setInterval !== setInterval }, {
+  setInterval: setInterval
+});
diff --git a/node_modules/core-js/modules/web.set-timeout.js b/node_modules/core-js/modules/web.set-timeout.js
new file mode 100644
index 0000000..3b054ae
--- /dev/null
+++ b/node_modules/core-js/modules/web.set-timeout.js
@@ -0,0 +1,12 @@
+'use strict';
+var $ = require('../internals/export');
+var globalThis = require('../internals/global-this');
+var schedulersFix = require('../internals/schedulers-fix');
+
+var setTimeout = schedulersFix(globalThis.setTimeout, true);
+
+// Bun / IE9- setTimeout additional parameters fix
+// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout
+$({ global: true, bind: true, forced: globalThis.setTimeout !== setTimeout }, {
+  setTimeout: setTimeout
+});
diff --git a/node_modules/core-js/modules/web.structured-clone.js b/node_modules/core-js/modules/web.structured-clone.js
new file mode 100644
index 0000000..b0b4a89
--- /dev/null
+++ b/node_modules/core-js/modules/web.structured-clone.js
@@ -0,0 +1,535 @@
+'use strict';
+var IS_PURE = require('../internals/is-pure');
+var $ = require('../internals/export');
+var globalThis = require('../internals/global-this');
+var getBuiltIn = require('../internals/get-built-in');
+var uncurryThis = require('../internals/function-uncurry-this');
+var fails = require('../internals/fails');
+var uid = require('../internals/uid');
+var isCallable = require('../internals/is-callable');
+var isConstructor = require('../internals/is-constructor');
+var isNullOrUndefined = require('../internals/is-null-or-undefined');
+var isObject = require('../internals/is-object');
+var isSymbol = require('../internals/is-symbol');
+var iterate = require('../internals/iterate');
+var anObject = require('../internals/an-object');
+var classof = require('../internals/classof');
+var hasOwn = require('../internals/has-own-property');
+var createProperty = require('../internals/create-property');
+var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
+var lengthOfArrayLike = require('../internals/length-of-array-like');
+var validateArgumentsLength = require('../internals/validate-arguments-length');
+var getRegExpFlags = require('../internals/regexp-get-flags');
+var MapHelpers = require('../internals/map-helpers');
+var SetHelpers = require('../internals/set-helpers');
+var setIterate = require('../internals/set-iterate');
+var detachTransferable = require('../internals/detach-transferable');
+var ERROR_STACK_INSTALLABLE = require('../internals/error-stack-installable');
+var PROPER_STRUCTURED_CLONE_TRANSFER = require('../internals/structured-clone-proper-transfer');
+
+var Object = globalThis.Object;
+var Array = globalThis.Array;
+var Date = globalThis.Date;
+var Error = globalThis.Error;
+var TypeError = globalThis.TypeError;
+var PerformanceMark = globalThis.PerformanceMark;
+var DOMException = getBuiltIn('DOMException');
+var Map = MapHelpers.Map;
+var mapHas = MapHelpers.has;
+var mapGet = MapHelpers.get;
+var mapSet = MapHelpers.set;
+var Set = SetHelpers.Set;
+var setAdd = SetHelpers.add;
+var setHas = SetHelpers.has;
+var objectKeys = getBuiltIn('Object', 'keys');
+var push = uncurryThis([].push);
+var thisBooleanValue = uncurryThis(true.valueOf);
+var thisNumberValue = uncurryThis(1.0.valueOf);
+var thisStringValue = uncurryThis(''.valueOf);
+var thisTimeValue = uncurryThis(Date.prototype.getTime);
+var PERFORMANCE_MARK = uid('structuredClone');
+var DATA_CLONE_ERROR = 'DataCloneError';
+var TRANSFERRING = 'Transferring';
+
+var checkBasicSemantic = function (structuredCloneImplementation) {
+  return !fails(function () {
+    var set1 = new globalThis.Set([7]);
+    var set2 = structuredCloneImplementation(set1);
+    var number = structuredCloneImplementation(Object(7));
+    return set2 === set1 || !set2.has(7) || !isObject(number) || +number !== 7;
+  }) && structuredCloneImplementation;
+};
+
+var checkErrorsCloning = function (structuredCloneImplementation, $Error) {
+  return !fails(function () {
+    var error = new $Error();
+    var test = structuredCloneImplementation({ a: error, b: error });
+    return !(test && test.a === test.b && test.a instanceof $Error && test.a.stack === error.stack);
+  });
+};
+
+// https://github.com/whatwg/html/pull/5749
+var checkNewErrorsCloningSemantic = function (structuredCloneImplementation) {
+  return !fails(function () {
+    var test = structuredCloneImplementation(new globalThis.AggregateError([1], PERFORMANCE_MARK, { cause: 3 }));
+    return test.name !== 'AggregateError' || test.errors[0] !== 1 || test.message !== PERFORMANCE_MARK || test.cause !== 3;
+  });
+};
+
+// FF94+, Safari 15.4+, Chrome 98+, NodeJS 17.0+, Deno 1.13+
+// FF<103 and Safari implementations can't clone errors
+// https://bugzilla.mozilla.org/show_bug.cgi?id=1556604
+// FF103 can clone errors, but `.stack` of clone is an empty string
+// https://bugzilla.mozilla.org/show_bug.cgi?id=1778762
+// FF104+ fixed it on usual errors, but not on DOMExceptions
+// https://bugzilla.mozilla.org/show_bug.cgi?id=1777321
+// Chrome <102 returns `null` if cloned object contains multiple references to one error
+// https://bugs.chromium.org/p/v8/issues/detail?id=12542
+// NodeJS implementation can't clone DOMExceptions
+// https://github.com/nodejs/node/issues/41038
+// only FF103+ supports new (html/5749) error cloning semantic
+var nativeStructuredClone = globalThis.structuredClone;
+
+var FORCED_REPLACEMENT = IS_PURE
+  || !checkErrorsCloning(nativeStructuredClone, Error)
+  || !checkErrorsCloning(nativeStructuredClone, DOMException)
+  || !checkNewErrorsCloningSemantic(nativeStructuredClone);
+
+// Chrome 82+, Safari 14.1+, Deno 1.11+
+// Chrome 78-81 implementation swaps `.name` and `.message` of cloned `DOMException`
+// Chrome returns `null` if cloned object contains multiple references to one error
+// Safari 14.1 implementation doesn't clone some `RegExp` flags, so requires a workaround
+// Safari implementation can't clone errors
+// Deno 1.2-1.10 implementations too naive
+// NodeJS 16.0+ does not have `PerformanceMark` constructor
+// NodeJS <17.2 structured cloning implementation from `performance.mark` is too naive
+// and can't clone, for example, `RegExp` or some boxed primitives
+// https://github.com/nodejs/node/issues/40840
+// no one of those implementations supports new (html/5749) error cloning semantic
+var structuredCloneFromMark = !nativeStructuredClone && checkBasicSemantic(function (value) {
+  return new PerformanceMark(PERFORMANCE_MARK, { detail: value }).detail;
+});
+
+var nativeRestrictedStructuredClone = checkBasicSemantic(nativeStructuredClone) || structuredCloneFromMark;
+
+var throwUncloneable = function (type) {
+  throw new DOMException('Uncloneable type: ' + type, DATA_CLONE_ERROR);
+};
+
+var throwUnpolyfillable = function (type, action) {
+  throw new DOMException((action || 'Cloning') + ' of ' + type + ' cannot be properly polyfilled in this engine', DATA_CLONE_ERROR);
+};
+
+var tryNativeRestrictedStructuredClone = function (value, type) {
+  if (!nativeRestrictedStructuredClone) throwUnpolyfillable(type);
+  return nativeRestrictedStructuredClone(value);
+};
+
+var createDataTransfer = function () {
+  var dataTransfer;
+  try {
+    dataTransfer = new globalThis.DataTransfer();
+  } catch (error) {
+    try {
+      dataTransfer = new globalThis.ClipboardEvent('').clipboardData;
+    } catch (error2) { /* empty */ }
+  }
+  return dataTransfer && dataTransfer.items && dataTransfer.files ? dataTransfer : null;
+};
+
+var cloneBuffer = function (value, map, $type) {
+  if (mapHas(map, value)) return mapGet(map, value);
+
+  var type = $type || classof(value);
+  var clone, length, options, source, target, i;
+
+  if (type === 'SharedArrayBuffer') {
+    if (nativeRestrictedStructuredClone) clone = nativeRestrictedStructuredClone(value);
+    // SharedArrayBuffer should use shared memory, we can't polyfill it, so return the original
+    else clone = value;
+  } else {
+    var DataView = globalThis.DataView;
+
+    // `ArrayBuffer#slice` is not available in IE10
+    // `ArrayBuffer#slice` and `DataView` are not available in old FF
+    if (!DataView && !isCallable(value.slice)) throwUnpolyfillable('ArrayBuffer');
+    // detached buffers throws in `DataView` and `.slice`
+    try {
+      if (isCallable(value.slice) && !value.resizable) {
+        clone = value.slice(0);
+      } else {
+        length = value.byteLength;
+        options = 'maxByteLength' in value ? { maxByteLength: value.maxByteLength } : undefined;
+        // eslint-disable-next-line es/no-resizable-and-growable-arraybuffers -- safe
+        clone = new ArrayBuffer(length, options);
+        source = new DataView(value);
+        target = new DataView(clone);
+        for (i = 0; i < length; i++) {
+          target.setUint8(i, source.getUint8(i));
+        }
+      }
+    } catch (error) {
+      throw new DOMException('ArrayBuffer is detached', DATA_CLONE_ERROR);
+    }
+  }
+
+  mapSet(map, value, clone);
+
+  return clone;
+};
+
+var cloneView = function (value, type, offset, length, map) {
+  var C = globalThis[type];
+  // in some old engines like Safari 9, typeof C is 'object'
+  // on Uint8ClampedArray or some other constructors
+  if (!isObject(C)) throwUnpolyfillable(type);
+  return new C(cloneBuffer(value.buffer, map), offset, length);
+};
+
+var structuredCloneInternal = function (value, map) {
+  if (isSymbol(value)) throwUncloneable('Symbol');
+  if (!isObject(value)) return value;
+  // effectively preserves circular references
+  if (map) {
+    if (mapHas(map, value)) return mapGet(map, value);
+  } else map = new Map();
+
+  var type = classof(value);
+  var C, name, cloned, dataTransfer, i, length, keys, key;
+
+  switch (type) {
+    case 'Array':
+      cloned = Array(lengthOfArrayLike(value));
+      break;
+    case 'Object':
+      cloned = {};
+      break;
+    case 'Map':
+      cloned = new Map();
+      break;
+    case 'Set':
+      cloned = new Set();
+      break;
+    case 'RegExp':
+      // in this block because of a Safari 14.1 bug
+      // old FF does not clone regexes passed to the constructor, so get the source and flags directly
+      cloned = new RegExp(value.source, getRegExpFlags(value));
+      break;
+    case 'Error':
+      name = value.name;
+      switch (name) {
+        case 'AggregateError':
+          cloned = new (getBuiltIn(name))([]);
+          break;
+        case 'EvalError':
+        case 'RangeError':
+        case 'ReferenceError':
+        case 'SuppressedError':
+        case 'SyntaxError':
+        case 'TypeError':
+        case 'URIError':
+          cloned = new (getBuiltIn(name))();
+          break;
+        case 'CompileError':
+        case 'LinkError':
+        case 'RuntimeError':
+          cloned = new (getBuiltIn('WebAssembly', name))();
+          break;
+        default:
+          cloned = new Error();
+      }
+      break;
+    case 'DOMException':
+      cloned = new DOMException(value.message, value.name);
+      break;
+    case 'ArrayBuffer':
+    case 'SharedArrayBuffer':
+      cloned = cloneBuffer(value, map, type);
+      break;
+    case 'DataView':
+    case 'Int8Array':
+    case 'Uint8Array':
+    case 'Uint8ClampedArray':
+    case 'Int16Array':
+    case 'Uint16Array':
+    case 'Int32Array':
+    case 'Uint32Array':
+    case 'Float16Array':
+    case 'Float32Array':
+    case 'Float64Array':
+    case 'BigInt64Array':
+    case 'BigUint64Array':
+      length = type === 'DataView' ? value.byteLength : value.length;
+      cloned = cloneView(value, type, value.byteOffset, length, map);
+      break;
+    case 'DOMQuad':
+      try {
+        cloned = new DOMQuad(
+          structuredCloneInternal(value.p1, map),
+          structuredCloneInternal(value.p2, map),
+          structuredCloneInternal(value.p3, map),
+          structuredCloneInternal(value.p4, map)
+        );
+      } catch (error) {
+        cloned = tryNativeRestrictedStructuredClone(value, type);
+      }
+      break;
+    case 'File':
+      if (nativeRestrictedStructuredClone) try {
+        cloned = nativeRestrictedStructuredClone(value);
+        // NodeJS 20.0.0 bug, https://github.com/nodejs/node/issues/47612
+        if (classof(cloned) !== type) cloned = undefined;
+      } catch (error) { /* empty */ }
+      if (!cloned) try {
+        cloned = new File([value], value.name, value);
+      } catch (error) { /* empty */ }
+      if (!cloned) throwUnpolyfillable(type);
+      break;
+    case 'FileList':
+      dataTransfer = createDataTransfer();
+      if (dataTransfer) {
+        for (i = 0, length = lengthOfArrayLike(value); i < length; i++) {
+          dataTransfer.items.add(structuredCloneInternal(value[i], map));
+        }
+        cloned = dataTransfer.files;
+      } else cloned = tryNativeRestrictedStructuredClone(value, type);
+      break;
+    case 'ImageData':
+      // Safari 9 ImageData is a constructor, but typeof ImageData is 'object'
+      try {
+        cloned = new ImageData(
+          structuredCloneInternal(value.data, map),
+          value.width,
+          value.height,
+          { colorSpace: value.colorSpace }
+        );
+      } catch (error) {
+        cloned = tryNativeRestrictedStructuredClone(value, type);
+      } break;
+    default:
+      if (nativeRestrictedStructuredClone) {
+        cloned = nativeRestrictedStructuredClone(value);
+      } else switch (type) {
+        case 'BigInt':
+          // can be a 3rd party polyfill
+          cloned = Object(value.valueOf());
+          break;
+        case 'Boolean':
+          cloned = Object(thisBooleanValue(value));
+          break;
+        case 'Number':
+          cloned = Object(thisNumberValue(value));
+          break;
+        case 'String':
+          cloned = Object(thisStringValue(value));
+          break;
+        case 'Date':
+          cloned = new Date(thisTimeValue(value));
+          break;
+        case 'Blob':
+          try {
+            cloned = value.slice(0, value.size, value.type);
+          } catch (error) {
+            throwUnpolyfillable(type);
+          } break;
+        case 'DOMPoint':
+        case 'DOMPointReadOnly':
+          C = globalThis[type];
+          try {
+            cloned = C.fromPoint
+              ? C.fromPoint(value)
+              : new C(value.x, value.y, value.z, value.w);
+          } catch (error) {
+            throwUnpolyfillable(type);
+          } break;
+        case 'DOMRect':
+        case 'DOMRectReadOnly':
+          C = globalThis[type];
+          try {
+            cloned = C.fromRect
+              ? C.fromRect(value)
+              : new C(value.x, value.y, value.width, value.height);
+          } catch (error) {
+            throwUnpolyfillable(type);
+          } break;
+        case 'DOMMatrix':
+        case 'DOMMatrixReadOnly':
+          C = globalThis[type];
+          try {
+            cloned = C.fromMatrix
+              ? C.fromMatrix(value)
+              : new C(value);
+          } catch (error) {
+            throwUnpolyfillable(type);
+          } break;
+        case 'AudioData':
+        case 'VideoFrame':
+          if (!isCallable(value.clone)) throwUnpolyfillable(type);
+          try {
+            cloned = value.clone();
+          } catch (error) {
+            throwUncloneable(type);
+          } break;
+        case 'CropTarget':
+        case 'CryptoKey':
+        case 'FileSystemDirectoryHandle':
+        case 'FileSystemFileHandle':
+        case 'FileSystemHandle':
+        case 'GPUCompilationInfo':
+        case 'GPUCompilationMessage':
+        case 'ImageBitmap':
+        case 'RTCCertificate':
+        case 'WebAssembly.Module':
+          throwUnpolyfillable(type);
+          // break omitted
+        default:
+          throwUncloneable(type);
+      }
+  }
+
+  mapSet(map, value, cloned);
+
+  switch (type) {
+    case 'Array':
+    case 'Object':
+      keys = objectKeys(value);
+      for (i = 0, length = lengthOfArrayLike(keys); i < length; i++) {
+        key = keys[i];
+        createProperty(cloned, key, structuredCloneInternal(value[key], map));
+      } break;
+    case 'Map':
+      value.forEach(function (v, k) {
+        mapSet(cloned, structuredCloneInternal(k, map), structuredCloneInternal(v, map));
+      });
+      break;
+    case 'Set':
+      value.forEach(function (v) {
+        setAdd(cloned, structuredCloneInternal(v, map));
+      });
+      break;
+    case 'Error':
+      createNonEnumerableProperty(cloned, 'message', structuredCloneInternal(value.message, map));
+      if (hasOwn(value, 'cause')) {
+        createNonEnumerableProperty(cloned, 'cause', structuredCloneInternal(value.cause, map));
+      }
+      if (name === 'AggregateError') {
+        cloned.errors = structuredCloneInternal(value.errors, map);
+      } else if (name === 'SuppressedError') {
+        cloned.error = structuredCloneInternal(value.error, map);
+        cloned.suppressed = structuredCloneInternal(value.suppressed, map);
+      } // break omitted
+    case 'DOMException':
+      if (ERROR_STACK_INSTALLABLE) {
+        createNonEnumerableProperty(cloned, 'stack', structuredCloneInternal(value.stack, map));
+      }
+  }
+
+  return cloned;
+};
+
+var tryToTransfer = function (rawTransfer, map) {
+  if (!isObject(rawTransfer)) throw new TypeError('Transfer option cannot be converted to a sequence');
+
+  var transfer = [];
+
+  iterate(rawTransfer, function (value) {
+    push(transfer, anObject(value));
+  });
+
+  var i = 0;
+  var length = lengthOfArrayLike(transfer);
+  var buffers = new Set();
+  var value, type, C, transferred, canvas, context;
+
+  while (i < length) {
+    value = transfer[i++];
+
+    type = classof(value);
+
+    if (type === 'ArrayBuffer' ? setHas(buffers, value) : mapHas(map, value)) {
+      throw new DOMException('Duplicate transferable', DATA_CLONE_ERROR);
+    }
+
+    if (type === 'ArrayBuffer') {
+      setAdd(buffers, value);
+      continue;
+    }
+
+    if (PROPER_STRUCTURED_CLONE_TRANSFER) {
+      transferred = nativeStructuredClone(value, { transfer: [value] });
+    } else switch (type) {
+      case 'ImageBitmap':
+        C = globalThis.OffscreenCanvas;
+        if (!isConstructor(C)) throwUnpolyfillable(type, TRANSFERRING);
+        try {
+          canvas = new C(value.width, value.height);
+          context = canvas.getContext('bitmaprenderer');
+          context.transferFromImageBitmap(value);
+          transferred = canvas.transferToImageBitmap();
+        } catch (error) { /* empty */ }
+        break;
+      case 'AudioData':
+      case 'VideoFrame':
+        if (!isCallable(value.clone) || !isCallable(value.close)) throwUnpolyfillable(type, TRANSFERRING);
+        try {
+          transferred = value.clone();
+          value.close();
+        } catch (error) { /* empty */ }
+        break;
+      case 'MediaSourceHandle':
+      case 'MessagePort':
+      case 'MIDIAccess':
+      case 'OffscreenCanvas':
+      case 'ReadableStream':
+      case 'RTCDataChannel':
+      case 'TransformStream':
+      case 'WebTransportReceiveStream':
+      case 'WebTransportSendStream':
+      case 'WritableStream':
+        throwUnpolyfillable(type, TRANSFERRING);
+    }
+
+    if (transferred === undefined) throw new DOMException('This object cannot be transferred: ' + type, DATA_CLONE_ERROR);
+
+    mapSet(map, value, transferred);
+  }
+
+  return buffers;
+};
+
+var detachBuffers = function (buffers) {
+  setIterate(buffers, function (buffer) {
+    if (PROPER_STRUCTURED_CLONE_TRANSFER) {
+      nativeRestrictedStructuredClone(buffer, { transfer: [buffer] });
+    } else if (isCallable(buffer.transfer)) {
+      buffer.transfer();
+    } else if (detachTransferable) {
+      detachTransferable(buffer);
+    } else {
+      throwUnpolyfillable('ArrayBuffer', TRANSFERRING);
+    }
+  });
+};
+
+// `structuredClone` method
+// https://html.spec.whatwg.org/multipage/structured-data.html#dom-structuredclone
+$({ global: true, enumerable: true, sham: !PROPER_STRUCTURED_CLONE_TRANSFER, forced: FORCED_REPLACEMENT }, {
+  structuredClone: function structuredClone(value /* , { transfer } */) {
+    var options = validateArgumentsLength(arguments.length, 1) > 1 && !isNullOrUndefined(arguments[1]) ? anObject(arguments[1]) : undefined;
+    var transfer = options ? options.transfer : undefined;
+    var map, buffers;
+
+    if (transfer !== undefined) {
+      map = new Map();
+      buffers = tryToTransfer(transfer, map);
+    }
+
+    var clone = structuredCloneInternal(value, map);
+
+    // since of an issue with cloning views of transferred buffers, we a forced to detach them later
+    // https://github.com/zloirock/core-js/issues/1265
+    if (buffers) detachBuffers(buffers);
+
+    return clone;
+  }
+});
diff --git a/node_modules/core-js/modules/web.timers.js b/node_modules/core-js/modules/web.timers.js
new file mode 100644
index 0000000..b787686
--- /dev/null
+++ b/node_modules/core-js/modules/web.timers.js
@@ -0,0 +1,4 @@
+'use strict';
+// TODO: Remove this module from `core-js@4` since it's split to modules listed below
+require('../modules/web.set-interval');
+require('../modules/web.set-timeout');
diff --git a/node_modules/core-js/modules/web.url-search-params.constructor.js b/node_modules/core-js/modules/web.url-search-params.constructor.js
new file mode 100644
index 0000000..e5a249c
--- /dev/null
+++ b/node_modules/core-js/modules/web.url-search-params.constructor.js
@@ -0,0 +1,511 @@
+'use strict';
+// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`
+require('../modules/es.array.iterator');
+require('../modules/es.string.from-code-point');
+var $ = require('../internals/export');
+var globalThis = require('../internals/global-this');
+var safeGetBuiltIn = require('../internals/safe-get-built-in');
+var getBuiltIn = require('../internals/get-built-in');
+var call = require('../internals/function-call');
+var uncurryThis = require('../internals/function-uncurry-this');
+var DESCRIPTORS = require('../internals/descriptors');
+var USE_NATIVE_URL = require('../internals/url-constructor-detection');
+var defineBuiltIn = require('../internals/define-built-in');
+var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
+var defineBuiltIns = require('../internals/define-built-ins');
+var setToStringTag = require('../internals/set-to-string-tag');
+var createIteratorConstructor = require('../internals/iterator-create-constructor');
+var InternalStateModule = require('../internals/internal-state');
+var anInstance = require('../internals/an-instance');
+var isCallable = require('../internals/is-callable');
+var hasOwn = require('../internals/has-own-property');
+var bind = require('../internals/function-bind-context');
+var classof = require('../internals/classof');
+var anObject = require('../internals/an-object');
+var isObject = require('../internals/is-object');
+var $toString = require('../internals/to-string');
+var create = require('../internals/object-create');
+var createPropertyDescriptor = require('../internals/create-property-descriptor');
+var getIterator = require('../internals/get-iterator');
+var getIteratorMethod = require('../internals/get-iterator-method');
+var createIterResultObject = require('../internals/create-iter-result-object');
+var validateArgumentsLength = require('../internals/validate-arguments-length');
+var wellKnownSymbol = require('../internals/well-known-symbol');
+var arraySort = require('../internals/array-sort');
+
+var ITERATOR = wellKnownSymbol('iterator');
+var URL_SEARCH_PARAMS = 'URLSearchParams';
+var URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';
+var setInternalState = InternalStateModule.set;
+var getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);
+var getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);
+
+var nativeFetch = safeGetBuiltIn('fetch');
+var NativeRequest = safeGetBuiltIn('Request');
+var Headers = safeGetBuiltIn('Headers');
+var RequestPrototype = NativeRequest && NativeRequest.prototype;
+var HeadersPrototype = Headers && Headers.prototype;
+var TypeError = globalThis.TypeError;
+var encodeURIComponent = globalThis.encodeURIComponent;
+var fromCharCode = String.fromCharCode;
+var fromCodePoint = getBuiltIn('String', 'fromCodePoint');
+var $parseInt = parseInt;
+var charAt = uncurryThis(''.charAt);
+var join = uncurryThis([].join);
+var push = uncurryThis([].push);
+var replace = uncurryThis(''.replace);
+var shift = uncurryThis([].shift);
+var splice = uncurryThis([].splice);
+var split = uncurryThis(''.split);
+var stringSlice = uncurryThis(''.slice);
+var exec = uncurryThis(/./.exec);
+
+var plus = /\+/g;
+var FALLBACK_REPLACER = '\uFFFD';
+var VALID_HEX = /^[0-9a-f]+$/i;
+
+var parseHexOctet = function (string, start) {
+  var substr = stringSlice(string, start, start + 2);
+  if (!exec(VALID_HEX, substr)) return NaN;
+
+  return $parseInt(substr, 16);
+};
+
+var getLeadingOnes = function (octet) {
+  var count = 0;
+  for (var mask = 0x80; mask > 0 && (octet & mask) !== 0; mask >>= 1) {
+    count++;
+  }
+  return count;
+};
+
+var utf8Decode = function (octets) {
+  var codePoint = null;
+
+  switch (octets.length) {
+    case 1:
+      codePoint = octets[0];
+      break;
+    case 2:
+      codePoint = (octets[0] & 0x1F) << 6 | (octets[1] & 0x3F);
+      break;
+    case 3:
+      codePoint = (octets[0] & 0x0F) << 12 | (octets[1] & 0x3F) << 6 | (octets[2] & 0x3F);
+      break;
+    case 4:
+      codePoint = (octets[0] & 0x07) << 18 | (octets[1] & 0x3F) << 12 | (octets[2] & 0x3F) << 6 | (octets[3] & 0x3F);
+      break;
+  }
+
+  return codePoint > 0x10FFFF ? null : codePoint;
+};
+
+var decode = function (input) {
+  input = replace(input, plus, ' ');
+  var length = input.length;
+  var result = '';
+  var i = 0;
+
+  while (i < length) {
+    var decodedChar = charAt(input, i);
+
+    if (decodedChar === '%') {
+      if (charAt(input, i + 1) === '%' || i + 3 > length) {
+        result += '%';
+        i++;
+        continue;
+      }
+
+      var octet = parseHexOctet(input, i + 1);
+
+      // eslint-disable-next-line no-self-compare -- NaN check
+      if (octet !== octet) {
+        result += decodedChar;
+        i++;
+        continue;
+      }
+
+      i += 2;
+      var byteSequenceLength = getLeadingOnes(octet);
+
+      if (byteSequenceLength === 0) {
+        decodedChar = fromCharCode(octet);
+      } else {
+        if (byteSequenceLength === 1 || byteSequenceLength > 4) {
+          result += FALLBACK_REPLACER;
+          i++;
+          continue;
+        }
+
+        var octets = [octet];
+        var sequenceIndex = 1;
+
+        while (sequenceIndex < byteSequenceLength) {
+          i++;
+          if (i + 3 > length || charAt(input, i) !== '%') break;
+
+          var nextByte = parseHexOctet(input, i + 1);
+
+          // eslint-disable-next-line no-self-compare -- NaN check
+          if (nextByte !== nextByte) {
+            i += 3;
+            break;
+          }
+          if (nextByte > 191 || nextByte < 128) break;
+
+          push(octets, nextByte);
+          i += 2;
+          sequenceIndex++;
+        }
+
+        if (octets.length !== byteSequenceLength) {
+          result += FALLBACK_REPLACER;
+          continue;
+        }
+
+        var codePoint = utf8Decode(octets);
+        if (codePoint === null) {
+          result += FALLBACK_REPLACER;
+        } else {
+          decodedChar = fromCodePoint(codePoint);
+        }
+      }
+    }
+
+    result += decodedChar;
+    i++;
+  }
+
+  return result;
+};
+
+var find = /[!'()~]|%20/g;
+
+var replacements = {
+  '!': '%21',
+  "'": '%27',
+  '(': '%28',
+  ')': '%29',
+  '~': '%7E',
+  '%20': '+'
+};
+
+var replacer = function (match) {
+  return replacements[match];
+};
+
+var serialize = function (it) {
+  return replace(encodeURIComponent(it), find, replacer);
+};
+
+var URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {
+  setInternalState(this, {
+    type: URL_SEARCH_PARAMS_ITERATOR,
+    target: getInternalParamsState(params).entries,
+    index: 0,
+    kind: kind
+  });
+}, URL_SEARCH_PARAMS, function next() {
+  var state = getInternalIteratorState(this);
+  var target = state.target;
+  var index = state.index++;
+  if (!target || index >= target.length) {
+    state.target = null;
+    return createIterResultObject(undefined, true);
+  }
+  var entry = target[index];
+  switch (state.kind) {
+    case 'keys': return createIterResultObject(entry.key, false);
+    case 'values': return createIterResultObject(entry.value, false);
+  } return createIterResultObject([entry.key, entry.value], false);
+}, true);
+
+var URLSearchParamsState = function (init) {
+  this.entries = [];
+  this.url = null;
+
+  if (init !== undefined) {
+    if (isObject(init)) this.parseObject(init);
+    else this.parseQuery(typeof init == 'string' ? charAt(init, 0) === '?' ? stringSlice(init, 1) : init : $toString(init));
+  }
+};
+
+URLSearchParamsState.prototype = {
+  type: URL_SEARCH_PARAMS,
+  bindURL: function (url) {
+    this.url = url;
+    this.update();
+  },
+  parseObject: function (object) {
+    var entries = this.entries;
+    var iteratorMethod = getIteratorMethod(object);
+    var iterator, next, step, entryIterator, entryNext, first, second;
+
+    if (iteratorMethod) {
+      iterator = getIterator(object, iteratorMethod);
+      next = iterator.next;
+      while (!(step = call(next, iterator)).done) {
+        entryIterator = getIterator(anObject(step.value));
+        entryNext = entryIterator.next;
+        if (
+          (first = call(entryNext, entryIterator)).done ||
+          (second = call(entryNext, entryIterator)).done ||
+          !call(entryNext, entryIterator).done
+        ) throw new TypeError('Expected sequence with length 2');
+        push(entries, { key: $toString(first.value), value: $toString(second.value) });
+      }
+    } else for (var key in object) if (hasOwn(object, key)) {
+      push(entries, { key: key, value: $toString(object[key]) });
+    }
+  },
+  parseQuery: function (query) {
+    if (query) {
+      var entries = this.entries;
+      var attributes = split(query, '&');
+      var index = 0;
+      var attribute, entry;
+      while (index < attributes.length) {
+        attribute = attributes[index++];
+        if (attribute.length) {
+          entry = split(attribute, '=');
+          push(entries, {
+            key: decode(shift(entry)),
+            value: decode(join(entry, '='))
+          });
+        }
+      }
+    }
+  },
+  serialize: function () {
+    var entries = this.entries;
+    var result = [];
+    var index = 0;
+    var entry;
+    while (index < entries.length) {
+      entry = entries[index++];
+      push(result, serialize(entry.key) + '=' + serialize(entry.value));
+    } return join(result, '&');
+  },
+  update: function () {
+    this.entries.length = 0;
+    this.parseQuery(this.url.query);
+  },
+  updateURL: function () {
+    if (this.url) this.url.update();
+  }
+};
+
+// `URLSearchParams` constructor
+// https://url.spec.whatwg.org/#interface-urlsearchparams
+var URLSearchParamsConstructor = function URLSearchParams(/* init */) {
+  anInstance(this, URLSearchParamsPrototype);
+  var init = arguments.length > 0 ? arguments[0] : undefined;
+  var state = setInternalState(this, new URLSearchParamsState(init));
+  if (!DESCRIPTORS) this.size = state.entries.length;
+};
+
+var URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;
+
+defineBuiltIns(URLSearchParamsPrototype, {
+  // `URLSearchParams.prototype.append` method
+  // https://url.spec.whatwg.org/#dom-urlsearchparams-append
+  append: function append(name, value) {
+    var state = getInternalParamsState(this);
+    validateArgumentsLength(arguments.length, 2);
+    push(state.entries, { key: $toString(name), value: $toString(value) });
+    if (!DESCRIPTORS) this.length++;
+    state.updateURL();
+  },
+  // `URLSearchParams.prototype.delete` method
+  // https://url.spec.whatwg.org/#dom-urlsearchparams-delete
+  'delete': function (name /* , value */) {
+    var state = getInternalParamsState(this);
+    var length = validateArgumentsLength(arguments.length, 1);
+    var entries = state.entries;
+    var key = $toString(name);
+    var $value = length < 2 ? undefined : arguments[1];
+    var value = $value === undefined ? $value : $toString($value);
+    var index = 0;
+    while (index < entries.length) {
+      var entry = entries[index];
+      if (entry.key === key && (value === undefined || entry.value === value)) {
+        splice(entries, index, 1);
+        if (value !== undefined) break;
+      } else index++;
+    }
+    if (!DESCRIPTORS) this.size = entries.length;
+    state.updateURL();
+  },
+  // `URLSearchParams.prototype.get` method
+  // https://url.spec.whatwg.org/#dom-urlsearchparams-get
+  get: function get(name) {
+    var entries = getInternalParamsState(this).entries;
+    validateArgumentsLength(arguments.length, 1);
+    var key = $toString(name);
+    var index = 0;
+    for (; index < entries.length; index++) {
+      if (entries[index].key === key) return entries[index].value;
+    }
+    return null;
+  },
+  // `URLSearchParams.prototype.getAll` method
+  // https://url.spec.whatwg.org/#dom-urlsearchparams-getall
+  getAll: function getAll(name) {
+    var entries = getInternalParamsState(this).entries;
+    validateArgumentsLength(arguments.length, 1);
+    var key = $toString(name);
+    var result = [];
+    var index = 0;
+    for (; index < entries.length; index++) {
+      if (entries[index].key === key) push(result, entries[index].value);
+    }
+    return result;
+  },
+  // `URLSearchParams.prototype.has` method
+  // https://url.spec.whatwg.org/#dom-urlsearchparams-has
+  has: function has(name /* , value */) {
+    var entries = getInternalParamsState(this).entries;
+    var length = validateArgumentsLength(arguments.length, 1);
+    var key = $toString(name);
+    var $value = length < 2 ? undefined : arguments[1];
+    var value = $value === undefined ? $value : $toString($value);
+    var index = 0;
+    while (index < entries.length) {
+      var entry = entries[index++];
+      if (entry.key === key && (value === undefined || entry.value === value)) return true;
+    }
+    return false;
+  },
+  // `URLSearchParams.prototype.set` method
+  // https://url.spec.whatwg.org/#dom-urlsearchparams-set
+  set: function set(name, value) {
+    var state = getInternalParamsState(this);
+    validateArgumentsLength(arguments.length, 1);
+    var entries = state.entries;
+    var found = false;
+    var key = $toString(name);
+    var val = $toString(value);
+    var index = 0;
+    var entry;
+    for (; index < entries.length; index++) {
+      entry = entries[index];
+      if (entry.key === key) {
+        if (found) splice(entries, index--, 1);
+        else {
+          found = true;
+          entry.value = val;
+        }
+      }
+    }
+    if (!found) push(entries, { key: key, value: val });
+    if (!DESCRIPTORS) this.size = entries.length;
+    state.updateURL();
+  },
+  // `URLSearchParams.prototype.sort` method
+  // https://url.spec.whatwg.org/#dom-urlsearchparams-sort
+  sort: function sort() {
+    var state = getInternalParamsState(this);
+    arraySort(state.entries, function (a, b) {
+      return a.key > b.key ? 1 : -1;
+    });
+    state.updateURL();
+  },
+  // `URLSearchParams.prototype.forEach` method
+  forEach: function forEach(callback /* , thisArg */) {
+    var entries = getInternalParamsState(this).entries;
+    var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined);
+    var index = 0;
+    var entry;
+    while (index < entries.length) {
+      entry = entries[index++];
+      boundFunction(entry.value, entry.key, this);
+    }
+  },
+  // `URLSearchParams.prototype.keys` method
+  keys: function keys() {
+    return new URLSearchParamsIterator(this, 'keys');
+  },
+  // `URLSearchParams.prototype.values` method
+  values: function values() {
+    return new URLSearchParamsIterator(this, 'values');
+  },
+  // `URLSearchParams.prototype.entries` method
+  entries: function entries() {
+    return new URLSearchParamsIterator(this, 'entries');
+  }
+}, { enumerable: true });
+
+// `URLSearchParams.prototype[@@iterator]` method
+defineBuiltIn(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries, { name: 'entries' });
+
+// `URLSearchParams.prototype.toString` method
+// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior
+defineBuiltIn(URLSearchParamsPrototype, 'toString', function toString() {
+  return getInternalParamsState(this).serialize();
+}, { enumerable: true });
+
+// `URLSearchParams.prototype.size` getter
+// https://github.com/whatwg/url/pull/734
+if (DESCRIPTORS) defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {
+  get: function size() {
+    return getInternalParamsState(this).entries.length;
+  },
+  configurable: true,
+  enumerable: true
+});
+
+setToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);
+
+$({ global: true, constructor: true, forced: !USE_NATIVE_URL }, {
+  URLSearchParams: URLSearchParamsConstructor
+});
+
+// Wrap `fetch` and `Request` for correct work with polyfilled `URLSearchParams`
+if (!USE_NATIVE_URL && isCallable(Headers)) {
+  var headersHas = uncurryThis(HeadersPrototype.has);
+  var headersSet = uncurryThis(HeadersPrototype.set);
+
+  var wrapRequestOptions = function (init) {
+    if (isObject(init)) {
+      var body = init.body;
+      var headers;
+      if (classof(body) === URL_SEARCH_PARAMS) {
+        headers = init.headers ? new Headers(init.headers) : new Headers();
+        if (!headersHas(headers, 'content-type')) {
+          headersSet(headers, 'content-type', 'application/x-www-form-urlencoded;charset=UTF-8');
+        }
+        return create(init, {
+          body: createPropertyDescriptor(0, $toString(body)),
+          headers: createPropertyDescriptor(0, headers)
+        });
+      }
+    } return init;
+  };
+
+  if (isCallable(nativeFetch)) {
+    $({ global: true, enumerable: true, dontCallGetSet: true, forced: true }, {
+      fetch: function fetch(input /* , init */) {
+        return nativeFetch(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});
+      }
+    });
+  }
+
+  if (isCallable(NativeRequest)) {
+    var RequestConstructor = function Request(input /* , init */) {
+      anInstance(this, RequestPrototype);
+      return new NativeRequest(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});
+    };
+
+    RequestPrototype.constructor = RequestConstructor;
+    RequestConstructor.prototype = RequestPrototype;
+
+    $({ global: true, constructor: true, dontCallGetSet: true, forced: true }, {
+      Request: RequestConstructor
+    });
+  }
+}
+
+module.exports = {
+  URLSearchParams: URLSearchParamsConstructor,
+  getState: getInternalParamsState
+};
diff --git a/node_modules/core-js/modules/web.url-search-params.delete.js b/node_modules/core-js/modules/web.url-search-params.delete.js
new file mode 100644
index 0000000..0d8023a
--- /dev/null
+++ b/node_modules/core-js/modules/web.url-search-params.delete.js
@@ -0,0 +1,49 @@
+'use strict';
+var defineBuiltIn = require('../internals/define-built-in');
+var uncurryThis = require('../internals/function-uncurry-this');
+var toString = require('../internals/to-string');
+var validateArgumentsLength = require('../internals/validate-arguments-length');
+
+var $URLSearchParams = URLSearchParams;
+var URLSearchParamsPrototype = $URLSearchParams.prototype;
+var append = uncurryThis(URLSearchParamsPrototype.append);
+var $delete = uncurryThis(URLSearchParamsPrototype['delete']);
+var forEach = uncurryThis(URLSearchParamsPrototype.forEach);
+var push = uncurryThis([].push);
+var params = new $URLSearchParams('a=1&a=2&b=3');
+
+params['delete']('a', 1);
+// `undefined` case is a Chromium 117 bug
+// https://bugs.chromium.org/p/v8/issues/detail?id=14222
+params['delete']('b', undefined);
+
+if (params + '' !== 'a=2') {
+  defineBuiltIn(URLSearchParamsPrototype, 'delete', function (name /* , value */) {
+    var length = arguments.length;
+    var $value = length < 2 ? undefined : arguments[1];
+    if (length && $value === undefined) return $delete(this, name);
+    var entries = [];
+    forEach(this, function (v, k) { // also validates `this`
+      push(entries, { key: k, value: v });
+    });
+    validateArgumentsLength(length, 1);
+    var key = toString(name);
+    var value = toString($value);
+    var index = 0;
+    var dindex = 0;
+    var found = false;
+    var entriesLength = entries.length;
+    var entry;
+    while (index < entriesLength) {
+      entry = entries[index++];
+      if (found || entry.key === key) {
+        found = true;
+        $delete(this, entry.key);
+      } else dindex++;
+    }
+    while (dindex < entriesLength) {
+      entry = entries[dindex++];
+      if (!(entry.key === key && entry.value === value)) append(this, entry.key, entry.value);
+    }
+  }, { enumerable: true, unsafe: true });
+}
diff --git a/node_modules/core-js/modules/web.url-search-params.has.js b/node_modules/core-js/modules/web.url-search-params.has.js
new file mode 100644
index 0000000..46f6a2d
--- /dev/null
+++ b/node_modules/core-js/modules/web.url-search-params.has.js
@@ -0,0 +1,28 @@
+'use strict';
+var defineBuiltIn = require('../internals/define-built-in');
+var uncurryThis = require('../internals/function-uncurry-this');
+var toString = require('../internals/to-string');
+var validateArgumentsLength = require('../internals/validate-arguments-length');
+
+var $URLSearchParams = URLSearchParams;
+var URLSearchParamsPrototype = $URLSearchParams.prototype;
+var getAll = uncurryThis(URLSearchParamsPrototype.getAll);
+var $has = uncurryThis(URLSearchParamsPrototype.has);
+var params = new $URLSearchParams('a=1');
+
+// `undefined` case is a Chromium 117 bug
+// https://bugs.chromium.org/p/v8/issues/detail?id=14222
+if (params.has('a', 2) || !params.has('a', undefined)) {
+  defineBuiltIn(URLSearchParamsPrototype, 'has', function has(name /* , value */) {
+    var length = arguments.length;
+    var $value = length < 2 ? undefined : arguments[1];
+    if (length && $value === undefined) return $has(this, name);
+    var values = getAll(this, name); // also validates `this`
+    validateArgumentsLength(length, 1);
+    var value = toString($value);
+    var index = 0;
+    while (index < values.length) {
+      if (values[index++] === value) return true;
+    } return false;
+  }, { enumerable: true, unsafe: true });
+}
diff --git a/node_modules/core-js/modules/web.url-search-params.js b/node_modules/core-js/modules/web.url-search-params.js
new file mode 100644
index 0000000..5ebea93
--- /dev/null
+++ b/node_modules/core-js/modules/web.url-search-params.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove this module from `core-js@4` since it's replaced to module below
+require('../modules/web.url-search-params.constructor');
diff --git a/node_modules/core-js/modules/web.url-search-params.size.js b/node_modules/core-js/modules/web.url-search-params.size.js
new file mode 100644
index 0000000..65ab25d
--- /dev/null
+++ b/node_modules/core-js/modules/web.url-search-params.size.js
@@ -0,0 +1,21 @@
+'use strict';
+var DESCRIPTORS = require('../internals/descriptors');
+var uncurryThis = require('../internals/function-uncurry-this');
+var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
+
+var URLSearchParamsPrototype = URLSearchParams.prototype;
+var forEach = uncurryThis(URLSearchParamsPrototype.forEach);
+
+// `URLSearchParams.prototype.size` getter
+// https://github.com/whatwg/url/pull/734
+if (DESCRIPTORS && !('size' in URLSearchParamsPrototype)) {
+  defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {
+    get: function size() {
+      var count = 0;
+      forEach(this, function () { count++; });
+      return count;
+    },
+    configurable: true,
+    enumerable: true
+  });
+}
diff --git a/node_modules/core-js/modules/web.url.can-parse.js b/node_modules/core-js/modules/web.url.can-parse.js
new file mode 100644
index 0000000..bf7a96f
--- /dev/null
+++ b/node_modules/core-js/modules/web.url.can-parse.js
@@ -0,0 +1,36 @@
+'use strict';
+var $ = require('../internals/export');
+var getBuiltIn = require('../internals/get-built-in');
+var fails = require('../internals/fails');
+var validateArgumentsLength = require('../internals/validate-arguments-length');
+var toString = require('../internals/to-string');
+var USE_NATIVE_URL = require('../internals/url-constructor-detection');
+
+var URL = getBuiltIn('URL');
+
+// https://github.com/nodejs/node/issues/47505
+// https://github.com/denoland/deno/issues/18893
+var THROWS_WITHOUT_ARGUMENTS = USE_NATIVE_URL && fails(function () {
+  URL.canParse();
+});
+
+// Bun ~ 1.0.30 bug
+// https://github.com/oven-sh/bun/issues/9250
+var WRONG_ARITY = fails(function () {
+  return URL.canParse.length !== 1;
+});
+
+// `URL.canParse` method
+// https://url.spec.whatwg.org/#dom-url-canparse
+$({ target: 'URL', stat: true, forced: !THROWS_WITHOUT_ARGUMENTS || WRONG_ARITY }, {
+  canParse: function canParse(url) {
+    var length = validateArgumentsLength(arguments.length, 1);
+    var urlString = toString(url);
+    var base = length < 2 || arguments[1] === undefined ? undefined : toString(arguments[1]);
+    try {
+      return !!new URL(urlString, base);
+    } catch (error) {
+      return false;
+    }
+  }
+});
diff --git a/node_modules/core-js/modules/web.url.constructor.js b/node_modules/core-js/modules/web.url.constructor.js
new file mode 100644
index 0000000..2a31ff0
--- /dev/null
+++ b/node_modules/core-js/modules/web.url.constructor.js
@@ -0,0 +1,1050 @@
+'use strict';
+// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`
+require('../modules/es.string.iterator');
+var $ = require('../internals/export');
+var DESCRIPTORS = require('../internals/descriptors');
+var USE_NATIVE_URL = require('../internals/url-constructor-detection');
+var globalThis = require('../internals/global-this');
+var bind = require('../internals/function-bind-context');
+var uncurryThis = require('../internals/function-uncurry-this');
+var defineBuiltIn = require('../internals/define-built-in');
+var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
+var anInstance = require('../internals/an-instance');
+var hasOwn = require('../internals/has-own-property');
+var assign = require('../internals/object-assign');
+var arrayFrom = require('../internals/array-from');
+var arraySlice = require('../internals/array-slice');
+var codeAt = require('../internals/string-multibyte').codeAt;
+var toASCII = require('../internals/string-punycode-to-ascii');
+var $toString = require('../internals/to-string');
+var setToStringTag = require('../internals/set-to-string-tag');
+var validateArgumentsLength = require('../internals/validate-arguments-length');
+var URLSearchParamsModule = require('../modules/web.url-search-params.constructor');
+var InternalStateModule = require('../internals/internal-state');
+
+var setInternalState = InternalStateModule.set;
+var getInternalURLState = InternalStateModule.getterFor('URL');
+var URLSearchParams = URLSearchParamsModule.URLSearchParams;
+var getInternalSearchParamsState = URLSearchParamsModule.getState;
+
+var NativeURL = globalThis.URL;
+var TypeError = globalThis.TypeError;
+var parseInt = globalThis.parseInt;
+var floor = Math.floor;
+var pow = Math.pow;
+var charAt = uncurryThis(''.charAt);
+var exec = uncurryThis(/./.exec);
+var join = uncurryThis([].join);
+var numberToString = uncurryThis(1.0.toString);
+var pop = uncurryThis([].pop);
+var push = uncurryThis([].push);
+var replace = uncurryThis(''.replace);
+var shift = uncurryThis([].shift);
+var split = uncurryThis(''.split);
+var stringSlice = uncurryThis(''.slice);
+var toLowerCase = uncurryThis(''.toLowerCase);
+var unshift = uncurryThis([].unshift);
+
+var INVALID_AUTHORITY = 'Invalid authority';
+var INVALID_SCHEME = 'Invalid scheme';
+var INVALID_HOST = 'Invalid host';
+var INVALID_PORT = 'Invalid port';
+
+var ALPHA = /[a-z]/i;
+// eslint-disable-next-line regexp/no-obscure-range -- safe
+var ALPHANUMERIC = /[\d+-.a-z]/i;
+var DIGIT = /\d/;
+var HEX_START = /^0x/i;
+var OCT = /^[0-7]+$/;
+var DEC = /^\d+$/;
+var HEX = /^[\da-f]+$/i;
+/* eslint-disable regexp/no-control-character -- safe */
+var FORBIDDEN_HOST_CODE_POINT = /[\0\t\n\r #%/:<>?@[\\\]^|]/;
+var FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\0\t\n\r #/:<>?@[\\\]^|]/;
+var LEADING_C0_CONTROL_OR_SPACE = /^[\u0000-\u0020]+/;
+var TRAILING_C0_CONTROL_OR_SPACE = /(^|[^\u0000-\u0020])[\u0000-\u0020]+$/;
+var TAB_AND_NEW_LINE = /[\t\n\r]/g;
+/* eslint-enable regexp/no-control-character -- safe */
+var EOF;
+
+// https://url.spec.whatwg.org/#ipv4-number-parser
+var parseIPv4 = function (input) {
+  var parts = split(input, '.');
+  var partsLength, numbers, index, part, radix, number, ipv4;
+  if (parts.length && parts[parts.length - 1] === '') {
+    parts.length--;
+  }
+  partsLength = parts.length;
+  if (partsLength > 4) return input;
+  numbers = [];
+  for (index = 0; index < partsLength; index++) {
+    part = parts[index];
+    if (part === '') return input;
+    radix = 10;
+    if (part.length > 1 && charAt(part, 0) === '0') {
+      radix = exec(HEX_START, part) ? 16 : 8;
+      part = stringSlice(part, radix === 8 ? 1 : 2);
+    }
+    if (part === '') {
+      number = 0;
+    } else {
+      if (!exec(radix === 10 ? DEC : radix === 8 ? OCT : HEX, part)) return input;
+      number = parseInt(part, radix);
+    }
+    push(numbers, number);
+  }
+  for (index = 0; index < partsLength; index++) {
+    number = numbers[index];
+    if (index === partsLength - 1) {
+      if (number >= pow(256, 5 - partsLength)) return null;
+    } else if (number > 255) return null;
+  }
+  ipv4 = pop(numbers);
+  for (index = 0; index < numbers.length; index++) {
+    ipv4 += numbers[index] * pow(256, 3 - index);
+  }
+  return ipv4;
+};
+
+// https://url.spec.whatwg.org/#concept-ipv6-parser
+// eslint-disable-next-line max-statements -- TODO
+var parseIPv6 = function (input) {
+  var address = [0, 0, 0, 0, 0, 0, 0, 0];
+  var pieceIndex = 0;
+  var compress = null;
+  var pointer = 0;
+  var value, length, numbersSeen, ipv4Piece, number, swaps, swap;
+
+  var chr = function () {
+    return charAt(input, pointer);
+  };
+
+  if (chr() === ':') {
+    if (charAt(input, 1) !== ':') return;
+    pointer += 2;
+    pieceIndex++;
+    compress = pieceIndex;
+  }
+  while (chr()) {
+    if (pieceIndex === 8) return;
+    if (chr() === ':') {
+      if (compress !== null) return;
+      pointer++;
+      pieceIndex++;
+      compress = pieceIndex;
+      continue;
+    }
+    value = length = 0;
+    while (length < 4 && exec(HEX, chr())) {
+      value = value * 16 + parseInt(chr(), 16);
+      pointer++;
+      length++;
+    }
+    if (chr() === '.') {
+      if (length === 0) return;
+      pointer -= length;
+      if (pieceIndex > 6) return;
+      numbersSeen = 0;
+      while (chr()) {
+        ipv4Piece = null;
+        if (numbersSeen > 0) {
+          if (chr() === '.' && numbersSeen < 4) pointer++;
+          else return;
+        }
+        if (!exec(DIGIT, chr())) return;
+        while (exec(DIGIT, chr())) {
+          number = parseInt(chr(), 10);
+          if (ipv4Piece === null) ipv4Piece = number;
+          else if (ipv4Piece === 0) return;
+          else ipv4Piece = ipv4Piece * 10 + number;
+          if (ipv4Piece > 255) return;
+          pointer++;
+        }
+        address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;
+        numbersSeen++;
+        if (numbersSeen === 2 || numbersSeen === 4) pieceIndex++;
+      }
+      if (numbersSeen !== 4) return;
+      break;
+    } else if (chr() === ':') {
+      pointer++;
+      if (!chr()) return;
+    } else if (chr()) return;
+    address[pieceIndex++] = value;
+  }
+  if (compress !== null) {
+    swaps = pieceIndex - compress;
+    pieceIndex = 7;
+    while (pieceIndex !== 0 && swaps > 0) {
+      swap = address[pieceIndex];
+      address[pieceIndex--] = address[compress + swaps - 1];
+      address[compress + --swaps] = swap;
+    }
+  } else if (pieceIndex !== 8) return;
+  return address;
+};
+
+var findLongestZeroSequence = function (ipv6) {
+  var maxIndex = null;
+  var maxLength = 1;
+  var currStart = null;
+  var currLength = 0;
+  var index = 0;
+  for (; index < 8; index++) {
+    if (ipv6[index] !== 0) {
+      if (currLength > maxLength) {
+        maxIndex = currStart;
+        maxLength = currLength;
+      }
+      currStart = null;
+      currLength = 0;
+    } else {
+      if (currStart === null) currStart = index;
+      ++currLength;
+    }
+  }
+  return currLength > maxLength ? currStart : maxIndex;
+};
+
+// https://url.spec.whatwg.org/#host-serializing
+var serializeHost = function (host) {
+  var result, index, compress, ignore0;
+
+  // ipv4
+  if (typeof host == 'number') {
+    result = [];
+    for (index = 0; index < 4; index++) {
+      unshift(result, host % 256);
+      host = floor(host / 256);
+    }
+    return join(result, '.');
+  }
+
+  // ipv6
+  if (typeof host == 'object') {
+    result = '';
+    compress = findLongestZeroSequence(host);
+    for (index = 0; index < 8; index++) {
+      if (ignore0 && host[index] === 0) continue;
+      if (ignore0) ignore0 = false;
+      if (compress === index) {
+        result += index ? ':' : '::';
+        ignore0 = true;
+      } else {
+        result += numberToString(host[index], 16);
+        if (index < 7) result += ':';
+      }
+    }
+    return '[' + result + ']';
+  }
+
+  return host;
+};
+
+var C0ControlPercentEncodeSet = {};
+var fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {
+  ' ': 1, '"': 1, '<': 1, '>': 1, '`': 1
+});
+var pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {
+  '#': 1, '?': 1, '{': 1, '}': 1
+});
+var userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {
+  '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\': 1, ']': 1, '^': 1, '|': 1
+});
+
+var percentEncode = function (chr, set) {
+  var code = codeAt(chr, 0);
+  return code > 0x20 && code < 0x7F && !hasOwn(set, chr) ? chr : encodeURIComponent(chr);
+};
+
+// https://url.spec.whatwg.org/#special-scheme
+var specialSchemes = {
+  ftp: 21,
+  file: null,
+  http: 80,
+  https: 443,
+  ws: 80,
+  wss: 443
+};
+
+// https://url.spec.whatwg.org/#windows-drive-letter
+var isWindowsDriveLetter = function (string, normalized) {
+  var second;
+  return string.length === 2 && exec(ALPHA, charAt(string, 0))
+    && ((second = charAt(string, 1)) === ':' || (!normalized && second === '|'));
+};
+
+// https://url.spec.whatwg.org/#start-with-a-windows-drive-letter
+var startsWithWindowsDriveLetter = function (string) {
+  var third;
+  return string.length > 1 && isWindowsDriveLetter(stringSlice(string, 0, 2)) && (
+    string.length === 2 ||
+    ((third = charAt(string, 2)) === '/' || third === '\\' || third === '?' || third === '#')
+  );
+};
+
+// https://url.spec.whatwg.org/#single-dot-path-segment
+var isSingleDot = function (segment) {
+  return segment === '.' || toLowerCase(segment) === '%2e';
+};
+
+// https://url.spec.whatwg.org/#double-dot-path-segment
+var isDoubleDot = function (segment) {
+  segment = toLowerCase(segment);
+  return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';
+};
+
+// States:
+var SCHEME_START = {};
+var SCHEME = {};
+var NO_SCHEME = {};
+var SPECIAL_RELATIVE_OR_AUTHORITY = {};
+var PATH_OR_AUTHORITY = {};
+var RELATIVE = {};
+var RELATIVE_SLASH = {};
+var SPECIAL_AUTHORITY_SLASHES = {};
+var SPECIAL_AUTHORITY_IGNORE_SLASHES = {};
+var AUTHORITY = {};
+var HOST = {};
+var HOSTNAME = {};
+var PORT = {};
+var FILE = {};
+var FILE_SLASH = {};
+var FILE_HOST = {};
+var PATH_START = {};
+var PATH = {};
+var CANNOT_BE_A_BASE_URL_PATH = {};
+var QUERY = {};
+var FRAGMENT = {};
+
+var URLState = function (url, isBase, base) {
+  var urlString = $toString(url);
+  var baseState, failure, searchParams;
+  if (isBase) {
+    failure = this.parse(urlString);
+    if (failure) throw new TypeError(failure);
+    this.searchParams = null;
+  } else {
+    if (base !== undefined) baseState = new URLState(base, true);
+    failure = this.parse(urlString, null, baseState);
+    if (failure) throw new TypeError(failure);
+    searchParams = getInternalSearchParamsState(new URLSearchParams());
+    searchParams.bindURL(this);
+    this.searchParams = searchParams;
+  }
+};
+
+URLState.prototype = {
+  type: 'URL',
+  // https://url.spec.whatwg.org/#url-parsing
+  // eslint-disable-next-line max-statements -- TODO
+  parse: function (input, stateOverride, base) {
+    var url = this;
+    var state = stateOverride || SCHEME_START;
+    var pointer = 0;
+    var buffer = '';
+    var seenAt = false;
+    var seenBracket = false;
+    var seenPasswordToken = false;
+    var codePoints, chr, bufferCodePoints, failure;
+
+    input = $toString(input);
+
+    if (!stateOverride) {
+      url.scheme = '';
+      url.username = '';
+      url.password = '';
+      url.host = null;
+      url.port = null;
+      url.path = [];
+      url.query = null;
+      url.fragment = null;
+      url.cannotBeABaseURL = false;
+      input = replace(input, LEADING_C0_CONTROL_OR_SPACE, '');
+      input = replace(input, TRAILING_C0_CONTROL_OR_SPACE, '$1');
+    }
+
+    input = replace(input, TAB_AND_NEW_LINE, '');
+
+    codePoints = arrayFrom(input);
+
+    while (pointer <= codePoints.length) {
+      chr = codePoints[pointer];
+      switch (state) {
+        case SCHEME_START:
+          if (chr && exec(ALPHA, chr)) {
+            buffer += toLowerCase(chr);
+            state = SCHEME;
+          } else if (!stateOverride) {
+            state = NO_SCHEME;
+            continue;
+          } else return INVALID_SCHEME;
+          break;
+
+        case SCHEME:
+          if (chr && (exec(ALPHANUMERIC, chr) || chr === '+' || chr === '-' || chr === '.')) {
+            buffer += toLowerCase(chr);
+          } else if (chr === ':') {
+            if (stateOverride && (
+              (url.isSpecial() !== hasOwn(specialSchemes, buffer)) ||
+              (buffer === 'file' && (url.includesCredentials() || url.port !== null)) ||
+              (url.scheme === 'file' && !url.host)
+            )) return;
+            url.scheme = buffer;
+            if (stateOverride) {
+              if (url.isSpecial() && specialSchemes[url.scheme] === url.port) url.port = null;
+              return;
+            }
+            buffer = '';
+            if (url.scheme === 'file') {
+              state = FILE;
+            } else if (url.isSpecial() && base && base.scheme === url.scheme) {
+              state = SPECIAL_RELATIVE_OR_AUTHORITY;
+            } else if (url.isSpecial()) {
+              state = SPECIAL_AUTHORITY_SLASHES;
+            } else if (codePoints[pointer + 1] === '/') {
+              state = PATH_OR_AUTHORITY;
+              pointer++;
+            } else {
+              url.cannotBeABaseURL = true;
+              push(url.path, '');
+              state = CANNOT_BE_A_BASE_URL_PATH;
+            }
+          } else if (!stateOverride) {
+            buffer = '';
+            state = NO_SCHEME;
+            pointer = 0;
+            continue;
+          } else return INVALID_SCHEME;
+          break;
+
+        case NO_SCHEME:
+          if (!base || (base.cannotBeABaseURL && chr !== '#')) return INVALID_SCHEME;
+          if (base.cannotBeABaseURL && chr === '#') {
+            url.scheme = base.scheme;
+            url.path = arraySlice(base.path);
+            url.query = base.query;
+            url.fragment = '';
+            url.cannotBeABaseURL = true;
+            state = FRAGMENT;
+            break;
+          }
+          state = base.scheme === 'file' ? FILE : RELATIVE;
+          continue;
+
+        case SPECIAL_RELATIVE_OR_AUTHORITY:
+          if (chr === '/' && codePoints[pointer + 1] === '/') {
+            state = SPECIAL_AUTHORITY_IGNORE_SLASHES;
+            pointer++;
+          } else {
+            state = RELATIVE;
+            continue;
+          } break;
+
+        case PATH_OR_AUTHORITY:
+          if (chr === '/') {
+            state = AUTHORITY;
+            break;
+          } else {
+            state = PATH;
+            continue;
+          }
+
+        case RELATIVE:
+          url.scheme = base.scheme;
+          if (chr === EOF) {
+            url.username = base.username;
+            url.password = base.password;
+            url.host = base.host;
+            url.port = base.port;
+            url.path = arraySlice(base.path);
+            url.query = base.query;
+          } else if (chr === '/' || (chr === '\\' && url.isSpecial())) {
+            state = RELATIVE_SLASH;
+          } else if (chr === '?') {
+            url.username = base.username;
+            url.password = base.password;
+            url.host = base.host;
+            url.port = base.port;
+            url.path = arraySlice(base.path);
+            url.query = '';
+            state = QUERY;
+          } else if (chr === '#') {
+            url.username = base.username;
+            url.password = base.password;
+            url.host = base.host;
+            url.port = base.port;
+            url.path = arraySlice(base.path);
+            url.query = base.query;
+            url.fragment = '';
+            state = FRAGMENT;
+          } else {
+            url.username = base.username;
+            url.password = base.password;
+            url.host = base.host;
+            url.port = base.port;
+            url.path = arraySlice(base.path);
+            url.path.length--;
+            state = PATH;
+            continue;
+          } break;
+
+        case RELATIVE_SLASH:
+          if (url.isSpecial() && (chr === '/' || chr === '\\')) {
+            state = SPECIAL_AUTHORITY_IGNORE_SLASHES;
+          } else if (chr === '/') {
+            state = AUTHORITY;
+          } else {
+            url.username = base.username;
+            url.password = base.password;
+            url.host = base.host;
+            url.port = base.port;
+            state = PATH;
+            continue;
+          } break;
+
+        case SPECIAL_AUTHORITY_SLASHES:
+          state = SPECIAL_AUTHORITY_IGNORE_SLASHES;
+          if (chr !== '/' || charAt(buffer, pointer + 1) !== '/') continue;
+          pointer++;
+          break;
+
+        case SPECIAL_AUTHORITY_IGNORE_SLASHES:
+          if (chr !== '/' && chr !== '\\') {
+            state = AUTHORITY;
+            continue;
+          } break;
+
+        case AUTHORITY:
+          if (chr === '@') {
+            if (seenAt) buffer = '%40' + buffer;
+            seenAt = true;
+            bufferCodePoints = arrayFrom(buffer);
+            for (var i = 0; i < bufferCodePoints.length; i++) {
+              var codePoint = bufferCodePoints[i];
+              if (codePoint === ':' && !seenPasswordToken) {
+                seenPasswordToken = true;
+                continue;
+              }
+              var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);
+              if (seenPasswordToken) url.password += encodedCodePoints;
+              else url.username += encodedCodePoints;
+            }
+            buffer = '';
+          } else if (
+            chr === EOF || chr === '/' || chr === '?' || chr === '#' ||
+            (chr === '\\' && url.isSpecial())
+          ) {
+            if (seenAt && buffer === '') return INVALID_AUTHORITY;
+            pointer -= arrayFrom(buffer).length + 1;
+            buffer = '';
+            state = HOST;
+          } else buffer += chr;
+          break;
+
+        case HOST:
+        case HOSTNAME:
+          if (stateOverride && url.scheme === 'file') {
+            state = FILE_HOST;
+            continue;
+          } else if (chr === ':' && !seenBracket) {
+            if (buffer === '') return INVALID_HOST;
+            failure = url.parseHost(buffer);
+            if (failure) return failure;
+            buffer = '';
+            state = PORT;
+            if (stateOverride === HOSTNAME) return;
+          } else if (
+            chr === EOF || chr === '/' || chr === '?' || chr === '#' ||
+            (chr === '\\' && url.isSpecial())
+          ) {
+            if (url.isSpecial() && buffer === '') return INVALID_HOST;
+            if (stateOverride && buffer === '' && (url.includesCredentials() || url.port !== null)) return;
+            failure = url.parseHost(buffer);
+            if (failure) return failure;
+            buffer = '';
+            state = PATH_START;
+            if (stateOverride) return;
+            continue;
+          } else {
+            if (chr === '[') seenBracket = true;
+            else if (chr === ']') seenBracket = false;
+            buffer += chr;
+          } break;
+
+        case PORT:
+          if (exec(DIGIT, chr)) {
+            buffer += chr;
+          } else if (
+            chr === EOF || chr === '/' || chr === '?' || chr === '#' ||
+            (chr === '\\' && url.isSpecial()) ||
+            stateOverride
+          ) {
+            if (buffer !== '') {
+              var port = parseInt(buffer, 10);
+              if (port > 0xFFFF) return INVALID_PORT;
+              url.port = (url.isSpecial() && port === specialSchemes[url.scheme]) ? null : port;
+              buffer = '';
+            }
+            if (stateOverride) return;
+            state = PATH_START;
+            continue;
+          } else return INVALID_PORT;
+          break;
+
+        case FILE:
+          url.scheme = 'file';
+          if (chr === '/' || chr === '\\') state = FILE_SLASH;
+          else if (base && base.scheme === 'file') {
+            switch (chr) {
+              case EOF:
+                url.host = base.host;
+                url.path = arraySlice(base.path);
+                url.query = base.query;
+                break;
+              case '?':
+                url.host = base.host;
+                url.path = arraySlice(base.path);
+                url.query = '';
+                state = QUERY;
+                break;
+              case '#':
+                url.host = base.host;
+                url.path = arraySlice(base.path);
+                url.query = base.query;
+                url.fragment = '';
+                state = FRAGMENT;
+                break;
+              default:
+                if (!startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {
+                  url.host = base.host;
+                  url.path = arraySlice(base.path);
+                  url.shortenPath();
+                }
+                state = PATH;
+                continue;
+            }
+          } else {
+            state = PATH;
+            continue;
+          } break;
+
+        case FILE_SLASH:
+          if (chr === '/' || chr === '\\') {
+            state = FILE_HOST;
+            break;
+          }
+          if (base && base.scheme === 'file' && !startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {
+            if (isWindowsDriveLetter(base.path[0], true)) push(url.path, base.path[0]);
+            else url.host = base.host;
+          }
+          state = PATH;
+          continue;
+
+        case FILE_HOST:
+          if (chr === EOF || chr === '/' || chr === '\\' || chr === '?' || chr === '#') {
+            if (!stateOverride && isWindowsDriveLetter(buffer)) {
+              state = PATH;
+            } else if (buffer === '') {
+              url.host = '';
+              if (stateOverride) return;
+              state = PATH_START;
+            } else {
+              failure = url.parseHost(buffer);
+              if (failure) return failure;
+              if (url.host === 'localhost') url.host = '';
+              if (stateOverride) return;
+              buffer = '';
+              state = PATH_START;
+            } continue;
+          } else buffer += chr;
+          break;
+
+        case PATH_START:
+          if (url.isSpecial()) {
+            state = PATH;
+            if (chr !== '/' && chr !== '\\') continue;
+          } else if (!stateOverride && chr === '?') {
+            url.query = '';
+            state = QUERY;
+          } else if (!stateOverride && chr === '#') {
+            url.fragment = '';
+            state = FRAGMENT;
+          } else if (chr !== EOF) {
+            state = PATH;
+            if (chr !== '/') continue;
+          } break;
+
+        case PATH:
+          if (
+            chr === EOF || chr === '/' ||
+            (chr === '\\' && url.isSpecial()) ||
+            (!stateOverride && (chr === '?' || chr === '#'))
+          ) {
+            if (isDoubleDot(buffer)) {
+              url.shortenPath();
+              if (chr !== '/' && !(chr === '\\' && url.isSpecial())) {
+                push(url.path, '');
+              }
+            } else if (isSingleDot(buffer)) {
+              if (chr !== '/' && !(chr === '\\' && url.isSpecial())) {
+                push(url.path, '');
+              }
+            } else {
+              if (url.scheme === 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {
+                if (url.host) url.host = '';
+                buffer = charAt(buffer, 0) + ':'; // normalize windows drive letter
+              }
+              push(url.path, buffer);
+            }
+            buffer = '';
+            if (url.scheme === 'file' && (chr === EOF || chr === '?' || chr === '#')) {
+              while (url.path.length > 1 && url.path[0] === '') {
+                shift(url.path);
+              }
+            }
+            if (chr === '?') {
+              url.query = '';
+              state = QUERY;
+            } else if (chr === '#') {
+              url.fragment = '';
+              state = FRAGMENT;
+            }
+          } else {
+            buffer += percentEncode(chr, pathPercentEncodeSet);
+          } break;
+
+        case CANNOT_BE_A_BASE_URL_PATH:
+          if (chr === '?') {
+            url.query = '';
+            state = QUERY;
+          } else if (chr === '#') {
+            url.fragment = '';
+            state = FRAGMENT;
+          } else if (chr !== EOF) {
+            url.path[0] += percentEncode(chr, C0ControlPercentEncodeSet);
+          } break;
+
+        case QUERY:
+          if (!stateOverride && chr === '#') {
+            url.fragment = '';
+            state = FRAGMENT;
+          } else if (chr !== EOF) {
+            if (chr === "'" && url.isSpecial()) url.query += '%27';
+            else if (chr === '#') url.query += '%23';
+            else url.query += percentEncode(chr, C0ControlPercentEncodeSet);
+          } break;
+
+        case FRAGMENT:
+          if (chr !== EOF) url.fragment += percentEncode(chr, fragmentPercentEncodeSet);
+          break;
+      }
+
+      pointer++;
+    }
+  },
+  // https://url.spec.whatwg.org/#host-parsing
+  parseHost: function (input) {
+    var result, codePoints, index;
+    if (charAt(input, 0) === '[') {
+      if (charAt(input, input.length - 1) !== ']') return INVALID_HOST;
+      result = parseIPv6(stringSlice(input, 1, -1));
+      if (!result) return INVALID_HOST;
+      this.host = result;
+    // opaque host
+    } else if (!this.isSpecial()) {
+      if (exec(FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT, input)) return INVALID_HOST;
+      result = '';
+      codePoints = arrayFrom(input);
+      for (index = 0; index < codePoints.length; index++) {
+        result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);
+      }
+      this.host = result;
+    } else {
+      input = toASCII(input);
+      if (exec(FORBIDDEN_HOST_CODE_POINT, input)) return INVALID_HOST;
+      result = parseIPv4(input);
+      if (result === null) return INVALID_HOST;
+      this.host = result;
+    }
+  },
+  // https://url.spec.whatwg.org/#cannot-have-a-username-password-port
+  cannotHaveUsernamePasswordPort: function () {
+    return !this.host || this.cannotBeABaseURL || this.scheme === 'file';
+  },
+  // https://url.spec.whatwg.org/#include-credentials
+  includesCredentials: function () {
+    return this.username !== '' || this.password !== '';
+  },
+  // https://url.spec.whatwg.org/#is-special
+  isSpecial: function () {
+    return hasOwn(specialSchemes, this.scheme);
+  },
+  // https://url.spec.whatwg.org/#shorten-a-urls-path
+  shortenPath: function () {
+    var path = this.path;
+    var pathSize = path.length;
+    if (pathSize && (this.scheme !== 'file' || pathSize !== 1 || !isWindowsDriveLetter(path[0], true))) {
+      path.length--;
+    }
+  },
+  // https://url.spec.whatwg.org/#concept-url-serializer
+  serialize: function () {
+    var url = this;
+    var scheme = url.scheme;
+    var username = url.username;
+    var password = url.password;
+    var host = url.host;
+    var port = url.port;
+    var path = url.path;
+    var query = url.query;
+    var fragment = url.fragment;
+    var output = scheme + ':';
+    if (host !== null) {
+      output += '//';
+      if (url.includesCredentials()) {
+        output += username + (password ? ':' + password : '') + '@';
+      }
+      output += serializeHost(host);
+      if (port !== null) output += ':' + port;
+    } else if (scheme === 'file') output += '//';
+    output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';
+    if (query !== null) output += '?' + query;
+    if (fragment !== null) output += '#' + fragment;
+    return output;
+  },
+  // https://url.spec.whatwg.org/#dom-url-href
+  setHref: function (href) {
+    var failure = this.parse(href);
+    if (failure) throw new TypeError(failure);
+    this.searchParams.update();
+  },
+  // https://url.spec.whatwg.org/#dom-url-origin
+  getOrigin: function () {
+    var scheme = this.scheme;
+    var port = this.port;
+    if (scheme === 'blob') try {
+      return new URLConstructor(scheme.path[0]).origin;
+    } catch (error) {
+      return 'null';
+    }
+    if (scheme === 'file' || !this.isSpecial()) return 'null';
+    return scheme + '://' + serializeHost(this.host) + (port !== null ? ':' + port : '');
+  },
+  // https://url.spec.whatwg.org/#dom-url-protocol
+  getProtocol: function () {
+    return this.scheme + ':';
+  },
+  setProtocol: function (protocol) {
+    this.parse($toString(protocol) + ':', SCHEME_START);
+  },
+  // https://url.spec.whatwg.org/#dom-url-username
+  getUsername: function () {
+    return this.username;
+  },
+  setUsername: function (username) {
+    var codePoints = arrayFrom($toString(username));
+    if (this.cannotHaveUsernamePasswordPort()) return;
+    this.username = '';
+    for (var i = 0; i < codePoints.length; i++) {
+      this.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);
+    }
+  },
+  // https://url.spec.whatwg.org/#dom-url-password
+  getPassword: function () {
+    return this.password;
+  },
+  setPassword: function (password) {
+    var codePoints = arrayFrom($toString(password));
+    if (this.cannotHaveUsernamePasswordPort()) return;
+    this.password = '';
+    for (var i = 0; i < codePoints.length; i++) {
+      this.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);
+    }
+  },
+  // https://url.spec.whatwg.org/#dom-url-host
+  getHost: function () {
+    var host = this.host;
+    var port = this.port;
+    return host === null ? ''
+      : port === null ? serializeHost(host)
+      : serializeHost(host) + ':' + port;
+  },
+  setHost: function (host) {
+    if (this.cannotBeABaseURL) return;
+    this.parse(host, HOST);
+  },
+  // https://url.spec.whatwg.org/#dom-url-hostname
+  getHostname: function () {
+    var host = this.host;
+    return host === null ? '' : serializeHost(host);
+  },
+  setHostname: function (hostname) {
+    if (this.cannotBeABaseURL) return;
+    this.parse(hostname, HOSTNAME);
+  },
+  // https://url.spec.whatwg.org/#dom-url-port
+  getPort: function () {
+    var port = this.port;
+    return port === null ? '' : $toString(port);
+  },
+  setPort: function (port) {
+    if (this.cannotHaveUsernamePasswordPort()) return;
+    port = $toString(port);
+    if (port === '') this.port = null;
+    else this.parse(port, PORT);
+  },
+  // https://url.spec.whatwg.org/#dom-url-pathname
+  getPathname: function () {
+    var path = this.path;
+    return this.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';
+  },
+  setPathname: function (pathname) {
+    if (this.cannotBeABaseURL) return;
+    this.path = [];
+    this.parse(pathname, PATH_START);
+  },
+  // https://url.spec.whatwg.org/#dom-url-search
+  getSearch: function () {
+    var query = this.query;
+    return query ? '?' + query : '';
+  },
+  setSearch: function (search) {
+    search = $toString(search);
+    if (search === '') {
+      this.query = null;
+    } else {
+      if (charAt(search, 0) === '?') search = stringSlice(search, 1);
+      this.query = '';
+      this.parse(search, QUERY);
+    }
+    this.searchParams.update();
+  },
+  // https://url.spec.whatwg.org/#dom-url-searchparams
+  getSearchParams: function () {
+    return this.searchParams.facade;
+  },
+  // https://url.spec.whatwg.org/#dom-url-hash
+  getHash: function () {
+    var fragment = this.fragment;
+    return fragment ? '#' + fragment : '';
+  },
+  setHash: function (hash) {
+    hash = $toString(hash);
+    if (hash === '') {
+      this.fragment = null;
+      return;
+    }
+    if (charAt(hash, 0) === '#') hash = stringSlice(hash, 1);
+    this.fragment = '';
+    this.parse(hash, FRAGMENT);
+  },
+  update: function () {
+    this.query = this.searchParams.serialize() || null;
+  }
+};
+
+// `URL` constructor
+// https://url.spec.whatwg.org/#url-class
+var URLConstructor = function URL(url /* , base */) {
+  var that = anInstance(this, URLPrototype);
+  var base = validateArgumentsLength(arguments.length, 1) > 1 ? arguments[1] : undefined;
+  var state = setInternalState(that, new URLState(url, false, base));
+  if (!DESCRIPTORS) {
+    that.href = state.serialize();
+    that.origin = state.getOrigin();
+    that.protocol = state.getProtocol();
+    that.username = state.getUsername();
+    that.password = state.getPassword();
+    that.host = state.getHost();
+    that.hostname = state.getHostname();
+    that.port = state.getPort();
+    that.pathname = state.getPathname();
+    that.search = state.getSearch();
+    that.searchParams = state.getSearchParams();
+    that.hash = state.getHash();
+  }
+};
+
+var URLPrototype = URLConstructor.prototype;
+
+var accessorDescriptor = function (getter, setter) {
+  return {
+    get: function () {
+      return getInternalURLState(this)[getter]();
+    },
+    set: setter && function (value) {
+      return getInternalURLState(this)[setter](value);
+    },
+    configurable: true,
+    enumerable: true
+  };
+};
+
+if (DESCRIPTORS) {
+  // `URL.prototype.href` accessors pair
+  // https://url.spec.whatwg.org/#dom-url-href
+  defineBuiltInAccessor(URLPrototype, 'href', accessorDescriptor('serialize', 'setHref'));
+  // `URL.prototype.origin` getter
+  // https://url.spec.whatwg.org/#dom-url-origin
+  defineBuiltInAccessor(URLPrototype, 'origin', accessorDescriptor('getOrigin'));
+  // `URL.prototype.protocol` accessors pair
+  // https://url.spec.whatwg.org/#dom-url-protocol
+  defineBuiltInAccessor(URLPrototype, 'protocol', accessorDescriptor('getProtocol', 'setProtocol'));
+  // `URL.prototype.username` accessors pair
+  // https://url.spec.whatwg.org/#dom-url-username
+  defineBuiltInAccessor(URLPrototype, 'username', accessorDescriptor('getUsername', 'setUsername'));
+  // `URL.prototype.password` accessors pair
+  // https://url.spec.whatwg.org/#dom-url-password
+  defineBuiltInAccessor(URLPrototype, 'password', accessorDescriptor('getPassword', 'setPassword'));
+  // `URL.prototype.host` accessors pair
+  // https://url.spec.whatwg.org/#dom-url-host
+  defineBuiltInAccessor(URLPrototype, 'host', accessorDescriptor('getHost', 'setHost'));
+  // `URL.prototype.hostname` accessors pair
+  // https://url.spec.whatwg.org/#dom-url-hostname
+  defineBuiltInAccessor(URLPrototype, 'hostname', accessorDescriptor('getHostname', 'setHostname'));
+  // `URL.prototype.port` accessors pair
+  // https://url.spec.whatwg.org/#dom-url-port
+  defineBuiltInAccessor(URLPrototype, 'port', accessorDescriptor('getPort', 'setPort'));
+  // `URL.prototype.pathname` accessors pair
+  // https://url.spec.whatwg.org/#dom-url-pathname
+  defineBuiltInAccessor(URLPrototype, 'pathname', accessorDescriptor('getPathname', 'setPathname'));
+  // `URL.prototype.search` accessors pair
+  // https://url.spec.whatwg.org/#dom-url-search
+  defineBuiltInAccessor(URLPrototype, 'search', accessorDescriptor('getSearch', 'setSearch'));
+  // `URL.prototype.searchParams` getter
+  // https://url.spec.whatwg.org/#dom-url-searchparams
+  defineBuiltInAccessor(URLPrototype, 'searchParams', accessorDescriptor('getSearchParams'));
+  // `URL.prototype.hash` accessors pair
+  // https://url.spec.whatwg.org/#dom-url-hash
+  defineBuiltInAccessor(URLPrototype, 'hash', accessorDescriptor('getHash', 'setHash'));
+}
+
+// `URL.prototype.toJSON` method
+// https://url.spec.whatwg.org/#dom-url-tojson
+defineBuiltIn(URLPrototype, 'toJSON', function toJSON() {
+  return getInternalURLState(this).serialize();
+}, { enumerable: true });
+
+// `URL.prototype.toString` method
+// https://url.spec.whatwg.org/#URL-stringification-behavior
+defineBuiltIn(URLPrototype, 'toString', function toString() {
+  return getInternalURLState(this).serialize();
+}, { enumerable: true });
+
+if (NativeURL) {
+  var nativeCreateObjectURL = NativeURL.createObjectURL;
+  var nativeRevokeObjectURL = NativeURL.revokeObjectURL;
+  // `URL.createObjectURL` method
+  // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL
+  if (nativeCreateObjectURL) defineBuiltIn(URLConstructor, 'createObjectURL', bind(nativeCreateObjectURL, NativeURL));
+  // `URL.revokeObjectURL` method
+  // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL
+  if (nativeRevokeObjectURL) defineBuiltIn(URLConstructor, 'revokeObjectURL', bind(nativeRevokeObjectURL, NativeURL));
+}
+
+setToStringTag(URLConstructor, 'URL');
+
+$({ global: true, constructor: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {
+  URL: URLConstructor
+});
diff --git a/node_modules/core-js/modules/web.url.js b/node_modules/core-js/modules/web.url.js
new file mode 100644
index 0000000..5ec16d1
--- /dev/null
+++ b/node_modules/core-js/modules/web.url.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove this module from `core-js@4` since it's replaced to module below
+require('../modules/web.url.constructor');
diff --git a/node_modules/core-js/modules/web.url.parse.js b/node_modules/core-js/modules/web.url.parse.js
new file mode 100644
index 0000000..1a89d6f
--- /dev/null
+++ b/node_modules/core-js/modules/web.url.parse.js
@@ -0,0 +1,23 @@
+'use strict';
+var $ = require('../internals/export');
+var getBuiltIn = require('../internals/get-built-in');
+var validateArgumentsLength = require('../internals/validate-arguments-length');
+var toString = require('../internals/to-string');
+var USE_NATIVE_URL = require('../internals/url-constructor-detection');
+
+var URL = getBuiltIn('URL');
+
+// `URL.parse` method
+// https://url.spec.whatwg.org/#dom-url-canparse
+$({ target: 'URL', stat: true, forced: !USE_NATIVE_URL }, {
+  parse: function parse(url) {
+    var length = validateArgumentsLength(arguments.length, 1);
+    var urlString = toString(url);
+    var base = length < 2 || arguments[1] === undefined ? undefined : toString(arguments[1]);
+    try {
+      return new URL(urlString, base);
+    } catch (error) {
+      return null;
+    }
+  }
+});
diff --git a/node_modules/core-js/modules/web.url.to-json.js b/node_modules/core-js/modules/web.url.to-json.js
new file mode 100644
index 0000000..f4f41c3
--- /dev/null
+++ b/node_modules/core-js/modules/web.url.to-json.js
@@ -0,0 +1,11 @@
+'use strict';
+var $ = require('../internals/export');
+var call = require('../internals/function-call');
+
+// `URL.prototype.toJSON` method
+// https://url.spec.whatwg.org/#dom-url-tojson
+$({ target: 'URL', proto: true, enumerable: true }, {
+  toJSON: function toJSON() {
+    return call(URL.prototype.toString, this);
+  }
+});
diff --git a/node_modules/core-js/package.json b/node_modules/core-js/package.json
new file mode 100644
index 0000000..a010e73
--- /dev/null
+++ b/node_modules/core-js/package.json
@@ -0,0 +1,73 @@
+{
+  "name": "core-js",
+  "version": "3.41.0",
+  "type": "commonjs",
+  "description": "Standard library",
+  "keywords": [
+    "ES3",
+    "ES5",
+    "ES6",
+    "ES7",
+    "ES2015",
+    "ES2016",
+    "ES2017",
+    "ES2018",
+    "ES2019",
+    "ES2020",
+    "ES2021",
+    "ES2022",
+    "ES2023",
+    "ES2024",
+    "ECMAScript 3",
+    "ECMAScript 5",
+    "ECMAScript 6",
+    "ECMAScript 7",
+    "ECMAScript 2015",
+    "ECMAScript 2016",
+    "ECMAScript 2017",
+    "ECMAScript 2018",
+    "ECMAScript 2019",
+    "ECMAScript 2020",
+    "ECMAScript 2021",
+    "ECMAScript 2022",
+    "ECMAScript 2023",
+    "ECMAScript 2024",
+    "Map",
+    "Set",
+    "WeakMap",
+    "WeakSet",
+    "TypedArray",
+    "Promise",
+    "Observable",
+    "Symbol",
+    "Iterator",
+    "AsyncIterator",
+    "URL",
+    "URLSearchParams",
+    "queueMicrotask",
+    "setImmediate",
+    "structuredClone",
+    "polyfill",
+    "ponyfill",
+    "shim"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/zloirock/core-js.git",
+    "directory": "packages/core-js"
+  },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/core-js"
+  },
+  "license": "MIT",
+  "author": {
+    "name": "Denis Pushkarev",
+    "email": "zloirock@zloirock.ru",
+    "url": "http://zloirock.ru"
+  },
+  "main": "index.js",
+  "scripts": {
+    "postinstall": "node -e \"try{require('./postinstall')}catch(e){}\""
+  }
+}
diff --git a/node_modules/core-js/postinstall.js b/node_modules/core-js/postinstall.js
new file mode 100644
index 0000000..a75132c
--- /dev/null
+++ b/node_modules/core-js/postinstall.js
@@ -0,0 +1,62 @@
+'use strict';
+/* eslint-disable node/no-sync -- avoiding overcomplicating */
+/* eslint-disable unicorn/prefer-node-protocol -- ancient env possible */
+var fs = require('fs');
+var os = require('os');
+var path = require('path');
+
+var env = process.env;
+var ADBLOCK = is(env.ADBLOCK);
+var COLOR = is(env.npm_config_color);
+var DISABLE_OPENCOLLECTIVE = is(env.DISABLE_OPENCOLLECTIVE);
+var SILENT = ['silent', 'error', 'warn'].indexOf(env.npm_config_loglevel) !== -1;
+var OPEN_SOURCE_CONTRIBUTOR = is(env.OPEN_SOURCE_CONTRIBUTOR);
+var MINUTE = 60 * 1000;
+
+// you could add a PR with an env variable for your CI detection
+var CI = [
+  'BUILD_NUMBER',
+  'CI',
+  'CONTINUOUS_INTEGRATION',
+  'DRONE',
+  'RUN_ID'
+].some(function (it) { return is(env[it]); });
+
+var BANNER = '\u001B[96mThank you for using core-js (\u001B[94m https://github.com/zloirock/core-js \u001B[96m) for polyfilling JavaScript standard library!\u001B[0m\n\n' +
+             '\u001B[96mThe project needs your help! Please consider supporting core-js:\u001B[0m\n' +
+             '\u001B[96m>\u001B[94m https://opencollective.com/core-js \u001B[0m\n' +
+             '\u001B[96m>\u001B[94m https://patreon.com/zloirock \u001B[0m\n' +
+             '\u001B[96m>\u001B[94m https://boosty.to/zloirock \u001B[0m\n' +
+             '\u001B[96m>\u001B[94m bitcoin: bc1qlea7544qtsmj2rayg0lthvza9fau63ux0fstcz \u001B[0m\n\n' +
+             '\u001B[96mI highly recommend reading this:\u001B[94m https://github.com/zloirock/core-js/blob/master/docs/2023-02-14-so-whats-next.md \u001B[96m\u001B[0m\n';
+
+function is(it) {
+  return !!it && it !== '0' && it !== 'false';
+}
+
+function isBannerRequired() {
+  if (ADBLOCK || CI || DISABLE_OPENCOLLECTIVE || SILENT || OPEN_SOURCE_CONTRIBUTOR) return false;
+  var file = path.join(os.tmpdir(), 'core-js-banners');
+  var banners = [];
+  try {
+    var DELTA = Date.now() - fs.statSync(file).mtime;
+    if (DELTA >= 0 && DELTA < MINUTE * 3) {
+      banners = JSON.parse(fs.readFileSync(file));
+      if (banners.indexOf(BANNER) !== -1) return false;
+    }
+  } catch (error) {
+    banners = [];
+  }
+  try {
+    banners.push(BANNER);
+    fs.writeFileSync(file, JSON.stringify(banners), 'utf8');
+  } catch (error) { /* empty */ }
+  return true;
+}
+
+function showBanner() {
+  // eslint-disable-next-line no-console, regexp/no-control-character -- output
+  console.log(COLOR ? BANNER : BANNER.replace(/\u001B\[\d+m/g, ''));
+}
+
+if (isBannerRequired()) showBanner();
diff --git a/node_modules/core-js/proposals/accessible-object-hasownproperty.js b/node_modules/core-js/proposals/accessible-object-hasownproperty.js
new file mode 100644
index 0000000..aad0988
--- /dev/null
+++ b/node_modules/core-js/proposals/accessible-object-hasownproperty.js
@@ -0,0 +1,3 @@
+'use strict';
+// https://github.com/tc39/proposal-accessible-object-hasownproperty
+require('../modules/esnext.object.has-own');
diff --git a/node_modules/core-js/proposals/array-buffer-base64.js b/node_modules/core-js/proposals/array-buffer-base64.js
new file mode 100644
index 0000000..e461688
--- /dev/null
+++ b/node_modules/core-js/proposals/array-buffer-base64.js
@@ -0,0 +1,8 @@
+'use strict';
+// https://github.com/tc39/proposal-arraybuffer-base64
+require('../modules/esnext.uint8-array.from-base64');
+require('../modules/esnext.uint8-array.from-hex');
+require('../modules/esnext.uint8-array.set-from-base64');
+require('../modules/esnext.uint8-array.set-from-hex');
+require('../modules/esnext.uint8-array.to-base64');
+require('../modules/esnext.uint8-array.to-hex');
diff --git a/node_modules/core-js/proposals/array-buffer-transfer.js b/node_modules/core-js/proposals/array-buffer-transfer.js
new file mode 100644
index 0000000..409da3d
--- /dev/null
+++ b/node_modules/core-js/proposals/array-buffer-transfer.js
@@ -0,0 +1,5 @@
+'use strict';
+// https://github.com/tc39/proposal-arraybuffer-transfer
+require('../modules/esnext.array-buffer.detached');
+require('../modules/esnext.array-buffer.transfer');
+require('../modules/esnext.array-buffer.transfer-to-fixed-length');
diff --git a/node_modules/core-js/proposals/array-filtering-stage-1.js b/node_modules/core-js/proposals/array-filtering-stage-1.js
new file mode 100644
index 0000000..de07b81
--- /dev/null
+++ b/node_modules/core-js/proposals/array-filtering-stage-1.js
@@ -0,0 +1,4 @@
+'use strict';
+// https://github.com/tc39/proposal-array-filtering
+require('../modules/esnext.array.filter-reject');
+require('../modules/esnext.typed-array.filter-reject');
diff --git a/node_modules/core-js/proposals/array-filtering.js b/node_modules/core-js/proposals/array-filtering.js
new file mode 100644
index 0000000..624b1a9
--- /dev/null
+++ b/node_modules/core-js/proposals/array-filtering.js
@@ -0,0 +1,8 @@
+'use strict';
+// https://github.com/tc39/proposal-array-filtering
+// TODO: Remove from `core-js@4`
+require('../modules/esnext.array.filter-out');
+require('../modules/esnext.array.filter-reject');
+// TODO: Remove from `core-js@4`
+require('../modules/esnext.typed-array.filter-out');
+require('../modules/esnext.typed-array.filter-reject');
diff --git a/node_modules/core-js/proposals/array-find-from-last.js b/node_modules/core-js/proposals/array-find-from-last.js
new file mode 100644
index 0000000..a60804b
--- /dev/null
+++ b/node_modules/core-js/proposals/array-find-from-last.js
@@ -0,0 +1,6 @@
+'use strict';
+// https://github.com/tc39/proposal-array-find-from-last/
+require('../modules/esnext.array.find-last');
+require('../modules/esnext.array.find-last-index');
+require('../modules/esnext.typed-array.find-last');
+require('../modules/esnext.typed-array.find-last-index');
diff --git a/node_modules/core-js/proposals/array-flat-map.js b/node_modules/core-js/proposals/array-flat-map.js
new file mode 100644
index 0000000..bd56314
--- /dev/null
+++ b/node_modules/core-js/proposals/array-flat-map.js
@@ -0,0 +1,6 @@
+'use strict';
+// https://github.com/tc39/proposal-flatMap
+require('../modules/es.array.flat');
+require('../modules/es.array.flat-map');
+require('../modules/es.array.unscopables.flat');
+require('../modules/es.array.unscopables.flat-map');
diff --git a/node_modules/core-js/proposals/array-from-async-stage-2.js b/node_modules/core-js/proposals/array-from-async-stage-2.js
new file mode 100644
index 0000000..70264ee
--- /dev/null
+++ b/node_modules/core-js/proposals/array-from-async-stage-2.js
@@ -0,0 +1,3 @@
+'use strict';
+// https://github.com/tc39/proposal-array-from-async
+require('../modules/esnext.array.from-async');
diff --git a/node_modules/core-js/proposals/array-from-async.js b/node_modules/core-js/proposals/array-from-async.js
new file mode 100644
index 0000000..bf4f543
--- /dev/null
+++ b/node_modules/core-js/proposals/array-from-async.js
@@ -0,0 +1,5 @@
+'use strict';
+// https://github.com/tc39/proposal-array-from-async
+require('../modules/esnext.array.from-async');
+// TODO: Remove from `core-js@4`
+require('../modules/esnext.typed-array.from-async');
diff --git a/node_modules/core-js/proposals/array-grouping-stage-3-2.js b/node_modules/core-js/proposals/array-grouping-stage-3-2.js
new file mode 100644
index 0000000..b4bc742
--- /dev/null
+++ b/node_modules/core-js/proposals/array-grouping-stage-3-2.js
@@ -0,0 +1,4 @@
+'use strict';
+// https://github.com/tc39/proposal-array-grouping
+require('../modules/esnext.array.group');
+require('../modules/esnext.array.group-to-map');
diff --git a/node_modules/core-js/proposals/array-grouping-stage-3.js b/node_modules/core-js/proposals/array-grouping-stage-3.js
new file mode 100644
index 0000000..338c26e
--- /dev/null
+++ b/node_modules/core-js/proposals/array-grouping-stage-3.js
@@ -0,0 +1,5 @@
+'use strict';
+// https://github.com/tc39/proposal-array-grouping
+// TODO: Remove from `core-js@4`
+require('../modules/esnext.array.group-by');
+require('../modules/esnext.array.group-by-to-map');
diff --git a/node_modules/core-js/proposals/array-grouping-v2.js b/node_modules/core-js/proposals/array-grouping-v2.js
new file mode 100644
index 0000000..6cca419
--- /dev/null
+++ b/node_modules/core-js/proposals/array-grouping-v2.js
@@ -0,0 +1,4 @@
+'use strict';
+// https://github.com/tc39/proposal-array-grouping
+require('../modules/esnext.map.group-by');
+require('../modules/esnext.object.group-by');
diff --git a/node_modules/core-js/proposals/array-grouping.js b/node_modules/core-js/proposals/array-grouping.js
new file mode 100644
index 0000000..8ee49a0
--- /dev/null
+++ b/node_modules/core-js/proposals/array-grouping.js
@@ -0,0 +1,6 @@
+'use strict';
+// https://github.com/tc39/proposal-array-grouping
+require('../modules/esnext.array.group-by');
+require('../modules/esnext.array.group-by-to-map');
+// TODO: Remove from `core-js@4`
+require('../modules/esnext.typed-array.group-by');
diff --git a/node_modules/core-js/proposals/array-includes.js b/node_modules/core-js/proposals/array-includes.js
new file mode 100644
index 0000000..7c2726d
--- /dev/null
+++ b/node_modules/core-js/proposals/array-includes.js
@@ -0,0 +1,4 @@
+'use strict';
+// https://github.com/tc39/proposal-Array.prototype.includes
+require('../modules/es.array.includes');
+require('../modules/es.typed-array.includes');
diff --git a/node_modules/core-js/proposals/array-is-template-object.js b/node_modules/core-js/proposals/array-is-template-object.js
new file mode 100644
index 0000000..3864d4c
--- /dev/null
+++ b/node_modules/core-js/proposals/array-is-template-object.js
@@ -0,0 +1,3 @@
+'use strict';
+// https://github.com/tc39/proposal-array-is-template-object
+require('../modules/esnext.array.is-template-object');
diff --git a/node_modules/core-js/proposals/array-last.js b/node_modules/core-js/proposals/array-last.js
new file mode 100644
index 0000000..7d5015e
--- /dev/null
+++ b/node_modules/core-js/proposals/array-last.js
@@ -0,0 +1,4 @@
+'use strict';
+// https://github.com/tc39/proposal-array-last
+require('../modules/esnext.array.last-index');
+require('../modules/esnext.array.last-item');
diff --git a/node_modules/core-js/proposals/array-unique.js b/node_modules/core-js/proposals/array-unique.js
new file mode 100644
index 0000000..d854af0
--- /dev/null
+++ b/node_modules/core-js/proposals/array-unique.js
@@ -0,0 +1,5 @@
+'use strict';
+// https://github.com/tc39/proposal-array-unique
+require('../modules/es.map');
+require('../modules/esnext.array.unique-by');
+require('../modules/esnext.typed-array.unique-by');
diff --git a/node_modules/core-js/proposals/async-explicit-resource-management.js b/node_modules/core-js/proposals/async-explicit-resource-management.js
new file mode 100644
index 0000000..3d2a651
--- /dev/null
+++ b/node_modules/core-js/proposals/async-explicit-resource-management.js
@@ -0,0 +1,7 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+// https://github.com/tc39/proposal-async-explicit-resource-management
+require('../modules/esnext.suppressed-error.constructor');
+require('../modules/esnext.async-disposable-stack.constructor');
+require('../modules/esnext.async-iterator.async-dispose');
+require('../modules/esnext.symbol.async-dispose');
diff --git a/node_modules/core-js/proposals/async-iteration.js b/node_modules/core-js/proposals/async-iteration.js
new file mode 100644
index 0000000..085dbfb
--- /dev/null
+++ b/node_modules/core-js/proposals/async-iteration.js
@@ -0,0 +1,3 @@
+'use strict';
+// https://github.com/tc39/proposal-async-iteration
+require('../modules/es.symbol.async-iterator');
diff --git a/node_modules/core-js/proposals/async-iterator-helpers.js b/node_modules/core-js/proposals/async-iterator-helpers.js
new file mode 100644
index 0000000..2231433
--- /dev/null
+++ b/node_modules/core-js/proposals/async-iterator-helpers.js
@@ -0,0 +1,16 @@
+'use strict';
+// https://github.com/tc39/proposal-async-iterator-helpers
+require('../modules/esnext.async-iterator.constructor');
+require('../modules/esnext.async-iterator.drop');
+require('../modules/esnext.async-iterator.every');
+require('../modules/esnext.async-iterator.filter');
+require('../modules/esnext.async-iterator.find');
+require('../modules/esnext.async-iterator.flat-map');
+require('../modules/esnext.async-iterator.for-each');
+require('../modules/esnext.async-iterator.from');
+require('../modules/esnext.async-iterator.map');
+require('../modules/esnext.async-iterator.reduce');
+require('../modules/esnext.async-iterator.some');
+require('../modules/esnext.async-iterator.take');
+require('../modules/esnext.async-iterator.to-array');
+require('../modules/esnext.iterator.to-async');
diff --git a/node_modules/core-js/proposals/change-array-by-copy-stage-4.js b/node_modules/core-js/proposals/change-array-by-copy-stage-4.js
new file mode 100644
index 0000000..d93aa8a
--- /dev/null
+++ b/node_modules/core-js/proposals/change-array-by-copy-stage-4.js
@@ -0,0 +1,9 @@
+'use strict';
+// https://github.com/tc39/proposal-change-array-by-copy
+require('../modules/esnext.array.to-reversed');
+require('../modules/esnext.array.to-sorted');
+require('../modules/esnext.array.to-spliced');
+require('../modules/esnext.array.with');
+require('../modules/esnext.typed-array.to-reversed');
+require('../modules/esnext.typed-array.to-sorted');
+require('../modules/esnext.typed-array.with');
diff --git a/node_modules/core-js/proposals/change-array-by-copy.js b/node_modules/core-js/proposals/change-array-by-copy.js
new file mode 100644
index 0000000..02188ee
--- /dev/null
+++ b/node_modules/core-js/proposals/change-array-by-copy.js
@@ -0,0 +1,11 @@
+'use strict';
+// https://github.com/tc39/proposal-change-array-by-copy
+require('../modules/esnext.array.to-reversed');
+require('../modules/esnext.array.to-sorted');
+require('../modules/esnext.array.to-spliced');
+require('../modules/esnext.array.with');
+require('../modules/esnext.typed-array.to-reversed');
+require('../modules/esnext.typed-array.to-sorted');
+// TODO: Remove from `core-js@4`
+require('../modules/esnext.typed-array.to-spliced');
+require('../modules/esnext.typed-array.with');
diff --git a/node_modules/core-js/proposals/collection-methods.js b/node_modules/core-js/proposals/collection-methods.js
new file mode 100644
index 0000000..32a82f6
--- /dev/null
+++ b/node_modules/core-js/proposals/collection-methods.js
@@ -0,0 +1,29 @@
+'use strict';
+// https://github.com/tc39/proposal-collection-methods
+require('../modules/esnext.map.group-by');
+require('../modules/esnext.map.key-by');
+require('../modules/esnext.map.delete-all');
+require('../modules/esnext.map.every');
+require('../modules/esnext.map.filter');
+require('../modules/esnext.map.find');
+require('../modules/esnext.map.find-key');
+require('../modules/esnext.map.includes');
+require('../modules/esnext.map.key-of');
+require('../modules/esnext.map.map-keys');
+require('../modules/esnext.map.map-values');
+require('../modules/esnext.map.merge');
+require('../modules/esnext.map.reduce');
+require('../modules/esnext.map.some');
+require('../modules/esnext.map.update');
+require('../modules/esnext.set.add-all');
+require('../modules/esnext.set.delete-all');
+require('../modules/esnext.set.every');
+require('../modules/esnext.set.filter');
+require('../modules/esnext.set.find');
+require('../modules/esnext.set.join');
+require('../modules/esnext.set.map');
+require('../modules/esnext.set.reduce');
+require('../modules/esnext.set.some');
+require('../modules/esnext.weak-map.delete-all');
+require('../modules/esnext.weak-set.add-all');
+require('../modules/esnext.weak-set.delete-all');
diff --git a/node_modules/core-js/proposals/collection-of-from.js b/node_modules/core-js/proposals/collection-of-from.js
new file mode 100644
index 0000000..6fbf7e3
--- /dev/null
+++ b/node_modules/core-js/proposals/collection-of-from.js
@@ -0,0 +1,10 @@
+'use strict';
+// https://github.com/tc39/proposal-setmap-offrom
+require('../modules/esnext.map.from');
+require('../modules/esnext.map.of');
+require('../modules/esnext.set.from');
+require('../modules/esnext.set.of');
+require('../modules/esnext.weak-map.from');
+require('../modules/esnext.weak-map.of');
+require('../modules/esnext.weak-set.from');
+require('../modules/esnext.weak-set.of');
diff --git a/node_modules/core-js/proposals/data-view-get-set-uint8-clamped.js b/node_modules/core-js/proposals/data-view-get-set-uint8-clamped.js
new file mode 100644
index 0000000..065b283
--- /dev/null
+++ b/node_modules/core-js/proposals/data-view-get-set-uint8-clamped.js
@@ -0,0 +1,4 @@
+'use strict';
+// https://github.com/tc39/proposal-dataview-get-set-uint8clamped
+require('../modules/esnext.data-view.get-uint8-clamped');
+require('../modules/esnext.data-view.set-uint8-clamped');
diff --git a/node_modules/core-js/proposals/decorator-metadata-v2.js b/node_modules/core-js/proposals/decorator-metadata-v2.js
new file mode 100644
index 0000000..e0a26c2
--- /dev/null
+++ b/node_modules/core-js/proposals/decorator-metadata-v2.js
@@ -0,0 +1,4 @@
+'use strict';
+// https://github.com/tc39/proposal-decorator-metadata
+require('../modules/esnext.function.metadata');
+require('../modules/esnext.symbol.metadata');
diff --git a/node_modules/core-js/proposals/decorator-metadata.js b/node_modules/core-js/proposals/decorator-metadata.js
new file mode 100644
index 0000000..2cc3395
--- /dev/null
+++ b/node_modules/core-js/proposals/decorator-metadata.js
@@ -0,0 +1,4 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+// https://github.com/tc39/proposal-decorator-metadata
+require('../modules/esnext.symbol.metadata-key');
diff --git a/node_modules/core-js/proposals/decorators.js b/node_modules/core-js/proposals/decorators.js
new file mode 100644
index 0000000..9e52ad2
--- /dev/null
+++ b/node_modules/core-js/proposals/decorators.js
@@ -0,0 +1,4 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+// https://github.com/tc39/proposal-decorators
+require('../modules/esnext.symbol.metadata');
diff --git a/node_modules/core-js/proposals/efficient-64-bit-arithmetic.js b/node_modules/core-js/proposals/efficient-64-bit-arithmetic.js
new file mode 100644
index 0000000..f9af133
--- /dev/null
+++ b/node_modules/core-js/proposals/efficient-64-bit-arithmetic.js
@@ -0,0 +1,7 @@
+'use strict';
+// TODO: remove from `core-js@4` as withdrawn
+// https://gist.github.com/BrendanEich/4294d5c212a6d2254703
+require('../modules/esnext.math.iaddh');
+require('../modules/esnext.math.isubh');
+require('../modules/esnext.math.imulh');
+require('../modules/esnext.math.umulh');
diff --git a/node_modules/core-js/proposals/error-cause.js b/node_modules/core-js/proposals/error-cause.js
new file mode 100644
index 0000000..16dd020
--- /dev/null
+++ b/node_modules/core-js/proposals/error-cause.js
@@ -0,0 +1,4 @@
+'use strict';
+// https://github.com/tc39/proposal-error-cause
+require('../modules/es.error.cause');
+require('../modules/es.aggregate-error.cause');
diff --git a/node_modules/core-js/proposals/explicit-resource-management.js b/node_modules/core-js/proposals/explicit-resource-management.js
new file mode 100644
index 0000000..08b7338
--- /dev/null
+++ b/node_modules/core-js/proposals/explicit-resource-management.js
@@ -0,0 +1,9 @@
+'use strict';
+// https://github.com/tc39/proposal-explicit-resource-management
+require('../modules/esnext.suppressed-error.constructor');
+require('../modules/esnext.async-disposable-stack.constructor');
+require('../modules/esnext.async-iterator.async-dispose');
+require('../modules/esnext.disposable-stack.constructor');
+require('../modules/esnext.iterator.dispose');
+require('../modules/esnext.symbol.async-dispose');
+require('../modules/esnext.symbol.dispose');
diff --git a/node_modules/core-js/proposals/extractors.js b/node_modules/core-js/proposals/extractors.js
new file mode 100644
index 0000000..abda3a8
--- /dev/null
+++ b/node_modules/core-js/proposals/extractors.js
@@ -0,0 +1,3 @@
+'use strict';
+// https://github.com/tc39/proposal-extractors
+require('../modules/esnext.symbol.custom-matcher');
diff --git a/node_modules/core-js/proposals/float16.js b/node_modules/core-js/proposals/float16.js
new file mode 100644
index 0000000..ac43dac
--- /dev/null
+++ b/node_modules/core-js/proposals/float16.js
@@ -0,0 +1,5 @@
+'use strict';
+// https://github.com/tc39/proposal-float16array
+require('../modules/esnext.data-view.get-float16');
+require('../modules/esnext.data-view.set-float16');
+require('../modules/esnext.math.f16round');
diff --git a/node_modules/core-js/proposals/function-demethodize.js b/node_modules/core-js/proposals/function-demethodize.js
new file mode 100644
index 0000000..6276099
--- /dev/null
+++ b/node_modules/core-js/proposals/function-demethodize.js
@@ -0,0 +1,3 @@
+'use strict';
+// https://github.com/js-choi/proposal-function-demethodize
+require('../modules/esnext.function.demethodize');
diff --git a/node_modules/core-js/proposals/function-is-callable-is-constructor.js b/node_modules/core-js/proposals/function-is-callable-is-constructor.js
new file mode 100644
index 0000000..888ddd0
--- /dev/null
+++ b/node_modules/core-js/proposals/function-is-callable-is-constructor.js
@@ -0,0 +1,4 @@
+'use strict';
+// https://github.com/caitp/TC39-Proposals/blob/trunk/tc39-reflect-isconstructor-iscallable.md
+require('../modules/esnext.function.is-callable');
+require('../modules/esnext.function.is-constructor');
diff --git a/node_modules/core-js/proposals/function-un-this.js b/node_modules/core-js/proposals/function-un-this.js
new file mode 100644
index 0000000..88cb32d
--- /dev/null
+++ b/node_modules/core-js/proposals/function-un-this.js
@@ -0,0 +1,4 @@
+'use strict';
+// TODO: Remove from `core-js@4`
+// https://github.com/js-choi/proposal-function-un-this
+require('../modules/esnext.function.un-this');
diff --git a/node_modules/core-js/proposals/global-this.js b/node_modules/core-js/proposals/global-this.js
new file mode 100644
index 0000000..aa3a210
--- /dev/null
+++ b/node_modules/core-js/proposals/global-this.js
@@ -0,0 +1,6 @@
+'use strict';
+// https://github.com/tc39/proposal-global
+require('../modules/esnext.global-this');
+var globalThis = require('../internals/global-this');
+
+module.exports = globalThis;
diff --git a/node_modules/core-js/proposals/index.js b/node_modules/core-js/proposals/index.js
new file mode 100644
index 0000000..c470dae
--- /dev/null
+++ b/node_modules/core-js/proposals/index.js
@@ -0,0 +1,3 @@
+'use strict';
+// TODO: Remove this entry from `core-js@4`
+require('../stage');
diff --git a/node_modules/core-js/proposals/is-error.js b/node_modules/core-js/proposals/is-error.js
new file mode 100644
index 0000000..f158658
--- /dev/null
+++ b/node_modules/core-js/proposals/is-error.js
@@ -0,0 +1,3 @@
+'use strict';
+// https://github.com/tc39/proposal-is-error
+require('../modules/esnext.error.is-error');
diff --git a/node_modules/core-js/proposals/iterator-helpers-stage-3-2.js b/node_modules/core-js/proposals/iterator-helpers-stage-3-2.js
new file mode 100644
index 0000000..39d9b1d
--- /dev/null
+++ b/node_modules/core-js/proposals/iterator-helpers-stage-3-2.js
@@ -0,0 +1,15 @@
+'use strict';
+// https://github.com/tc39/proposal-iterator-helpers
+require('../modules/esnext.iterator.constructor');
+require('../modules/esnext.iterator.drop');
+require('../modules/esnext.iterator.every');
+require('../modules/esnext.iterator.filter');
+require('../modules/esnext.iterator.find');
+require('../modules/esnext.iterator.flat-map');
+require('../modules/esnext.iterator.for-each');
+require('../modules/esnext.iterator.from');
+require('../modules/esnext.iterator.map');
+require('../modules/esnext.iterator.reduce');
+require('../modules/esnext.iterator.some');
+require('../modules/esnext.iterator.take');
+require('../modules/esnext.iterator.to-array');
diff --git a/node_modules/core-js/proposals/iterator-helpers-stage-3.js b/node_modules/core-js/proposals/iterator-helpers-stage-3.js
new file mode 100644
index 0000000..dff419e
--- /dev/null
+++ b/node_modules/core-js/proposals/iterator-helpers-stage-3.js
@@ -0,0 +1,29 @@
+'use strict';
+// https://github.com/tc39/proposal-iterator-helpers
+require('../modules/esnext.async-iterator.constructor');
+require('../modules/esnext.async-iterator.drop');
+require('../modules/esnext.async-iterator.every');
+require('../modules/esnext.async-iterator.filter');
+require('../modules/esnext.async-iterator.find');
+require('../modules/esnext.async-iterator.flat-map');
+require('../modules/esnext.async-iterator.for-each');
+require('../modules/esnext.async-iterator.from');
+require('../modules/esnext.async-iterator.map');
+require('../modules/esnext.async-iterator.reduce');
+require('../modules/esnext.async-iterator.some');
+require('../modules/esnext.async-iterator.take');
+require('../modules/esnext.async-iterator.to-array');
+require('../modules/esnext.iterator.constructor');
+require('../modules/esnext.iterator.drop');
+require('../modules/esnext.iterator.every');
+require('../modules/esnext.iterator.filter');
+require('../modules/esnext.iterator.find');
+require('../modules/esnext.iterator.flat-map');
+require('../modules/esnext.iterator.for-each');
+require('../modules/esnext.iterator.from');
+require('../modules/esnext.iterator.map');
+require('../modules/esnext.iterator.reduce');
+require('../modules/esnext.iterator.some');
+require('../modules/esnext.iterator.take');
+require('../modules/esnext.iterator.to-array');
+require('../modules/esnext.iterator.to-async');
diff --git a/node_modules/core-js/proposals/iterator-helpers.js b/node_modules/core-js/proposals/iterator-helpers.js
new file mode 100644
index 0000000..4dc46a2
--- /dev/null
+++ b/node_modules/core-js/proposals/iterator-helpers.js
@@ -0,0 +1,8 @@
+'use strict';
+// TODO: remove from `core-js@4`
+// https://github.com/tc39/proposal-iterator-helpers
+require('./iterator-helpers-stage-3');
+require('../modules/esnext.async-iterator.as-indexed-pairs');
+require('../modules/esnext.async-iterator.indexed');
+require('../modules/esnext.iterator.as-indexed-pairs');
+require('../modules/esnext.iterator.indexed');
diff --git a/node_modules/core-js/proposals/iterator-range.js b/node_modules/core-js/proposals/iterator-range.js
new file mode 100644
index 0000000..b1e6b5d
--- /dev/null
+++ b/node_modules/core-js/proposals/iterator-range.js
@@ -0,0 +1,4 @@
+'use strict';
+// https://github.com/tc39/proposal-Number.range
+require('../modules/esnext.iterator.constructor');
+require('../modules/esnext.iterator.range');
diff --git a/node_modules/core-js/proposals/iterator-sequencing.js b/node_modules/core-js/proposals/iterator-sequencing.js
new file mode 100644
index 0000000..3938904
--- /dev/null
+++ b/node_modules/core-js/proposals/iterator-sequencing.js
@@ -0,0 +1,3 @@
+'use strict';
+// https://github.com/tc39/proposal-iterator-sequencing
+require('../modules/esnext.iterator.concat');
diff --git a/node_modules/core-js/proposals/json-parse-with-source.js b/node_modules/core-js/proposals/json-parse-with-source.js
new file mode 100644
index 0000000..c4b8316
--- /dev/null
+++ b/node_modules/core-js/proposals/json-parse-with-source.js
@@ -0,0 +1,5 @@
+'use strict';
+// https://github.com/tc39/proposal-json-parse-with-source
+require('../modules/esnext.json.is-raw-json');
+require('../modules/esnext.json.parse');
+require('../modules/esnext.json.raw-json');
diff --git a/node_modules/core-js/proposals/keys-composition.js b/node_modules/core-js/proposals/keys-composition.js
new file mode 100644
index 0000000..076c342
--- /dev/null
+++ b/node_modules/core-js/proposals/keys-composition.js
@@ -0,0 +1,4 @@
+'use strict';
+// https://github.com/tc39/proposal-richer-keys/tree/master/compositeKey
+require('../modules/esnext.composite-key');
+require('../modules/esnext.composite-symbol');
diff --git a/node_modules/core-js/proposals/map-update-or-insert.js b/node_modules/core-js/proposals/map-update-or-insert.js
new file mode 100644
index 0000000..7fb6925
--- /dev/null
+++ b/node_modules/core-js/proposals/map-update-or-insert.js
@@ -0,0 +1,4 @@
+'use strict';
+// TODO: remove from `core-js@4`
+// https://github.com/tc39/proposal-upsert
+require('./map-upsert');
diff --git a/node_modules/core-js/proposals/map-upsert-stage-2.js b/node_modules/core-js/proposals/map-upsert-stage-2.js
new file mode 100644
index 0000000..d316686
--- /dev/null
+++ b/node_modules/core-js/proposals/map-upsert-stage-2.js
@@ -0,0 +1,4 @@
+'use strict';
+// https://github.com/tc39/proposal-upsert
+require('../modules/esnext.map.emplace');
+require('../modules/esnext.weak-map.emplace');
diff --git a/node_modules/core-js/proposals/map-upsert-v4.js b/node_modules/core-js/proposals/map-upsert-v4.js
new file mode 100644
index 0000000..f9ec218
--- /dev/null
+++ b/node_modules/core-js/proposals/map-upsert-v4.js
@@ -0,0 +1,6 @@
+'use strict';
+// https://github.com/tc39/proposal-upsert
+require('../modules/esnext.map.get-or-insert');
+require('../modules/esnext.map.get-or-insert-computed');
+require('../modules/esnext.weak-map.get-or-insert');
+require('../modules/esnext.weak-map.get-or-insert-computed');
diff --git a/node_modules/core-js/proposals/map-upsert.js b/node_modules/core-js/proposals/map-upsert.js
new file mode 100644
index 0000000..8d9e84d
--- /dev/null
+++ b/node_modules/core-js/proposals/map-upsert.js
@@ -0,0 +1,10 @@
+'use strict';
+// https://github.com/tc39/proposal-upsert
+require('../modules/esnext.map.emplace');
+// TODO: remove from `core-js@4`
+require('../modules/esnext.map.update-or-insert');
+// TODO: remove from `core-js@4`
+require('../modules/esnext.map.upsert');
+require('../modules/esnext.weak-map.emplace');
+// TODO: remove from `core-js@4`
+require('../modules/esnext.weak-map.upsert');
diff --git a/node_modules/core-js/proposals/math-clamp.js b/node_modules/core-js/proposals/math-clamp.js
new file mode 100644
index 0000000..a1d54ba
--- /dev/null
+++ b/node_modules/core-js/proposals/math-clamp.js
@@ -0,0 +1,3 @@
+'use strict';
+// https://github.com/CanadaHonk/proposal-math-clamp
+require('../modules/esnext.math.clamp');
diff --git a/node_modules/core-js/proposals/math-extensions.js b/node_modules/core-js/proposals/math-extensions.js
new file mode 100644
index 0000000..fddf107
--- /dev/null
+++ b/node_modules/core-js/proposals/math-extensions.js
@@ -0,0 +1,9 @@
+'use strict';
+// https://github.com/rwaldron/proposal-math-extensions
+require('../modules/esnext.math.clamp');
+require('../modules/esnext.math.deg-per-rad');
+require('../modules/esnext.math.degrees');
+require('../modules/esnext.math.fscale');
+require('../modules/esnext.math.rad-per-deg');
+require('../modules/esnext.math.radians');
+require('../modules/esnext.math.scale');
diff --git a/node_modules/core-js/proposals/math-signbit.js b/node_modules/core-js/proposals/math-signbit.js
new file mode 100644
index 0000000..62d74d0
--- /dev/null
+++ b/node_modules/core-js/proposals/math-signbit.js
@@ -0,0 +1,3 @@
+'use strict';
+// https://github.com/tc39/proposal-Math.signbit
+require('../modules/esnext.math.signbit');
diff --git a/node_modules/core-js/proposals/math-sum.js b/node_modules/core-js/proposals/math-sum.js
new file mode 100644
index 0000000..bdd165d
--- /dev/null
+++ b/node_modules/core-js/proposals/math-sum.js
@@ -0,0 +1,3 @@
+'use strict';
+// https://github.com/tc39/proposal-math-sum
+require('../modules/esnext.math.sum-precise');
diff --git a/node_modules/core-js/proposals/number-from-string.js b/node_modules/core-js/proposals/number-from-string.js
new file mode 100644
index 0000000..d574422
--- /dev/null
+++ b/node_modules/core-js/proposals/number-from-string.js
@@ -0,0 +1,3 @@
+'use strict';
+// https://github.com/tc39/proposal-number-fromstring
+require('../modules/esnext.number.from-string');
diff --git a/node_modules/core-js/proposals/number-range.js b/node_modules/core-js/proposals/number-range.js
new file mode 100644
index 0000000..6483292
--- /dev/null
+++ b/node_modules/core-js/proposals/number-range.js
@@ -0,0 +1,4 @@
+'use strict';
+// https://github.com/tc39/proposal-Number.range
+require('../modules/esnext.bigint.range');
+require('../modules/esnext.number.range');
diff --git a/node_modules/core-js/proposals/object-from-entries.js b/node_modules/core-js/proposals/object-from-entries.js
new file mode 100644
index 0000000..b9ea7e1
--- /dev/null
+++ b/node_modules/core-js/proposals/object-from-entries.js
@@ -0,0 +1,3 @@
+'use strict';
+// https://github.com/tc39/proposal-object-from-entries
+require('../modules/es.object.from-entries');
diff --git a/node_modules/core-js/proposals/object-getownpropertydescriptors.js b/node_modules/core-js/proposals/object-getownpropertydescriptors.js
new file mode 100644
index 0000000..121cae6
--- /dev/null
+++ b/node_modules/core-js/proposals/object-getownpropertydescriptors.js
@@ -0,0 +1,3 @@
+'use strict';
+// https://github.com/tc39/proposal-object-getownpropertydescriptors
+require('../modules/es.object.get-own-property-descriptors');
diff --git a/node_modules/core-js/proposals/object-iteration.js b/node_modules/core-js/proposals/object-iteration.js
new file mode 100644
index 0000000..5d40602
--- /dev/null
+++ b/node_modules/core-js/proposals/object-iteration.js
@@ -0,0 +1,6 @@
+'use strict';
+// TODO: remove from `core-js@4` as withdrawn
+// https://github.com/tc39/proposal-object-iteration
+require('../modules/esnext.object.iterate-entries');
+require('../modules/esnext.object.iterate-keys');
+require('../modules/esnext.object.iterate-values');
diff --git a/node_modules/core-js/proposals/object-values-entries.js b/node_modules/core-js/proposals/object-values-entries.js
new file mode 100644
index 0000000..f37e303
--- /dev/null
+++ b/node_modules/core-js/proposals/object-values-entries.js
@@ -0,0 +1,4 @@
+'use strict';
+// https://github.com/tc39/proposal-object-values-entries
+require('../modules/es.object.entries');
+require('../modules/es.object.values');
diff --git a/node_modules/core-js/proposals/observable.js b/node_modules/core-js/proposals/observable.js
new file mode 100644
index 0000000..0dcee84
--- /dev/null
+++ b/node_modules/core-js/proposals/observable.js
@@ -0,0 +1,4 @@
+'use strict';
+// https://github.com/tc39/proposal-observable
+require('../modules/esnext.observable');
+require('../modules/esnext.symbol.observable');
diff --git a/node_modules/core-js/proposals/pattern-matching-v2.js b/node_modules/core-js/proposals/pattern-matching-v2.js
new file mode 100644
index 0000000..726cd21
--- /dev/null
+++ b/node_modules/core-js/proposals/pattern-matching-v2.js
@@ -0,0 +1,3 @@
+'use strict';
+// https://github.com/tc39/proposal-pattern-matching
+require('../modules/esnext.symbol.custom-matcher');
diff --git a/node_modules/core-js/proposals/pattern-matching.js b/node_modules/core-js/proposals/pattern-matching.js
new file mode 100644
index 0000000..0da79cd
--- /dev/null
+++ b/node_modules/core-js/proposals/pattern-matching.js
@@ -0,0 +1,5 @@
+'use strict';
+// https://github.com/tc39/proposal-pattern-matching
+require('../modules/esnext.symbol.matcher');
+// TODO: remove from `core-js@4`
+require('../modules/esnext.symbol.pattern-match');
diff --git a/node_modules/core-js/proposals/promise-all-settled.js b/node_modules/core-js/proposals/promise-all-settled.js
new file mode 100644
index 0000000..4e5f41a
--- /dev/null
+++ b/node_modules/core-js/proposals/promise-all-settled.js
@@ -0,0 +1,3 @@
+'use strict';
+// https://github.com/tc39/proposal-promise-allSettled
+require('../modules/esnext.promise.all-settled');
diff --git a/node_modules/core-js/proposals/promise-any.js b/node_modules/core-js/proposals/promise-any.js
new file mode 100644
index 0000000..3ed7f7c
--- /dev/null
+++ b/node_modules/core-js/proposals/promise-any.js
@@ -0,0 +1,4 @@
+'use strict';
+// https://github.com/tc39/proposal-promise-any
+require('../modules/esnext.aggregate-error');
+require('../modules/esnext.promise.any');
diff --git a/node_modules/core-js/proposals/promise-finally.js b/node_modules/core-js/proposals/promise-finally.js
new file mode 100644
index 0000000..7da1723
--- /dev/null
+++ b/node_modules/core-js/proposals/promise-finally.js
@@ -0,0 +1,3 @@
+'use strict';
+// https://github.com/tc39/proposal-promise-finally
+require('../modules/es.promise.finally');
diff --git a/node_modules/core-js/proposals/promise-try.js b/node_modules/core-js/proposals/promise-try.js
new file mode 100644
index 0000000..d061146
--- /dev/null
+++ b/node_modules/core-js/proposals/promise-try.js
@@ -0,0 +1,3 @@
+'use strict';
+// https://github.com/tc39/proposal-promise-try
+require('../modules/esnext.promise.try');
diff --git a/node_modules/core-js/proposals/promise-with-resolvers.js b/node_modules/core-js/proposals/promise-with-resolvers.js
new file mode 100644
index 0000000..38c71e5
--- /dev/null
+++ b/node_modules/core-js/proposals/promise-with-resolvers.js
@@ -0,0 +1,3 @@
+'use strict';
+// https://github.com/tc39/proposal-promise-with-resolvers
+require('../modules/esnext.promise.with-resolvers');
diff --git a/node_modules/core-js/proposals/reflect-metadata.js b/node_modules/core-js/proposals/reflect-metadata.js
new file mode 100644
index 0000000..dfc7592
--- /dev/null
+++ b/node_modules/core-js/proposals/reflect-metadata.js
@@ -0,0 +1,11 @@
+'use strict';
+// https://github.com/rbuckton/reflect-metadata
+require('../modules/esnext.reflect.define-metadata');
+require('../modules/esnext.reflect.delete-metadata');
+require('../modules/esnext.reflect.get-metadata');
+require('../modules/esnext.reflect.get-metadata-keys');
+require('../modules/esnext.reflect.get-own-metadata');
+require('../modules/esnext.reflect.get-own-metadata-keys');
+require('../modules/esnext.reflect.has-metadata');
+require('../modules/esnext.reflect.has-own-metadata');
+require('../modules/esnext.reflect.metadata');
diff --git a/node_modules/core-js/proposals/regexp-dotall-flag.js b/node_modules/core-js/proposals/regexp-dotall-flag.js
new file mode 100644
index 0000000..60d50d1
--- /dev/null
+++ b/node_modules/core-js/proposals/regexp-dotall-flag.js
@@ -0,0 +1,6 @@
+'use strict';
+// https://github.com/tc39/proposal-regexp-dotall-flag
+require('../modules/es.regexp.constructor');
+require('../modules/es.regexp.dot-all');
+require('../modules/es.regexp.exec');
+require('../modules/es.regexp.flags');
diff --git a/node_modules/core-js/proposals/regexp-escaping.js b/node_modules/core-js/proposals/regexp-escaping.js
new file mode 100644
index 0000000..d77c2ca
--- /dev/null
+++ b/node_modules/core-js/proposals/regexp-escaping.js
@@ -0,0 +1,3 @@
+'use strict';
+// https://github.com/tc39/proposal-regex-escaping
+require('../modules/esnext.regexp.escape');
diff --git a/node_modules/core-js/proposals/regexp-named-groups.js b/node_modules/core-js/proposals/regexp-named-groups.js
new file mode 100644
index 0000000..8c52b57
--- /dev/null
+++ b/node_modules/core-js/proposals/regexp-named-groups.js
@@ -0,0 +1,5 @@
+'use strict';
+// https://github.com/tc39/proposal-regexp-named-groups
+require('../modules/es.regexp.constructor');
+require('../modules/es.regexp.exec');
+require('../modules/es.string.replace');
diff --git a/node_modules/core-js/proposals/relative-indexing-method.js b/node_modules/core-js/proposals/relative-indexing-method.js
new file mode 100644
index 0000000..640d014
--- /dev/null
+++ b/node_modules/core-js/proposals/relative-indexing-method.js
@@ -0,0 +1,5 @@
+'use strict';
+// https://github.com/tc39/proposal-relative-indexing-method
+require('../modules/es.string.at-alternative');
+require('../modules/esnext.array.at');
+require('../modules/esnext.typed-array.at');
diff --git a/node_modules/core-js/proposals/seeded-random.js b/node_modules/core-js/proposals/seeded-random.js
new file mode 100644
index 0000000..fa0a581
--- /dev/null
+++ b/node_modules/core-js/proposals/seeded-random.js
@@ -0,0 +1,3 @@
+'use strict';
+// https://github.com/tc39/proposal-seeded-random
+require('../modules/esnext.math.seeded-prng');
diff --git a/node_modules/core-js/proposals/set-methods-v2.js b/node_modules/core-js/proposals/set-methods-v2.js
new file mode 100644
index 0000000..048708f
--- /dev/null
+++ b/node_modules/core-js/proposals/set-methods-v2.js
@@ -0,0 +1,9 @@
+'use strict';
+// https://github.com/tc39/proposal-set-methods
+require('../modules/esnext.set.difference.v2');
+require('../modules/esnext.set.intersection.v2');
+require('../modules/esnext.set.is-disjoint-from.v2');
+require('../modules/esnext.set.is-subset-of.v2');
+require('../modules/esnext.set.is-superset-of.v2');
+require('../modules/esnext.set.union.v2');
+require('../modules/esnext.set.symmetric-difference.v2');
diff --git a/node_modules/core-js/proposals/set-methods.js b/node_modules/core-js/proposals/set-methods.js
new file mode 100644
index 0000000..951f7e9
--- /dev/null
+++ b/node_modules/core-js/proposals/set-methods.js
@@ -0,0 +1,17 @@
+'use strict';
+// https://github.com/tc39/proposal-set-methods
+require('../modules/esnext.set.difference.v2');
+require('../modules/esnext.set.intersection.v2');
+require('../modules/esnext.set.is-disjoint-from.v2');
+require('../modules/esnext.set.is-subset-of.v2');
+require('../modules/esnext.set.is-superset-of.v2');
+require('../modules/esnext.set.union.v2');
+require('../modules/esnext.set.symmetric-difference.v2');
+// TODO: Obsolete versions, remove from `core-js@4`
+require('../modules/esnext.set.difference');
+require('../modules/esnext.set.intersection');
+require('../modules/esnext.set.is-disjoint-from');
+require('../modules/esnext.set.is-subset-of');
+require('../modules/esnext.set.is-superset-of');
+require('../modules/esnext.set.union');
+require('../modules/esnext.set.symmetric-difference');
diff --git a/node_modules/core-js/proposals/string-at.js b/node_modules/core-js/proposals/string-at.js
new file mode 100644
index 0000000..bf57aab
--- /dev/null
+++ b/node_modules/core-js/proposals/string-at.js
@@ -0,0 +1,3 @@
+'use strict';
+// https://github.com/mathiasbynens/String.prototype.at
+require('../modules/esnext.string.at');
diff --git a/node_modules/core-js/proposals/string-code-points.js b/node_modules/core-js/proposals/string-code-points.js
new file mode 100644
index 0000000..937a104
--- /dev/null
+++ b/node_modules/core-js/proposals/string-code-points.js
@@ -0,0 +1,3 @@
+'use strict';
+// https://github.com/tc39/proposal-string-prototype-codepoints
+require('../modules/esnext.string.code-points');
diff --git a/node_modules/core-js/proposals/string-cooked.js b/node_modules/core-js/proposals/string-cooked.js
new file mode 100644
index 0000000..00872b8
--- /dev/null
+++ b/node_modules/core-js/proposals/string-cooked.js
@@ -0,0 +1,3 @@
+'use strict';
+// https://github.com/bathos/proposal-string-cooked
+require('../modules/esnext.string.cooked');
diff --git a/node_modules/core-js/proposals/string-dedent.js b/node_modules/core-js/proposals/string-dedent.js
new file mode 100644
index 0000000..b857c35
--- /dev/null
+++ b/node_modules/core-js/proposals/string-dedent.js
@@ -0,0 +1,3 @@
+'use strict';
+// https://github.com/tc39/proposal-string-dedent
+require('../modules/esnext.string.dedent');
diff --git a/node_modules/core-js/proposals/string-left-right-trim.js b/node_modules/core-js/proposals/string-left-right-trim.js
new file mode 100644
index 0000000..daef2b6
--- /dev/null
+++ b/node_modules/core-js/proposals/string-left-right-trim.js
@@ -0,0 +1,4 @@
+'use strict';
+// https://github.com/tc39/proposal-string-left-right-trim
+require('../modules/es.string.trim-start');
+require('../modules/es.string.trim-end');
diff --git a/node_modules/core-js/proposals/string-match-all.js b/node_modules/core-js/proposals/string-match-all.js
new file mode 100644
index 0000000..36dab4f
--- /dev/null
+++ b/node_modules/core-js/proposals/string-match-all.js
@@ -0,0 +1,3 @@
+'use strict';
+// https://github.com/tc39/proposal-string-matchall
+require('../modules/esnext.string.match-all');
diff --git a/node_modules/core-js/proposals/string-padding.js b/node_modules/core-js/proposals/string-padding.js
new file mode 100644
index 0000000..435429e
--- /dev/null
+++ b/node_modules/core-js/proposals/string-padding.js
@@ -0,0 +1,4 @@
+'use strict';
+// https://github.com/tc39/proposal-string-pad-start-end
+require('../modules/es.string.pad-end');
+require('../modules/es.string.pad-start');
diff --git a/node_modules/core-js/proposals/string-replace-all-stage-4.js b/node_modules/core-js/proposals/string-replace-all-stage-4.js
new file mode 100644
index 0000000..ab7d05b
--- /dev/null
+++ b/node_modules/core-js/proposals/string-replace-all-stage-4.js
@@ -0,0 +1,3 @@
+'use strict';
+// https://github.com/tc39/proposal-string-replaceall
+require('../modules/esnext.string.replace-all');
diff --git a/node_modules/core-js/proposals/string-replace-all.js b/node_modules/core-js/proposals/string-replace-all.js
new file mode 100644
index 0000000..6ad7e75
--- /dev/null
+++ b/node_modules/core-js/proposals/string-replace-all.js
@@ -0,0 +1,5 @@
+'use strict';
+// https://github.com/tc39/proposal-string-replaceall
+require('../modules/esnext.string.replace-all');
+// TODO: remove from `core-js@4`
+require('../modules/esnext.symbol.replace-all');
diff --git a/node_modules/core-js/proposals/symbol-description.js b/node_modules/core-js/proposals/symbol-description.js
new file mode 100644
index 0000000..e5bf674
--- /dev/null
+++ b/node_modules/core-js/proposals/symbol-description.js
@@ -0,0 +1,3 @@
+'use strict';
+// https://github.com/tc39/proposal-Symbol-description
+require('../modules/es.symbol.description');
diff --git a/node_modules/core-js/proposals/symbol-predicates-v2.js b/node_modules/core-js/proposals/symbol-predicates-v2.js
new file mode 100644
index 0000000..5bd3ce5
--- /dev/null
+++ b/node_modules/core-js/proposals/symbol-predicates-v2.js
@@ -0,0 +1,4 @@
+'use strict';
+// https://github.com/tc39/proposal-symbol-predicates
+require('../modules/esnext.symbol.is-registered-symbol');
+require('../modules/esnext.symbol.is-well-known-symbol');
diff --git a/node_modules/core-js/proposals/symbol-predicates.js b/node_modules/core-js/proposals/symbol-predicates.js
new file mode 100644
index 0000000..2776b84
--- /dev/null
+++ b/node_modules/core-js/proposals/symbol-predicates.js
@@ -0,0 +1,4 @@
+'use strict';
+// https://github.com/tc39/proposal-symbol-predicates
+require('../modules/esnext.symbol.is-registered');
+require('../modules/esnext.symbol.is-well-known');
diff --git a/node_modules/core-js/proposals/url.js b/node_modules/core-js/proposals/url.js
new file mode 100644
index 0000000..2f12fde
--- /dev/null
+++ b/node_modules/core-js/proposals/url.js
@@ -0,0 +1,3 @@
+'use strict';
+// https://github.com/jasnell/proposal-url
+require('../web/url');
diff --git a/node_modules/core-js/proposals/using-statement.js b/node_modules/core-js/proposals/using-statement.js
new file mode 100644
index 0000000..b85b28d
--- /dev/null
+++ b/node_modules/core-js/proposals/using-statement.js
@@ -0,0 +1,5 @@
+'use strict';
+// TODO: Renamed, remove from `core-js@4`
+// https://github.com/tc39/proposal-explicit-resource-management
+require('../modules/esnext.symbol.async-dispose');
+require('../modules/esnext.symbol.dispose');
diff --git a/node_modules/core-js/proposals/well-formed-stringify.js b/node_modules/core-js/proposals/well-formed-stringify.js
new file mode 100644
index 0000000..53a5f99
--- /dev/null
+++ b/node_modules/core-js/proposals/well-formed-stringify.js
@@ -0,0 +1,3 @@
+'use strict';
+// https://github.com/tc39/proposal-well-formed-stringify
+require('../modules/es.json.stringify');
diff --git a/node_modules/core-js/proposals/well-formed-unicode-strings.js b/node_modules/core-js/proposals/well-formed-unicode-strings.js
new file mode 100644
index 0000000..bdbaec8
--- /dev/null
+++ b/node_modules/core-js/proposals/well-formed-unicode-strings.js
@@ -0,0 +1,4 @@
+'use strict';
+// https://github.com/tc39/proposal-is-usv-string
+require('../modules/esnext.string.is-well-formed');
+require('../modules/esnext.string.to-well-formed');
diff --git a/node_modules/core-js/stable/README.md b/node_modules/core-js/stable/README.md
new file mode 100644
index 0000000..903150c
--- /dev/null
+++ b/node_modules/core-js/stable/README.md
@@ -0,0 +1 @@
+This folder contains entry points for all stable `core-js` features with dependencies. It's the recommended way for usage only required features.
diff --git a/node_modules/core-js/stable/aggregate-error.js b/node_modules/core-js/stable/aggregate-error.js
new file mode 100644
index 0000000..2a6c436
--- /dev/null
+++ b/node_modules/core-js/stable/aggregate-error.js
@@ -0,0 +1,8 @@
+'use strict';
+// TODO: remove from `core-js@4`
+require('../modules/esnext.aggregate-error');
+
+var parent = require('../es/aggregate-error');
+require('../modules/web.dom-collections.iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array-buffer/constructor.js b/node_modules/core-js/stable/array-buffer/constructor.js
new file mode 100644
index 0000000..b412c94
--- /dev/null
+++ b/node_modules/core-js/stable/array-buffer/constructor.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array-buffer/constructor');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array-buffer/detached.js b/node_modules/core-js/stable/array-buffer/detached.js
new file mode 100644
index 0000000..ad4679d
--- /dev/null
+++ b/node_modules/core-js/stable/array-buffer/detached.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array-buffer/detached');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array-buffer/index.js b/node_modules/core-js/stable/array-buffer/index.js
new file mode 100644
index 0000000..ffda1ee
--- /dev/null
+++ b/node_modules/core-js/stable/array-buffer/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array-buffer');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array-buffer/is-view.js b/node_modules/core-js/stable/array-buffer/is-view.js
new file mode 100644
index 0000000..8fa117c
--- /dev/null
+++ b/node_modules/core-js/stable/array-buffer/is-view.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array-buffer/is-view');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array-buffer/slice.js b/node_modules/core-js/stable/array-buffer/slice.js
new file mode 100644
index 0000000..524f086
--- /dev/null
+++ b/node_modules/core-js/stable/array-buffer/slice.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array-buffer/slice');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array-buffer/transfer-to-fixed-length.js b/node_modules/core-js/stable/array-buffer/transfer-to-fixed-length.js
new file mode 100644
index 0000000..4e183bd
--- /dev/null
+++ b/node_modules/core-js/stable/array-buffer/transfer-to-fixed-length.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array-buffer/transfer-to-fixed-length');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array-buffer/transfer.js b/node_modules/core-js/stable/array-buffer/transfer.js
new file mode 100644
index 0000000..cca11f3
--- /dev/null
+++ b/node_modules/core-js/stable/array-buffer/transfer.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array-buffer/transfer');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/at.js b/node_modules/core-js/stable/array/at.js
new file mode 100644
index 0000000..aff713b
--- /dev/null
+++ b/node_modules/core-js/stable/array/at.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/at');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/concat.js b/node_modules/core-js/stable/array/concat.js
new file mode 100644
index 0000000..a7eccba
--- /dev/null
+++ b/node_modules/core-js/stable/array/concat.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/concat');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/copy-within.js b/node_modules/core-js/stable/array/copy-within.js
new file mode 100644
index 0000000..7d3440e
--- /dev/null
+++ b/node_modules/core-js/stable/array/copy-within.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/copy-within');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/entries.js b/node_modules/core-js/stable/array/entries.js
new file mode 100644
index 0000000..e9bde39
--- /dev/null
+++ b/node_modules/core-js/stable/array/entries.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/entries');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/every.js b/node_modules/core-js/stable/array/every.js
new file mode 100644
index 0000000..52c255d
--- /dev/null
+++ b/node_modules/core-js/stable/array/every.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/every');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/fill.js b/node_modules/core-js/stable/array/fill.js
new file mode 100644
index 0000000..5e9a2bf
--- /dev/null
+++ b/node_modules/core-js/stable/array/fill.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/fill');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/filter.js b/node_modules/core-js/stable/array/filter.js
new file mode 100644
index 0000000..24a6dc9
--- /dev/null
+++ b/node_modules/core-js/stable/array/filter.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/filter');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/find-index.js b/node_modules/core-js/stable/array/find-index.js
new file mode 100644
index 0000000..67f63ab
--- /dev/null
+++ b/node_modules/core-js/stable/array/find-index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/find-index');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/find-last-index.js b/node_modules/core-js/stable/array/find-last-index.js
new file mode 100644
index 0000000..4cc07ac
--- /dev/null
+++ b/node_modules/core-js/stable/array/find-last-index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../es/array/find-last-index');
diff --git a/node_modules/core-js/stable/array/find-last.js b/node_modules/core-js/stable/array/find-last.js
new file mode 100644
index 0000000..9399401
--- /dev/null
+++ b/node_modules/core-js/stable/array/find-last.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../es/array/find-last');
diff --git a/node_modules/core-js/stable/array/find.js b/node_modules/core-js/stable/array/find.js
new file mode 100644
index 0000000..a749978
--- /dev/null
+++ b/node_modules/core-js/stable/array/find.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/find');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/flat-map.js b/node_modules/core-js/stable/array/flat-map.js
new file mode 100644
index 0000000..b2cd230
--- /dev/null
+++ b/node_modules/core-js/stable/array/flat-map.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/flat-map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/flat.js b/node_modules/core-js/stable/array/flat.js
new file mode 100644
index 0000000..65870c4
--- /dev/null
+++ b/node_modules/core-js/stable/array/flat.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/flat');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/for-each.js b/node_modules/core-js/stable/array/for-each.js
new file mode 100644
index 0000000..fbe9619
--- /dev/null
+++ b/node_modules/core-js/stable/array/for-each.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/for-each');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/from.js b/node_modules/core-js/stable/array/from.js
new file mode 100644
index 0000000..9d4ee90
--- /dev/null
+++ b/node_modules/core-js/stable/array/from.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/from');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/includes.js b/node_modules/core-js/stable/array/includes.js
new file mode 100644
index 0000000..030648a
--- /dev/null
+++ b/node_modules/core-js/stable/array/includes.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/includes');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/index-of.js b/node_modules/core-js/stable/array/index-of.js
new file mode 100644
index 0000000..65da295
--- /dev/null
+++ b/node_modules/core-js/stable/array/index-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/index-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/index.js b/node_modules/core-js/stable/array/index.js
new file mode 100644
index 0000000..01a0083
--- /dev/null
+++ b/node_modules/core-js/stable/array/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/is-array.js b/node_modules/core-js/stable/array/is-array.js
new file mode 100644
index 0000000..7e5207e
--- /dev/null
+++ b/node_modules/core-js/stable/array/is-array.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/is-array');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/iterator.js b/node_modules/core-js/stable/array/iterator.js
new file mode 100644
index 0000000..75e4a95
--- /dev/null
+++ b/node_modules/core-js/stable/array/iterator.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/join.js b/node_modules/core-js/stable/array/join.js
new file mode 100644
index 0000000..3df704b
--- /dev/null
+++ b/node_modules/core-js/stable/array/join.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/join');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/keys.js b/node_modules/core-js/stable/array/keys.js
new file mode 100644
index 0000000..21c0d4b
--- /dev/null
+++ b/node_modules/core-js/stable/array/keys.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/keys');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/last-index-of.js b/node_modules/core-js/stable/array/last-index-of.js
new file mode 100644
index 0000000..4b1e9ce
--- /dev/null
+++ b/node_modules/core-js/stable/array/last-index-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/last-index-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/map.js b/node_modules/core-js/stable/array/map.js
new file mode 100644
index 0000000..2ca8b31
--- /dev/null
+++ b/node_modules/core-js/stable/array/map.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/of.js b/node_modules/core-js/stable/array/of.js
new file mode 100644
index 0000000..12c7922
--- /dev/null
+++ b/node_modules/core-js/stable/array/of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/push.js b/node_modules/core-js/stable/array/push.js
new file mode 100644
index 0000000..b64c62c
--- /dev/null
+++ b/node_modules/core-js/stable/array/push.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/push');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/reduce-right.js b/node_modules/core-js/stable/array/reduce-right.js
new file mode 100644
index 0000000..e820251
--- /dev/null
+++ b/node_modules/core-js/stable/array/reduce-right.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/reduce-right');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/reduce.js b/node_modules/core-js/stable/array/reduce.js
new file mode 100644
index 0000000..d612f42
--- /dev/null
+++ b/node_modules/core-js/stable/array/reduce.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/reduce');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/reverse.js b/node_modules/core-js/stable/array/reverse.js
new file mode 100644
index 0000000..1b26236
--- /dev/null
+++ b/node_modules/core-js/stable/array/reverse.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/reverse');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/slice.js b/node_modules/core-js/stable/array/slice.js
new file mode 100644
index 0000000..77cb872
--- /dev/null
+++ b/node_modules/core-js/stable/array/slice.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/slice');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/some.js b/node_modules/core-js/stable/array/some.js
new file mode 100644
index 0000000..ee3d4de
--- /dev/null
+++ b/node_modules/core-js/stable/array/some.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/some');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/sort.js b/node_modules/core-js/stable/array/sort.js
new file mode 100644
index 0000000..14f8937
--- /dev/null
+++ b/node_modules/core-js/stable/array/sort.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/sort');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/splice.js b/node_modules/core-js/stable/array/splice.js
new file mode 100644
index 0000000..4743a4e
--- /dev/null
+++ b/node_modules/core-js/stable/array/splice.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/splice');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/to-reversed.js b/node_modules/core-js/stable/array/to-reversed.js
new file mode 100644
index 0000000..b92ed50
--- /dev/null
+++ b/node_modules/core-js/stable/array/to-reversed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/to-reversed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/to-sorted.js b/node_modules/core-js/stable/array/to-sorted.js
new file mode 100644
index 0000000..ecbb86f
--- /dev/null
+++ b/node_modules/core-js/stable/array/to-sorted.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/to-sorted');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/to-spliced.js b/node_modules/core-js/stable/array/to-spliced.js
new file mode 100644
index 0000000..b1846a9
--- /dev/null
+++ b/node_modules/core-js/stable/array/to-spliced.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/to-spliced');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/unshift.js b/node_modules/core-js/stable/array/unshift.js
new file mode 100644
index 0000000..7053319
--- /dev/null
+++ b/node_modules/core-js/stable/array/unshift.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/unshift');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/values.js b/node_modules/core-js/stable/array/values.js
new file mode 100644
index 0000000..a9d6417
--- /dev/null
+++ b/node_modules/core-js/stable/array/values.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/values');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/virtual/at.js b/node_modules/core-js/stable/array/virtual/at.js
new file mode 100644
index 0000000..13832e0
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/at.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/array/virtual/at');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/virtual/concat.js b/node_modules/core-js/stable/array/virtual/concat.js
new file mode 100644
index 0000000..6a0b094
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/concat.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/array/virtual/concat');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/virtual/copy-within.js b/node_modules/core-js/stable/array/virtual/copy-within.js
new file mode 100644
index 0000000..6ab25de
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/copy-within.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/array/virtual/copy-within');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/virtual/entries.js b/node_modules/core-js/stable/array/virtual/entries.js
new file mode 100644
index 0000000..a3b0a70
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/entries.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/array/virtual/entries');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/virtual/every.js b/node_modules/core-js/stable/array/virtual/every.js
new file mode 100644
index 0000000..f37d7f8
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/every.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/array/virtual/every');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/virtual/fill.js b/node_modules/core-js/stable/array/virtual/fill.js
new file mode 100644
index 0000000..74103a5
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/fill.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/array/virtual/fill');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/virtual/filter.js b/node_modules/core-js/stable/array/virtual/filter.js
new file mode 100644
index 0000000..74c0e77
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/filter.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/array/virtual/filter');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/virtual/find-index.js b/node_modules/core-js/stable/array/virtual/find-index.js
new file mode 100644
index 0000000..9aed40a
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/find-index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/array/virtual/find-index');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/virtual/find-last-index.js b/node_modules/core-js/stable/array/virtual/find-last-index.js
new file mode 100644
index 0000000..ba04a17
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/find-last-index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../es/array/virtual/find-last-index');
diff --git a/node_modules/core-js/stable/array/virtual/find-last.js b/node_modules/core-js/stable/array/virtual/find-last.js
new file mode 100644
index 0000000..6b546a6
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/find-last.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../../es/array/virtual/find-last');
diff --git a/node_modules/core-js/stable/array/virtual/find.js b/node_modules/core-js/stable/array/virtual/find.js
new file mode 100644
index 0000000..147252a
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/find.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/array/virtual/find');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/virtual/flat-map.js b/node_modules/core-js/stable/array/virtual/flat-map.js
new file mode 100644
index 0000000..864845a
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/flat-map.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/array/virtual/flat-map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/virtual/flat.js b/node_modules/core-js/stable/array/virtual/flat.js
new file mode 100644
index 0000000..bdebf7c
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/flat.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/array/virtual/flat');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/virtual/for-each.js b/node_modules/core-js/stable/array/virtual/for-each.js
new file mode 100644
index 0000000..16abca8
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/for-each.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/array/virtual/for-each');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/virtual/includes.js b/node_modules/core-js/stable/array/virtual/includes.js
new file mode 100644
index 0000000..f16ee63
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/includes.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/array/virtual/includes');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/virtual/index-of.js b/node_modules/core-js/stable/array/virtual/index-of.js
new file mode 100644
index 0000000..2bfb9ba
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/index-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/array/virtual/index-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/virtual/index.js b/node_modules/core-js/stable/array/virtual/index.js
new file mode 100644
index 0000000..7cab826
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/array/virtual');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/virtual/iterator.js b/node_modules/core-js/stable/array/virtual/iterator.js
new file mode 100644
index 0000000..7fb71e3
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/iterator.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/array/virtual/iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/virtual/join.js b/node_modules/core-js/stable/array/virtual/join.js
new file mode 100644
index 0000000..c10586d
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/join.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/array/virtual/join');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/virtual/keys.js b/node_modules/core-js/stable/array/virtual/keys.js
new file mode 100644
index 0000000..b7dee23
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/keys.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/array/virtual/keys');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/virtual/last-index-of.js b/node_modules/core-js/stable/array/virtual/last-index-of.js
new file mode 100644
index 0000000..2bc914f
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/last-index-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/array/virtual/last-index-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/virtual/map.js b/node_modules/core-js/stable/array/virtual/map.js
new file mode 100644
index 0000000..5821a11
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/map.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/array/virtual/map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/virtual/push.js b/node_modules/core-js/stable/array/virtual/push.js
new file mode 100644
index 0000000..7b975d3
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/push.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/array/virtual/push');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/virtual/reduce-right.js b/node_modules/core-js/stable/array/virtual/reduce-right.js
new file mode 100644
index 0000000..2d7c7d6
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/reduce-right.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/array/virtual/reduce-right');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/virtual/reduce.js b/node_modules/core-js/stable/array/virtual/reduce.js
new file mode 100644
index 0000000..270a067
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/reduce.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/array/virtual/reduce');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/virtual/reverse.js b/node_modules/core-js/stable/array/virtual/reverse.js
new file mode 100644
index 0000000..cede168
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/reverse.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/array/virtual/reverse');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/virtual/slice.js b/node_modules/core-js/stable/array/virtual/slice.js
new file mode 100644
index 0000000..c19788c
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/slice.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/array/virtual/slice');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/virtual/some.js b/node_modules/core-js/stable/array/virtual/some.js
new file mode 100644
index 0000000..26375fe
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/some.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/array/virtual/some');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/virtual/sort.js b/node_modules/core-js/stable/array/virtual/sort.js
new file mode 100644
index 0000000..5ef50be
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/sort.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/array/virtual/sort');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/virtual/splice.js b/node_modules/core-js/stable/array/virtual/splice.js
new file mode 100644
index 0000000..c763b29
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/splice.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/array/virtual/splice');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/virtual/to-reversed.js b/node_modules/core-js/stable/array/virtual/to-reversed.js
new file mode 100644
index 0000000..f09f2eb
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/to-reversed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/array/virtual/to-reversed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/virtual/to-sorted.js b/node_modules/core-js/stable/array/virtual/to-sorted.js
new file mode 100644
index 0000000..affc20c
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/to-sorted.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/array/virtual/to-sorted');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/virtual/to-spliced.js b/node_modules/core-js/stable/array/virtual/to-spliced.js
new file mode 100644
index 0000000..5426ebe
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/to-spliced.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/array/virtual/to-spliced');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/virtual/unshift.js b/node_modules/core-js/stable/array/virtual/unshift.js
new file mode 100644
index 0000000..d6c95cd
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/unshift.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/array/virtual/unshift');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/virtual/values.js b/node_modules/core-js/stable/array/virtual/values.js
new file mode 100644
index 0000000..616ecc3
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/values.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/array/virtual/values');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/virtual/with.js b/node_modules/core-js/stable/array/virtual/with.js
new file mode 100644
index 0000000..8b14f21
--- /dev/null
+++ b/node_modules/core-js/stable/array/virtual/with.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/array/virtual/with');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/array/with.js b/node_modules/core-js/stable/array/with.js
new file mode 100644
index 0000000..14df0c9
--- /dev/null
+++ b/node_modules/core-js/stable/array/with.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/array/with');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/atob.js b/node_modules/core-js/stable/atob.js
new file mode 100644
index 0000000..a7b40aa
--- /dev/null
+++ b/node_modules/core-js/stable/atob.js
@@ -0,0 +1,10 @@
+'use strict';
+require('../modules/es.error.to-string');
+require('../modules/es.object.to-string');
+require('../modules/web.atob');
+require('../modules/web.dom-exception.constructor');
+require('../modules/web.dom-exception.stack');
+require('../modules/web.dom-exception.to-string-tag');
+var path = require('../internals/path');
+
+module.exports = path.atob;
diff --git a/node_modules/core-js/stable/btoa.js b/node_modules/core-js/stable/btoa.js
new file mode 100644
index 0000000..91cf24a
--- /dev/null
+++ b/node_modules/core-js/stable/btoa.js
@@ -0,0 +1,10 @@
+'use strict';
+require('../modules/es.error.to-string');
+require('../modules/es.object.to-string');
+require('../modules/web.btoa');
+require('../modules/web.dom-exception.constructor');
+require('../modules/web.dom-exception.stack');
+require('../modules/web.dom-exception.to-string-tag');
+var path = require('../internals/path');
+
+module.exports = path.btoa;
diff --git a/node_modules/core-js/stable/clear-immediate.js b/node_modules/core-js/stable/clear-immediate.js
new file mode 100644
index 0000000..8735f36
--- /dev/null
+++ b/node_modules/core-js/stable/clear-immediate.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../modules/web.immediate');
+var path = require('../internals/path');
+
+module.exports = path.clearImmediate;
diff --git a/node_modules/core-js/stable/data-view/get-float16.js b/node_modules/core-js/stable/data-view/get-float16.js
new file mode 100644
index 0000000..de973a8
--- /dev/null
+++ b/node_modules/core-js/stable/data-view/get-float16.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/data-view/get-float16');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/data-view/index.js b/node_modules/core-js/stable/data-view/index.js
new file mode 100644
index 0000000..b7c595c
--- /dev/null
+++ b/node_modules/core-js/stable/data-view/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/data-view');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/data-view/set-float16.js b/node_modules/core-js/stable/data-view/set-float16.js
new file mode 100644
index 0000000..512bc64
--- /dev/null
+++ b/node_modules/core-js/stable/data-view/set-float16.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/data-view/set-float16');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/date/get-year.js b/node_modules/core-js/stable/date/get-year.js
new file mode 100644
index 0000000..b8831fe
--- /dev/null
+++ b/node_modules/core-js/stable/date/get-year.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/date/get-year');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/date/index.js b/node_modules/core-js/stable/date/index.js
new file mode 100644
index 0000000..a4101f7
--- /dev/null
+++ b/node_modules/core-js/stable/date/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/date');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/date/now.js b/node_modules/core-js/stable/date/now.js
new file mode 100644
index 0000000..2b54054
--- /dev/null
+++ b/node_modules/core-js/stable/date/now.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/date/now');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/date/set-year.js b/node_modules/core-js/stable/date/set-year.js
new file mode 100644
index 0000000..56c7ba9
--- /dev/null
+++ b/node_modules/core-js/stable/date/set-year.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/date/set-year');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/date/to-gmt-string.js b/node_modules/core-js/stable/date/to-gmt-string.js
new file mode 100644
index 0000000..ecff2fa
--- /dev/null
+++ b/node_modules/core-js/stable/date/to-gmt-string.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/date/to-gmt-string');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/date/to-iso-string.js b/node_modules/core-js/stable/date/to-iso-string.js
new file mode 100644
index 0000000..daae0fa
--- /dev/null
+++ b/node_modules/core-js/stable/date/to-iso-string.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/date/to-iso-string');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/date/to-json.js b/node_modules/core-js/stable/date/to-json.js
new file mode 100644
index 0000000..9fb0ab7
--- /dev/null
+++ b/node_modules/core-js/stable/date/to-json.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/date/to-json');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/date/to-primitive.js b/node_modules/core-js/stable/date/to-primitive.js
new file mode 100644
index 0000000..bbd6d11
--- /dev/null
+++ b/node_modules/core-js/stable/date/to-primitive.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/date/to-primitive');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/date/to-string.js b/node_modules/core-js/stable/date/to-string.js
new file mode 100644
index 0000000..65fcdf6
--- /dev/null
+++ b/node_modules/core-js/stable/date/to-string.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/date/to-string');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/dom-collections/for-each.js b/node_modules/core-js/stable/dom-collections/for-each.js
new file mode 100644
index 0000000..3cffa65
--- /dev/null
+++ b/node_modules/core-js/stable/dom-collections/for-each.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/web.dom-collections.for-each');
+
+var parent = require('../../internals/array-for-each');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/dom-collections/index.js b/node_modules/core-js/stable/dom-collections/index.js
new file mode 100644
index 0000000..5436ac5
--- /dev/null
+++ b/node_modules/core-js/stable/dom-collections/index.js
@@ -0,0 +1,14 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/web.dom-collections.for-each');
+require('../../modules/web.dom-collections.iterator');
+var ArrayIterators = require('../../modules/es.array.iterator');
+var forEach = require('../../internals/array-for-each');
+
+module.exports = {
+  keys: ArrayIterators.keys,
+  values: ArrayIterators.values,
+  entries: ArrayIterators.entries,
+  iterator: ArrayIterators.values,
+  forEach: forEach
+};
diff --git a/node_modules/core-js/stable/dom-collections/iterator.js b/node_modules/core-js/stable/dom-collections/iterator.js
new file mode 100644
index 0000000..63582f0
--- /dev/null
+++ b/node_modules/core-js/stable/dom-collections/iterator.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/es.object.to-string');
+require('../../modules/web.dom-collections.iterator');
+var entryUnbind = require('../../internals/entry-unbind');
+
+module.exports = entryUnbind('Array', 'values');
diff --git a/node_modules/core-js/stable/dom-exception/constructor.js b/node_modules/core-js/stable/dom-exception/constructor.js
new file mode 100644
index 0000000..f014fe9
--- /dev/null
+++ b/node_modules/core-js/stable/dom-exception/constructor.js
@@ -0,0 +1,7 @@
+'use strict';
+require('../../modules/es.error.to-string');
+require('../../modules/web.dom-exception.constructor');
+require('../../modules/web.dom-exception.stack');
+var path = require('../../internals/path');
+
+module.exports = path.DOMException;
diff --git a/node_modules/core-js/stable/dom-exception/index.js b/node_modules/core-js/stable/dom-exception/index.js
new file mode 100644
index 0000000..f187f84
--- /dev/null
+++ b/node_modules/core-js/stable/dom-exception/index.js
@@ -0,0 +1,8 @@
+'use strict';
+require('../../modules/es.error.to-string');
+require('../../modules/web.dom-exception.constructor');
+require('../../modules/web.dom-exception.stack');
+require('../../modules/web.dom-exception.to-string-tag');
+var path = require('../../internals/path');
+
+module.exports = path.DOMException;
diff --git a/node_modules/core-js/stable/dom-exception/to-string-tag.js b/node_modules/core-js/stable/dom-exception/to-string-tag.js
new file mode 100644
index 0000000..5856e65
--- /dev/null
+++ b/node_modules/core-js/stable/dom-exception/to-string-tag.js
@@ -0,0 +1,4 @@
+'use strict';
+require('../../modules/web.dom-exception.to-string-tag');
+
+module.exports = 'DOMException';
diff --git a/node_modules/core-js/stable/error/constructor.js b/node_modules/core-js/stable/error/constructor.js
new file mode 100644
index 0000000..761efd3
--- /dev/null
+++ b/node_modules/core-js/stable/error/constructor.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/error/constructor');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/error/index.js b/node_modules/core-js/stable/error/index.js
new file mode 100644
index 0000000..87d3e24
--- /dev/null
+++ b/node_modules/core-js/stable/error/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/error');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/error/to-string.js b/node_modules/core-js/stable/error/to-string.js
new file mode 100644
index 0000000..5fe958f
--- /dev/null
+++ b/node_modules/core-js/stable/error/to-string.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/error/to-string');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/escape.js b/node_modules/core-js/stable/escape.js
new file mode 100644
index 0000000..008bb6d
--- /dev/null
+++ b/node_modules/core-js/stable/escape.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../es/escape');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/function/bind.js b/node_modules/core-js/stable/function/bind.js
new file mode 100644
index 0000000..de54f8a
--- /dev/null
+++ b/node_modules/core-js/stable/function/bind.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/function/bind');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/function/has-instance.js b/node_modules/core-js/stable/function/has-instance.js
new file mode 100644
index 0000000..3eb2212
--- /dev/null
+++ b/node_modules/core-js/stable/function/has-instance.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/function/has-instance');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/function/index.js b/node_modules/core-js/stable/function/index.js
new file mode 100644
index 0000000..dcb9d34
--- /dev/null
+++ b/node_modules/core-js/stable/function/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/function');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/function/name.js b/node_modules/core-js/stable/function/name.js
new file mode 100644
index 0000000..11db255
--- /dev/null
+++ b/node_modules/core-js/stable/function/name.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/function/name');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/function/virtual/bind.js b/node_modules/core-js/stable/function/virtual/bind.js
new file mode 100644
index 0000000..1dde33d
--- /dev/null
+++ b/node_modules/core-js/stable/function/virtual/bind.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/function/virtual/bind');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/function/virtual/index.js b/node_modules/core-js/stable/function/virtual/index.js
new file mode 100644
index 0000000..ee7a38c
--- /dev/null
+++ b/node_modules/core-js/stable/function/virtual/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/function/virtual');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/get-iterator-method.js b/node_modules/core-js/stable/get-iterator-method.js
new file mode 100644
index 0000000..8ec6189
--- /dev/null
+++ b/node_modules/core-js/stable/get-iterator-method.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../es/get-iterator-method');
+require('../modules/web.dom-collections.iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/get-iterator.js b/node_modules/core-js/stable/get-iterator.js
new file mode 100644
index 0000000..e91de84
--- /dev/null
+++ b/node_modules/core-js/stable/get-iterator.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../es/get-iterator');
+require('../modules/web.dom-collections.iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/global-this.js b/node_modules/core-js/stable/global-this.js
new file mode 100644
index 0000000..2c4ca75
--- /dev/null
+++ b/node_modules/core-js/stable/global-this.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../es/global-this');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/index.js b/node_modules/core-js/stable/index.js
new file mode 100644
index 0000000..17424d4
--- /dev/null
+++ b/node_modules/core-js/stable/index.js
@@ -0,0 +1,296 @@
+'use strict';
+require('../modules/es.symbol');
+require('../modules/es.symbol.description');
+require('../modules/es.symbol.async-iterator');
+require('../modules/es.symbol.has-instance');
+require('../modules/es.symbol.is-concat-spreadable');
+require('../modules/es.symbol.iterator');
+require('../modules/es.symbol.match');
+require('../modules/es.symbol.match-all');
+require('../modules/es.symbol.replace');
+require('../modules/es.symbol.search');
+require('../modules/es.symbol.species');
+require('../modules/es.symbol.split');
+require('../modules/es.symbol.to-primitive');
+require('../modules/es.symbol.to-string-tag');
+require('../modules/es.symbol.unscopables');
+require('../modules/es.error.cause');
+require('../modules/es.error.to-string');
+require('../modules/es.aggregate-error');
+require('../modules/es.aggregate-error.cause');
+require('../modules/es.array.at');
+require('../modules/es.array.concat');
+require('../modules/es.array.copy-within');
+require('../modules/es.array.every');
+require('../modules/es.array.fill');
+require('../modules/es.array.filter');
+require('../modules/es.array.find');
+require('../modules/es.array.find-index');
+require('../modules/es.array.find-last');
+require('../modules/es.array.find-last-index');
+require('../modules/es.array.flat');
+require('../modules/es.array.flat-map');
+require('../modules/es.array.for-each');
+require('../modules/es.array.from');
+require('../modules/es.array.includes');
+require('../modules/es.array.index-of');
+require('../modules/es.array.is-array');
+require('../modules/es.array.iterator');
+require('../modules/es.array.join');
+require('../modules/es.array.last-index-of');
+require('../modules/es.array.map');
+require('../modules/es.array.of');
+require('../modules/es.array.push');
+require('../modules/es.array.reduce');
+require('../modules/es.array.reduce-right');
+require('../modules/es.array.reverse');
+require('../modules/es.array.slice');
+require('../modules/es.array.some');
+require('../modules/es.array.sort');
+require('../modules/es.array.species');
+require('../modules/es.array.splice');
+require('../modules/es.array.to-reversed');
+require('../modules/es.array.to-sorted');
+require('../modules/es.array.to-spliced');
+require('../modules/es.array.unscopables.flat');
+require('../modules/es.array.unscopables.flat-map');
+require('../modules/es.array.unshift');
+require('../modules/es.array.with');
+require('../modules/es.array-buffer.constructor');
+require('../modules/es.array-buffer.is-view');
+require('../modules/es.array-buffer.slice');
+require('../modules/es.data-view');
+require('../modules/es.data-view.get-float16');
+require('../modules/es.data-view.set-float16');
+require('../modules/es.array-buffer.detached');
+require('../modules/es.array-buffer.transfer');
+require('../modules/es.array-buffer.transfer-to-fixed-length');
+require('../modules/es.date.get-year');
+require('../modules/es.date.now');
+require('../modules/es.date.set-year');
+require('../modules/es.date.to-gmt-string');
+require('../modules/es.date.to-iso-string');
+require('../modules/es.date.to-json');
+require('../modules/es.date.to-primitive');
+require('../modules/es.date.to-string');
+require('../modules/es.escape');
+require('../modules/es.function.bind');
+require('../modules/es.function.has-instance');
+require('../modules/es.function.name');
+require('../modules/es.global-this');
+require('../modules/es.iterator.constructor');
+require('../modules/es.iterator.drop');
+require('../modules/es.iterator.every');
+require('../modules/es.iterator.filter');
+require('../modules/es.iterator.find');
+require('../modules/es.iterator.flat-map');
+require('../modules/es.iterator.for-each');
+require('../modules/es.iterator.from');
+require('../modules/es.iterator.map');
+require('../modules/es.iterator.reduce');
+require('../modules/es.iterator.some');
+require('../modules/es.iterator.take');
+require('../modules/es.iterator.to-array');
+require('../modules/es.json.stringify');
+require('../modules/es.json.to-string-tag');
+require('../modules/es.map');
+require('../modules/es.map.group-by');
+require('../modules/es.math.acosh');
+require('../modules/es.math.asinh');
+require('../modules/es.math.atanh');
+require('../modules/es.math.cbrt');
+require('../modules/es.math.clz32');
+require('../modules/es.math.cosh');
+require('../modules/es.math.expm1');
+require('../modules/es.math.fround');
+require('../modules/es.math.f16round');
+require('../modules/es.math.hypot');
+require('../modules/es.math.imul');
+require('../modules/es.math.log10');
+require('../modules/es.math.log1p');
+require('../modules/es.math.log2');
+require('../modules/es.math.sign');
+require('../modules/es.math.sinh');
+require('../modules/es.math.tanh');
+require('../modules/es.math.to-string-tag');
+require('../modules/es.math.trunc');
+require('../modules/es.number.constructor');
+require('../modules/es.number.epsilon');
+require('../modules/es.number.is-finite');
+require('../modules/es.number.is-integer');
+require('../modules/es.number.is-nan');
+require('../modules/es.number.is-safe-integer');
+require('../modules/es.number.max-safe-integer');
+require('../modules/es.number.min-safe-integer');
+require('../modules/es.number.parse-float');
+require('../modules/es.number.parse-int');
+require('../modules/es.number.to-exponential');
+require('../modules/es.number.to-fixed');
+require('../modules/es.number.to-precision');
+require('../modules/es.object.assign');
+require('../modules/es.object.create');
+require('../modules/es.object.define-getter');
+require('../modules/es.object.define-properties');
+require('../modules/es.object.define-property');
+require('../modules/es.object.define-setter');
+require('../modules/es.object.entries');
+require('../modules/es.object.freeze');
+require('../modules/es.object.from-entries');
+require('../modules/es.object.get-own-property-descriptor');
+require('../modules/es.object.get-own-property-descriptors');
+require('../modules/es.object.get-own-property-names');
+require('../modules/es.object.get-prototype-of');
+require('../modules/es.object.group-by');
+require('../modules/es.object.has-own');
+require('../modules/es.object.is');
+require('../modules/es.object.is-extensible');
+require('../modules/es.object.is-frozen');
+require('../modules/es.object.is-sealed');
+require('../modules/es.object.keys');
+require('../modules/es.object.lookup-getter');
+require('../modules/es.object.lookup-setter');
+require('../modules/es.object.prevent-extensions');
+require('../modules/es.object.proto');
+require('../modules/es.object.seal');
+require('../modules/es.object.set-prototype-of');
+require('../modules/es.object.to-string');
+require('../modules/es.object.values');
+require('../modules/es.parse-float');
+require('../modules/es.parse-int');
+require('../modules/es.promise');
+require('../modules/es.promise.all-settled');
+require('../modules/es.promise.any');
+require('../modules/es.promise.finally');
+require('../modules/es.promise.try');
+require('../modules/es.promise.with-resolvers');
+require('../modules/es.reflect.apply');
+require('../modules/es.reflect.construct');
+require('../modules/es.reflect.define-property');
+require('../modules/es.reflect.delete-property');
+require('../modules/es.reflect.get');
+require('../modules/es.reflect.get-own-property-descriptor');
+require('../modules/es.reflect.get-prototype-of');
+require('../modules/es.reflect.has');
+require('../modules/es.reflect.is-extensible');
+require('../modules/es.reflect.own-keys');
+require('../modules/es.reflect.prevent-extensions');
+require('../modules/es.reflect.set');
+require('../modules/es.reflect.set-prototype-of');
+require('../modules/es.reflect.to-string-tag');
+require('../modules/es.regexp.constructor');
+require('../modules/es.regexp.escape');
+require('../modules/es.regexp.dot-all');
+require('../modules/es.regexp.exec');
+require('../modules/es.regexp.flags');
+require('../modules/es.regexp.sticky');
+require('../modules/es.regexp.test');
+require('../modules/es.regexp.to-string');
+require('../modules/es.set');
+require('../modules/es.set.difference.v2');
+require('../modules/es.set.intersection.v2');
+require('../modules/es.set.is-disjoint-from.v2');
+require('../modules/es.set.is-subset-of.v2');
+require('../modules/es.set.is-superset-of.v2');
+require('../modules/es.set.symmetric-difference.v2');
+require('../modules/es.set.union.v2');
+require('../modules/es.string.at-alternative');
+require('../modules/es.string.code-point-at');
+require('../modules/es.string.ends-with');
+require('../modules/es.string.from-code-point');
+require('../modules/es.string.includes');
+require('../modules/es.string.is-well-formed');
+require('../modules/es.string.iterator');
+require('../modules/es.string.match');
+require('../modules/es.string.match-all');
+require('../modules/es.string.pad-end');
+require('../modules/es.string.pad-start');
+require('../modules/es.string.raw');
+require('../modules/es.string.repeat');
+require('../modules/es.string.replace');
+require('../modules/es.string.replace-all');
+require('../modules/es.string.search');
+require('../modules/es.string.split');
+require('../modules/es.string.starts-with');
+require('../modules/es.string.substr');
+require('../modules/es.string.to-well-formed');
+require('../modules/es.string.trim');
+require('../modules/es.string.trim-end');
+require('../modules/es.string.trim-start');
+require('../modules/es.string.anchor');
+require('../modules/es.string.big');
+require('../modules/es.string.blink');
+require('../modules/es.string.bold');
+require('../modules/es.string.fixed');
+require('../modules/es.string.fontcolor');
+require('../modules/es.string.fontsize');
+require('../modules/es.string.italics');
+require('../modules/es.string.link');
+require('../modules/es.string.small');
+require('../modules/es.string.strike');
+require('../modules/es.string.sub');
+require('../modules/es.string.sup');
+require('../modules/es.typed-array.float32-array');
+require('../modules/es.typed-array.float64-array');
+require('../modules/es.typed-array.int8-array');
+require('../modules/es.typed-array.int16-array');
+require('../modules/es.typed-array.int32-array');
+require('../modules/es.typed-array.uint8-array');
+require('../modules/es.typed-array.uint8-clamped-array');
+require('../modules/es.typed-array.uint16-array');
+require('../modules/es.typed-array.uint32-array');
+require('../modules/es.typed-array.at');
+require('../modules/es.typed-array.copy-within');
+require('../modules/es.typed-array.every');
+require('../modules/es.typed-array.fill');
+require('../modules/es.typed-array.filter');
+require('../modules/es.typed-array.find');
+require('../modules/es.typed-array.find-index');
+require('../modules/es.typed-array.find-last');
+require('../modules/es.typed-array.find-last-index');
+require('../modules/es.typed-array.for-each');
+require('../modules/es.typed-array.from');
+require('../modules/es.typed-array.includes');
+require('../modules/es.typed-array.index-of');
+require('../modules/es.typed-array.iterator');
+require('../modules/es.typed-array.join');
+require('../modules/es.typed-array.last-index-of');
+require('../modules/es.typed-array.map');
+require('../modules/es.typed-array.of');
+require('../modules/es.typed-array.reduce');
+require('../modules/es.typed-array.reduce-right');
+require('../modules/es.typed-array.reverse');
+require('../modules/es.typed-array.set');
+require('../modules/es.typed-array.slice');
+require('../modules/es.typed-array.some');
+require('../modules/es.typed-array.sort');
+require('../modules/es.typed-array.subarray');
+require('../modules/es.typed-array.to-locale-string');
+require('../modules/es.typed-array.to-reversed');
+require('../modules/es.typed-array.to-sorted');
+require('../modules/es.typed-array.to-string');
+require('../modules/es.typed-array.with');
+require('../modules/es.unescape');
+require('../modules/es.weak-map');
+require('../modules/es.weak-set');
+require('../modules/web.atob');
+require('../modules/web.btoa');
+require('../modules/web.dom-collections.for-each');
+require('../modules/web.dom-collections.iterator');
+require('../modules/web.dom-exception.constructor');
+require('../modules/web.dom-exception.stack');
+require('../modules/web.dom-exception.to-string-tag');
+require('../modules/web.immediate');
+require('../modules/web.queue-microtask');
+require('../modules/web.self');
+require('../modules/web.structured-clone');
+require('../modules/web.timers');
+require('../modules/web.url');
+require('../modules/web.url.can-parse');
+require('../modules/web.url.parse');
+require('../modules/web.url.to-json');
+require('../modules/web.url-search-params');
+require('../modules/web.url-search-params.delete');
+require('../modules/web.url-search-params.has');
+require('../modules/web.url-search-params.size');
+
+module.exports = require('../internals/path');
diff --git a/node_modules/core-js/stable/instance/at.js b/node_modules/core-js/stable/instance/at.js
new file mode 100644
index 0000000..745048c
--- /dev/null
+++ b/node_modules/core-js/stable/instance/at.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/at');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/bind.js b/node_modules/core-js/stable/instance/bind.js
new file mode 100644
index 0000000..ad5f7e0
--- /dev/null
+++ b/node_modules/core-js/stable/instance/bind.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/bind');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/code-point-at.js b/node_modules/core-js/stable/instance/code-point-at.js
new file mode 100644
index 0000000..a2edf41
--- /dev/null
+++ b/node_modules/core-js/stable/instance/code-point-at.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/code-point-at');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/concat.js b/node_modules/core-js/stable/instance/concat.js
new file mode 100644
index 0000000..d098728
--- /dev/null
+++ b/node_modules/core-js/stable/instance/concat.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/concat');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/copy-within.js b/node_modules/core-js/stable/instance/copy-within.js
new file mode 100644
index 0000000..ee3ba24
--- /dev/null
+++ b/node_modules/core-js/stable/instance/copy-within.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/copy-within');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/ends-with.js b/node_modules/core-js/stable/instance/ends-with.js
new file mode 100644
index 0000000..ff366c1
--- /dev/null
+++ b/node_modules/core-js/stable/instance/ends-with.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/ends-with');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/entries.js b/node_modules/core-js/stable/instance/entries.js
new file mode 100644
index 0000000..0a9918d
--- /dev/null
+++ b/node_modules/core-js/stable/instance/entries.js
@@ -0,0 +1,19 @@
+'use strict';
+require('../../modules/web.dom-collections.iterator');
+var classof = require('../../internals/classof');
+var hasOwn = require('../../internals/has-own-property');
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/entries');
+
+var ArrayPrototype = Array.prototype;
+
+var DOMIterables = {
+  DOMTokenList: true,
+  NodeList: true
+};
+
+module.exports = function (it) {
+  var own = it.entries;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.entries)
+    || hasOwn(DOMIterables, classof(it)) ? method : own;
+};
diff --git a/node_modules/core-js/stable/instance/every.js b/node_modules/core-js/stable/instance/every.js
new file mode 100644
index 0000000..b3c7ace
--- /dev/null
+++ b/node_modules/core-js/stable/instance/every.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/every');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/fill.js b/node_modules/core-js/stable/instance/fill.js
new file mode 100644
index 0000000..768cf75
--- /dev/null
+++ b/node_modules/core-js/stable/instance/fill.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/fill');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/filter.js b/node_modules/core-js/stable/instance/filter.js
new file mode 100644
index 0000000..914f6c8
--- /dev/null
+++ b/node_modules/core-js/stable/instance/filter.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/filter');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/find-index.js b/node_modules/core-js/stable/instance/find-index.js
new file mode 100644
index 0000000..3e4410e
--- /dev/null
+++ b/node_modules/core-js/stable/instance/find-index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/find-index');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/find-last-index.js b/node_modules/core-js/stable/instance/find-last-index.js
new file mode 100644
index 0000000..4c87c6f
--- /dev/null
+++ b/node_modules/core-js/stable/instance/find-last-index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/find-last-index');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/find-last.js b/node_modules/core-js/stable/instance/find-last.js
new file mode 100644
index 0000000..95ab0b6
--- /dev/null
+++ b/node_modules/core-js/stable/instance/find-last.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/find-last');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/find.js b/node_modules/core-js/stable/instance/find.js
new file mode 100644
index 0000000..ce67ff5
--- /dev/null
+++ b/node_modules/core-js/stable/instance/find.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/find');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/flags.js b/node_modules/core-js/stable/instance/flags.js
new file mode 100644
index 0000000..012b83d
--- /dev/null
+++ b/node_modules/core-js/stable/instance/flags.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/flags');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/flat-map.js b/node_modules/core-js/stable/instance/flat-map.js
new file mode 100644
index 0000000..89aaac8
--- /dev/null
+++ b/node_modules/core-js/stable/instance/flat-map.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/flat-map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/flat.js b/node_modules/core-js/stable/instance/flat.js
new file mode 100644
index 0000000..8acc0fb
--- /dev/null
+++ b/node_modules/core-js/stable/instance/flat.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/flat');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/for-each.js b/node_modules/core-js/stable/instance/for-each.js
new file mode 100644
index 0000000..0ed3cae
--- /dev/null
+++ b/node_modules/core-js/stable/instance/for-each.js
@@ -0,0 +1,19 @@
+'use strict';
+var classof = require('../../internals/classof');
+var hasOwn = require('../../internals/has-own-property');
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/for-each');
+require('../../modules/web.dom-collections.for-each');
+
+var ArrayPrototype = Array.prototype;
+
+var DOMIterables = {
+  DOMTokenList: true,
+  NodeList: true
+};
+
+module.exports = function (it) {
+  var own = it.forEach;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.forEach)
+    || hasOwn(DOMIterables, classof(it)) ? method : own;
+};
diff --git a/node_modules/core-js/stable/instance/includes.js b/node_modules/core-js/stable/instance/includes.js
new file mode 100644
index 0000000..45283f2
--- /dev/null
+++ b/node_modules/core-js/stable/instance/includes.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/includes');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/index-of.js b/node_modules/core-js/stable/instance/index-of.js
new file mode 100644
index 0000000..89c0daf
--- /dev/null
+++ b/node_modules/core-js/stable/instance/index-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/index-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/is-well-formed.js b/node_modules/core-js/stable/instance/is-well-formed.js
new file mode 100644
index 0000000..292abd9
--- /dev/null
+++ b/node_modules/core-js/stable/instance/is-well-formed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/is-well-formed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/keys.js b/node_modules/core-js/stable/instance/keys.js
new file mode 100644
index 0000000..4c00406
--- /dev/null
+++ b/node_modules/core-js/stable/instance/keys.js
@@ -0,0 +1,19 @@
+'use strict';
+require('../../modules/web.dom-collections.iterator');
+var classof = require('../../internals/classof');
+var hasOwn = require('../../internals/has-own-property');
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/keys');
+
+var ArrayPrototype = Array.prototype;
+
+var DOMIterables = {
+  DOMTokenList: true,
+  NodeList: true
+};
+
+module.exports = function (it) {
+  var own = it.keys;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.keys)
+    || hasOwn(DOMIterables, classof(it)) ? method : own;
+};
diff --git a/node_modules/core-js/stable/instance/last-index-of.js b/node_modules/core-js/stable/instance/last-index-of.js
new file mode 100644
index 0000000..f14f8c1
--- /dev/null
+++ b/node_modules/core-js/stable/instance/last-index-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/last-index-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/map.js b/node_modules/core-js/stable/instance/map.js
new file mode 100644
index 0000000..1b521b0
--- /dev/null
+++ b/node_modules/core-js/stable/instance/map.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/match-all.js b/node_modules/core-js/stable/instance/match-all.js
new file mode 100644
index 0000000..28e68ae
--- /dev/null
+++ b/node_modules/core-js/stable/instance/match-all.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/match-all');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/pad-end.js b/node_modules/core-js/stable/instance/pad-end.js
new file mode 100644
index 0000000..d0b4870
--- /dev/null
+++ b/node_modules/core-js/stable/instance/pad-end.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/pad-end');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/pad-start.js b/node_modules/core-js/stable/instance/pad-start.js
new file mode 100644
index 0000000..d41f8f0
--- /dev/null
+++ b/node_modules/core-js/stable/instance/pad-start.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/pad-start');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/push.js b/node_modules/core-js/stable/instance/push.js
new file mode 100644
index 0000000..674250a
--- /dev/null
+++ b/node_modules/core-js/stable/instance/push.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/push');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/reduce-right.js b/node_modules/core-js/stable/instance/reduce-right.js
new file mode 100644
index 0000000..fd485df
--- /dev/null
+++ b/node_modules/core-js/stable/instance/reduce-right.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/reduce-right');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/reduce.js b/node_modules/core-js/stable/instance/reduce.js
new file mode 100644
index 0000000..02f72cb
--- /dev/null
+++ b/node_modules/core-js/stable/instance/reduce.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/reduce');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/repeat.js b/node_modules/core-js/stable/instance/repeat.js
new file mode 100644
index 0000000..8105699
--- /dev/null
+++ b/node_modules/core-js/stable/instance/repeat.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/repeat');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/replace-all.js b/node_modules/core-js/stable/instance/replace-all.js
new file mode 100644
index 0000000..a1fcbb0
--- /dev/null
+++ b/node_modules/core-js/stable/instance/replace-all.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/replace-all');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/reverse.js b/node_modules/core-js/stable/instance/reverse.js
new file mode 100644
index 0000000..622325a
--- /dev/null
+++ b/node_modules/core-js/stable/instance/reverse.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/reverse');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/slice.js b/node_modules/core-js/stable/instance/slice.js
new file mode 100644
index 0000000..d264907
--- /dev/null
+++ b/node_modules/core-js/stable/instance/slice.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/slice');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/some.js b/node_modules/core-js/stable/instance/some.js
new file mode 100644
index 0000000..4578f7f
--- /dev/null
+++ b/node_modules/core-js/stable/instance/some.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/some');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/sort.js b/node_modules/core-js/stable/instance/sort.js
new file mode 100644
index 0000000..214fa8f
--- /dev/null
+++ b/node_modules/core-js/stable/instance/sort.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/sort');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/splice.js b/node_modules/core-js/stable/instance/splice.js
new file mode 100644
index 0000000..9f97f89
--- /dev/null
+++ b/node_modules/core-js/stable/instance/splice.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/splice');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/starts-with.js b/node_modules/core-js/stable/instance/starts-with.js
new file mode 100644
index 0000000..907985d
--- /dev/null
+++ b/node_modules/core-js/stable/instance/starts-with.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/starts-with');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/to-reversed.js b/node_modules/core-js/stable/instance/to-reversed.js
new file mode 100644
index 0000000..7464291
--- /dev/null
+++ b/node_modules/core-js/stable/instance/to-reversed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/to-reversed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/to-sorted.js b/node_modules/core-js/stable/instance/to-sorted.js
new file mode 100644
index 0000000..d4d8ca7
--- /dev/null
+++ b/node_modules/core-js/stable/instance/to-sorted.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/to-sorted');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/to-spliced.js b/node_modules/core-js/stable/instance/to-spliced.js
new file mode 100644
index 0000000..68a32bd
--- /dev/null
+++ b/node_modules/core-js/stable/instance/to-spliced.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/to-spliced');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/to-well-formed.js b/node_modules/core-js/stable/instance/to-well-formed.js
new file mode 100644
index 0000000..a3177e3
--- /dev/null
+++ b/node_modules/core-js/stable/instance/to-well-formed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/to-well-formed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/trim-end.js b/node_modules/core-js/stable/instance/trim-end.js
new file mode 100644
index 0000000..e16a862
--- /dev/null
+++ b/node_modules/core-js/stable/instance/trim-end.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/trim-end');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/trim-left.js b/node_modules/core-js/stable/instance/trim-left.js
new file mode 100644
index 0000000..3d60632
--- /dev/null
+++ b/node_modules/core-js/stable/instance/trim-left.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/trim-left');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/trim-right.js b/node_modules/core-js/stable/instance/trim-right.js
new file mode 100644
index 0000000..ad81d59
--- /dev/null
+++ b/node_modules/core-js/stable/instance/trim-right.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/trim-right');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/trim-start.js b/node_modules/core-js/stable/instance/trim-start.js
new file mode 100644
index 0000000..7877fbe
--- /dev/null
+++ b/node_modules/core-js/stable/instance/trim-start.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/trim-start');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/trim.js b/node_modules/core-js/stable/instance/trim.js
new file mode 100644
index 0000000..008afe4
--- /dev/null
+++ b/node_modules/core-js/stable/instance/trim.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/trim');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/unshift.js b/node_modules/core-js/stable/instance/unshift.js
new file mode 100644
index 0000000..178cfc9
--- /dev/null
+++ b/node_modules/core-js/stable/instance/unshift.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/unshift');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/instance/values.js b/node_modules/core-js/stable/instance/values.js
new file mode 100644
index 0000000..0ef7685
--- /dev/null
+++ b/node_modules/core-js/stable/instance/values.js
@@ -0,0 +1,19 @@
+'use strict';
+require('../../modules/web.dom-collections.iterator');
+var classof = require('../../internals/classof');
+var hasOwn = require('../../internals/has-own-property');
+var isPrototypeOf = require('../../internals/object-is-prototype-of');
+var method = require('../array/virtual/values');
+
+var ArrayPrototype = Array.prototype;
+
+var DOMIterables = {
+  DOMTokenList: true,
+  NodeList: true
+};
+
+module.exports = function (it) {
+  var own = it.values;
+  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.values)
+    || hasOwn(DOMIterables, classof(it)) ? method : own;
+};
diff --git a/node_modules/core-js/stable/instance/with.js b/node_modules/core-js/stable/instance/with.js
new file mode 100644
index 0000000..1994520
--- /dev/null
+++ b/node_modules/core-js/stable/instance/with.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/instance/with');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/is-iterable.js b/node_modules/core-js/stable/is-iterable.js
new file mode 100644
index 0000000..8b5315a
--- /dev/null
+++ b/node_modules/core-js/stable/is-iterable.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../es/is-iterable');
+require('../modules/web.dom-collections.iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/iterator/drop.js b/node_modules/core-js/stable/iterator/drop.js
new file mode 100644
index 0000000..677a588
--- /dev/null
+++ b/node_modules/core-js/stable/iterator/drop.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/iterator/drop');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/iterator/every.js b/node_modules/core-js/stable/iterator/every.js
new file mode 100644
index 0000000..6a565a2
--- /dev/null
+++ b/node_modules/core-js/stable/iterator/every.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/iterator/every');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/iterator/filter.js b/node_modules/core-js/stable/iterator/filter.js
new file mode 100644
index 0000000..b34543d
--- /dev/null
+++ b/node_modules/core-js/stable/iterator/filter.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/iterator/filter');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/iterator/find.js b/node_modules/core-js/stable/iterator/find.js
new file mode 100644
index 0000000..6ec257c
--- /dev/null
+++ b/node_modules/core-js/stable/iterator/find.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/iterator/find');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/iterator/flat-map.js b/node_modules/core-js/stable/iterator/flat-map.js
new file mode 100644
index 0000000..dfc6dc6
--- /dev/null
+++ b/node_modules/core-js/stable/iterator/flat-map.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/iterator/flat-map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/iterator/for-each.js b/node_modules/core-js/stable/iterator/for-each.js
new file mode 100644
index 0000000..e5f1ad1
--- /dev/null
+++ b/node_modules/core-js/stable/iterator/for-each.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/iterator/for-each');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/iterator/from.js b/node_modules/core-js/stable/iterator/from.js
new file mode 100644
index 0000000..0ed9ade
--- /dev/null
+++ b/node_modules/core-js/stable/iterator/from.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../es/iterator/from');
+require('../../modules/web.dom-collections.iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/iterator/index.js b/node_modules/core-js/stable/iterator/index.js
new file mode 100644
index 0000000..9912e0c
--- /dev/null
+++ b/node_modules/core-js/stable/iterator/index.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../es/iterator');
+require('../../modules/web.dom-collections.iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/iterator/map.js b/node_modules/core-js/stable/iterator/map.js
new file mode 100644
index 0000000..02b944f
--- /dev/null
+++ b/node_modules/core-js/stable/iterator/map.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/iterator/map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/iterator/reduce.js b/node_modules/core-js/stable/iterator/reduce.js
new file mode 100644
index 0000000..4e29d5c
--- /dev/null
+++ b/node_modules/core-js/stable/iterator/reduce.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/iterator/reduce');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/iterator/some.js b/node_modules/core-js/stable/iterator/some.js
new file mode 100644
index 0000000..6fa2c75
--- /dev/null
+++ b/node_modules/core-js/stable/iterator/some.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/iterator/some');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/iterator/take.js b/node_modules/core-js/stable/iterator/take.js
new file mode 100644
index 0000000..4018f1c
--- /dev/null
+++ b/node_modules/core-js/stable/iterator/take.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/iterator/take');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/iterator/to-array.js b/node_modules/core-js/stable/iterator/to-array.js
new file mode 100644
index 0000000..377abdf
--- /dev/null
+++ b/node_modules/core-js/stable/iterator/to-array.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/iterator/to-array');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/json/index.js b/node_modules/core-js/stable/json/index.js
new file mode 100644
index 0000000..8cd8376
--- /dev/null
+++ b/node_modules/core-js/stable/json/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/json');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/json/stringify.js b/node_modules/core-js/stable/json/stringify.js
new file mode 100644
index 0000000..ef87865
--- /dev/null
+++ b/node_modules/core-js/stable/json/stringify.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/json/stringify');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/json/to-string-tag.js b/node_modules/core-js/stable/json/to-string-tag.js
new file mode 100644
index 0000000..d2c991a
--- /dev/null
+++ b/node_modules/core-js/stable/json/to-string-tag.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/json/to-string-tag');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/map/group-by.js b/node_modules/core-js/stable/map/group-by.js
new file mode 100644
index 0000000..c7d22f0
--- /dev/null
+++ b/node_modules/core-js/stable/map/group-by.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/map/group-by');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/map/index.js b/node_modules/core-js/stable/map/index.js
new file mode 100644
index 0000000..e10edd6
--- /dev/null
+++ b/node_modules/core-js/stable/map/index.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../es/map');
+require('../../modules/web.dom-collections.iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/math/acosh.js b/node_modules/core-js/stable/math/acosh.js
new file mode 100644
index 0000000..a9206ca
--- /dev/null
+++ b/node_modules/core-js/stable/math/acosh.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/math/acosh');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/math/asinh.js b/node_modules/core-js/stable/math/asinh.js
new file mode 100644
index 0000000..c9fe44e
--- /dev/null
+++ b/node_modules/core-js/stable/math/asinh.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/math/asinh');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/math/atanh.js b/node_modules/core-js/stable/math/atanh.js
new file mode 100644
index 0000000..47e6b33
--- /dev/null
+++ b/node_modules/core-js/stable/math/atanh.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/math/atanh');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/math/cbrt.js b/node_modules/core-js/stable/math/cbrt.js
new file mode 100644
index 0000000..ae5c1af
--- /dev/null
+++ b/node_modules/core-js/stable/math/cbrt.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/math/cbrt');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/math/clz32.js b/node_modules/core-js/stable/math/clz32.js
new file mode 100644
index 0000000..d6add6b
--- /dev/null
+++ b/node_modules/core-js/stable/math/clz32.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/math/clz32');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/math/cosh.js b/node_modules/core-js/stable/math/cosh.js
new file mode 100644
index 0000000..b54b366
--- /dev/null
+++ b/node_modules/core-js/stable/math/cosh.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/math/cosh');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/math/expm1.js b/node_modules/core-js/stable/math/expm1.js
new file mode 100644
index 0000000..b3fdc6d
--- /dev/null
+++ b/node_modules/core-js/stable/math/expm1.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/math/expm1');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/math/f16round.js b/node_modules/core-js/stable/math/f16round.js
new file mode 100644
index 0000000..f9d613d
--- /dev/null
+++ b/node_modules/core-js/stable/math/f16round.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/math/f16round');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/math/fround.js b/node_modules/core-js/stable/math/fround.js
new file mode 100644
index 0000000..8399b9e
--- /dev/null
+++ b/node_modules/core-js/stable/math/fround.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/math/fround');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/math/hypot.js b/node_modules/core-js/stable/math/hypot.js
new file mode 100644
index 0000000..f26138c
--- /dev/null
+++ b/node_modules/core-js/stable/math/hypot.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/math/hypot');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/math/imul.js b/node_modules/core-js/stable/math/imul.js
new file mode 100644
index 0000000..5302d3b
--- /dev/null
+++ b/node_modules/core-js/stable/math/imul.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/math/imul');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/math/index.js b/node_modules/core-js/stable/math/index.js
new file mode 100644
index 0000000..370efca
--- /dev/null
+++ b/node_modules/core-js/stable/math/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/math');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/math/log10.js b/node_modules/core-js/stable/math/log10.js
new file mode 100644
index 0000000..68e82b2
--- /dev/null
+++ b/node_modules/core-js/stable/math/log10.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/math/log10');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/math/log1p.js b/node_modules/core-js/stable/math/log1p.js
new file mode 100644
index 0000000..f24450a
--- /dev/null
+++ b/node_modules/core-js/stable/math/log1p.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/math/log1p');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/math/log2.js b/node_modules/core-js/stable/math/log2.js
new file mode 100644
index 0000000..264193a
--- /dev/null
+++ b/node_modules/core-js/stable/math/log2.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/math/log2');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/math/sign.js b/node_modules/core-js/stable/math/sign.js
new file mode 100644
index 0000000..7ff2658
--- /dev/null
+++ b/node_modules/core-js/stable/math/sign.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/math/sign');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/math/sinh.js b/node_modules/core-js/stable/math/sinh.js
new file mode 100644
index 0000000..9b426d4
--- /dev/null
+++ b/node_modules/core-js/stable/math/sinh.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/math/sinh');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/math/tanh.js b/node_modules/core-js/stable/math/tanh.js
new file mode 100644
index 0000000..00dd5b7
--- /dev/null
+++ b/node_modules/core-js/stable/math/tanh.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/math/tanh');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/math/to-string-tag.js b/node_modules/core-js/stable/math/to-string-tag.js
new file mode 100644
index 0000000..89d59d3
--- /dev/null
+++ b/node_modules/core-js/stable/math/to-string-tag.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/math/to-string-tag');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/math/trunc.js b/node_modules/core-js/stable/math/trunc.js
new file mode 100644
index 0000000..3fc8041
--- /dev/null
+++ b/node_modules/core-js/stable/math/trunc.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/math/trunc');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/number/constructor.js b/node_modules/core-js/stable/number/constructor.js
new file mode 100644
index 0000000..faf98bb
--- /dev/null
+++ b/node_modules/core-js/stable/number/constructor.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/number/constructor');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/number/epsilon.js b/node_modules/core-js/stable/number/epsilon.js
new file mode 100644
index 0000000..70fc56c
--- /dev/null
+++ b/node_modules/core-js/stable/number/epsilon.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/number/epsilon');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/number/index.js b/node_modules/core-js/stable/number/index.js
new file mode 100644
index 0000000..c38e52d
--- /dev/null
+++ b/node_modules/core-js/stable/number/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/number');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/number/is-finite.js b/node_modules/core-js/stable/number/is-finite.js
new file mode 100644
index 0000000..f2641df
--- /dev/null
+++ b/node_modules/core-js/stable/number/is-finite.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/number/is-finite');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/number/is-integer.js b/node_modules/core-js/stable/number/is-integer.js
new file mode 100644
index 0000000..2727681
--- /dev/null
+++ b/node_modules/core-js/stable/number/is-integer.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/number/is-integer');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/number/is-nan.js b/node_modules/core-js/stable/number/is-nan.js
new file mode 100644
index 0000000..a2755ce
--- /dev/null
+++ b/node_modules/core-js/stable/number/is-nan.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/number/is-nan');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/number/is-safe-integer.js b/node_modules/core-js/stable/number/is-safe-integer.js
new file mode 100644
index 0000000..e230ff7
--- /dev/null
+++ b/node_modules/core-js/stable/number/is-safe-integer.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/number/is-safe-integer');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/number/max-safe-integer.js b/node_modules/core-js/stable/number/max-safe-integer.js
new file mode 100644
index 0000000..3615661
--- /dev/null
+++ b/node_modules/core-js/stable/number/max-safe-integer.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/number/max-safe-integer');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/number/min-safe-integer.js b/node_modules/core-js/stable/number/min-safe-integer.js
new file mode 100644
index 0000000..3f0e6cf
--- /dev/null
+++ b/node_modules/core-js/stable/number/min-safe-integer.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/number/min-safe-integer');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/number/parse-float.js b/node_modules/core-js/stable/number/parse-float.js
new file mode 100644
index 0000000..8557796
--- /dev/null
+++ b/node_modules/core-js/stable/number/parse-float.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/number/parse-float');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/number/parse-int.js b/node_modules/core-js/stable/number/parse-int.js
new file mode 100644
index 0000000..41f3f3a
--- /dev/null
+++ b/node_modules/core-js/stable/number/parse-int.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/number/parse-int');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/number/to-exponential.js b/node_modules/core-js/stable/number/to-exponential.js
new file mode 100644
index 0000000..e3a3d9f
--- /dev/null
+++ b/node_modules/core-js/stable/number/to-exponential.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/number/to-exponential');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/number/to-fixed.js b/node_modules/core-js/stable/number/to-fixed.js
new file mode 100644
index 0000000..dcf510b
--- /dev/null
+++ b/node_modules/core-js/stable/number/to-fixed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/number/to-fixed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/number/to-precision.js b/node_modules/core-js/stable/number/to-precision.js
new file mode 100644
index 0000000..7a7df4d
--- /dev/null
+++ b/node_modules/core-js/stable/number/to-precision.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/number/to-precision');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/number/virtual/index.js b/node_modules/core-js/stable/number/virtual/index.js
new file mode 100644
index 0000000..66b1779
--- /dev/null
+++ b/node_modules/core-js/stable/number/virtual/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/number/virtual');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/number/virtual/to-exponential.js b/node_modules/core-js/stable/number/virtual/to-exponential.js
new file mode 100644
index 0000000..8fecaf2
--- /dev/null
+++ b/node_modules/core-js/stable/number/virtual/to-exponential.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/number/virtual/to-exponential');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/number/virtual/to-fixed.js b/node_modules/core-js/stable/number/virtual/to-fixed.js
new file mode 100644
index 0000000..3631cff
--- /dev/null
+++ b/node_modules/core-js/stable/number/virtual/to-fixed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/number/virtual/to-fixed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/number/virtual/to-precision.js b/node_modules/core-js/stable/number/virtual/to-precision.js
new file mode 100644
index 0000000..59d30cd
--- /dev/null
+++ b/node_modules/core-js/stable/number/virtual/to-precision.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/number/virtual/to-precision');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/object/assign.js b/node_modules/core-js/stable/object/assign.js
new file mode 100644
index 0000000..e180c76
--- /dev/null
+++ b/node_modules/core-js/stable/object/assign.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/object/assign');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/object/create.js b/node_modules/core-js/stable/object/create.js
new file mode 100644
index 0000000..6ca3097
--- /dev/null
+++ b/node_modules/core-js/stable/object/create.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/object/create');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/object/define-getter.js b/node_modules/core-js/stable/object/define-getter.js
new file mode 100644
index 0000000..aaee507
--- /dev/null
+++ b/node_modules/core-js/stable/object/define-getter.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/object/define-getter');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/object/define-properties.js b/node_modules/core-js/stable/object/define-properties.js
new file mode 100644
index 0000000..6754c3b
--- /dev/null
+++ b/node_modules/core-js/stable/object/define-properties.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/object/define-properties');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/object/define-property.js b/node_modules/core-js/stable/object/define-property.js
new file mode 100644
index 0000000..56f11d9
--- /dev/null
+++ b/node_modules/core-js/stable/object/define-property.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/object/define-property');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/object/define-setter.js b/node_modules/core-js/stable/object/define-setter.js
new file mode 100644
index 0000000..04e8c37
--- /dev/null
+++ b/node_modules/core-js/stable/object/define-setter.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/object/define-setter');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/object/entries.js b/node_modules/core-js/stable/object/entries.js
new file mode 100644
index 0000000..5e98513
--- /dev/null
+++ b/node_modules/core-js/stable/object/entries.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/object/entries');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/object/freeze.js b/node_modules/core-js/stable/object/freeze.js
new file mode 100644
index 0000000..0fec058
--- /dev/null
+++ b/node_modules/core-js/stable/object/freeze.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/object/freeze');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/object/from-entries.js b/node_modules/core-js/stable/object/from-entries.js
new file mode 100644
index 0000000..633b68c
--- /dev/null
+++ b/node_modules/core-js/stable/object/from-entries.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../es/object/from-entries');
+require('../../modules/web.dom-collections.iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/object/get-own-property-descriptor.js b/node_modules/core-js/stable/object/get-own-property-descriptor.js
new file mode 100644
index 0000000..49e9903
--- /dev/null
+++ b/node_modules/core-js/stable/object/get-own-property-descriptor.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/object/get-own-property-descriptor');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/object/get-own-property-descriptors.js b/node_modules/core-js/stable/object/get-own-property-descriptors.js
new file mode 100644
index 0000000..081f759
--- /dev/null
+++ b/node_modules/core-js/stable/object/get-own-property-descriptors.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/object/get-own-property-descriptors');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/object/get-own-property-names.js b/node_modules/core-js/stable/object/get-own-property-names.js
new file mode 100644
index 0000000..fcec1fd
--- /dev/null
+++ b/node_modules/core-js/stable/object/get-own-property-names.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/object/get-own-property-names');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/object/get-own-property-symbols.js b/node_modules/core-js/stable/object/get-own-property-symbols.js
new file mode 100644
index 0000000..1585fdc
--- /dev/null
+++ b/node_modules/core-js/stable/object/get-own-property-symbols.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/object/get-own-property-symbols');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/object/get-prototype-of.js b/node_modules/core-js/stable/object/get-prototype-of.js
new file mode 100644
index 0000000..46bfd2d
--- /dev/null
+++ b/node_modules/core-js/stable/object/get-prototype-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/object/get-prototype-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/object/group-by.js b/node_modules/core-js/stable/object/group-by.js
new file mode 100644
index 0000000..c6163a5
--- /dev/null
+++ b/node_modules/core-js/stable/object/group-by.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/object/group-by');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/object/has-own.js b/node_modules/core-js/stable/object/has-own.js
new file mode 100644
index 0000000..dd2002d
--- /dev/null
+++ b/node_modules/core-js/stable/object/has-own.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/object/has-own');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/object/index.js b/node_modules/core-js/stable/object/index.js
new file mode 100644
index 0000000..bd849dc
--- /dev/null
+++ b/node_modules/core-js/stable/object/index.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../es/object');
+require('../../modules/web.dom-collections.iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/object/is-extensible.js b/node_modules/core-js/stable/object/is-extensible.js
new file mode 100644
index 0000000..f7de1a4
--- /dev/null
+++ b/node_modules/core-js/stable/object/is-extensible.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/object/is-extensible');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/object/is-frozen.js b/node_modules/core-js/stable/object/is-frozen.js
new file mode 100644
index 0000000..39a4493
--- /dev/null
+++ b/node_modules/core-js/stable/object/is-frozen.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/object/is-frozen');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/object/is-sealed.js b/node_modules/core-js/stable/object/is-sealed.js
new file mode 100644
index 0000000..3be1ca9
--- /dev/null
+++ b/node_modules/core-js/stable/object/is-sealed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/object/is-sealed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/object/is.js b/node_modules/core-js/stable/object/is.js
new file mode 100644
index 0000000..5aebdf8
--- /dev/null
+++ b/node_modules/core-js/stable/object/is.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/object/is');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/object/keys.js b/node_modules/core-js/stable/object/keys.js
new file mode 100644
index 0000000..74e942e
--- /dev/null
+++ b/node_modules/core-js/stable/object/keys.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/object/keys');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/object/lookup-getter.js b/node_modules/core-js/stable/object/lookup-getter.js
new file mode 100644
index 0000000..ae21d75
--- /dev/null
+++ b/node_modules/core-js/stable/object/lookup-getter.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/object/lookup-getter');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/object/lookup-setter.js b/node_modules/core-js/stable/object/lookup-setter.js
new file mode 100644
index 0000000..c015585
--- /dev/null
+++ b/node_modules/core-js/stable/object/lookup-setter.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/object/lookup-setter');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/object/prevent-extensions.js b/node_modules/core-js/stable/object/prevent-extensions.js
new file mode 100644
index 0000000..a673c7c
--- /dev/null
+++ b/node_modules/core-js/stable/object/prevent-extensions.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/object/prevent-extensions');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/object/proto.js b/node_modules/core-js/stable/object/proto.js
new file mode 100644
index 0000000..8c9f1b8
--- /dev/null
+++ b/node_modules/core-js/stable/object/proto.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/object/proto');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/object/seal.js b/node_modules/core-js/stable/object/seal.js
new file mode 100644
index 0000000..87755d3
--- /dev/null
+++ b/node_modules/core-js/stable/object/seal.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/object/seal');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/object/set-prototype-of.js b/node_modules/core-js/stable/object/set-prototype-of.js
new file mode 100644
index 0000000..cb5a173
--- /dev/null
+++ b/node_modules/core-js/stable/object/set-prototype-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/object/set-prototype-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/object/to-string.js b/node_modules/core-js/stable/object/to-string.js
new file mode 100644
index 0000000..a8d0abd
--- /dev/null
+++ b/node_modules/core-js/stable/object/to-string.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/object/to-string');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/object/values.js b/node_modules/core-js/stable/object/values.js
new file mode 100644
index 0000000..3052e58
--- /dev/null
+++ b/node_modules/core-js/stable/object/values.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/object/values');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/parse-float.js b/node_modules/core-js/stable/parse-float.js
new file mode 100644
index 0000000..2b0eae0
--- /dev/null
+++ b/node_modules/core-js/stable/parse-float.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../es/parse-float');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/parse-int.js b/node_modules/core-js/stable/parse-int.js
new file mode 100644
index 0000000..d8c07fd
--- /dev/null
+++ b/node_modules/core-js/stable/parse-int.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../es/parse-int');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/promise/all-settled.js b/node_modules/core-js/stable/promise/all-settled.js
new file mode 100644
index 0000000..d1e211b
--- /dev/null
+++ b/node_modules/core-js/stable/promise/all-settled.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../es/promise/all-settled');
+require('../../modules/web.dom-collections.iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/promise/any.js b/node_modules/core-js/stable/promise/any.js
new file mode 100644
index 0000000..63482c8
--- /dev/null
+++ b/node_modules/core-js/stable/promise/any.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../es/promise/any');
+require('../../modules/web.dom-collections.iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/promise/finally.js b/node_modules/core-js/stable/promise/finally.js
new file mode 100644
index 0000000..25a5f2c
--- /dev/null
+++ b/node_modules/core-js/stable/promise/finally.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/promise/finally');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/promise/index.js b/node_modules/core-js/stable/promise/index.js
new file mode 100644
index 0000000..cc69685
--- /dev/null
+++ b/node_modules/core-js/stable/promise/index.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../es/promise');
+require('../../modules/web.dom-collections.iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/promise/try.js b/node_modules/core-js/stable/promise/try.js
new file mode 100644
index 0000000..a9149be
--- /dev/null
+++ b/node_modules/core-js/stable/promise/try.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/promise/try');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/promise/with-resolvers.js b/node_modules/core-js/stable/promise/with-resolvers.js
new file mode 100644
index 0000000..5ea677d
--- /dev/null
+++ b/node_modules/core-js/stable/promise/with-resolvers.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/promise/with-resolvers');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/queue-microtask.js b/node_modules/core-js/stable/queue-microtask.js
new file mode 100644
index 0000000..9d07e2e
--- /dev/null
+++ b/node_modules/core-js/stable/queue-microtask.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../web/queue-microtask');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/reflect/apply.js b/node_modules/core-js/stable/reflect/apply.js
new file mode 100644
index 0000000..94994e3
--- /dev/null
+++ b/node_modules/core-js/stable/reflect/apply.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/reflect/apply');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/reflect/construct.js b/node_modules/core-js/stable/reflect/construct.js
new file mode 100644
index 0000000..72f669d
--- /dev/null
+++ b/node_modules/core-js/stable/reflect/construct.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/reflect/construct');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/reflect/define-property.js b/node_modules/core-js/stable/reflect/define-property.js
new file mode 100644
index 0000000..f98593a
--- /dev/null
+++ b/node_modules/core-js/stable/reflect/define-property.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/reflect/define-property');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/reflect/delete-property.js b/node_modules/core-js/stable/reflect/delete-property.js
new file mode 100644
index 0000000..1bd3f86
--- /dev/null
+++ b/node_modules/core-js/stable/reflect/delete-property.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/reflect/delete-property');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/reflect/get-own-property-descriptor.js b/node_modules/core-js/stable/reflect/get-own-property-descriptor.js
new file mode 100644
index 0000000..96cd6d9
--- /dev/null
+++ b/node_modules/core-js/stable/reflect/get-own-property-descriptor.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/reflect/get-own-property-descriptor');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/reflect/get-prototype-of.js b/node_modules/core-js/stable/reflect/get-prototype-of.js
new file mode 100644
index 0000000..ae5fa57
--- /dev/null
+++ b/node_modules/core-js/stable/reflect/get-prototype-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/reflect/get-prototype-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/reflect/get.js b/node_modules/core-js/stable/reflect/get.js
new file mode 100644
index 0000000..a342e12
--- /dev/null
+++ b/node_modules/core-js/stable/reflect/get.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/reflect/get');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/reflect/has.js b/node_modules/core-js/stable/reflect/has.js
new file mode 100644
index 0000000..fcbf333
--- /dev/null
+++ b/node_modules/core-js/stable/reflect/has.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/reflect/has');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/reflect/index.js b/node_modules/core-js/stable/reflect/index.js
new file mode 100644
index 0000000..c8cb648
--- /dev/null
+++ b/node_modules/core-js/stable/reflect/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/reflect');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/reflect/is-extensible.js b/node_modules/core-js/stable/reflect/is-extensible.js
new file mode 100644
index 0000000..3c76f43
--- /dev/null
+++ b/node_modules/core-js/stable/reflect/is-extensible.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/reflect/is-extensible');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/reflect/own-keys.js b/node_modules/core-js/stable/reflect/own-keys.js
new file mode 100644
index 0000000..3c01f78
--- /dev/null
+++ b/node_modules/core-js/stable/reflect/own-keys.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/reflect/own-keys');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/reflect/prevent-extensions.js b/node_modules/core-js/stable/reflect/prevent-extensions.js
new file mode 100644
index 0000000..9869cc8
--- /dev/null
+++ b/node_modules/core-js/stable/reflect/prevent-extensions.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/reflect/prevent-extensions');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/reflect/set-prototype-of.js b/node_modules/core-js/stable/reflect/set-prototype-of.js
new file mode 100644
index 0000000..3db7ab7
--- /dev/null
+++ b/node_modules/core-js/stable/reflect/set-prototype-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/reflect/set-prototype-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/reflect/set.js b/node_modules/core-js/stable/reflect/set.js
new file mode 100644
index 0000000..894287b
--- /dev/null
+++ b/node_modules/core-js/stable/reflect/set.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/reflect/set');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/reflect/to-string-tag.js b/node_modules/core-js/stable/reflect/to-string-tag.js
new file mode 100644
index 0000000..3908aff
--- /dev/null
+++ b/node_modules/core-js/stable/reflect/to-string-tag.js
@@ -0,0 +1,4 @@
+'use strict';
+require('../../modules/es.reflect.to-string-tag');
+
+module.exports = 'Reflect';
diff --git a/node_modules/core-js/stable/regexp/constructor.js b/node_modules/core-js/stable/regexp/constructor.js
new file mode 100644
index 0000000..fc090d0
--- /dev/null
+++ b/node_modules/core-js/stable/regexp/constructor.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/regexp/constructor');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/regexp/dot-all.js b/node_modules/core-js/stable/regexp/dot-all.js
new file mode 100644
index 0000000..ea55b60
--- /dev/null
+++ b/node_modules/core-js/stable/regexp/dot-all.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/regexp/dot-all');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/regexp/escape.js b/node_modules/core-js/stable/regexp/escape.js
new file mode 100644
index 0000000..df59a34
--- /dev/null
+++ b/node_modules/core-js/stable/regexp/escape.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/regexp/escape');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/regexp/flags.js b/node_modules/core-js/stable/regexp/flags.js
new file mode 100644
index 0000000..780fac2
--- /dev/null
+++ b/node_modules/core-js/stable/regexp/flags.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/regexp/flags');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/regexp/index.js b/node_modules/core-js/stable/regexp/index.js
new file mode 100644
index 0000000..72e616c
--- /dev/null
+++ b/node_modules/core-js/stable/regexp/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/regexp');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/regexp/match.js b/node_modules/core-js/stable/regexp/match.js
new file mode 100644
index 0000000..f7d5d0d
--- /dev/null
+++ b/node_modules/core-js/stable/regexp/match.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/regexp/match');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/regexp/replace.js b/node_modules/core-js/stable/regexp/replace.js
new file mode 100644
index 0000000..0775092
--- /dev/null
+++ b/node_modules/core-js/stable/regexp/replace.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/regexp/replace');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/regexp/search.js b/node_modules/core-js/stable/regexp/search.js
new file mode 100644
index 0000000..f4fb6b7
--- /dev/null
+++ b/node_modules/core-js/stable/regexp/search.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/regexp/search');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/regexp/split.js b/node_modules/core-js/stable/regexp/split.js
new file mode 100644
index 0000000..4dda86a
--- /dev/null
+++ b/node_modules/core-js/stable/regexp/split.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/regexp/split');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/regexp/sticky.js b/node_modules/core-js/stable/regexp/sticky.js
new file mode 100644
index 0000000..7897bd6
--- /dev/null
+++ b/node_modules/core-js/stable/regexp/sticky.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/regexp/sticky');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/regexp/test.js b/node_modules/core-js/stable/regexp/test.js
new file mode 100644
index 0000000..2fbef7b
--- /dev/null
+++ b/node_modules/core-js/stable/regexp/test.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/regexp/test');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/regexp/to-string.js b/node_modules/core-js/stable/regexp/to-string.js
new file mode 100644
index 0000000..edf2c0e
--- /dev/null
+++ b/node_modules/core-js/stable/regexp/to-string.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/regexp/to-string');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/self.js b/node_modules/core-js/stable/self.js
new file mode 100644
index 0000000..b4850ee
--- /dev/null
+++ b/node_modules/core-js/stable/self.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../modules/web.self');
+var path = require('../internals/path');
+
+module.exports = path.self;
diff --git a/node_modules/core-js/stable/set-immediate.js b/node_modules/core-js/stable/set-immediate.js
new file mode 100644
index 0000000..379b982
--- /dev/null
+++ b/node_modules/core-js/stable/set-immediate.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../modules/web.immediate');
+var path = require('../internals/path');
+
+module.exports = path.setImmediate;
diff --git a/node_modules/core-js/stable/set-interval.js b/node_modules/core-js/stable/set-interval.js
new file mode 100644
index 0000000..b49aca5
--- /dev/null
+++ b/node_modules/core-js/stable/set-interval.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../modules/web.timers');
+var path = require('../internals/path');
+
+module.exports = path.setInterval;
diff --git a/node_modules/core-js/stable/set-timeout.js b/node_modules/core-js/stable/set-timeout.js
new file mode 100644
index 0000000..e178923
--- /dev/null
+++ b/node_modules/core-js/stable/set-timeout.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../modules/web.timers');
+var path = require('../internals/path');
+
+module.exports = path.setTimeout;
diff --git a/node_modules/core-js/stable/set/difference.js b/node_modules/core-js/stable/set/difference.js
new file mode 100644
index 0000000..c988091
--- /dev/null
+++ b/node_modules/core-js/stable/set/difference.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/set/difference');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/set/index.js b/node_modules/core-js/stable/set/index.js
new file mode 100644
index 0000000..b7e35e4
--- /dev/null
+++ b/node_modules/core-js/stable/set/index.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../es/set');
+require('../../modules/web.dom-collections.iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/set/intersection.js b/node_modules/core-js/stable/set/intersection.js
new file mode 100644
index 0000000..5791c5b
--- /dev/null
+++ b/node_modules/core-js/stable/set/intersection.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/set/intersection');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/set/is-disjoint-from.js b/node_modules/core-js/stable/set/is-disjoint-from.js
new file mode 100644
index 0000000..fa25662
--- /dev/null
+++ b/node_modules/core-js/stable/set/is-disjoint-from.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/set/is-disjoint-from');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/set/is-subset-of.js b/node_modules/core-js/stable/set/is-subset-of.js
new file mode 100644
index 0000000..3983499
--- /dev/null
+++ b/node_modules/core-js/stable/set/is-subset-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/set/is-subset-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/set/is-superset-of.js b/node_modules/core-js/stable/set/is-superset-of.js
new file mode 100644
index 0000000..c0cddad
--- /dev/null
+++ b/node_modules/core-js/stable/set/is-superset-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/set/is-superset-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/set/symmetric-difference.js b/node_modules/core-js/stable/set/symmetric-difference.js
new file mode 100644
index 0000000..ab6b27b
--- /dev/null
+++ b/node_modules/core-js/stable/set/symmetric-difference.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/set/symmetric-difference');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/set/union.js b/node_modules/core-js/stable/set/union.js
new file mode 100644
index 0000000..5d7ece2
--- /dev/null
+++ b/node_modules/core-js/stable/set/union.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/set/union');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/anchor.js b/node_modules/core-js/stable/string/anchor.js
new file mode 100644
index 0000000..a17713c
--- /dev/null
+++ b/node_modules/core-js/stable/string/anchor.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/anchor');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/at.js b/node_modules/core-js/stable/string/at.js
new file mode 100644
index 0000000..9caf17d
--- /dev/null
+++ b/node_modules/core-js/stable/string/at.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/at');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/big.js b/node_modules/core-js/stable/string/big.js
new file mode 100644
index 0000000..9a0c1c6
--- /dev/null
+++ b/node_modules/core-js/stable/string/big.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/big');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/blink.js b/node_modules/core-js/stable/string/blink.js
new file mode 100644
index 0000000..d2b74b3
--- /dev/null
+++ b/node_modules/core-js/stable/string/blink.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/blink');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/bold.js b/node_modules/core-js/stable/string/bold.js
new file mode 100644
index 0000000..e2ca678
--- /dev/null
+++ b/node_modules/core-js/stable/string/bold.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/bold');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/code-point-at.js b/node_modules/core-js/stable/string/code-point-at.js
new file mode 100644
index 0000000..8c2d5bb
--- /dev/null
+++ b/node_modules/core-js/stable/string/code-point-at.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/code-point-at');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/ends-with.js b/node_modules/core-js/stable/string/ends-with.js
new file mode 100644
index 0000000..f1c1778
--- /dev/null
+++ b/node_modules/core-js/stable/string/ends-with.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/ends-with');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/fixed.js b/node_modules/core-js/stable/string/fixed.js
new file mode 100644
index 0000000..b07f2d3
--- /dev/null
+++ b/node_modules/core-js/stable/string/fixed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/fixed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/fontcolor.js b/node_modules/core-js/stable/string/fontcolor.js
new file mode 100644
index 0000000..781fd1e
--- /dev/null
+++ b/node_modules/core-js/stable/string/fontcolor.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/fontcolor');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/fontsize.js b/node_modules/core-js/stable/string/fontsize.js
new file mode 100644
index 0000000..a5e976a
--- /dev/null
+++ b/node_modules/core-js/stable/string/fontsize.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/fontsize');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/from-code-point.js b/node_modules/core-js/stable/string/from-code-point.js
new file mode 100644
index 0000000..3b51dff
--- /dev/null
+++ b/node_modules/core-js/stable/string/from-code-point.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/from-code-point');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/includes.js b/node_modules/core-js/stable/string/includes.js
new file mode 100644
index 0000000..88b14c5
--- /dev/null
+++ b/node_modules/core-js/stable/string/includes.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/includes');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/index.js b/node_modules/core-js/stable/string/index.js
new file mode 100644
index 0000000..af1bcb2
--- /dev/null
+++ b/node_modules/core-js/stable/string/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/is-well-formed.js b/node_modules/core-js/stable/string/is-well-formed.js
new file mode 100644
index 0000000..35ba752
--- /dev/null
+++ b/node_modules/core-js/stable/string/is-well-formed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/is-well-formed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/italics.js b/node_modules/core-js/stable/string/italics.js
new file mode 100644
index 0000000..e3c669f
--- /dev/null
+++ b/node_modules/core-js/stable/string/italics.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/italics');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/iterator.js b/node_modules/core-js/stable/string/iterator.js
new file mode 100644
index 0000000..1fcf858
--- /dev/null
+++ b/node_modules/core-js/stable/string/iterator.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/link.js b/node_modules/core-js/stable/string/link.js
new file mode 100644
index 0000000..920ce95
--- /dev/null
+++ b/node_modules/core-js/stable/string/link.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/link');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/match-all.js b/node_modules/core-js/stable/string/match-all.js
new file mode 100644
index 0000000..74e2588
--- /dev/null
+++ b/node_modules/core-js/stable/string/match-all.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/match-all');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/match.js b/node_modules/core-js/stable/string/match.js
new file mode 100644
index 0000000..d0c495a
--- /dev/null
+++ b/node_modules/core-js/stable/string/match.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/match');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/pad-end.js b/node_modules/core-js/stable/string/pad-end.js
new file mode 100644
index 0000000..b0b9123
--- /dev/null
+++ b/node_modules/core-js/stable/string/pad-end.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/pad-end');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/pad-start.js b/node_modules/core-js/stable/string/pad-start.js
new file mode 100644
index 0000000..cb83bd5
--- /dev/null
+++ b/node_modules/core-js/stable/string/pad-start.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/pad-start');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/raw.js b/node_modules/core-js/stable/string/raw.js
new file mode 100644
index 0000000..dbba130
--- /dev/null
+++ b/node_modules/core-js/stable/string/raw.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/raw');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/repeat.js b/node_modules/core-js/stable/string/repeat.js
new file mode 100644
index 0000000..e1aedfc
--- /dev/null
+++ b/node_modules/core-js/stable/string/repeat.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/repeat');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/replace-all.js b/node_modules/core-js/stable/string/replace-all.js
new file mode 100644
index 0000000..8885550
--- /dev/null
+++ b/node_modules/core-js/stable/string/replace-all.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/replace-all');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/replace.js b/node_modules/core-js/stable/string/replace.js
new file mode 100644
index 0000000..d30fbeb
--- /dev/null
+++ b/node_modules/core-js/stable/string/replace.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/replace');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/search.js b/node_modules/core-js/stable/string/search.js
new file mode 100644
index 0000000..fab8643
--- /dev/null
+++ b/node_modules/core-js/stable/string/search.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/search');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/small.js b/node_modules/core-js/stable/string/small.js
new file mode 100644
index 0000000..9ce14b6
--- /dev/null
+++ b/node_modules/core-js/stable/string/small.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/small');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/split.js b/node_modules/core-js/stable/string/split.js
new file mode 100644
index 0000000..82e7ce2
--- /dev/null
+++ b/node_modules/core-js/stable/string/split.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/split');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/starts-with.js b/node_modules/core-js/stable/string/starts-with.js
new file mode 100644
index 0000000..78c1716
--- /dev/null
+++ b/node_modules/core-js/stable/string/starts-with.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/starts-with');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/strike.js b/node_modules/core-js/stable/string/strike.js
new file mode 100644
index 0000000..1bb8b81
--- /dev/null
+++ b/node_modules/core-js/stable/string/strike.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/strike');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/sub.js b/node_modules/core-js/stable/string/sub.js
new file mode 100644
index 0000000..12a57a3
--- /dev/null
+++ b/node_modules/core-js/stable/string/sub.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/sub');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/substr.js b/node_modules/core-js/stable/string/substr.js
new file mode 100644
index 0000000..7c7fe2d
--- /dev/null
+++ b/node_modules/core-js/stable/string/substr.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/substr');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/sup.js b/node_modules/core-js/stable/string/sup.js
new file mode 100644
index 0000000..e68750a
--- /dev/null
+++ b/node_modules/core-js/stable/string/sup.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/sup');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/to-well-formed.js b/node_modules/core-js/stable/string/to-well-formed.js
new file mode 100644
index 0000000..6193ba7
--- /dev/null
+++ b/node_modules/core-js/stable/string/to-well-formed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/to-well-formed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/trim-end.js b/node_modules/core-js/stable/string/trim-end.js
new file mode 100644
index 0000000..1088705
--- /dev/null
+++ b/node_modules/core-js/stable/string/trim-end.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/trim-end');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/trim-left.js b/node_modules/core-js/stable/string/trim-left.js
new file mode 100644
index 0000000..1909d02
--- /dev/null
+++ b/node_modules/core-js/stable/string/trim-left.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/trim-left');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/trim-right.js b/node_modules/core-js/stable/string/trim-right.js
new file mode 100644
index 0000000..37aa068
--- /dev/null
+++ b/node_modules/core-js/stable/string/trim-right.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/trim-right');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/trim-start.js b/node_modules/core-js/stable/string/trim-start.js
new file mode 100644
index 0000000..47b5d42
--- /dev/null
+++ b/node_modules/core-js/stable/string/trim-start.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/trim-start');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/trim.js b/node_modules/core-js/stable/string/trim.js
new file mode 100644
index 0000000..6db2e8f
--- /dev/null
+++ b/node_modules/core-js/stable/string/trim.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/string/trim');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/virtual/anchor.js b/node_modules/core-js/stable/string/virtual/anchor.js
new file mode 100644
index 0000000..867aaa1
--- /dev/null
+++ b/node_modules/core-js/stable/string/virtual/anchor.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/string/virtual/anchor');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/virtual/at.js b/node_modules/core-js/stable/string/virtual/at.js
new file mode 100644
index 0000000..f0b8c65
--- /dev/null
+++ b/node_modules/core-js/stable/string/virtual/at.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/string/virtual/at');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/virtual/big.js b/node_modules/core-js/stable/string/virtual/big.js
new file mode 100644
index 0000000..1874027
--- /dev/null
+++ b/node_modules/core-js/stable/string/virtual/big.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/string/virtual/big');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/virtual/blink.js b/node_modules/core-js/stable/string/virtual/blink.js
new file mode 100644
index 0000000..acd2a76
--- /dev/null
+++ b/node_modules/core-js/stable/string/virtual/blink.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/string/virtual/blink');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/virtual/bold.js b/node_modules/core-js/stable/string/virtual/bold.js
new file mode 100644
index 0000000..e86a6dd
--- /dev/null
+++ b/node_modules/core-js/stable/string/virtual/bold.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/string/virtual/bold');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/virtual/code-point-at.js b/node_modules/core-js/stable/string/virtual/code-point-at.js
new file mode 100644
index 0000000..af25c5b
--- /dev/null
+++ b/node_modules/core-js/stable/string/virtual/code-point-at.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/string/virtual/code-point-at');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/virtual/ends-with.js b/node_modules/core-js/stable/string/virtual/ends-with.js
new file mode 100644
index 0000000..1410d8d
--- /dev/null
+++ b/node_modules/core-js/stable/string/virtual/ends-with.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/string/virtual/ends-with');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/virtual/fixed.js b/node_modules/core-js/stable/string/virtual/fixed.js
new file mode 100644
index 0000000..747f4a2
--- /dev/null
+++ b/node_modules/core-js/stable/string/virtual/fixed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/string/virtual/fixed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/virtual/fontcolor.js b/node_modules/core-js/stable/string/virtual/fontcolor.js
new file mode 100644
index 0000000..b34881a
--- /dev/null
+++ b/node_modules/core-js/stable/string/virtual/fontcolor.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/string/virtual/fontcolor');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/virtual/fontsize.js b/node_modules/core-js/stable/string/virtual/fontsize.js
new file mode 100644
index 0000000..a8de306
--- /dev/null
+++ b/node_modules/core-js/stable/string/virtual/fontsize.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/string/virtual/fontsize');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/virtual/includes.js b/node_modules/core-js/stable/string/virtual/includes.js
new file mode 100644
index 0000000..82d2a8f
--- /dev/null
+++ b/node_modules/core-js/stable/string/virtual/includes.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/string/virtual/includes');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/virtual/index.js b/node_modules/core-js/stable/string/virtual/index.js
new file mode 100644
index 0000000..17e0666
--- /dev/null
+++ b/node_modules/core-js/stable/string/virtual/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/string/virtual');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/virtual/is-well-formed.js b/node_modules/core-js/stable/string/virtual/is-well-formed.js
new file mode 100644
index 0000000..ca3313f
--- /dev/null
+++ b/node_modules/core-js/stable/string/virtual/is-well-formed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/string/virtual/is-well-formed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/virtual/italics.js b/node_modules/core-js/stable/string/virtual/italics.js
new file mode 100644
index 0000000..9652df0
--- /dev/null
+++ b/node_modules/core-js/stable/string/virtual/italics.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/string/virtual/italics');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/virtual/iterator.js b/node_modules/core-js/stable/string/virtual/iterator.js
new file mode 100644
index 0000000..56dab13
--- /dev/null
+++ b/node_modules/core-js/stable/string/virtual/iterator.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/string/virtual/iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/virtual/link.js b/node_modules/core-js/stable/string/virtual/link.js
new file mode 100644
index 0000000..133c425
--- /dev/null
+++ b/node_modules/core-js/stable/string/virtual/link.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/string/virtual/link');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/virtual/match-all.js b/node_modules/core-js/stable/string/virtual/match-all.js
new file mode 100644
index 0000000..7211492
--- /dev/null
+++ b/node_modules/core-js/stable/string/virtual/match-all.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/string/virtual/match-all');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/virtual/pad-end.js b/node_modules/core-js/stable/string/virtual/pad-end.js
new file mode 100644
index 0000000..bef7418
--- /dev/null
+++ b/node_modules/core-js/stable/string/virtual/pad-end.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/string/virtual/pad-end');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/virtual/pad-start.js b/node_modules/core-js/stable/string/virtual/pad-start.js
new file mode 100644
index 0000000..1b112d5
--- /dev/null
+++ b/node_modules/core-js/stable/string/virtual/pad-start.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/string/virtual/pad-start');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/virtual/repeat.js b/node_modules/core-js/stable/string/virtual/repeat.js
new file mode 100644
index 0000000..3c5bf61
--- /dev/null
+++ b/node_modules/core-js/stable/string/virtual/repeat.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/string/virtual/repeat');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/virtual/replace-all.js b/node_modules/core-js/stable/string/virtual/replace-all.js
new file mode 100644
index 0000000..0c8be0d
--- /dev/null
+++ b/node_modules/core-js/stable/string/virtual/replace-all.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/string/virtual/replace-all');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/virtual/small.js b/node_modules/core-js/stable/string/virtual/small.js
new file mode 100644
index 0000000..34c5020
--- /dev/null
+++ b/node_modules/core-js/stable/string/virtual/small.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/string/virtual/small');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/virtual/starts-with.js b/node_modules/core-js/stable/string/virtual/starts-with.js
new file mode 100644
index 0000000..81bd97d
--- /dev/null
+++ b/node_modules/core-js/stable/string/virtual/starts-with.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/string/virtual/starts-with');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/virtual/strike.js b/node_modules/core-js/stable/string/virtual/strike.js
new file mode 100644
index 0000000..2238ef5
--- /dev/null
+++ b/node_modules/core-js/stable/string/virtual/strike.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/string/virtual/strike');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/virtual/sub.js b/node_modules/core-js/stable/string/virtual/sub.js
new file mode 100644
index 0000000..b6f2a5a
--- /dev/null
+++ b/node_modules/core-js/stable/string/virtual/sub.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/string/virtual/sub');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/virtual/substr.js b/node_modules/core-js/stable/string/virtual/substr.js
new file mode 100644
index 0000000..a3dafd3
--- /dev/null
+++ b/node_modules/core-js/stable/string/virtual/substr.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/string/virtual/substr');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/virtual/sup.js b/node_modules/core-js/stable/string/virtual/sup.js
new file mode 100644
index 0000000..9968018
--- /dev/null
+++ b/node_modules/core-js/stable/string/virtual/sup.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/string/virtual/sup');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/virtual/to-well-formed.js b/node_modules/core-js/stable/string/virtual/to-well-formed.js
new file mode 100644
index 0000000..31f54f7
--- /dev/null
+++ b/node_modules/core-js/stable/string/virtual/to-well-formed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/string/virtual/to-well-formed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/virtual/trim-end.js b/node_modules/core-js/stable/string/virtual/trim-end.js
new file mode 100644
index 0000000..3f3d22c
--- /dev/null
+++ b/node_modules/core-js/stable/string/virtual/trim-end.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/string/virtual/trim-end');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/virtual/trim-left.js b/node_modules/core-js/stable/string/virtual/trim-left.js
new file mode 100644
index 0000000..b44db43
--- /dev/null
+++ b/node_modules/core-js/stable/string/virtual/trim-left.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/string/virtual/trim-left');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/virtual/trim-right.js b/node_modules/core-js/stable/string/virtual/trim-right.js
new file mode 100644
index 0000000..d6ed8fe
--- /dev/null
+++ b/node_modules/core-js/stable/string/virtual/trim-right.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/string/virtual/trim-right');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/virtual/trim-start.js b/node_modules/core-js/stable/string/virtual/trim-start.js
new file mode 100644
index 0000000..869c237
--- /dev/null
+++ b/node_modules/core-js/stable/string/virtual/trim-start.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/string/virtual/trim-start');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/string/virtual/trim.js b/node_modules/core-js/stable/string/virtual/trim.js
new file mode 100644
index 0000000..218155a
--- /dev/null
+++ b/node_modules/core-js/stable/string/virtual/trim.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../../es/string/virtual/trim');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/structured-clone.js b/node_modules/core-js/stable/structured-clone.js
new file mode 100644
index 0000000..3c877c0
--- /dev/null
+++ b/node_modules/core-js/stable/structured-clone.js
@@ -0,0 +1,14 @@
+'use strict';
+require('../modules/es.error.to-string');
+require('../modules/es.array.iterator');
+require('../modules/es.object.keys');
+require('../modules/es.object.to-string');
+require('../modules/es.map');
+require('../modules/es.set');
+require('../modules/web.dom-exception.constructor');
+require('../modules/web.dom-exception.stack');
+require('../modules/web.dom-exception.to-string-tag');
+require('../modules/web.structured-clone');
+var path = require('../internals/path');
+
+module.exports = path.structuredClone;
diff --git a/node_modules/core-js/stable/symbol/async-iterator.js b/node_modules/core-js/stable/symbol/async-iterator.js
new file mode 100644
index 0000000..0b51219
--- /dev/null
+++ b/node_modules/core-js/stable/symbol/async-iterator.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/symbol/async-iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/symbol/description.js b/node_modules/core-js/stable/symbol/description.js
new file mode 100644
index 0000000..299f557
--- /dev/null
+++ b/node_modules/core-js/stable/symbol/description.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/symbol/description');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/symbol/for.js b/node_modules/core-js/stable/symbol/for.js
new file mode 100644
index 0000000..ce0ec94
--- /dev/null
+++ b/node_modules/core-js/stable/symbol/for.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/symbol/for');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/symbol/has-instance.js b/node_modules/core-js/stable/symbol/has-instance.js
new file mode 100644
index 0000000..4f3b9fd
--- /dev/null
+++ b/node_modules/core-js/stable/symbol/has-instance.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/symbol/has-instance');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/symbol/index.js b/node_modules/core-js/stable/symbol/index.js
new file mode 100644
index 0000000..297807a
--- /dev/null
+++ b/node_modules/core-js/stable/symbol/index.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../es/symbol');
+require('../../modules/web.dom-collections.iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/symbol/is-concat-spreadable.js b/node_modules/core-js/stable/symbol/is-concat-spreadable.js
new file mode 100644
index 0000000..342f839
--- /dev/null
+++ b/node_modules/core-js/stable/symbol/is-concat-spreadable.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/symbol/is-concat-spreadable');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/symbol/iterator.js b/node_modules/core-js/stable/symbol/iterator.js
new file mode 100644
index 0000000..61fdcd1
--- /dev/null
+++ b/node_modules/core-js/stable/symbol/iterator.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../es/symbol/iterator');
+require('../../modules/web.dom-collections.iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/symbol/key-for.js b/node_modules/core-js/stable/symbol/key-for.js
new file mode 100644
index 0000000..8c0a245
--- /dev/null
+++ b/node_modules/core-js/stable/symbol/key-for.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/symbol/key-for');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/symbol/match-all.js b/node_modules/core-js/stable/symbol/match-all.js
new file mode 100644
index 0000000..2b3e792
--- /dev/null
+++ b/node_modules/core-js/stable/symbol/match-all.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/symbol/match-all');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/symbol/match.js b/node_modules/core-js/stable/symbol/match.js
new file mode 100644
index 0000000..5771ecc
--- /dev/null
+++ b/node_modules/core-js/stable/symbol/match.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/symbol/match');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/symbol/replace.js b/node_modules/core-js/stable/symbol/replace.js
new file mode 100644
index 0000000..32de402
--- /dev/null
+++ b/node_modules/core-js/stable/symbol/replace.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/symbol/replace');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/symbol/search.js b/node_modules/core-js/stable/symbol/search.js
new file mode 100644
index 0000000..33f7af2
--- /dev/null
+++ b/node_modules/core-js/stable/symbol/search.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/symbol/search');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/symbol/species.js b/node_modules/core-js/stable/symbol/species.js
new file mode 100644
index 0000000..1993f38
--- /dev/null
+++ b/node_modules/core-js/stable/symbol/species.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/symbol/species');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/symbol/split.js b/node_modules/core-js/stable/symbol/split.js
new file mode 100644
index 0000000..36591f5
--- /dev/null
+++ b/node_modules/core-js/stable/symbol/split.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/symbol/split');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/symbol/to-primitive.js b/node_modules/core-js/stable/symbol/to-primitive.js
new file mode 100644
index 0000000..0ff90d1
--- /dev/null
+++ b/node_modules/core-js/stable/symbol/to-primitive.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/symbol/to-primitive');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/symbol/to-string-tag.js b/node_modules/core-js/stable/symbol/to-string-tag.js
new file mode 100644
index 0000000..07743c3
--- /dev/null
+++ b/node_modules/core-js/stable/symbol/to-string-tag.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/symbol/to-string-tag');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/symbol/unscopables.js b/node_modules/core-js/stable/symbol/unscopables.js
new file mode 100644
index 0000000..a9a1e9b
--- /dev/null
+++ b/node_modules/core-js/stable/symbol/unscopables.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/symbol/unscopables');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/at.js b/node_modules/core-js/stable/typed-array/at.js
new file mode 100644
index 0000000..c37f9a5
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/at.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/typed-array/at');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/copy-within.js b/node_modules/core-js/stable/typed-array/copy-within.js
new file mode 100644
index 0000000..5475894
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/copy-within.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/typed-array/copy-within');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/entries.js b/node_modules/core-js/stable/typed-array/entries.js
new file mode 100644
index 0000000..5840f90
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/entries.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/typed-array/entries');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/every.js b/node_modules/core-js/stable/typed-array/every.js
new file mode 100644
index 0000000..6e35c97
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/every.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/typed-array/every');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/fill.js b/node_modules/core-js/stable/typed-array/fill.js
new file mode 100644
index 0000000..ae1b3b7
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/fill.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/typed-array/fill');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/filter.js b/node_modules/core-js/stable/typed-array/filter.js
new file mode 100644
index 0000000..bd128d3
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/filter.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/typed-array/filter');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/find-index.js b/node_modules/core-js/stable/typed-array/find-index.js
new file mode 100644
index 0000000..d5a65c9
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/find-index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/typed-array/find-index');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/find-last-index.js b/node_modules/core-js/stable/typed-array/find-last-index.js
new file mode 100644
index 0000000..8c05205
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/find-last-index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../es/typed-array/find-last-index');
diff --git a/node_modules/core-js/stable/typed-array/find-last.js b/node_modules/core-js/stable/typed-array/find-last.js
new file mode 100644
index 0000000..2ed4274
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/find-last.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('../../es/typed-array/find-last');
diff --git a/node_modules/core-js/stable/typed-array/find.js b/node_modules/core-js/stable/typed-array/find.js
new file mode 100644
index 0000000..f0f958b
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/find.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/typed-array/find');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/float32-array.js b/node_modules/core-js/stable/typed-array/float32-array.js
new file mode 100644
index 0000000..8452ba9
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/float32-array.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../es/typed-array/float32-array');
+require('../../stable/typed-array/methods');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/float64-array.js b/node_modules/core-js/stable/typed-array/float64-array.js
new file mode 100644
index 0000000..311dd18
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/float64-array.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../es/typed-array/float64-array');
+require('../../stable/typed-array/methods');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/for-each.js b/node_modules/core-js/stable/typed-array/for-each.js
new file mode 100644
index 0000000..4461c21
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/for-each.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/typed-array/for-each');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/from.js b/node_modules/core-js/stable/typed-array/from.js
new file mode 100644
index 0000000..a4ed37e
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/from.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/typed-array/from');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/includes.js b/node_modules/core-js/stable/typed-array/includes.js
new file mode 100644
index 0000000..4725ca7
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/includes.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/typed-array/includes');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/index-of.js b/node_modules/core-js/stable/typed-array/index-of.js
new file mode 100644
index 0000000..0b8a574
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/index-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/typed-array/index-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/index.js b/node_modules/core-js/stable/typed-array/index.js
new file mode 100644
index 0000000..8f49ed3
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/typed-array');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/int16-array.js b/node_modules/core-js/stable/typed-array/int16-array.js
new file mode 100644
index 0000000..5bab609
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/int16-array.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../es/typed-array/int16-array');
+require('../../stable/typed-array/methods');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/int32-array.js b/node_modules/core-js/stable/typed-array/int32-array.js
new file mode 100644
index 0000000..881fc4e
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/int32-array.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../es/typed-array/int32-array');
+require('../../stable/typed-array/methods');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/int8-array.js b/node_modules/core-js/stable/typed-array/int8-array.js
new file mode 100644
index 0000000..eb56ff3
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/int8-array.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../es/typed-array/int8-array');
+require('../../stable/typed-array/methods');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/iterator.js b/node_modules/core-js/stable/typed-array/iterator.js
new file mode 100644
index 0000000..3adf194
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/iterator.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/typed-array/iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/join.js b/node_modules/core-js/stable/typed-array/join.js
new file mode 100644
index 0000000..98bfd71
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/join.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/typed-array/join');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/keys.js b/node_modules/core-js/stable/typed-array/keys.js
new file mode 100644
index 0000000..698af2e
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/keys.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/typed-array/keys');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/last-index-of.js b/node_modules/core-js/stable/typed-array/last-index-of.js
new file mode 100644
index 0000000..6bb68b7
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/last-index-of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/typed-array/last-index-of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/map.js b/node_modules/core-js/stable/typed-array/map.js
new file mode 100644
index 0000000..60c2682
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/map.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/typed-array/map');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/methods.js b/node_modules/core-js/stable/typed-array/methods.js
new file mode 100644
index 0000000..1ce1707
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/methods.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/typed-array/methods');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/of.js b/node_modules/core-js/stable/typed-array/of.js
new file mode 100644
index 0000000..f5b8853
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/of.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/typed-array/of');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/reduce-right.js b/node_modules/core-js/stable/typed-array/reduce-right.js
new file mode 100644
index 0000000..a1bb8ff
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/reduce-right.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/typed-array/reduce-right');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/reduce.js b/node_modules/core-js/stable/typed-array/reduce.js
new file mode 100644
index 0000000..ce08877
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/reduce.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/typed-array/reduce');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/reverse.js b/node_modules/core-js/stable/typed-array/reverse.js
new file mode 100644
index 0000000..27c5ea3
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/reverse.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/typed-array/reverse');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/set.js b/node_modules/core-js/stable/typed-array/set.js
new file mode 100644
index 0000000..26c09de
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/set.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/typed-array/set');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/slice.js b/node_modules/core-js/stable/typed-array/slice.js
new file mode 100644
index 0000000..62da77b
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/slice.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/typed-array/slice');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/some.js b/node_modules/core-js/stable/typed-array/some.js
new file mode 100644
index 0000000..7b996b4
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/some.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/typed-array/some');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/sort.js b/node_modules/core-js/stable/typed-array/sort.js
new file mode 100644
index 0000000..2d479a6
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/sort.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/typed-array/sort');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/subarray.js b/node_modules/core-js/stable/typed-array/subarray.js
new file mode 100644
index 0000000..a1e2bab
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/subarray.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/typed-array/subarray');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/to-locale-string.js b/node_modules/core-js/stable/typed-array/to-locale-string.js
new file mode 100644
index 0000000..7a2a01c
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/to-locale-string.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/typed-array/to-locale-string');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/to-reversed.js b/node_modules/core-js/stable/typed-array/to-reversed.js
new file mode 100644
index 0000000..1fb1fdb
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/to-reversed.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/typed-array/to-reversed');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/to-sorted.js b/node_modules/core-js/stable/typed-array/to-sorted.js
new file mode 100644
index 0000000..12ea8b1
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/to-sorted.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/typed-array/to-sorted');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/to-string.js b/node_modules/core-js/stable/typed-array/to-string.js
new file mode 100644
index 0000000..37af503
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/to-string.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/typed-array/to-string');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/uint16-array.js b/node_modules/core-js/stable/typed-array/uint16-array.js
new file mode 100644
index 0000000..4fc2f5a
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/uint16-array.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../es/typed-array/uint16-array');
+require('../../stable/typed-array/methods');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/uint32-array.js b/node_modules/core-js/stable/typed-array/uint32-array.js
new file mode 100644
index 0000000..0146afb
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/uint32-array.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../es/typed-array/uint32-array');
+require('../../stable/typed-array/methods');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/uint8-array.js b/node_modules/core-js/stable/typed-array/uint8-array.js
new file mode 100644
index 0000000..66f1552
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/uint8-array.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../es/typed-array/uint8-array');
+require('../../stable/typed-array/methods');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/uint8-clamped-array.js b/node_modules/core-js/stable/typed-array/uint8-clamped-array.js
new file mode 100644
index 0000000..5b88f7f
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/uint8-clamped-array.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../es/typed-array/uint8-clamped-array');
+require('../../stable/typed-array/methods');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/values.js b/node_modules/core-js/stable/typed-array/values.js
new file mode 100644
index 0000000..457c07a
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/values.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/typed-array/values');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/typed-array/with.js b/node_modules/core-js/stable/typed-array/with.js
new file mode 100644
index 0000000..5784c0f
--- /dev/null
+++ b/node_modules/core-js/stable/typed-array/with.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../es/typed-array/with');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/unescape.js b/node_modules/core-js/stable/unescape.js
new file mode 100644
index 0000000..7fa0f43
--- /dev/null
+++ b/node_modules/core-js/stable/unescape.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../es/unescape');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/url-search-params/index.js b/node_modules/core-js/stable/url-search-params/index.js
new file mode 100644
index 0000000..df53189
--- /dev/null
+++ b/node_modules/core-js/stable/url-search-params/index.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../web/url-search-params');
+require('../../modules/web.dom-collections.iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/url/can-parse.js b/node_modules/core-js/stable/url/can-parse.js
new file mode 100644
index 0000000..161f22f
--- /dev/null
+++ b/node_modules/core-js/stable/url/can-parse.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/web.url');
+require('../../modules/web.url.can-parse');
+var path = require('../../internals/path');
+
+module.exports = path.URL.canParse;
diff --git a/node_modules/core-js/stable/url/index.js b/node_modules/core-js/stable/url/index.js
new file mode 100644
index 0000000..a391cf3
--- /dev/null
+++ b/node_modules/core-js/stable/url/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var parent = require('../../web/url');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/url/parse.js b/node_modules/core-js/stable/url/parse.js
new file mode 100644
index 0000000..d0fdfe0
--- /dev/null
+++ b/node_modules/core-js/stable/url/parse.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../../modules/web.url');
+require('../../modules/web.url.parse');
+var path = require('../../internals/path');
+
+module.exports = path.URL.parse;
diff --git a/node_modules/core-js/stable/url/to-json.js b/node_modules/core-js/stable/url/to-json.js
new file mode 100644
index 0000000..5ac6f4c
--- /dev/null
+++ b/node_modules/core-js/stable/url/to-json.js
@@ -0,0 +1,2 @@
+'use strict';
+require('../../modules/web.url.to-json');
diff --git a/node_modules/core-js/stable/weak-map/index.js b/node_modules/core-js/stable/weak-map/index.js
new file mode 100644
index 0000000..606700d
--- /dev/null
+++ b/node_modules/core-js/stable/weak-map/index.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../es/weak-map');
+require('../../modules/web.dom-collections.iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stable/weak-set/index.js b/node_modules/core-js/stable/weak-set/index.js
new file mode 100644
index 0000000..6510f04
--- /dev/null
+++ b/node_modules/core-js/stable/weak-set/index.js
@@ -0,0 +1,5 @@
+'use strict';
+var parent = require('../../es/weak-set');
+require('../../modules/web.dom-collections.iterator');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stage/0.js b/node_modules/core-js/stage/0.js
new file mode 100644
index 0000000..888b810
--- /dev/null
+++ b/node_modules/core-js/stage/0.js
@@ -0,0 +1,13 @@
+'use strict';
+var parent = require('./1');
+
+require('../proposals/efficient-64-bit-arithmetic');
+require('../proposals/function-demethodize');
+require('../proposals/function-is-callable-is-constructor');
+require('../proposals/string-at');
+require('../proposals/url');
+// TODO: Obsolete versions, remove from `core-js@4`:
+require('../proposals/array-filtering');
+require('../proposals/function-un-this');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stage/1.js b/node_modules/core-js/stage/1.js
new file mode 100644
index 0000000..769c12e
--- /dev/null
+++ b/node_modules/core-js/stage/1.js
@@ -0,0 +1,28 @@
+'use strict';
+var parent = require('./2');
+
+require('../proposals/array-filtering-stage-1');
+require('../proposals/array-last');
+require('../proposals/array-unique');
+require('../proposals/collection-methods');
+require('../proposals/collection-of-from');
+require('../proposals/data-view-get-set-uint8-clamped');
+require('../proposals/keys-composition');
+require('../proposals/math-clamp');
+require('../proposals/math-extensions');
+require('../proposals/math-signbit');
+require('../proposals/number-from-string');
+require('../proposals/object-iteration');
+require('../proposals/observable');
+require('../proposals/pattern-matching-v2');
+require('../proposals/seeded-random');
+require('../proposals/string-code-points');
+require('../proposals/string-cooked');
+// TODO: Obsolete versions, remove from `core-js@4`:
+require('../proposals/array-from-async');
+require('../proposals/map-upsert');
+require('../proposals/number-range');
+require('../proposals/pattern-matching');
+require('../proposals/string-replace-all');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stage/2.7.js b/node_modules/core-js/stage/2.7.js
new file mode 100644
index 0000000..41a8257
--- /dev/null
+++ b/node_modules/core-js/stage/2.7.js
@@ -0,0 +1,6 @@
+'use strict';
+var parent = require('./3');
+
+require('../proposals/iterator-sequencing');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stage/2.js b/node_modules/core-js/stage/2.js
new file mode 100644
index 0000000..e842d28
--- /dev/null
+++ b/node_modules/core-js/stage/2.js
@@ -0,0 +1,22 @@
+'use strict';
+var parent = require('./2.7');
+
+require('../proposals/array-is-template-object');
+require('../proposals/async-iterator-helpers');
+require('../proposals/extractors');
+require('../proposals/iterator-range');
+require('../proposals/map-upsert-v4');
+require('../proposals/string-dedent');
+require('../proposals/symbol-predicates-v2');
+// TODO: Obsolete versions, remove from `core-js@4`
+require('../proposals/array-grouping');
+require('../proposals/async-explicit-resource-management');
+require('../proposals/decorators');
+require('../proposals/decorator-metadata');
+require('../proposals/iterator-helpers');
+require('../proposals/map-upsert-stage-2');
+require('../proposals/set-methods');
+require('../proposals/symbol-predicates');
+require('../proposals/using-statement');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stage/3.js b/node_modules/core-js/stage/3.js
new file mode 100644
index 0000000..eacb2f8
--- /dev/null
+++ b/node_modules/core-js/stage/3.js
@@ -0,0 +1,17 @@
+'use strict';
+var parent = require('./4');
+
+require('../proposals/array-buffer-base64');
+require('../proposals/array-from-async-stage-2');
+require('../proposals/decorator-metadata-v2');
+require('../proposals/explicit-resource-management');
+require('../proposals/is-error');
+require('../proposals/json-parse-with-source');
+require('../proposals/math-sum');
+// TODO: Obsolete versions, remove from `core-js@4`
+require('../proposals/array-grouping-stage-3');
+require('../proposals/array-grouping-stage-3-2');
+require('../proposals/change-array-by-copy');
+require('../proposals/iterator-helpers-stage-3');
+
+module.exports = parent;
diff --git a/node_modules/core-js/stage/4.js b/node_modules/core-js/stage/4.js
new file mode 100644
index 0000000..428c531
--- /dev/null
+++ b/node_modules/core-js/stage/4.js
@@ -0,0 +1,25 @@
+'use strict';
+// TODO: Remove this entry from `core-js@4`
+require('../proposals/accessible-object-hasownproperty');
+require('../proposals/array-buffer-transfer');
+require('../proposals/array-find-from-last');
+require('../proposals/array-grouping-v2');
+require('../proposals/change-array-by-copy-stage-4');
+// require('../proposals/error-cause');
+require('../proposals/float16');
+require('../proposals/global-this');
+require('../proposals/iterator-helpers-stage-3-2');
+require('../proposals/promise-all-settled');
+require('../proposals/promise-any');
+require('../proposals/promise-try');
+require('../proposals/promise-with-resolvers');
+require('../proposals/regexp-escaping');
+require('../proposals/relative-indexing-method');
+require('../proposals/set-methods-v2');
+require('../proposals/string-match-all');
+require('../proposals/string-replace-all-stage-4');
+require('../proposals/well-formed-unicode-strings');
+
+var path = require('../internals/path');
+
+module.exports = path;
diff --git a/node_modules/core-js/stage/README.md b/node_modules/core-js/stage/README.md
new file mode 100644
index 0000000..e64ccfb
--- /dev/null
+++ b/node_modules/core-js/stage/README.md
@@ -0,0 +1 @@
+This folder contains entry points for [ECMAScript proposals](https://github.com/zloirock/core-js#ecmascript-proposals) with dependencies.
diff --git a/node_modules/core-js/stage/index.js b/node_modules/core-js/stage/index.js
new file mode 100644
index 0000000..c1a27ed
--- /dev/null
+++ b/node_modules/core-js/stage/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var proposals = require('./pre');
+
+module.exports = proposals;
diff --git a/node_modules/core-js/stage/pre.js b/node_modules/core-js/stage/pre.js
new file mode 100644
index 0000000..0f22311
--- /dev/null
+++ b/node_modules/core-js/stage/pre.js
@@ -0,0 +1,6 @@
+'use strict';
+var parent = require('./0');
+
+require('../proposals/reflect-metadata');
+
+module.exports = parent;
diff --git a/node_modules/core-js/web/README.md b/node_modules/core-js/web/README.md
new file mode 100644
index 0000000..76c8c16
--- /dev/null
+++ b/node_modules/core-js/web/README.md
@@ -0,0 +1 @@
+This folder contains entry points for features from [WHATWG / W3C](https://github.com/zloirock/core-js#web-standards) with dependencies.
diff --git a/node_modules/core-js/web/dom-collections.js b/node_modules/core-js/web/dom-collections.js
new file mode 100644
index 0000000..6551d7a
--- /dev/null
+++ b/node_modules/core-js/web/dom-collections.js
@@ -0,0 +1,6 @@
+'use strict';
+require('../modules/web.dom-collections.for-each');
+require('../modules/web.dom-collections.iterator');
+var path = require('../internals/path');
+
+module.exports = path;
diff --git a/node_modules/core-js/web/dom-exception.js b/node_modules/core-js/web/dom-exception.js
new file mode 100644
index 0000000..7c1658a
--- /dev/null
+++ b/node_modules/core-js/web/dom-exception.js
@@ -0,0 +1,8 @@
+'use strict';
+require('../modules/es.error.to-string');
+require('../modules/web.dom-exception.constructor');
+require('../modules/web.dom-exception.stack');
+require('../modules/web.dom-exception.to-string-tag');
+var path = require('../internals/path');
+
+module.exports = path.DOMException;
diff --git a/node_modules/core-js/web/immediate.js b/node_modules/core-js/web/immediate.js
new file mode 100644
index 0000000..3154cd9
--- /dev/null
+++ b/node_modules/core-js/web/immediate.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../modules/web.immediate');
+var path = require('../internals/path');
+
+module.exports = path;
diff --git a/node_modules/core-js/web/index.js b/node_modules/core-js/web/index.js
new file mode 100644
index 0000000..d0a6f4e
--- /dev/null
+++ b/node_modules/core-js/web/index.js
@@ -0,0 +1,24 @@
+'use strict';
+require('../modules/web.atob');
+require('../modules/web.btoa');
+require('../modules/web.dom-collections.for-each');
+require('../modules/web.dom-collections.iterator');
+require('../modules/web.dom-exception.constructor');
+require('../modules/web.dom-exception.stack');
+require('../modules/web.dom-exception.to-string-tag');
+require('../modules/web.immediate');
+require('../modules/web.queue-microtask');
+require('../modules/web.self');
+require('../modules/web.structured-clone');
+require('../modules/web.timers');
+require('../modules/web.url');
+require('../modules/web.url.can-parse');
+require('../modules/web.url.parse');
+require('../modules/web.url.to-json');
+require('../modules/web.url-search-params');
+require('../modules/web.url-search-params.delete');
+require('../modules/web.url-search-params.has');
+require('../modules/web.url-search-params.size');
+var path = require('../internals/path');
+
+module.exports = path;
diff --git a/node_modules/core-js/web/queue-microtask.js b/node_modules/core-js/web/queue-microtask.js
new file mode 100644
index 0000000..87552e7
--- /dev/null
+++ b/node_modules/core-js/web/queue-microtask.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../modules/web.queue-microtask');
+var path = require('../internals/path');
+
+module.exports = path.queueMicrotask;
diff --git a/node_modules/core-js/web/structured-clone.js b/node_modules/core-js/web/structured-clone.js
new file mode 100644
index 0000000..a58caf0
--- /dev/null
+++ b/node_modules/core-js/web/structured-clone.js
@@ -0,0 +1,9 @@
+'use strict';
+require('../modules/es.array.iterator');
+require('../modules/es.object.to-string');
+require('../modules/es.map');
+require('../modules/es.set');
+require('../modules/web.structured-clone');
+var path = require('../internals/path');
+
+module.exports = path.structuredClone;
diff --git a/node_modules/core-js/web/timers.js b/node_modules/core-js/web/timers.js
new file mode 100644
index 0000000..2e6e766
--- /dev/null
+++ b/node_modules/core-js/web/timers.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../modules/web.timers');
+var path = require('../internals/path');
+
+module.exports = path;
diff --git a/node_modules/core-js/web/url-search-params.js b/node_modules/core-js/web/url-search-params.js
new file mode 100644
index 0000000..4f3127e
--- /dev/null
+++ b/node_modules/core-js/web/url-search-params.js
@@ -0,0 +1,8 @@
+'use strict';
+require('../modules/web.url-search-params');
+require('../modules/web.url-search-params.delete');
+require('../modules/web.url-search-params.has');
+require('../modules/web.url-search-params.size');
+var path = require('../internals/path');
+
+module.exports = path.URLSearchParams;
diff --git a/node_modules/core-js/web/url.js b/node_modules/core-js/web/url.js
new file mode 100644
index 0000000..8f5616d
--- /dev/null
+++ b/node_modules/core-js/web/url.js
@@ -0,0 +1,9 @@
+'use strict';
+require('./url-search-params');
+require('../modules/web.url');
+require('../modules/web.url.can-parse');
+require('../modules/web.url.parse');
+require('../modules/web.url.to-json');
+var path = require('../internals/path');
+
+module.exports = path.URL;
diff --git a/node_modules/css-line-break/CHANGELOG.md b/node_modules/css-line-break/CHANGELOG.md
new file mode 100644
index 0000000..ca1c24c
--- /dev/null
+++ b/node_modules/css-line-break/CHANGELOG.md
@@ -0,0 +1,58 @@
+# Changelog
+
+All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+
+# [2.1.0](https://github.com/niklasvh/css-line-break/compare/v2.0.1...v2.1.0) (2022-01-22)
+
+
+### feat
+
+* update to use utrie dep (#20) ([18adab4](https://github.com/niklasvh/css-line-break/commit/18adab4010b54bb73add4f23c3325b27c2c13d91)), closes [#20](https://github.com/niklasvh/css-line-break/issues/20)
+
+### fix
+
+* source maps (#19) ([60cdede](https://github.com/niklasvh/css-line-break/commit/60cdedeaa025f685fc7002653f390233becce128)), closes [#19](https://github.com/niklasvh/css-line-break/issues/19)
+
+
+
+## [2.0.1](https://github.com/niklasvh/css-line-break/compare/v2.0.0...v2.0.1) (2021-08-04)
+
+
+### fix
+
+* wordBreak break-word (#17) ([d615f1f](https://github.com/niklasvh/css-line-break/commit/d615f1f731c9074035d0dab843a17a64080ba7ba)), closes [#17](https://github.com/niklasvh/css-line-break/issues/17)
+
+
+
+# [2.0.0](https://github.com/niklasvh/css-line-break/compare/v1.1.3-0...v2.0.0) (2021-08-02)
+
+
+### fix
+
+* zwj emojis #2 (#16) ([a314ea3](https://github.com/niklasvh/css-line-break/commit/a314ea33768cde9dab4e673d3339d6b4f9c32196)), closes [#2](https://github.com/niklasvh/css-line-break/issues/2) [#16](https://github.com/niklasvh/css-line-break/issues/16)
+
+
+
+## [1.1.3-0](https://github.com/niklasvh/css-line-break/compare/v1.1.2-0...v1.1.3-0) (2021-07-15)
+
+
+### deps
+
+* update deps (#14) ([330cb73](https://github.com/niklasvh/css-line-break/commit/330cb734f635d4d5e0d61ea991651d6d49b03054)), closes [#14](https://github.com/niklasvh/css-line-break/issues/14)
+
+### docs
+
+* fix readme (#13) ([1f4a330](https://github.com/niklasvh/css-line-break/commit/1f4a3300752c8bbf5a0138c7924b231161f1e4ac)), closes [#13](https://github.com/niklasvh/css-line-break/issues/13) [#10](https://github.com/niklasvh/css-line-break/issues/10)
+
+### feat
+
+* implement line-break.txt v13 (#15) ([bc95c80](https://github.com/niklasvh/css-line-break/commit/bc95c809e12613a9531b7985450c6bc96717e8de)), closes [#15](https://github.com/niklasvh/css-line-break/issues/15)
+
+
+
+## [1.1.2-0](https://github.com/niklasvh/css-line-break/compare/v1.1.1...v1.1.2-0) (2021-07-04)
+
+
+### ci
+
+* update to use github actions (#12) ([7aed118](https://github.com/niklasvh/css-line-break/commit/7aed11880975b6faf6e46caed93b6d225babd943)), closes [#12](https://github.com/niklasvh/css-line-break/issues/12)
diff --git a/node_modules/css-line-break/LICENSE b/node_modules/css-line-break/LICENSE
new file mode 100644
index 0000000..ba085a9
--- /dev/null
+++ b/node_modules/css-line-break/LICENSE
@@ -0,0 +1,22 @@
+Copyright (c) 2017 Niklas von Hertzen
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/node_modules/css-line-break/README.md b/node_modules/css-line-break/README.md
new file mode 100644
index 0000000..befd9f3
--- /dev/null
+++ b/node_modules/css-line-break/README.md
@@ -0,0 +1,66 @@
+css-line-break
+==============
+
+![CI](https://github.com/niklasvh/css-line-break/workflows/CI/badge.svg?branch=master)
+[![NPM Downloads](https://img.shields.io/npm/dm/css-line-break.svg)](https://www.npmjs.org/package/css-line-break)
+[![NPM Version](https://img.shields.io/npm/v/css-line-break.svg)](https://www.npmjs.org/package/css-line-break)
+
+A JavaScript library for Line Breaking and identifying Word Boundaries, 
+[implementing the Unicode Line Breaking Algorithm (UAX #14)](http://unicode.org/reports/tr14/)  
+
+>> Line breaking, also known as word wrapping, is the process of breaking a section of text into 
+lines such that it will fit in the available width of a page, window or other display area. 
+The Unicode Line Breaking Algorithm performs part of this process. Given an input text, 
+it produces a set of positions called "break opportunities" that are appropriate points to 
+begin a new line. The selection of actual line break positions from the set of break opportunities 
+is not covered by the Unicode Line Breaking Algorithm, but is in the domain of higher level 
+software with knowledge of the available width and the display size of the text.
+
+In addition, the module implements CSS specific tailoring options to line breaking as 
+defined in [CSS Text Module Level 3](https://www.w3.org/TR/css-text-3/#line-breaking).
+
+### Installing
+You can install the module via npm:
+
+    npm install css-line-break
+  
+### Usage
+The `LineBreaker` creates an [iterator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators) that returns `Break`s for a given text.
+
+    LineBreaker(text, [options]);
+    
+### Example
+[JSFiddle](https://jsfiddle.net/ofd3752k)
+```javascript
+import {LineBreaker} from 'css-line-break';
+
+const breaker = LineBreaker('Lorem ipsum lol.', {
+    lineBreak: 'strict',
+    wordBreak: 'normal'
+});
+
+const words = [];
+let bk;
+
+while (!(bk = breaker.next()).done) {
+    words.push(bk.value.slice());
+}
+
+assert.deepEqual(words, ['Lorem ', 'ipsum ', 'lol.']);
+```    
+### Options
+The following parameters are available for the options:
+
+ - `lineBreak`: `normal` | `strict`
+ - `wordBreak`: `normal` | `break-all` | `break-word` | `keep-all`
+ 
+For more information how they affect the line breaking algorithms, 
+check out [CSS Text Module Level 3](https://www.w3.org/TR/css-text-3/#line-breaking).
+
+### Testing
+You can run the test suite with:
+
+    npm test
+
+The library implements all the [LineBreakTest.txt tests](http://www.unicode.org/Public/10.0.0/ucd/auxiliary/LineBreakTest.txt) 
+ and a number of CSS web-platform-tests.
\ No newline at end of file
diff --git a/node_modules/css-line-break/package.json b/node_modules/css-line-break/package.json
new file mode 100644
index 0000000..b0f2542
--- /dev/null
+++ b/node_modules/css-line-break/package.json
@@ -0,0 +1,61 @@
+{
+  "name": "css-line-break",
+  "version": "2.1.0",
+  "description": "",
+  "main": "dist/css-line-break.umd.js",
+  "module": "dist/css-line-break.es5.js",
+  "typings": "dist/types/index.d.ts",
+  "scripts": {
+    "prebuild": "rimraf dist/",
+    "build": "tsc --module commonjs && rollup -c rollup.config.ts",
+    "format": "prettier --write \"{src,scripts}/**/*.ts\"",
+    "lint": "tslint -c tslint.json --project tsconfig.json -t codeFrame src/**/*.ts tests/**/*.ts scripts/**/*.ts",
+    "generate-trie": "ts-node scripts/generate_line_break_trie.ts",
+    "generate-tests": "ts-node scripts/generate_line_break_tests.ts",
+    "mocha": "mocha --require ts-node/register tests/*.ts",
+    "test": "npm run lint && npm run mocha",
+    "release": "standard-version"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/niklasvh/css-line-break.git"
+  },
+  "keywords": [
+    "white-space",
+    "line-break",
+    "word-break",
+    "word-wrap",
+    "overflow-wrap"
+  ],
+  "dependencies": {
+    "utrie": "^1.0.2"
+  },
+  "devDependencies": {
+    "@rollup/plugin-commonjs": "^19.0.0",
+    "@rollup/plugin-node-resolve": "^13.0.0",
+    "@rollup/plugin-typescript": "^8.2.1",
+    "@types/mocha": "^8.2.2",
+    "@types/node": "^16.0.0",
+    "mocha": "9.0.2",
+    "prettier": "^2.3.2",
+    "rimraf": "3.0.2",
+    "rollup": "^2.52.7",
+    "rollup-plugin-json": "^4.0.0",
+    "rollup-plugin-sourcemaps": "^0.6.3",
+    "standard-version": "^9.3.0",
+    "ts-node": "^10.0.0",
+    "tslint": "^6.1.3",
+    "tslint-config-prettier": "^1.18.0",
+    "typescript": "^4.3.5"
+  },
+  "author": {
+    "name": "Niklas von Hertzen",
+    "email": "niklasvh@gmail.com",
+    "url": "https://hertzen.com"
+  },
+  "license": "MIT",
+  "bugs": {
+    "url": "https://github.com/niklasvh/css-line-break/issues"
+  },
+  "homepage": "https://github.com/niklasvh/css-line-break#readme"
+}
diff --git a/node_modules/css-line-break/rollup.config.ts b/node_modules/css-line-break/rollup.config.ts
new file mode 100644
index 0000000..652fe03
--- /dev/null
+++ b/node_modules/css-line-break/rollup.config.ts
@@ -0,0 +1,40 @@
+import resolve from '@rollup/plugin-node-resolve';
+import commonjs from '@rollup/plugin-commonjs';
+import sourceMaps from 'rollup-plugin-sourcemaps';
+import typescript from '@rollup/plugin-typescript';
+import json from 'rollup-plugin-json';
+
+const pkg = require('./package.json');
+
+const banner = `/*
+ * ${pkg.name} ${pkg.version} <${pkg.homepage}>
+ * Copyright (c) ${(new Date()).getFullYear()} ${pkg.author.name} <${pkg.author.url}>
+ * Released under ${pkg.license} License
+ */`;
+
+export default {
+    input: `src/index.ts`,
+    output: [
+        { file: pkg.main, name: pkg.name, format: 'umd', banner, sourcemap: true },
+        { file: pkg.module, format: 'esm', banner, sourcemap: true },
+    ],
+    external: [],
+    watch: {
+        include: 'src/**',
+    },
+    plugins: [
+        // Allow node_modules resolution, so you can use 'external' to control
+        // which external modules to include in the bundle
+        // https://github.com/rollup/rollup-plugin-node-resolve#usage
+        resolve(),
+        // Allow json resolution
+        json(),
+        // Compile TypeScript files
+        typescript({ sourceMap: true, inlineSources: true }),
+        // Allow bundling cjs modules (unlike webpack, rollup doesn't understand cjs)
+        commonjs(),
+
+        // Resolve source maps to the original source
+        sourceMaps(),
+    ],
+}
diff --git a/node_modules/dompurify/LICENSE b/node_modules/dompurify/LICENSE
new file mode 100644
index 0000000..3887d27
--- /dev/null
+++ b/node_modules/dompurify/LICENSE
@@ -0,0 +1,568 @@
+DOMPurify
+Copyright 2025 Dr.-Ing. Mario Heiderich, Cure53
+
+DOMPurify is free software; you can redistribute it and/or modify it under the
+terms of either:
+
+a) the Apache License Version 2.0, or
+b) the Mozilla Public License Version 2.0
+
+-----------------------------------------------------------------------------
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-----------------------------------------------------------------------------
+Mozilla Public License, version 2.0
+
+1. Definitions
+
+1.1. “Contributor”
+
+     means each individual or legal entity that creates, contributes to the
+     creation of, or owns Covered Software.
+
+1.2. “Contributor Version”
+
+     means the combination of the Contributions of others (if any) used by a
+     Contributor and that particular Contributor’s Contribution.
+
+1.3. “Contribution”
+
+     means Covered Software of a particular Contributor.
+
+1.4. “Covered Software”
+
+     means Source Code Form to which the initial Contributor has attached the
+     notice in Exhibit A, the Executable Form of such Source Code Form, and
+     Modifications of such Source Code Form, in each case including portions
+     thereof.
+
+1.5. “Incompatible With Secondary Licenses”
+     means
+
+     a. that the initial Contributor has attached the notice described in
+        Exhibit B to the Covered Software; or
+
+     b. that the Covered Software was made available under the terms of version
+        1.1 or earlier of the License, but not also under the terms of a
+        Secondary License.
+
+1.6. “Executable Form”
+
+     means any form of the work other than Source Code Form.
+
+1.7. “Larger Work”
+
+     means a work that combines Covered Software with other material, in a separate
+     file or files, that is not Covered Software.
+
+1.8. “License”
+
+     means this document.
+
+1.9. “Licensable”
+
+     means having the right to grant, to the maximum extent possible, whether at the
+     time of the initial grant or subsequently, any and all of the rights conveyed by
+     this License.
+
+1.10. “Modifications”
+
+     means any of the following:
+
+     a. any file in Source Code Form that results from an addition to, deletion
+        from, or modification of the contents of Covered Software; or
+
+     b. any new file in Source Code Form that contains any Covered Software.
+
+1.11. “Patent Claims” of a Contributor
+
+      means any patent claim(s), including without limitation, method, process,
+      and apparatus claims, in any patent Licensable by such Contributor that
+      would be infringed, but for the grant of the License, by the making,
+      using, selling, offering for sale, having made, import, or transfer of
+      either its Contributions or its Contributor Version.
+
+1.12. “Secondary License”
+
+      means either the GNU General Public License, Version 2.0, the GNU Lesser
+      General Public License, Version 2.1, the GNU Affero General Public
+      License, Version 3.0, or any later versions of those licenses.
+
+1.13. “Source Code Form”
+
+      means the form of the work preferred for making modifications.
+
+1.14. “You” (or “Your”)
+
+      means an individual or a legal entity exercising rights under this
+      License. For legal entities, “You” includes any entity that controls, is
+      controlled by, or is under common control with You. For purposes of this
+      definition, “control” means (a) the power, direct or indirect, to cause
+      the direction or management of such entity, whether by contract or
+      otherwise, or (b) ownership of more than fifty percent (50%) of the
+      outstanding shares or beneficial ownership of such entity.
+
+
+2. License Grants and Conditions
+
+2.1. Grants
+
+     Each Contributor hereby grants You a world-wide, royalty-free,
+     non-exclusive license:
+
+     a. under intellectual property rights (other than patent or trademark)
+        Licensable by such Contributor to use, reproduce, make available,
+        modify, display, perform, distribute, and otherwise exploit its
+        Contributions, either on an unmodified basis, with Modifications, or as
+        part of a Larger Work; and
+
+     b. under Patent Claims of such Contributor to make, use, sell, offer for
+        sale, have made, import, and otherwise transfer either its Contributions
+        or its Contributor Version.
+
+2.2. Effective Date
+
+     The licenses granted in Section 2.1 with respect to any Contribution become
+     effective for each Contribution on the date the Contributor first distributes
+     such Contribution.
+
+2.3. Limitations on Grant Scope
+
+     The licenses granted in this Section 2 are the only rights granted under this
+     License. No additional rights or licenses will be implied from the distribution
+     or licensing of Covered Software under this License. Notwithstanding Section
+     2.1(b) above, no patent license is granted by a Contributor:
+
+     a. for any code that a Contributor has removed from Covered Software; or
+
+     b. for infringements caused by: (i) Your and any other third party’s
+        modifications of Covered Software, or (ii) the combination of its
+        Contributions with other software (except as part of its Contributor
+        Version); or
+
+     c. under Patent Claims infringed by Covered Software in the absence of its
+        Contributions.
+
+     This License does not grant any rights in the trademarks, service marks, or
+     logos of any Contributor (except as may be necessary to comply with the
+     notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+     No Contributor makes additional grants as a result of Your choice to
+     distribute the Covered Software under a subsequent version of this License
+     (see Section 10.2) or under the terms of a Secondary License (if permitted
+     under the terms of Section 3.3).
+
+2.5. Representation
+
+     Each Contributor represents that the Contributor believes its Contributions
+     are its original creation(s) or it has sufficient rights to grant the
+     rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+     This License is not intended to limit any rights You have under applicable
+     copyright doctrines of fair use, fair dealing, or other equivalents.
+
+2.7. Conditions
+
+     Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in
+     Section 2.1.
+
+
+3. Responsibilities
+
+3.1. Distribution of Source Form
+
+     All distribution of Covered Software in Source Code Form, including any
+     Modifications that You create or to which You contribute, must be under the
+     terms of this License. You must inform recipients that the Source Code Form
+     of the Covered Software is governed by the terms of this License, and how
+     they can obtain a copy of this License. You may not attempt to alter or
+     restrict the recipients’ rights in the Source Code Form.
+
+3.2. Distribution of Executable Form
+
+     If You distribute Covered Software in Executable Form then:
+
+     a. such Covered Software must also be made available in Source Code Form,
+        as described in Section 3.1, and You must inform recipients of the
+        Executable Form how they can obtain a copy of such Source Code Form by
+        reasonable means in a timely manner, at a charge no more than the cost
+        of distribution to the recipient; and
+
+     b. You may distribute such Executable Form under the terms of this License,
+        or sublicense it under different terms, provided that the license for
+        the Executable Form does not attempt to limit or alter the recipients’
+        rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+     You may create and distribute a Larger Work under terms of Your choice,
+     provided that You also comply with the requirements of this License for the
+     Covered Software. If the Larger Work is a combination of Covered Software
+     with a work governed by one or more Secondary Licenses, and the Covered
+     Software is not Incompatible With Secondary Licenses, this License permits
+     You to additionally distribute such Covered Software under the terms of
+     such Secondary License(s), so that the recipient of the Larger Work may, at
+     their option, further distribute the Covered Software under the terms of
+     either this License or such Secondary License(s).
+
+3.4. Notices
+
+     You may not remove or alter the substance of any license notices (including
+     copyright notices, patent notices, disclaimers of warranty, or limitations
+     of liability) contained within the Source Code Form of the Covered
+     Software, except that You may alter any license notices to the extent
+     required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+     You may choose to offer, and to charge a fee for, warranty, support,
+     indemnity or liability obligations to one or more recipients of Covered
+     Software. However, You may do so only on Your own behalf, and not on behalf
+     of any Contributor. You must make it absolutely clear that any such
+     warranty, support, indemnity, or liability obligation is offered by You
+     alone, and You hereby agree to indemnify every Contributor for any
+     liability incurred by such Contributor as a result of warranty, support,
+     indemnity or liability terms You offer. You may include additional
+     disclaimers of warranty and limitations of liability specific to any
+     jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+
+   If it is impossible for You to comply with any of the terms of this License
+   with respect to some or all of the Covered Software due to statute, judicial
+   order, or regulation then You must: (a) comply with the terms of this License
+   to the maximum extent possible; and (b) describe the limitations and the code
+   they affect. Such description must be placed in a text file included with all
+   distributions of the Covered Software under this License. Except to the
+   extent prohibited by statute or regulation, such description must be
+   sufficiently detailed for a recipient of ordinary skill to be able to
+   understand it.
+
+5. Termination
+
+5.1. The rights granted under this License will terminate automatically if You
+     fail to comply with any of its terms. However, if You become compliant,
+     then the rights granted under this License from a particular Contributor
+     are reinstated (a) provisionally, unless and until such Contributor
+     explicitly and finally terminates Your grants, and (b) on an ongoing basis,
+     if such Contributor fails to notify You of the non-compliance by some
+     reasonable means prior to 60 days after You have come back into compliance.
+     Moreover, Your grants from a particular Contributor are reinstated on an
+     ongoing basis if such Contributor notifies You of the non-compliance by
+     some reasonable means, this is the first time You have received notice of
+     non-compliance with this License from such Contributor, and You become
+     compliant prior to 30 days after Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+     infringement claim (excluding declaratory judgment actions, counter-claims,
+     and cross-claims) alleging that a Contributor Version directly or
+     indirectly infringes any patent, then the rights granted to You by any and
+     all Contributors for the Covered Software under Section 2.1 of this License
+     shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user
+     license agreements (excluding distributors and resellers) which have been
+     validly granted by You or Your distributors under this License prior to
+     termination shall survive termination.
+
+6. Disclaimer of Warranty
+
+   Covered Software is provided under this License on an “as is” basis, without
+   warranty of any kind, either expressed, implied, or statutory, including,
+   without limitation, warranties that the Covered Software is free of defects,
+   merchantable, fit for a particular purpose or non-infringing. The entire
+   risk as to the quality and performance of the Covered Software is with You.
+   Should any Covered Software prove defective in any respect, You (not any
+   Contributor) assume the cost of any necessary servicing, repair, or
+   correction. This disclaimer of warranty constitutes an essential part of this
+   License. No use of  any Covered Software is authorized under this License
+   except under this disclaimer.
+
+7. Limitation of Liability
+
+   Under no circumstances and under no legal theory, whether tort (including
+   negligence), contract, or otherwise, shall any Contributor, or anyone who
+   distributes Covered Software as permitted above, be liable to You for any
+   direct, indirect, special, incidental, or consequential damages of any
+   character including, without limitation, damages for lost profits, loss of
+   goodwill, work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses, even if such party shall have been
+   informed of the possibility of such damages. This limitation of liability
+   shall not apply to liability for death or personal injury resulting from such
+   party’s negligence to the extent applicable law prohibits such limitation.
+   Some jurisdictions do not allow the exclusion or limitation of incidental or
+   consequential damages, so this exclusion and limitation may not apply to You.
+
+8. Litigation
+
+   Any litigation relating to this License may be brought only in the courts of
+   a jurisdiction where the defendant maintains its principal place of business
+   and such litigation shall be governed by laws of that jurisdiction, without
+   reference to its conflict-of-law provisions. Nothing in this Section shall
+   prevent a party’s ability to bring cross-claims or counter-claims.
+
+9. Miscellaneous
+
+   This License represents the complete agreement concerning the subject matter
+   hereof. If any provision of this License is held to be unenforceable, such
+   provision shall be reformed only to the extent necessary to make it
+   enforceable. Any law or regulation which provides that the language of a
+   contract shall be construed against the drafter shall not be used to construe
+   this License against a Contributor.
+
+
+10. Versions of the License
+
+10.1. New Versions
+
+      Mozilla Foundation is the license steward. Except as provided in Section
+      10.3, no one other than the license steward has the right to modify or
+      publish new versions of this License. Each version will be given a
+      distinguishing version number.
+
+10.2. Effect of New Versions
+
+      You may distribute the Covered Software under the terms of the version of
+      the License under which You originally received the Covered Software, or
+      under the terms of any subsequent version published by the license
+      steward.
+
+10.3. Modified Versions
+
+      If you create software not governed by this License, and you want to
+      create a new license for such software, you may create and use a modified
+      version of this License if you rename the license and remove any
+      references to the name of the license steward (except to note that such
+      modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses
+      If You choose to distribute Source Code Form that is Incompatible With
+      Secondary Licenses under the terms of this version of the License, the
+      notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+
+      This Source Code Form is subject to the
+      terms of the Mozilla Public License, v.
+      2.0. If a copy of the MPL was not
+      distributed with this file, You can
+      obtain one at
+      http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular file, then
+You may include the notice in a location (such as a LICENSE file in a relevant
+directory) where a recipient would be likely to look for such a notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - “Incompatible With Secondary Licenses” Notice
+
+      This Source Code Form is “Incompatible
+      With Secondary Licenses”, as defined by
+      the Mozilla Public License, v. 2.0.
+
diff --git a/node_modules/dompurify/README.md b/node_modules/dompurify/README.md
new file mode 100644
index 0000000..c88c5f9
--- /dev/null
+++ b/node_modules/dompurify/README.md
@@ -0,0 +1,436 @@
+# DOMPurify
+
+[![npm version](https://badge.fury.io/js/dompurify.svg)](http://badge.fury.io/js/dompurify) ![Build and Test](https://github.com/cure53/DOMPurify/workflows/Build%20and%20Test/badge.svg) [![Downloads](https://img.shields.io/npm/dm/dompurify.svg)](https://www.npmjs.com/package/dompurify) ![npm package minimized gzipped size (select exports)](https://img.shields.io/bundlejs/size/dompurify?color=%233C1&label=minified) ![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/cure53/dompurify?color=%233C1) [![dependents](https://badgen.net/github/dependents-repo/cure53/dompurify?color=green&label=dependents)](https://github.com/cure53/DOMPurify/network/dependents)
+
+DOMPurify is a DOM-only, super-fast, uber-tolerant XSS sanitizer for HTML, MathML and SVG.
+
+It's also very simple to use and get started with. DOMPurify was [started in February 2014](https://github.com/cure53/DOMPurify/commit/a630922616927373485e0e787ab19e73e3691b2b) and, meanwhile, has reached version **v3.2.4**.
+
+DOMPurify is written in JavaScript and works in all modern browsers (Safari (10+), Opera (15+), Edge, Firefox and Chrome - as well as almost anything else using Blink, Gecko or WebKit). It doesn't break on MSIE or other legacy browsers. It simply does nothing.
+
+**Note that [DOMPurify v2.5.8](https://github.com/cure53/DOMPurify/releases/tag/2.5.8) is the latest version supporting MSIE. For important security updates compatible with MSIE, please use the [2.x branch](https://github.com/cure53/DOMPurify/tree/2.x).**
+
+Our automated tests cover [24 different browsers](https://github.com/cure53/DOMPurify/blob/main/test/karma.custom-launchers.config.js#L5) right now, more to come. We also cover Node.js v16.x, v17.x, v18.x and v19.x, running DOMPurify on [jsdom](https://github.com/jsdom/jsdom). Older Node versions are known to work as well, but hey... no guarantees.
+
+DOMPurify is written by security people who have vast background in web attacks and XSS. Fear not. For more details please also read about our [Security Goals & Threat Model](https://github.com/cure53/DOMPurify/wiki/Security-Goals-&-Threat-Model). Please, read it. Like, really.
+
+## What does it do?
+
+DOMPurify sanitizes HTML and prevents XSS attacks. You can feed DOMPurify with string full of dirty HTML and it will return a string (unless configured otherwise) with clean HTML. DOMPurify will strip out everything that contains dangerous HTML and thereby prevent XSS attacks and other nastiness. It's also damn bloody fast. We use the technologies the browser provides and turn them into an XSS filter. The faster your browser, the faster DOMPurify will be.
+
+## How do I use it?
+
+It's easy. Just include DOMPurify on your website.
+
+### Using the unminified development version
+
+```html
+<script type="text/javascript" src="src/purify.js"></script>
+```
+
+### Using the minified and tested production version (source-map available)
+
+```html
+<script type="text/javascript" src="dist/purify.min.js"></script>
+```
+
+Afterwards you can sanitize strings by executing the following code:
+
+```js
+const clean = DOMPurify.sanitize(dirty);
+```
+
+Or maybe this, if you love working with Angular or alike:
+
+```js
+import DOMPurify from 'dompurify';
+
+const clean = DOMPurify.sanitize('<b>hello there</b>');
+```
+
+The resulting HTML can be written into a DOM element using `innerHTML` or the DOM using `document.write()`. That is fully up to you.
+Note that by default, we permit HTML, SVG **and** MathML. If you only need HTML, which might be a very common use-case, you can easily set that up as well:
+
+```js
+const clean = DOMPurify.sanitize(dirty, { USE_PROFILES: { html: true } });
+```
+
+### Is there any foot-gun potential?
+
+Well, please note, if you _first_ sanitize HTML and then modify it _afterwards_, you might easily **void the effects of sanitization**. If you feed the sanitized markup to another library _after_ sanitization, please be certain that the library doesn't mess around with the HTML on its own.
+
+### Okay, makes sense, let's move on
+
+After sanitizing your markup, you can also have a look at the property `DOMPurify.removed` and find out, what elements and attributes were thrown out. Please **do not use** this property for making any security critical decisions. This is just a little helper for curious minds.
+
+### Running DOMPurify on the server
+
+DOMPurify technically also works server-side with Node.js. Our support strives to follow the [Node.js release cycle](https://nodejs.org/en/about/releases/).
+
+Running DOMPurify on the server requires a DOM to be present, which is probably no surprise. Usually, [jsdom](https://github.com/jsdom/jsdom) is the tool of choice and we **strongly recommend** to use the latest version of _jsdom_.
+
+Why? Because older versions of _jsdom_ are known to be buggy in ways that result in XSS _even if_ DOMPurify does everything 100% correctly. There are **known attack vectors** in, e.g. _jsdom v19.0.0_ that are fixed in _jsdom v20.0.0_ - and we really recommend to keep _jsdom_ up to date because of that.
+
+Please also be aware that tools like [happy-dom](https://github.com/capricorn86/happy-dom) exist but **are not considered safe** at this point. Combining DOMPurify with _happy-dom_ is currently not recommended and will likely lead to XSS.
+
+Other than that, you are fine to use DOMPurify on the server. Probably. This really depends on _jsdom_ or whatever DOM you utilize server-side. If you can live with that, this is how you get it to work:
+
+```bash
+npm install dompurify
+npm install jsdom
+```
+
+For _jsdom_ (please use an up-to-date version), this should do the trick:
+
+```js
+const createDOMPurify = require('dompurify');
+const { JSDOM } = require('jsdom');
+
+const window = new JSDOM('').window;
+const DOMPurify = createDOMPurify(window);
+const clean = DOMPurify.sanitize('<b>hello there</b>');
+```
+
+Or even this, if you prefer working with imports:
+
+```js
+import { JSDOM } from 'jsdom';
+import DOMPurify from 'dompurify';
+
+const window = new JSDOM('').window;
+const purify = DOMPurify(window);
+const clean = purify.sanitize('<b>hello there</b>');
+```
+
+If you have problems making it work in your specific setup, consider looking at the amazing [isomorphic-dompurify](https://github.com/kkomelin/isomorphic-dompurify) project which solves lots of problems people might run into.
+
+```bash
+npm install isomorphic-dompurify
+```
+
+```js
+import DOMPurify from 'isomorphic-dompurify';
+
+const clean = DOMPurify.sanitize('<s>hello</s>');
+```
+
+## Is there a demo?
+
+Of course there is a demo! [Play with DOMPurify](https://cure53.de/purify)
+
+## What if I find a _security_ bug?
+
+First of all, please immediately contact us via [email](mailto:mario@cure53.de) so we can work on a fix. [PGP key](https://keyserver.ubuntu.com/pks/lookup?op=vindex&search=0xC26C858090F70ADA)
+
+Also, you probably qualify for a bug bounty! The fine folks over at [Fastmail](https://www.fastmail.com/) use DOMPurify for their services and added our library to their bug bounty scope. So, if you find a way to bypass or weaken DOMPurify, please also have a look at their website and the [bug bounty info](https://www.fastmail.com/about/bugbounty/).
+
+## Some purification samples please?
+
+How does purified markup look like? Well, [the demo](https://cure53.de/purify) shows it for a big bunch of nasty elements. But let's also show some smaller examples!
+
+```js
+DOMPurify.sanitize('<img src=x onerror=alert(1)//>'); // becomes <img src="x">
+DOMPurify.sanitize('<svg><g/onload=alert(2)//<p>'); // becomes <svg><g></g></svg>
+DOMPurify.sanitize('<p>abc<iframe//src=jAva&Tab;script:alert(3)>def</p>'); // becomes <p>abc</p>
+DOMPurify.sanitize('<math><mi//xlink:href="data:x,<script>alert(4)</script>">'); // becomes <math><mi></mi></math>
+DOMPurify.sanitize('<TABLE><tr><td>HELLO</tr></TABL>'); // becomes <table><tbody><tr><td>HELLO</td></tr></tbody></table>
+DOMPurify.sanitize('<UL><li><A HREF=//google.com>click</UL>'); // becomes <ul><li><a href="//google.com">click</a></li></ul>
+```
+
+## What is supported?
+
+DOMPurify currently supports HTML5, SVG and MathML. DOMPurify per default allows CSS, HTML custom data attributes. DOMPurify also supports the Shadow DOM - and sanitizes DOM templates recursively. DOMPurify also allows you to sanitize HTML for being used with the jQuery `$()` and `elm.html()` API without any known problems.
+
+## What about legacy browsers like Internet Explorer?
+
+DOMPurify does nothing at all. It simply returns exactly the string that you fed it. DOMPurify exposes a property called `isSupported`, which tells you whether it will be able to do its job, so you can come up with your own backup plan.
+
+## What about DOMPurify and Trusted Types?
+
+In version 1.0.9, support for [Trusted Types API](https://github.com/w3c/webappsec-trusted-types) was added to DOMPurify.
+In version 2.0.0, a config flag was added to control DOMPurify's behavior regarding this.
+
+When `DOMPurify.sanitize` is used in an environment where the Trusted Types API is available and `RETURN_TRUSTED_TYPE` is set to `true`, it tries to return a `TrustedHTML` value instead of a string (the behavior for `RETURN_DOM` and `RETURN_DOM_FRAGMENT` config options does not change).
+
+Note that in order to create a policy in `trustedTypes` using DOMPurify, `RETURN_TRUSTED_TYPE: false` is required, as `createHTML` expects a normal string, not `TrustedHTML`. The example below shows this.
+
+```js
+window.trustedTypes!.createPolicy('default', {
+  createHTML: (to_escape) =>
+    DOMPurify.sanitize(to_escape, { RETURN_TRUSTED_TYPE: false }),
+});
+```
+
+## Can I configure DOMPurify?
+
+Yes. The included default configuration values are pretty good already - but you can of course override them. Check out the [`/demos`](https://github.com/cure53/DOMPurify/tree/main/demos) folder to see a bunch of examples on how you can [customize DOMPurify](https://github.com/cure53/DOMPurify/tree/main/demos#what-is-this).
+
+### General settings
+```js
+// strip {{ ... }}, ${ ... } and <% ... %> to make output safe for template systems
+// be careful please, this mode is not recommended for production usage.
+// allowing template parsing in user-controlled HTML is not advised at all.
+// only use this mode if there is really no alternative.
+const clean = DOMPurify.sanitize(dirty, {SAFE_FOR_TEMPLATES: true});
+
+
+// change how e.g. comments containing risky HTML characters are treated.
+// be very careful, this setting should only be set to `false` if you really only handle 
+// HTML and nothing else, no SVG, MathML or the like. 
+// Otherwise, changing from `true` to `false` will lead to XSS in this or some other way.
+const clean = DOMPurify.sanitize(dirty, {SAFE_FOR_XML: false});
+```
+
+### Control our allow-lists and block-lists
+```js
+// allow only <b> elements, very strict
+const clean = DOMPurify.sanitize(dirty, {ALLOWED_TAGS: ['b']});
+
+// allow only <b> and <q> with style attributes
+const clean = DOMPurify.sanitize(dirty, {ALLOWED_TAGS: ['b', 'q'], ALLOWED_ATTR: ['style']});
+
+// allow all safe HTML elements but neither SVG nor MathML
+// note that the USE_PROFILES setting will override the ALLOWED_TAGS setting
+// so don't use them together
+const clean = DOMPurify.sanitize(dirty, {USE_PROFILES: {html: true}});
+
+// allow all safe SVG elements and SVG Filters, no HTML or MathML
+const clean = DOMPurify.sanitize(dirty, {USE_PROFILES: {svg: true, svgFilters: true}});
+
+// allow all safe MathML elements and SVG, but no SVG Filters
+const clean = DOMPurify.sanitize(dirty, {USE_PROFILES: {mathMl: true, svg: true}});
+
+// change the default namespace from HTML to something different
+const clean = DOMPurify.sanitize(dirty, {NAMESPACE: 'http://www.w3.org/2000/svg'});
+
+// leave all safe HTML as it is and add <style> elements to block-list
+const clean = DOMPurify.sanitize(dirty, {FORBID_TAGS: ['style']});
+
+// leave all safe HTML as it is and add style attributes to block-list
+const clean = DOMPurify.sanitize(dirty, {FORBID_ATTR: ['style']});
+
+// extend the existing array of allowed tags and add <my-tag> to allow-list
+const clean = DOMPurify.sanitize(dirty, {ADD_TAGS: ['my-tag']});
+
+// extend the existing array of allowed attributes and add my-attr to allow-list
+const clean = DOMPurify.sanitize(dirty, {ADD_ATTR: ['my-attr']});
+
+// prohibit ARIA attributes, leave other safe HTML as is (default is true)
+const clean = DOMPurify.sanitize(dirty, {ALLOW_ARIA_ATTR: false});
+
+// prohibit HTML5 data attributes, leave other safe HTML as is (default is true)
+const clean = DOMPurify.sanitize(dirty, {ALLOW_DATA_ATTR: false});
+```
+
+### Control behavior relating to Custom Elements
+```js
+// DOMPurify allows to define rules for Custom Elements. When using the CUSTOM_ELEMENT_HANDLING
+// literal, it is possible to define exactly what elements you wish to allow (by default, none are allowed).
+//
+// The same goes for their attributes. By default, the built-in or configured allow.list is used.
+//
+// You can use a RegExp literal to specify what is allowed or a predicate, examples for both can be seen below.
+// The default values are very restrictive to prevent accidental XSS bypasses. Handle with great care!
+
+const clean = DOMPurify.sanitize(
+    '<foo-bar baz="foobar" forbidden="true"></foo-bar><div is="foo-baz"></div>',
+    {
+        CUSTOM_ELEMENT_HANDLING: {
+            tagNameCheck: null, // no custom elements are allowed
+            attributeNameCheck: null, // default / standard attribute allow-list is used
+            allowCustomizedBuiltInElements: false, // no customized built-ins allowed
+        },
+    }
+); // <div is=""></div>
+
+const clean = DOMPurify.sanitize(
+    '<foo-bar baz="foobar" forbidden="true"></foo-bar><div is="foo-baz"></div>',
+    {
+        CUSTOM_ELEMENT_HANDLING: {
+            tagNameCheck: /^foo-/, // allow all tags starting with "foo-"
+            attributeNameCheck: /baz/, // allow all attributes containing "baz"
+            allowCustomizedBuiltInElements: true, // customized built-ins are allowed
+        },
+    }
+); // <foo-bar baz="foobar"></foo-bar><div is="foo-baz"></div>
+
+const clean = DOMPurify.sanitize(
+    '<foo-bar baz="foobar" forbidden="true"></foo-bar><div is="foo-baz"></div>',
+    {
+        CUSTOM_ELEMENT_HANDLING: {
+            tagNameCheck: (tagName) => tagName.match(/^foo-/), // allow all tags starting with "foo-"
+            attributeNameCheck: (attr) => attr.match(/baz/), // allow all containing "baz"
+            allowCustomizedBuiltInElements: true, // allow customized built-ins
+        },
+    }
+); // <foo-bar baz="foobar"></foo-bar><div is="foo-baz"></div>
+```
+### Control behavior relating to URI values
+```js
+// extend the existing array of elements that can use Data URIs
+const clean = DOMPurify.sanitize(dirty, {ADD_DATA_URI_TAGS: ['a', 'area']});
+
+// extend the existing array of elements that are safe for URI-like values (be careful, XSS risk)
+const clean = DOMPurify.sanitize(dirty, {ADD_URI_SAFE_ATTR: ['my-attr']});
+
+```
+### Control permitted attribute values
+```js
+// allow external protocol handlers in URL attributes (default is false, be careful, XSS risk)
+// by default only http, https, ftp, ftps, tel, mailto, callto, sms, cid and xmpp are allowed.
+const clean = DOMPurify.sanitize(dirty, {ALLOW_UNKNOWN_PROTOCOLS: true});
+
+// allow specific protocols handlers in URL attributes via regex (default is false, be careful, XSS risk)
+// by default only http, https, ftp, ftps, tel, mailto, callto, sms, cid and xmpp are allowed.
+// Default RegExp: /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i;
+const clean = DOMPurify.sanitize(dirty, {ALLOWED_URI_REGEXP: /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|xxx):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i});
+
+```
+### Influence the return-type
+```js
+// return a DOM HTMLBodyElement instead of an HTML string (default is false)
+const clean = DOMPurify.sanitize(dirty, {RETURN_DOM: true});
+
+// return a DOM DocumentFragment instead of an HTML string (default is false)
+const clean = DOMPurify.sanitize(dirty, {RETURN_DOM_FRAGMENT: true});
+
+// use the RETURN_TRUSTED_TYPE flag to turn on Trusted Types support if available
+const clean = DOMPurify.sanitize(dirty, {RETURN_TRUSTED_TYPE: true}); // will return a TrustedHTML object instead of a string if possible
+
+// use a provided Trusted Types policy
+const clean = DOMPurify.sanitize(dirty, {
+    // supplied policy must define createHTML and createScriptURL
+    TRUSTED_TYPES_POLICY: trustedTypes.createPolicy({
+        createHTML(s) { return s},
+        createScriptURL(s) { return s},
+    }
+});
+```
+### Influence how we sanitize
+```js
+// return entire document including <html> tags (default is false)
+const clean = DOMPurify.sanitize(dirty, {WHOLE_DOCUMENT: true});
+
+// disable DOM Clobbering protection on output (default is true, handle with care, minor XSS risks here)
+const clean = DOMPurify.sanitize(dirty, {SANITIZE_DOM: false});
+
+// enforce strict DOM Clobbering protection via namespace isolation (default is false)
+// when enabled, isolates the namespace of named properties (i.e., `id` and `name` attributes)
+// from JS variables by prefixing them with the string `user-content-`
+const clean = DOMPurify.sanitize(dirty, {SANITIZE_NAMED_PROPS: true});
+
+// keep an element's content when the element is removed (default is true)
+const clean = DOMPurify.sanitize(dirty, {KEEP_CONTENT: false});
+
+// glue elements like style, script or others to document.body and prevent unintuitive browser behavior in several edge-cases (default is false)
+const clean = DOMPurify.sanitize(dirty, {FORCE_BODY: true});
+
+// remove all <a> elements under <p> elements that are removed
+const clean = DOMPurify.sanitize(dirty, {FORBID_CONTENTS: ['a'], FORBID_TAGS: ['p']});
+
+// change the parser type so sanitized data is treated as XML and not as HTML, which is the default
+const clean = DOMPurify.sanitize(dirty, {PARSER_MEDIA_TYPE: 'application/xhtml+xml'});
+```
+### Influence where we sanitize
+```js
+// use the IN_PLACE mode to sanitize a node "in place", which is much faster depending on how you use DOMPurify
+const dirty = document.createElement('a');
+dirty.setAttribute('href', 'javascript:alert(1)');
+
+const clean = DOMPurify.sanitize(dirty, {IN_PLACE: true}); // see https://github.com/cure53/DOMPurify/issues/288 for more info
+```
+
+There is even [more examples here](https://github.com/cure53/DOMPurify/tree/main/demos#what-is-this), showing how you can run, customize and configure DOMPurify to fit your needs.
+
+## Persistent Configuration
+
+Instead of repeatedly passing the same configuration to `DOMPurify.sanitize`, you can use the `DOMPurify.setConfig` method. Your configuration will persist until your next call to `DOMPurify.setConfig`, or until you invoke `DOMPurify.clearConfig` to reset it. Remember that there is only one active configuration, which means once it is set, all extra configuration parameters passed to `DOMPurify.sanitize` are ignored.
+
+## Hooks
+
+DOMPurify allows you to augment its functionality by attaching one or more functions with the `DOMPurify.addHook` method to one of the following hooks:
+
+- `beforeSanitizeElements`
+- `uponSanitizeElement` (No 's' - called for every element)
+- `afterSanitizeElements`
+- `beforeSanitizeAttributes`
+- `uponSanitizeAttribute`
+- `afterSanitizeAttributes`
+- `beforeSanitizeShadowDOM`
+- `uponSanitizeShadowNode`
+- `afterSanitizeShadowDOM`
+
+It passes the currently processed DOM node, when needed a literal with verified node and attribute data and the DOMPurify configuration to the callback. Check out the [MentalJS hook demo](https://github.com/cure53/DOMPurify/blob/main/demos/hooks-mentaljs-demo.html) to see how the API can be used nicely.
+
+_Example_:
+
+```js
+DOMPurify.addHook(
+  'uponSanitizeAttribute',
+  function (currentNode, hookEvent, config) {
+    // Do something with the current node
+    // You can also mutate hookEvent for current node (i.e. set hookEvent.forceKeepAttr = true)
+    // For other than 'uponSanitizeAttribute' hook types hookEvent equals to null
+  }
+);
+```
+
+## Removed Configuration
+
+| Option          | Since | Note                     |
+|-----------------|-------|--------------------------|
+| SAFE_FOR_JQUERY | 2.1.0 | No replacement required. |
+
+## Continuous Integration
+
+We are currently using Github Actions in combination with BrowserStack. This gives us the possibility to confirm for each and every commit that all is going according to plan in all supported browsers. Check out the build logs here: https://github.com/cure53/DOMPurify/actions
+
+You can further run local tests by executing `npm test`. The tests work fine with Node.js v0.6.2 and jsdom@8.5.0.
+
+All relevant commits will be signed with the key `0x24BB6BF4` for additional security (since 8th of April 2016).
+
+### Development and contributing
+
+#### Installation (`npm i`)
+
+We support `npm` officially. GitHub Actions workflow is configured to install dependencies using `npm`. When using deprecated version of `npm` we can not fully ensure the versions of installed dependencies which might lead to unanticipated problems.
+
+#### Scripts
+
+We rely on npm run-scripts for integrating with our tooling infrastructure. We use ESLint as a pre-commit hook to ensure code consistency. Moreover, to ease formatting we use [prettier](https://github.com/prettier/prettier) while building the `/dist` assets happens through `rollup`.
+
+These are our npm scripts:
+
+- `npm run dev` to start building while watching sources for changes
+- `npm run test` to run our test suite via jsdom and karma
+  - `test:jsdom` to only run tests through jsdom
+  - `test:karma` to only run tests through karma
+- `npm run lint` to lint the sources using ESLint (via xo)
+- `npm run format` to format our sources using prettier to ease to pass ESLint
+- `npm run build` to build our distribution assets minified and unminified as a UMD module
+  - `npm run build:umd` to only build an unminified UMD module
+  - `npm run build:umd:min` to only build a minified UMD module
+
+Note: all run scripts triggered via `npm run <script>`.
+
+There are more npm scripts but they are mainly to integrate with CI or are meant to be "private" for instance to amend build distribution files with every commit.
+
+## Security Mailing List
+
+We maintain a mailing list that notifies whenever a security-critical release of DOMPurify was published. This means, if someone found a bypass and we fixed it with a release (which always happens when a bypass was found) a mail will go out to that list. This usually happens within minutes or few hours after learning about a bypass. The list can be subscribed to here:
+
+[https://lists.ruhr-uni-bochum.de/mailman/listinfo/dompurify-security](https://lists.ruhr-uni-bochum.de/mailman/listinfo/dompurify-security)
+
+Feature releases will not be announced to this list.
+
+## Who contributed?
+
+Many people helped and help DOMPurify become what it is and need to be acknowledged here!
+
+[hash_kitten ❤️](https://twitter.com/hash_kitten), [kevin_mizu ❤️](https://twitter.com/kevin_mizu), [icesfont ❤️](https://github.com/icesfont), [reduckted ❤️](https://github.com/reduckted), [dcramer 💸](https://github.com/dcramer), [JGraph 💸](https://github.com/jgraph), [baekilda 💸](https://github.com/baekilda), [Healthchecks 💸](https://github.com/healthchecks), [Sentry 💸](https://github.com/getsentry), [jarrodldavis 💸](https://github.com/jarrodldavis), [CynegeticIO](https://github.com/CynegeticIO), [ssi02014 ❤️](https://github.com/ssi02014), [GrantGryczan](https://github.com/GrantGryczan), [Lowdefy](https://twitter.com/lowdefy), [granlem](https://twitter.com/MaximeVeit), [oreoshake](https://github.com/oreoshake), [tdeekens ❤️](https://github.com/tdeekens), [peernohell ❤️](https://github.com/peernohell), [is2ei](https://github.com/is2ei), [SoheilKhodayari](https://github.com/SoheilKhodayari), [franktopel](https://github.com/franktopel), [NateScarlet](https://github.com/NateScarlet), [neilj](https://github.com/neilj), [fhemberger](https://github.com/fhemberger), [Joris-van-der-Wel](https://github.com/Joris-van-der-Wel), [ydaniv](https://github.com/ydaniv), [terjanq](https://twitter.com/terjanq), [filedescriptor](https://github.com/filedescriptor), [ConradIrwin](https://github.com/ConradIrwin), [gibson042](https://github.com/gibson042), [choumx](https://github.com/choumx), [0xSobky](https://github.com/0xSobky), [styfle](https://github.com/styfle), [koto](https://github.com/koto), [tlau88](https://github.com/tlau88), [strugee](https://github.com/strugee), [oparoz](https://github.com/oparoz), [mathiasbynens](https://github.com/mathiasbynens), [edg2s](https://github.com/edg2s), [dnkolegov](https://github.com/dnkolegov), [dhardtke](https://github.com/dhardtke), [wirehead](https://github.com/wirehead), [thorn0](https://github.com/thorn0), [styu](https://github.com/styu), [mozfreddyb](https://github.com/mozfreddyb), [mikesamuel](https://github.com/mikesamuel), [jorangreef](https://github.com/jorangreef), [jimmyhchan](https://github.com/jimmyhchan), [jameydeorio](https://github.com/jameydeorio), [jameskraus](https://github.com/jameskraus), [hyderali](https://github.com/hyderali), [hansottowirtz](https://github.com/hansottowirtz), [hackvertor](https://github.com/hackvertor), [freddyb](https://github.com/freddyb), [flavorjones](https://github.com/flavorjones), [djfarrelly](https://github.com/djfarrelly), [devd](https://github.com/devd), [camerondunford](https://github.com/camerondunford), [buu700](https://github.com/buu700), [buildog](https://github.com/buildog), [alabiaga](https://github.com/alabiaga), [Vector919](https://github.com/Vector919), [Robbert](https://github.com/Robbert), [GreLI](https://github.com/GreLI), [FuzzySockets](https://github.com/FuzzySockets), [ArtemBernatskyy](https://github.com/ArtemBernatskyy), [@garethheyes](https://twitter.com/garethheyes), [@shafigullin](https://twitter.com/shafigullin), [@mmrupp](https://twitter.com/mmrupp), [@irsdl](https://twitter.com/irsdl),[ShikariSenpai](https://github.com/ShikariSenpai), [ansjdnakjdnajkd](https://github.com/ansjdnakjdnajkd), [@asutherland](https://twitter.com/asutherland), [@mathias](https://twitter.com/mathias), [@cgvwzq](https://twitter.com/cgvwzq), [@robbertatwork](https://twitter.com/robbertatwork), [@giutro](https://twitter.com/giutro), [@CmdEngineer\_](https://twitter.com/CmdEngineer_), [@avr4mit](https://twitter.com/avr4mit), [davecardwell](https://github.com/davecardwell) and especially [@securitymb ❤️](https://twitter.com/securitymb) & [@masatokinugawa ❤️](https://twitter.com/masatokinugawa)
+
+## Testing powered by
+
+<a target="_blank" href="https://www.browserstack.com/"><img width="200" src="https://github.com/cure53/DOMPurify/assets/6709482/f70be7eb-8fc4-41ea-9653-9d359235328f"></a><br>
+
+And last but not least, thanks to [BrowserStack Open-Source Program](https://www.browserstack.com/open-source) for supporting this project with their services for free and delivering excellent, dedicated and very professional support on top of that.
diff --git a/node_modules/dompurify/package.json b/node_modules/dompurify/package.json
new file mode 100644
index 0000000..0f5a6b7
--- /dev/null
+++ b/node_modules/dompurify/package.json
@@ -0,0 +1,168 @@
+{
+  "scripts": {
+    "lint": "xo src/*.ts",
+    "format": "npm run format:js && npm run format:md",
+    "format:md": "prettier --write --parser markdown '**/*.md'",
+    "format:js": "prettier --write '{src,demos,scripts,test,website}/*.{js,ts}'",
+    "commit-amend-build": "scripts/commit-amend-build.sh",
+    "prebuild": "rimraf dist/**",
+    "dev": "cross-env NODE_ENV=development BABEL_ENV=rollup rollup -w -c -o dist/purify.js",
+    "build": "run-s build:types build:rollup build:fix-types build:cleanup",
+    "build:types": "tsc --outDir dist/types --declaration --emitDeclarationOnly",
+    "build:rollup": "rollup -c",
+    "build:fix-types": "node ./scripts/fix-types.js",
+    "build:umd": "rollup -c -f umd -o dist/purify.js",
+    "build:umd:min": "rollup -c -f umd -o dist/purify.min.js -p terser",
+    "build:es": "rollup -c -f es -o dist/purify.es.mjs",
+    "build:cjs": "rollup -c -f cjs -o dist/purify.cjs.js",
+    "build:cleanup": "rimraf dist/types",
+    "test:jsdom": "cross-env NODE_ENV=test BABEL_ENV=rollup node test/jsdom-node-runner --dot",
+    "test:karma": "cross-env NODE_ENV=test BABEL_ENV=rollup karma start test/karma.conf.js --log-level warn ",
+    "test:ci": "cross-env NODE_ENV=test BABEL_ENV=rollup npm run test:jsdom && npm run test:karma -- --log-level error --reporters dots --single-run --shouldTestOnBrowserStack=\"${TEST_BROWSERSTACK}\" --shouldProbeOnly=\"${TEST_PROBE_ONLY}\"",
+    "test": "cross-env NODE_ENV=test BABEL_ENV=rollup npm run lint &&  npm run test:jsdom && npm run test:karma -- --browsers Chrome"
+  },
+  "main": "./dist/purify.cjs.js",
+  "module": "./dist/purify.es.mjs",
+  "browser": "./dist/purify.js",
+  "production": "./dist/purify.min.js",
+  "types": "./dist/purify.cjs.d.ts",
+  "exports": {
+    ".": {
+      "import": {
+        "types": "./dist/purify.es.d.mts",
+        "default": "./dist/purify.es.mjs"
+      },
+      "default": {
+        "types": "./dist/purify.cjs.d.ts",
+        "default": "./dist/purify.cjs.js"
+      }
+    },
+    "./purify.min.js": "./dist/purify.min.js",
+    "./purify.js": "./dist/purify.js"
+  },
+  "files": [
+    "dist"
+  ],
+  "pre-commit": [
+    "lint",
+    "build",
+    "commit-amend-build"
+  ],
+  "xo": {
+    "semicolon": true,
+    "space": 2,
+    "extends": [
+      "prettier"
+    ],
+    "plugins": [
+      "prettier"
+    ],
+    "rules": {
+      "import/no-useless-path-segments": 0,
+      "unicorn/prefer-optional-catch-binding": 0,
+      "unicorn/prefer-node-remove": 0,
+      "prettier/prettier": [
+        "error",
+        {
+          "trailingComma": "es5",
+          "singleQuote": true
+        }
+      ],
+      "camelcase": [
+        "error",
+        {
+          "properties": "never"
+        }
+      ],
+      "@typescript-eslint/ban-types": 0,
+      "@typescript-eslint/consistent-type-definitions": 0,
+      "@typescript-eslint/indent": 0,
+      "@typescript-eslint/naming-convention": 0,
+      "@typescript-eslint/no-throw-literal": 0,
+      "@typescript-eslint/no-unnecessary-boolean-literal-compare": 0,
+      "@typescript-eslint/no-unsafe-argument": 0,
+      "@typescript-eslint/no-unsafe-assignment": 0,
+      "@typescript-eslint/no-unsafe-call": 0,
+      "@typescript-eslint/no-unsafe-return": 0,
+      "@typescript-eslint/prefer-includes": 0,
+      "@typescript-eslint/prefer-optional-chain": 0,
+      "@typescript-eslint/prefer-nullish-coalescing": 0,
+      "@typescript-eslint/restrict-plus-operands": 0
+    },
+    "globals": [
+      "window",
+      "VERSION"
+    ]
+  },
+  "optionalDependencies": {
+    "@types/trusted-types": "^2.0.7"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.17.8",
+    "@babel/preset-env": "^7.16.11",
+    "@rollup/plugin-babel": "^6.0.4",
+    "@rollup/plugin-node-resolve": "^15.3.0",
+    "@rollup/plugin-replace": "^6.0.1",
+    "@rollup/plugin-terser": "^0.4.4",
+    "@types/estree": "^1.0.0",
+    "@types/node": "^16.18.120",
+    "cross-env": "^7.0.3",
+    "eslint-config-prettier": "^8.5.0",
+    "eslint-plugin-prettier": "^4.0.0",
+    "jquery": "^3.6.0",
+    "jsdom": "^20.0.0",
+    "karma": "^6.3.17",
+    "karma-browserstack-launcher": "^1.5.1",
+    "karma-chrome-launcher": "^3.1.0",
+    "karma-firefox-launcher": "^2.1.2",
+    "karma-qunit": "^4.1.2",
+    "karma-rollup-preprocessor": "^7.0.8",
+    "lodash.sample": "^4.2.1",
+    "minimist": "^1.2.6",
+    "npm-run-all": "^4.1.5",
+    "pre-commit": "^1.2.2",
+    "prettier": "^2.5.1",
+    "qunit": "^2.4.1",
+    "qunit-tap": "^1.5.0",
+    "rimraf": "^3.0.2",
+    "rollup": "^3.29.5",
+    "rollup-plugin-dts": "^6.1.1",
+    "rollup-plugin-includepaths": "^0.2.4",
+    "rollup-plugin-typescript2": "^0.36.0",
+    "tslib": "^2.7.0",
+    "typescript": "^5.6.3",
+    "xo": "^0.54.1"
+  },
+  "resolutions": {
+    "natives": "1.1.6"
+  },
+  "name": "dompurify",
+  "description": "DOMPurify is a DOM-only, super-fast, uber-tolerant XSS sanitizer for HTML, MathML and SVG. It's written in JavaScript and works in all modern browsers (Safari, Opera (15+), Internet Explorer (10+), Firefox and Chrome - as well as almost anything else using Blink or WebKit). DOMPurify is written by security people who have vast background in web attacks and XSS. Fear not.",
+  "version": "3.2.4",
+  "directories": {
+    "test": "test"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/cure53/DOMPurify.git"
+  },
+  "keywords": [
+    "dom",
+    "xss",
+    "html",
+    "svg",
+    "mathml",
+    "security",
+    "secure",
+    "sanitizer",
+    "sanitize",
+    "filter",
+    "purify"
+  ],
+  "author": "Dr.-Ing. Mario Heiderich, Cure53 <mario@cure53.de> (https://cure53.de/)",
+  "license": "(MPL-2.0 OR Apache-2.0)",
+  "bugs": {
+    "url": "https://github.com/cure53/DOMPurify/issues"
+  },
+  "homepage": "https://github.com/cure53/DOMPurify"
+}
diff --git a/node_modules/fflate/CHANGELOG.md b/node_modules/fflate/CHANGELOG.md
new file mode 100644
index 0000000..f493fca
--- /dev/null
+++ b/node_modules/fflate/CHANGELOG.md
@@ -0,0 +1,115 @@
+## 0.8.2
+- Fixed broken UMD build
+- Fixed edge-case causing skipped data during streaming compression
+- Fixed bug in GZIP streaming on member boundary
+- Improved streaming performance on inconsistent chunk sizes
+- Improved `unzip` performance on undercompressed archives
+- Added flushing support into streaming API
+- Added backpressure support into async streaming API
+  - Use new `ondrain` handler and `queuedSize`
+## 0.8.1
+- Fixed reallocating on pre-supplied buffer in `inflateSync` and `unzlibSync`
+- Minor documentation fixes
+## 0.8.0
+- BREAKING: synchronous decompression functions now take an options object rather than an output buffer as a second parameter
+  - `inflateSync(compressed, outBuf)` is now `inflateSync(compressed, { out: outBuf })`
+- Support dictionaries in compression and decompression
+- Support multi-member files in GZIP streaming decompression
+- Dramatically improved streaming performance
+- Fixed missing error on certain malformed GZIP files
+## 0.7.3
+- Fix folder creation for certain operating system
+  - Create 0-length "files" for each directory specified with "object" syntax"
+  - Support empty folders
+  - Add options for folders
+- Fix minification in SWC
+  - Remove instanceof, no-whitespace assumptions in async functions
+## 0.7.2
+- Fixed TypeScript typing for errors when using `strictNullChecks`
+- Fixed failure to compress files above 64kB with `{ level: 0 }`
+- Fixed AMD module definition in UMD build
+## 0.7.1
+- Removed requirement for `setTimeout`
+- Added support for unzip file filters (thanks to [@manucorporat](https://github.com/manucorporat): #67)
+- Fixed streaming gunzip and unzlib bug causing corruption
+## 0.7.0
+- Improved errors
+  - Now errors are error objects instead of strings
+  - Check the error code to apply custom logic based on error type
+- Made async operations always call callbacks asynchronously
+- Fixed bug that caused errors to not appear in asynchronous operations in browsers
+## 0.6.10
+- Fixed async operations on Node.js with native ESM
+## 0.6.5
+- Fixed streams not recognizing final chunk
+- Fixed streaming UTF-8 decoder bug
+## 0.6.4
+- Made streaming inflate consume all data possible
+- Optimized use of values near 32-bit boundary
+## 0.6.3
+- Patch exports of async functions
+- Fix streaming unzip
+## 0.6.2
+- Replace Adler-32 implementation (used in Zlib compression) with one more optimized for V8
+  - Advice from @SheetJSDev
+- Add support for extra fields, file comments in ZIP files
+- Work on Rust version
+## 0.6.0
+- Revamped streaming unzip for compatibility and performance improvements
+- Fixed streaming data bugs
+- Fixed inflation errors
+- Planned new tests
+## 0.5.2
+- General bugfixes
+## 0.5.0
+- Add streaming zip, unzip
+- Fix import issues with certain environments
+  - If you had problems with `worker_threads` being included in your bundle, try updating!
+## 0.4.8
+- Support strict Content Security Policy
+  - Remove `new Function`
+## 0.4.7
+- Fix data streaming bugs
+## 0.4.5
+- Zip64 support
+  - Still not possible to have above 4GB files
+## 0.4.4
+- Files up to 4GB supported
+  - Hey, that's better than even Node.js `zlib`!
+## 0.4.1
+- Fix ZIP failure bug
+- Make ZIP options work better
+- Improve docs
+- Fix async inflate failure
+- Work on Rust version
+## 0.3.11
+- Fix docs
+## 0.3.9
+- Fixed issue with unzipping
+## 0.3.7
+- Patched streaming compression bugs
+- Added demo page
+## 0.3.6
+- Allowed true ESM imports
+## 0.3.4
+- Fixed rare overflow bug causing corruption
+- Added async stream termination
+- Added UMD bundle
+## 0.3.0
+- Added support for asynchronous and synchronous streaming
+- Reduced bundle size by autogenerating worker code, even in minified environments
+- Error detection rather than hanging
+- Improved performance
+## 0.2.3
+- Improved Zlib autodetection
+## 0.2.2
+- Fixed Node Worker
+## 0.2.1
+- Fixed ZIP bug
+## 0.2.0
+- Added support for ZIP files (parallelized)
+- Added ability to terminate running asynchronous operations
+## 0.1.0
+- Rewrote API: added support for asynchronous (Worker) compression/decompression, fixed critical bug involving fixed Huffman trees
+## 0.0.1
+- Created, works on basic input
\ No newline at end of file
diff --git a/node_modules/fflate/LICENSE b/node_modules/fflate/LICENSE
new file mode 100644
index 0000000..e84f0d6
--- /dev/null
+++ b/node_modules/fflate/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2023 Arjun Barrett
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
\ No newline at end of file
diff --git a/node_modules/fflate/README.md b/node_modules/fflate/README.md
new file mode 100644
index 0000000..c4be595
--- /dev/null
+++ b/node_modules/fflate/README.md
@@ -0,0 +1,558 @@
+# fflate
+High performance (de)compression in an 8kB package
+
+## Why fflate?
+`fflate` (short for fast flate) is the **fastest, smallest, and most versatile** pure JavaScript compression and decompression library in existence, handily beating [`pako`](https://npmjs.com/package/pako), [`tiny-inflate`](https://npmjs.com/package/tiny-inflate), and [`UZIP.js`](https://github.com/photopea/UZIP.js) in performance benchmarks while being multiple times more lightweight. Its compression ratios are often better than even the original Zlib C library. It includes support for DEFLATE, GZIP, and Zlib data. Data compressed by `fflate` can be decompressed by other tools, and vice versa.
+
+In addition to the base decompression and compression APIs, `fflate` supports high-speed ZIP file archiving for an extra 3 kB. In fact, the compressor, in synchronous mode, compresses both more quickly and with a higher compression ratio than most compression software (even Info-ZIP, a C program), and in asynchronous mode it can utilize multiple threads to achieve over 3x the performance of virtually any other utility.
+
+|                             | `pako` | `tiny-inflate`         | `UZIP.js`             | `fflate`                       |
+|-----------------------------|--------|------------------------|-----------------------|--------------------------------|
+| Decompression performance   | 1x     | Up to 40% slower       | **Up to 40% faster**  | **Up to 40% faster**           |
+| Compression performance     | 1x     | N/A                    | Up to 25% faster      | **Up to 50% faster**           |
+| Base bundle size (minified) | 45.6kB | **3kB (inflate only)** | 14.2kB                | 8kB **(3kB for inflate only)** |
+| Decompression support       | ✅     | ✅                      | ✅                    | ✅                             |
+| Compression support         | ✅     | ❌                      | ✅                    | ✅                             |
+| ZIP support                 | ❌     | ❌                      | ✅                    | ✅                             |
+| Streaming support           | ✅     | ❌                      | ❌                    | ✅                             |
+| GZIP support                | ✅     | ❌                      | ❌                    | ✅                             |
+| Supports files up to 4GB    | ✅     | ❌                      | ❌                    | ✅                             |
+| Doesn't hang on error       | ✅     | ❌                      | ❌                    | ✅                             |
+| Dictionary support          | ✅     | ❌                      | ❌                    | ✅                             |
+| Multi-thread/Asynchronous   | ❌     | ❌                      | ❌                    | ✅                             |
+| Streaming ZIP support       | ❌     | ❌                      | ❌                    | ✅                             |
+| Uses ES Modules             | ❌     | ❌                      | ❌                    | ✅                             |
+
+## Demo
+If you'd like to try `fflate` for yourself without installing it, you can take a look at the [browser demo](https://101arrowz.github.io/fflate). Since `fflate` is a pure JavaScript library, it works in both the browser and Node.js (see [Browser support](https://github.com/101arrowz/fflate/#browser-support) for more info).
+
+## Usage
+
+Install `fflate`:
+```sh
+npm i fflate # or yarn add fflate, or pnpm add fflate
+```
+
+Import:
+```js
+// I will assume that you use the following for the rest of this guide
+import * as fflate from 'fflate';
+
+// However, you should import ONLY what you need to minimize bloat.
+// So, if you just need GZIP compression support:
+import { gzipSync } from 'fflate';
+// Woo! You just saved 20 kB off your bundle with one line.
+```
+
+If your environment doesn't support ES Modules (e.g. Node.js):
+```js
+// Try to avoid this when using fflate in the browser, as it will import
+// all of fflate's components, even those that you aren't using.
+const fflate = require('fflate');
+```
+
+If you want to load from a CDN in the browser:
+```html
+<!--
+You should use either UNPKG or jsDelivr (i.e. only one of the following)
+
+Note that tree shaking is completely unsupported from the CDN. If you want
+a small build without build tools, please ask me and I will make one manually
+with only the features you need. This build is about 31kB, or 11.5kB gzipped.
+-->
+<script src="https://unpkg.com/fflate@0.8.2"></script>
+<script src="https://cdn.jsdelivr.net/npm/fflate@0.8.2/umd/index.js"></script>
+<!-- Now, the global variable fflate contains the library -->
+
+<!-- If you're going buildless but want ESM, import from Skypack -->
+<script type="module">
+  import * as fflate from 'https://cdn.skypack.dev/fflate@0.8.2?min';
+</script>
+```
+
+If you are using Deno:
+```js
+// Don't use the ?dts Skypack flag; it isn't necessary for Deno support
+// The @deno-types comment adds TypeScript typings
+
+// @deno-types="https://cdn.skypack.dev/fflate@0.8.2/lib/index.d.ts"
+import * as fflate from 'https://cdn.skypack.dev/fflate@0.8.2?min';
+```
+
+
+If your environment doesn't support bundling:
+```js
+// Again, try to import just what you need
+
+// For the browser:
+import * as fflate from 'fflate/esm/browser.js';
+// If the standard ESM import fails on Node (i.e. older version):
+import * as fflate from 'fflate/esm';
+```
+
+And use:
+```js
+// This is an ArrayBuffer of data
+const massiveFileBuf = await fetch('/aMassiveFile').then(
+  res => res.arrayBuffer()
+);
+// To use fflate, you need a Uint8Array
+const massiveFile = new Uint8Array(massiveFileBuf);
+// Note that Node.js Buffers work just fine as well:
+// const massiveFile = require('fs').readFileSync('aMassiveFile.txt');
+
+// Higher level means lower performance but better compression
+// The level ranges from 0 (no compression) to 9 (max compression)
+// The default level is 6
+const notSoMassive = fflate.zlibSync(massiveFile, { level: 9 });
+const massiveAgain = fflate.unzlibSync(notSoMassive);
+const gzipped = fflate.gzipSync(massiveFile, {
+  // GZIP-specific: the filename to use when decompressed
+  filename: 'aMassiveFile.txt',
+  // GZIP-specific: the modification time. Can be a Date, date string,
+  // or Unix timestamp
+  mtime: '9/1/16 2:00 PM'
+});
+```
+`fflate` can autodetect a compressed file's format as well:
+```js
+const compressed = new Uint8Array(
+  await fetch('/GZIPorZLIBorDEFLATE').then(res => res.arrayBuffer())
+);
+// Above example with Node.js Buffers:
+// Buffer.from('H4sIAAAAAAAAE8tIzcnJBwCGphA2BQAAAA==', 'base64');
+
+const decompressed = fflate.decompressSync(compressed);
+```
+
+Using strings is easy with `fflate`'s string conversion API:
+```js
+const buf = fflate.strToU8('Hello world!');
+
+// The default compression method is gzip
+// Increasing mem may increase performance at the cost of memory
+// The mem ranges from 0 to 12, where 4 is the default
+const compressed = fflate.compressSync(buf, { level: 6, mem: 8 });
+
+// When you need to decompress:
+const decompressed = fflate.decompressSync(compressed);
+const origText = fflate.strFromU8(decompressed);
+console.log(origText); // Hello world!
+```
+
+If you need to use an (albeit inefficient) binary string, you can set the second argument to `true`.
+```js
+const buf = fflate.strToU8('Hello world!');
+
+// The second argument, latin1, is a boolean that indicates that the data
+// is not Unicode but rather should be encoded and decoded as Latin-1.
+// This is useful for creating a string from binary data that isn't
+// necessarily valid UTF-8. However, binary strings are incredibly
+// inefficient and tend to double file size, so they're not recommended.
+const compressedString = fflate.strFromU8(
+  fflate.compressSync(buf),
+  true
+);
+const decompressed = fflate.decompressSync(
+  fflate.strToU8(compressedString, true)
+);
+const origText = fflate.strFromU8(decompressed);
+console.log(origText); // Hello world!
+```
+
+You can use streams as well to incrementally add data to be compressed or decompressed:
+```js
+// This example uses synchronous streams, but for the best experience
+// you'll definitely want to use asynchronous streams.
+
+let outStr = '';
+const gzipStream = new fflate.Gzip({ level: 9 }, (chunk, isLast) => {
+  // accumulate in an inefficient binary string (just an example)
+  outStr += fflate.strFromU8(chunk, true);
+});
+
+// You can also attach the data handler separately if you don't want to
+// do so in the constructor.
+gzipStream.ondata = (chunk, final) => { ... }
+
+// Since this is synchronous, all errors will be thrown by stream.push()
+gzipStream.push(chunk1);
+gzipStream.push(chunk2);
+
+...
+
+// You should mark the last chunk by using true in the second argument
+// In addition to being necessary for the stream to work properly, this
+// will also set the isLast parameter in the handler to true.
+gzipStream.push(lastChunk, true);
+
+console.log(outStr); // The compressed binary string is now available
+
+// The options parameter for compression streams is optional; you can
+// provide one parameter (the handler) or none at all if you set
+// deflateStream.ondata later.
+const deflateStream = new fflate.Deflate((chunk, final) => {
+  console.log(chunk, final);
+});
+
+// If you want to create a stream from strings, use EncodeUTF8
+const utfEncode = new fflate.EncodeUTF8((data, final) => {
+  // Chaining streams together is done by pushing to the
+  // next stream in the handler for the previous stream
+  deflateStream.push(data, final);
+});
+
+utfEncode.push('Hello'.repeat(1000));
+utfEncode.push(' '.repeat(100));
+utfEncode.push('world!'.repeat(10), true);
+
+// The deflateStream has logged the compressed data
+
+const inflateStream = new fflate.Inflate();
+inflateStream.ondata = (decompressedChunk, final) => { ... };
+
+let stringData = '';
+
+// Streaming UTF-8 decode is available too
+const utfDecode = new fflate.DecodeUTF8((data, final) => {
+  stringData += data;
+});
+
+// Decompress streams auto-detect the compression method, as the
+// non-streaming decompress() method does.
+const dcmpStrm = new fflate.Decompress((chunk, final) => {
+  console.log(chunk, 'was encoded with GZIP, Zlib, or DEFLATE');
+  utfDecode.push(chunk, final);
+});
+
+dcmpStrm.push(zlibJSONData1);
+dcmpStrm.push(zlibJSONData2, true);
+
+// This succeeds; the UTF-8 decoder chained with the unknown compression format
+// stream to reach a string as a sink.
+console.log(JSON.parse(stringData));
+```
+
+You can create multi-file ZIP archives easily as well. Note that by default, compression is enabled for all files, which is not useful when ZIPping many PNGs, JPEGs, PDFs, etc. because those formats are already compressed. You should either override the level on a per-file basis or globally to avoid wasting resources.
+```js
+// Note that the asynchronous version (see below) runs in parallel and
+// is *much* (up to 3x) faster for larger archives.
+const zipped = fflate.zipSync({
+  // Directories can be nested structures, as in an actual filesystem
+  'dir1': {
+    'nested': {
+      // You can use Unicode in filenames
+      '你好.txt': fflate.strToU8('Hey there!')
+    },
+    // You can also manually write out a directory path
+    'other/tmp.txt': new Uint8Array([97, 98, 99, 100])
+  },
+
+  // You can also provide compression options
+  'massiveImage.bmp': [aMassiveFile, {
+    level: 9,
+    mem: 12
+  }],
+  // PNG is pre-compressed; no need to waste time
+  'superTinyFile.png': [aPNGFile, { level: 0 }],
+
+  // Directories take options too
+  'exec': [{
+    'hello.sh': [fflate.strToU8('echo hello world'), {
+      // ZIP only: Set the operating system to Unix
+      os: 3,
+      // ZIP only: Make this file executable on Unix
+      attrs: 0o755 << 16
+    }]
+  }, {
+    // ZIP and GZIP support mtime (defaults to current time)
+    mtime: new Date('10/20/2020')
+  }]
+}, {
+  // These options are the defaults for all files, but file-specific
+  // options take precedence.
+  level: 1,
+  // Obfuscate last modified time by default 
+  mtime: new Date('1/1/1980')
+});
+
+// If you write the zipped data to myzip.zip and unzip, the folder
+// structure will be outputted as:
+
+// myzip.zip (original file)
+// dir1
+// |-> nested
+// |   |-> 你好.txt
+// |-> other
+// |   |-> tmp.txt
+// massiveImage.bmp
+// superTinyFile.png
+
+// When decompressing, folders are not nested; all filepaths are fully
+// written out in the keys. For example, the return value may be:
+// { 'nested/directory/structure.txt': Uint8Array(2) [97, 97] }
+const decompressed = fflate.unzipSync(zipped, {
+  // You may optionally supply a filter for files. By default, all files in a
+  // ZIP archive are extracted, but a filter can save resources by telling
+  // the library not to decompress certain files
+  filter(file) {
+    // Don't decompress the massive image or any files larger than 10 MiB
+    return file.name != 'massiveImage.bmp' && file.originalSize <= 10_000_000;
+  }
+});
+```
+
+If you need extremely high performance or custom ZIP compression formats, you can use the highly-extensible ZIP streams. They take streams as both input and output. You can even use custom compression/decompression algorithms from other libraries, as long as they [are defined in the ZIP spec](https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) (see section 4.4.5). If you'd like more info on using custom compressors, [feel free to ask](https://github.com/101arrowz/fflate/discussions).
+```js
+// ZIP object
+// Can also specify zip.ondata outside of the constructor
+const zip = new fflate.Zip((err, dat, final) => {
+  if (!err) {
+    // output of the streams
+    console.log(dat, final);
+  }
+});
+
+const helloTxt = new fflate.ZipDeflate('hello.txt', {
+  level: 9
+});
+
+// Always add streams to ZIP archives before pushing to those streams
+zip.add(helloTxt);
+
+helloTxt.push(chunk1);
+// Last chunk
+helloTxt.push(chunk2, true);
+
+// ZipPassThrough is like ZipDeflate with level 0, but allows for tree shaking
+const nonStreamingFile = new fflate.ZipPassThrough('test.png');
+zip.add(nonStreamingFile);
+// If you have data already loaded, just .push(data, true)
+nonStreamingFile.push(pngData, true);
+
+// You need to call .end() after finishing
+// This ensures the ZIP is valid
+zip.end();
+
+// Unzip object
+const unzipper = new fflate.Unzip();
+
+// This function will almost always have to be called. It is used to support
+// compression algorithms such as BZIP2 or LZMA in ZIP files if just DEFLATE
+// is not enough (though it almost always is).
+// If your ZIP files are not compressed, this line is not needed.
+unzipper.register(fflate.UnzipInflate);
+
+const neededFiles = ['file1.txt', 'example.json'];
+
+// Can specify handler in constructor too
+unzipper.onfile = file => {
+  // file.name is a string, file is a stream
+  if (neededFiles.includes(file.name)) {
+    file.ondata = (err, dat, final) => {
+      // Stream output here
+      console.log(dat, final);
+    };
+    
+    console.log('Reading:', file.name);
+
+    // File sizes are sometimes not set if the ZIP file did not encode
+    // them, so you may want to check that file.size != undefined
+    console.log('Compressed size', file.size);
+    console.log('Decompressed size', file.originalSize);
+
+    // You should only start the stream if you plan to use it to improve
+    // performance. Only after starting the stream will ondata be called.
+    // This method will throw if the compression method hasn't been registered
+    file.start();
+  }
+};
+
+// Try to keep under 5,000 files per chunk to avoid stack limit errors
+// For example, if all files are a few kB, multi-megabyte chunks are OK
+// If files are mostly under 100 bytes, 64kB chunks are the limit
+unzipper.push(zipChunk1);
+unzipper.push(zipChunk2);
+unzipper.push(zipChunk3, true);
+```
+
+As you may have guessed, there is an asynchronous version of every method as well. Unlike most libraries, this will cause the compression or decompression run in a separate thread entirely and automatically by using Web (or Node) Workers. This means that the processing will not block the main thread at all. 
+
+Note that there is a significant initial overhead to using workers of about 50ms for each asynchronous function. For instance, if you call `unzip` ten times, the overhead only applies for the first call, but if you call `unzip` and `zlib`, they will each cause the 50ms delay. For small (under about 50kB) payloads, the asynchronous APIs will be much slower. However, if you're compressing larger files/multiple files at once, or if the synchronous API causes the main thread to hang for too long, the callback APIs are an order of magnitude better.
+```js
+import {
+  gzip, zlib, AsyncGzip, zip, unzip, strFromU8,
+  Zip, AsyncZipDeflate, Unzip, AsyncUnzipInflate
+} from 'fflate';
+
+// Workers will work in almost any browser (even IE11!)
+// All of the async APIs use a node-style callback as so:
+const terminate = gzip(aMassiveFile, (err, data) => {
+  if (err) {
+    // The compressed data was likely corrupt, so we have to handle
+    // the error.
+    return;
+  }
+  // Use data however you like
+  console.log(data.length);
+});
+
+if (needToCancel) {
+  // The return value of any of the asynchronous APIs is a function that,
+  // when called, will immediately cancel the operation. The callback
+  // will not be called.
+  terminate();
+}
+
+// If you wish to provide options, use the second argument.
+
+// The consume option will render the data inside aMassiveFile unusable,
+// but can improve performance and dramatically reduce memory usage.
+zlib(aMassiveFile, { consume: true, level: 9 }, (err, data) => {
+  // Use the data
+});
+
+// Asynchronous streams are similar to synchronous streams, but the
+// handler has the error that occurred (if any) as the first parameter,
+// and they don't block the main thread.
+
+// Additionally, any buffers that are pushed in will be consumed and
+// rendered unusable; if you need to use a buffer you push in, you
+// should clone it first.
+const gzs = new AsyncGzip({ level: 9, mem: 12, filename: 'hello.txt' });
+let wasCallbackCalled = false;
+gzs.ondata = (err, chunk, final) => {
+  // Note the new err parameter
+  if (err) {
+    // Note that after this occurs, the stream becomes corrupt and must
+    // be discarded. You can't continue pushing chunks and expect it to
+    // work.
+    console.error(err);
+    return;
+  }
+  wasCallbackCalled = true;
+}
+gzs.push(chunk);
+
+// Since the stream is asynchronous, the callback will not be called
+// immediately. If such behavior is absolutely necessary (it shouldn't
+// be), use synchronous streams.
+console.log(wasCallbackCalled) // false
+
+// To terminate an asynchronous stream's internal worker, call
+// stream.terminate().
+gzs.terminate();
+
+// This is way faster than zipSync because the compression of multiple
+// files runs in parallel. In fact, the fact that it's parallelized
+// makes it faster than most standalone ZIP CLIs. The effect is most
+// significant for multiple large files; less so for many small ones.
+zip({ f1: aMassiveFile, 'f2.txt': anotherMassiveFile }, {
+  // The options object is still optional, you can still do just
+  // zip(archive, callback)
+  level: 6
+}, (err, data) => {
+  // Save the ZIP file
+});
+
+// unzip is the only async function without support for consume option
+// It is parallelized, so unzip is also often much faster than unzipSync
+unzip(aMassiveZIPFile, (err, unzipped) => {
+  // If the archive has data.xml, log it here
+  console.log(unzipped['data.xml']);
+  // Conversion to string
+  console.log(strFromU8(unzipped['data.xml']))
+});
+
+// Streaming ZIP archives can accept asynchronous streams. This automatically
+// uses multicore compression.
+const zip = new Zip();
+zip.ondata = (err, chunk, final) => { ... };
+// The JSON and BMP are compressed in parallel
+const exampleFile = new AsyncZipDeflate('example.json');
+zip.add(exampleFile);
+exampleFile.push(JSON.stringify({ large: 'object' }), true);
+const exampleFile2 = new AsyncZipDeflate('example2.bmp', { level: 9 });
+zip.add(exampleFile2);
+exampleFile2.push(ec2a);
+exampleFile2.push(ec2b);
+exampleFile2.push(ec2c);
+...
+exampleFile2.push(ec2Final, true);
+zip.end();
+
+// Streaming Unzip should register the asynchronous inflation algorithm
+// for parallel processing.
+const unzip = new Unzip(stream => {
+  if (stream.name.endsWith('.json')) {
+    stream.ondata = (err, chunk, final) => { ... };
+    stream.start();
+
+    if (needToCancel) {
+      // To cancel these streams, call .terminate()
+      stream.terminate();
+    }
+  }
+});
+unzip.register(AsyncUnzipInflate);
+unzip.push(data, true);
+```
+
+See the [documentation](https://github.com/101arrowz/fflate/blob/master/docs/README.md) for more detailed information about the API.
+
+## Bundle size estimates
+
+The bundle size measurements for `fflate` on sites like Bundlephobia include every feature of the library and should be seen as an upper bound. As long as you are using tree shaking or dead code elimination, this table should give you a general idea of `fflate`'s bundle size for the features you need.
+
+The maximum bundle size that is possible with `fflate` is about 31kB (11.5kB gzipped) if you use every single feature, but feature parity with `pako` is only around 10kB (as opposed to 45kB from `pako`). If your bundle size increases dramatically after adding `fflate`, please [create an issue](https://github.com/101arrowz/fflate/issues/new).
+
+| Feature                 | Bundle size (minified)         | Nearest competitor      |
+|-------------------------|--------------------------------|-------------------------|
+| Decompression           | 3kB                            | `tiny-inflate`          |
+| Compression             | 5kB                            | `UZIP.js`, 2.84x larger |
+| Async decompression     | 4kB (1kB + raw decompression)  | N/A                     |
+| Async compression       | 6kB (1kB + raw compression)    | N/A                     |
+| ZIP decompression       | 5kB (2kB + raw decompression)  | `UZIP.js`, 2.84x larger |
+| ZIP compression         | 7kB (2kB + raw compression)    | `UZIP.js`, 2.03x larger |
+| GZIP/Zlib decompression | 4kB (1kB + raw decompression)  | `pako`, 11.4x larger    |
+| GZIP/Zlib compression   | 5kB (1kB + raw compression)    | `pako`, 9.12x larger    |
+| Streaming decompression | 4kB (1kB + raw decompression)  | `pako`, 11.4x larger    |
+| Streaming compression   | 5kB (1kB + raw compression)    | `pako`, 9.12x larger    |
+
+## What makes `fflate` so fast?
+Many JavaScript compression/decompression libraries exist. However, the most popular one, [`pako`](https://npmjs.com/package/pako), is merely a clone of Zlib rewritten nearly line-for-line in JavaScript. Although it is by no means poorly made, `pako` doesn't recognize the many differences between JavaScript and C, and therefore is suboptimal for performance. Moreover, even when minified, the library is 45 kB; it may not seem like much, but for anyone concerned with optimizing bundle size (especially library authors), it's more weight than necessary.
+
+Note that there exist some small libraries like [`tiny-inflate`](https://npmjs.com/package/tiny-inflate) for solely decompression, and with a minified size of 3 kB, it can be appealing; however, its performance is lackluster, typically 40% worse than `pako` in my tests.
+
+[`UZIP.js`](https://github.com/photopea/UZIP.js) is both faster (by up to 40%) and smaller (14 kB minified) than `pako`, and it contains a variety of innovations that make it excellent for both performance and compression ratio. However, the developer made a variety of tiny mistakes and inefficient design choices that make it imperfect. Moreover, it does not support GZIP or Zlib data directly; one must remove the headers manually to use `UZIP.js`.
+
+So what makes `fflate` different? It takes the brilliant innovations of `UZIP.js` and optimizes them while adding direct support for GZIP and Zlib data. And unlike all of the above libraries, it uses ES Modules to allow for partial builds through tree shaking, meaning that it can rival even `tiny-inflate` in size while maintaining excellent performance. The end result is a library that, in total, weighs 8kB minified for the core build (3kB for decompression only and 5kB for compression only), is about 15% faster than `UZIP.js` or up to 60% faster than `pako`, and achieves the same or better compression ratio than the rest.
+
+Before you decide that `fflate` is the end-all compression library, you should note that JavaScript simply cannot rival the performance of a native program. If you're only using Node.js, it's probably better to use the [native Zlib bindings](https://nodejs.org/api/zlib.html), which tend to offer the best performance. Though note that even against Zlib, `fflate` is only around 30% slower in decompression and 10% slower in compression, and can still achieve better compression ratios!
+
+## What about `CompressionStream`?
+Like `fflate`, the [Compression Streams API](https://developer.mozilla.org/en-US/docs/Web/API/Compression_Streams_API) provides DEFLATE, GZIP, and Zlib compression and decompression support. It's a good option if you'd like to compress or decompress data without installing any third-party libraries, and it wraps native Zlib bindings to achieve better performance than what most JavaScript programs can achieve.
+
+However, browsers do not offer any native non-streaming compression API, and `CompressionStream` has surprisingly poor performance on data already loaded into memory; `fflate` tends to be faster even for files that are dozens of megabytes large. Similarly, `fflate` is much faster for files under a megabyte because it avoids marshalling overheads. Even when streaming hundreds of megabytes of data, the native API usually performs between 30% faster and 10% slower than `fflate`. And Compression Streams have many other disadvantages - no ability to control compression level, poor support for older browsers, no ZIP support, etc.
+
+If you'd still prefer to depend upon a native browser API but want to support older browsers, you can use an `fflate`-based [Compression Streams ponyfill](https://github.com/101arrowz/compression-streams-polyfill).
+
+## Browser support
+`fflate` makes heavy use of typed arrays (`Uint8Array`, `Uint16Array`, etc.). Typed arrays can be polyfilled at the cost of performance, but the most recent browser that doesn't support them [is from 2011](https://caniuse.com/typedarrays), so I wouldn't bother.
+
+The asynchronous APIs also use `Worker`, which is not supported in a few browsers (however, the vast majority of browsers that support typed arrays support `Worker`).
+
+Other than that, `fflate` is completely ES3, meaning you probably won't even need a bundler to use it.
+
+## Testing
+You can validate the performance of `fflate` with `npm test`. It validates that the module is working as expected, ensures the outputs are no more than 5% larger than competitors at max compression, and outputs performance metrics to `test/results`.
+
+Note that the time it takes for the CLI to show the completion of each test is not representative of the time each package took, so please check the JSON output if you want accurate measurements.
+
+## License
+
+This software is [MIT Licensed](./LICENSE), with special exemptions for projects
+and organizations as noted below:
+
+- [SheetJS](https://github.com/SheetJS/) is exempt from MIT licensing and may
+  license any source code from this software under the BSD Zero Clause License
diff --git a/node_modules/fflate/esm/browser.d.ts b/node_modules/fflate/esm/browser.d.ts
new file mode 100644
index 0000000..a3b5b01
--- /dev/null
+++ b/node_modules/fflate/esm/browser.d.ts
@@ -0,0 +1,1501 @@
+/**
+ * Codes for errors generated within this library
+ */
+export declare const FlateErrorCode: {
+    readonly UnexpectedEOF: 0;
+    readonly InvalidBlockType: 1;
+    readonly InvalidLengthLiteral: 2;
+    readonly InvalidDistance: 3;
+    readonly StreamFinished: 4;
+    readonly NoStreamHandler: 5;
+    readonly InvalidHeader: 6;
+    readonly NoCallback: 7;
+    readonly InvalidUTF8: 8;
+    readonly ExtraFieldTooLong: 9;
+    readonly InvalidDate: 10;
+    readonly FilenameTooLong: 11;
+    readonly StreamFinishing: 12;
+    readonly InvalidZipData: 13;
+    readonly UnknownCompressionMethod: 14;
+};
+/**
+ * An error generated within this library
+ */
+export interface FlateError extends Error {
+    /**
+     * The code associated with this error
+     */
+    code: number;
+}
+/**
+ * Options for decompressing a DEFLATE stream
+ */
+export interface InflateStreamOptions {
+    /**
+     * The dictionary used to compress the original data. If no dictionary was used during compression, this option has no effect.
+     *
+     * Supplying the wrong dictionary during decompression usually yields corrupt output or causes an invalid distance error.
+     */
+    dictionary?: Uint8Array;
+}
+/**
+ * Options for decompressing DEFLATE data
+ */
+export interface InflateOptions extends InflateStreamOptions {
+    /**
+     * The buffer into which to write the decompressed data. Saves memory if you know the decompressed size in advance.
+     *
+     * Note that if the decompression result is larger than the size of this buffer, it will be truncated to fit.
+     */
+    out?: Uint8Array;
+}
+/**
+ * Options for decompressing a GZIP stream
+ */
+export interface GunzipStreamOptions extends InflateStreamOptions {
+}
+/**
+ * Options for decompressing GZIP data
+ */
+export interface GunzipOptions extends InflateStreamOptions {
+    /**
+     * The buffer into which to write the decompressed data. GZIP already encodes the output size, so providing this doesn't save memory.
+     *
+     * Note that if the decompression result is larger than the size of this buffer, it will be truncated to fit.
+     */
+    out?: Uint8Array;
+}
+/**
+ * Options for decompressing a Zlib stream
+ */
+export interface UnzlibStreamOptions extends InflateStreamOptions {
+}
+/**
+ * Options for decompressing Zlib data
+ */
+export interface UnzlibOptions extends InflateOptions {
+}
+/**
+ * Options for compressing data into a DEFLATE format
+ */
+export interface DeflateOptions {
+    /**
+     * The level of compression to use, ranging from 0-9.
+     *
+     * 0 will store the data without compression.
+     * 1 is fastest but compresses the worst, 9 is slowest but compresses the best.
+     * The default level is 6.
+     *
+     * Typically, binary data benefits much more from higher values than text data.
+     * In both cases, higher values usually take disproportionately longer than the reduction in final size that results.
+     *
+     * For example, a 1 MB text file could:
+     * - become 1.01 MB with level 0 in 1ms
+     * - become 400 kB with level 1 in 10ms
+     * - become 320 kB with level 9 in 100ms
+     */
+    level?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
+    /**
+     * The memory level to use, ranging from 0-12. Increasing this increases speed and compression ratio at the cost of memory.
+     *
+     * Note that this is exponential: while level 0 uses 4 kB, level 4 uses 64 kB, level 8 uses 1 MB, and level 12 uses 16 MB.
+     * It is recommended not to lower the value below 4, since that tends to hurt performance.
+     * In addition, values above 8 tend to help very little on most data and can even hurt performance.
+     *
+     * The default value is automatically determined based on the size of the input data.
+     */
+    mem?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
+    /**
+     * A buffer containing common byte sequences in the input data that can be used to significantly improve compression ratios.
+     *
+     * Dictionaries should be 32kB or smaller and include strings or byte sequences likely to appear in the input.
+     * The decompressor must supply the same dictionary as the compressor to extract the original data.
+     *
+     * Dictionaries only improve aggregate compression ratio when reused across multiple small inputs. They should typically not be used otherwise.
+     *
+     * Avoid using dictionaries with GZIP and ZIP to maximize software compatibility.
+     */
+    dictionary?: Uint8Array;
+}
+/**
+ * Options for compressing data into a GZIP format
+ */
+export interface GzipOptions extends DeflateOptions {
+    /**
+     * When the file was last modified. Defaults to the current time.
+     * Set this to 0 to avoid revealing a modification date entirely.
+     */
+    mtime?: Date | string | number;
+    /**
+     * The filename of the data. If the `gunzip` command is used to decompress the data, it will output a file
+     * with this name instead of the name of the compressed file.
+     */
+    filename?: string;
+}
+/**
+ * Options for compressing data into a Zlib format
+ */
+export interface ZlibOptions extends DeflateOptions {
+}
+/**
+ * Handler for data (de)compression streams
+ * @param data The data output from the stream processor
+ * @param final Whether this is the final block
+ */
+export type FlateStreamHandler = (data: Uint8Array, final: boolean) => void;
+/**
+ * Handler for asynchronous data (de)compression streams
+ * @param err Any error that occurred
+ * @param data The data output from the stream processor
+ * @param final Whether this is the final block
+ */
+export type AsyncFlateStreamHandler = (err: FlateError | null, data: Uint8Array, final: boolean) => void;
+/**
+ * Handler for the asynchronous completion of (de)compression for a data chunk
+ * @param size The number of bytes that were processed. This is measured in terms of the input
+ * (i.e. compressed bytes for decompression, uncompressed bytes for compression.)
+ */
+export type AsyncFlateDrainHandler = (size: number) => void;
+/**
+ * Callback for asynchronous (de)compression methods
+ * @param err Any error that occurred
+ * @param data The resulting data. Only present if `err` is null
+ */
+export type FlateCallback = (err: FlateError | null, data: Uint8Array) => void;
+interface AsyncOptions {
+    /**
+     * Whether or not to "consume" the source data. This will make the typed array/buffer you pass in
+     * unusable but will increase performance and reduce memory usage.
+     */
+    consume?: boolean;
+}
+/**
+ * Options for compressing data asynchronously into a DEFLATE format
+ */
+export interface AsyncDeflateOptions extends DeflateOptions, AsyncOptions {
+}
+/**
+ * Options for decompressing DEFLATE data asynchronously
+ */
+export interface AsyncInflateOptions extends AsyncOptions, InflateStreamOptions {
+    /**
+     * The original size of the data. Currently, the asynchronous API disallows
+     * writing into a buffer you provide; the best you can do is provide the
+     * size in bytes and be given back a new typed array.
+     */
+    size?: number;
+}
+/**
+ * Options for compressing data asynchronously into a GZIP format
+ */
+export interface AsyncGzipOptions extends GzipOptions, AsyncOptions {
+}
+/**
+ * Options for decompressing GZIP data asynchronously
+ */
+export interface AsyncGunzipOptions extends AsyncOptions, InflateStreamOptions {
+}
+/**
+ * Options for compressing data asynchronously into a Zlib format
+ */
+export interface AsyncZlibOptions extends ZlibOptions, AsyncOptions {
+}
+/**
+ * Options for decompressing Zlib data asynchronously
+ */
+export interface AsyncUnzlibOptions extends AsyncInflateOptions {
+}
+/**
+ * A terminable compression/decompression process
+ */
+export interface AsyncTerminable {
+    /**
+     * Terminates the worker thread immediately. The callback will not be called.
+     */
+    (): void;
+}
+/**
+ * Streaming DEFLATE compression
+ */
+export declare class Deflate {
+    /**
+     * Creates a DEFLATE stream
+     * @param opts The compression options
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(opts: DeflateOptions, cb?: FlateStreamHandler);
+    /**
+     * Creates a DEFLATE stream
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(cb?: FlateStreamHandler);
+    private b;
+    private s;
+    private o;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+    private p;
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * deflated output for small inputs.
+     */
+    flush(): void;
+}
+/**
+ * Asynchronous streaming DEFLATE compression
+ */
+export declare class AsyncDeflate {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The handler to call whenever buffered source data is processed (i.e. `queuedSize` updates)
+     */
+    ondrain?: AsyncFlateDrainHandler;
+    /**
+     * The number of uncompressed bytes buffered in the stream
+     */
+    queuedSize: number;
+    /**
+     * Creates an asynchronous DEFLATE stream
+     * @param opts The compression options
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(opts: DeflateOptions, cb?: AsyncFlateStreamHandler);
+    /**
+     * Creates an asynchronous DEFLATE stream
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * deflated output for small inputs.
+     */
+    flush(): void;
+    /**
+     * A method to terminate the stream's internal worker. Subsequent calls to
+     * push() will silently fail.
+     */
+    terminate: AsyncTerminable;
+}
+/**
+ * Asynchronously compresses data with DEFLATE without any wrapper
+ * @param data The data to compress
+ * @param opts The compression options
+ * @param cb The function to be called upon compression completion
+ * @returns A function that can be used to immediately terminate the compression
+ */
+export declare function deflate(data: Uint8Array, opts: AsyncDeflateOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchronously compresses data with DEFLATE without any wrapper
+ * @param data The data to compress
+ * @param cb The function to be called upon compression completion
+ */
+export declare function deflate(data: Uint8Array, cb: FlateCallback): AsyncTerminable;
+/**
+ * Compresses data with DEFLATE without any wrapper
+ * @param data The data to compress
+ * @param opts The compression options
+ * @returns The deflated version of the data
+ */
+export declare function deflateSync(data: Uint8Array, opts?: DeflateOptions): Uint8Array;
+/**
+ * Streaming DEFLATE decompression
+ */
+export declare class Inflate {
+    private s;
+    private o;
+    private p;
+    private d;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+    /**
+     * Creates a DEFLATE decompression stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(opts: InflateStreamOptions, cb?: FlateStreamHandler);
+    /**
+     * Creates a DEFLATE decompression stream
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(cb?: FlateStreamHandler);
+    private e;
+    private c;
+    /**
+     * Pushes a chunk to be inflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the final chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * Asynchronous streaming DEFLATE decompression
+ */
+export declare class AsyncInflate {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The handler to call whenever buffered source data is processed (i.e. `queuedSize` updates)
+     */
+    ondrain?: AsyncFlateDrainHandler;
+    /**
+     * The number of compressed bytes buffered in the stream
+     */
+    queuedSize: number;
+    /**
+     * Creates an asynchronous DEFLATE decompression stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(opts: InflateStreamOptions, cb?: AsyncFlateStreamHandler);
+    /**
+     * Creates an asynchronous DEFLATE decompression stream
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    /**
+     * Pushes a chunk to be inflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * A method to terminate the stream's internal worker. Subsequent calls to
+     * push() will silently fail.
+     */
+    terminate: AsyncTerminable;
+}
+/**
+ * Asynchronously expands DEFLATE data with no wrapper
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function inflate(data: Uint8Array, opts: AsyncInflateOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchronously expands DEFLATE data with no wrapper
+ * @param data The data to decompress
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function inflate(data: Uint8Array, cb: FlateCallback): AsyncTerminable;
+/**
+ * Expands DEFLATE data with no wrapper
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+export declare function inflateSync(data: Uint8Array, opts?: InflateOptions): Uint8Array;
+/**
+ * Streaming GZIP compression
+ */
+export declare class Gzip {
+    private c;
+    private l;
+    private v;
+    private o;
+    private s;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+    /**
+     * Creates a GZIP stream
+     * @param opts The compression options
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(opts: GzipOptions, cb?: FlateStreamHandler);
+    /**
+     * Creates a GZIP stream
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(cb?: FlateStreamHandler);
+    /**
+     * Pushes a chunk to be GZIPped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    private p;
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * GZIPped output for small inputs.
+     */
+    flush(): void;
+}
+/**
+ * Asynchronous streaming GZIP compression
+ */
+export declare class AsyncGzip {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The handler to call whenever buffered source data is processed (i.e. `queuedSize` updates)
+     */
+    ondrain?: AsyncFlateDrainHandler;
+    /**
+     * The number of uncompressed bytes buffered in the stream
+     */
+    queuedSize: number;
+    /**
+     * Creates an asynchronous GZIP stream
+     * @param opts The compression options
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(opts: GzipOptions, cb?: AsyncFlateStreamHandler);
+    /**
+     * Creates an asynchronous GZIP stream
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    /**
+     * Pushes a chunk to be GZIPped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * GZIPped output for small inputs.
+     */
+    flush(): void;
+    /**
+     * A method to terminate the stream's internal worker. Subsequent calls to
+     * push() will silently fail.
+     */
+    terminate: AsyncTerminable;
+}
+/**
+ * Asynchronously compresses data with GZIP
+ * @param data The data to compress
+ * @param opts The compression options
+ * @param cb The function to be called upon compression completion
+ * @returns A function that can be used to immediately terminate the compression
+ */
+export declare function gzip(data: Uint8Array, opts: AsyncGzipOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchronously compresses data with GZIP
+ * @param data The data to compress
+ * @param cb The function to be called upon compression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function gzip(data: Uint8Array, cb: FlateCallback): AsyncTerminable;
+/**
+ * Compresses data with GZIP
+ * @param data The data to compress
+ * @param opts The compression options
+ * @returns The gzipped version of the data
+ */
+export declare function gzipSync(data: Uint8Array, opts?: GzipOptions): Uint8Array;
+/**
+ * Handler for new GZIP members in concatenated GZIP streams. Useful for building indices used to perform random-access reads on compressed files.
+ * @param offset The offset of the new member relative to the start of the stream
+ */
+export type GunzipMemberHandler = (offset: number) => void;
+/**
+ * Streaming single or multi-member GZIP decompression
+ */
+export declare class Gunzip {
+    private v;
+    private r;
+    private o;
+    private p;
+    private s;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+    /**
+     * The handler to call whenever a new GZIP member is found
+     */
+    onmember?: GunzipMemberHandler;
+    /**
+     * Creates a GUNZIP stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(opts: GunzipStreamOptions, cb?: FlateStreamHandler);
+    /**
+     * Creates a GUNZIP stream
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(cb?: FlateStreamHandler);
+    /**
+     * Pushes a chunk to be GUNZIPped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * Asynchronous streaming single or multi-member GZIP decompression
+ */
+export declare class AsyncGunzip {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The handler to call whenever buffered source data is processed (i.e. `queuedSize` updates)
+     */
+    ondrain?: AsyncFlateDrainHandler;
+    /**
+     * The number of compressed bytes buffered in the stream
+     */
+    queuedSize: number;
+    /**
+     * The handler to call whenever a new GZIP member is found
+     */
+    onmember?: GunzipMemberHandler;
+    /**
+     * Creates an asynchronous GUNZIP stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(opts: GunzipStreamOptions, cb?: AsyncFlateStreamHandler);
+    /**
+     * Creates an asynchronous GUNZIP stream
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    /**
+     * Pushes a chunk to be GUNZIPped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * A method to terminate the stream's internal worker. Subsequent calls to
+     * push() will silently fail.
+     */
+    terminate: AsyncTerminable;
+}
+/**
+ * Asynchronously expands GZIP data
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function gunzip(data: Uint8Array, opts: AsyncGunzipOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchronously expands GZIP data
+ * @param data The data to decompress
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function gunzip(data: Uint8Array, cb: FlateCallback): AsyncTerminable;
+/**
+ * Expands GZIP data
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+export declare function gunzipSync(data: Uint8Array, opts?: GunzipOptions): Uint8Array;
+/**
+ * Streaming Zlib compression
+ */
+export declare class Zlib {
+    private c;
+    private v;
+    private o;
+    private s;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+    /**
+     * Creates a Zlib stream
+     * @param opts The compression options
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(opts: ZlibOptions, cb?: FlateStreamHandler);
+    /**
+     * Creates a Zlib stream
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(cb?: FlateStreamHandler);
+    /**
+     * Pushes a chunk to be zlibbed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    private p;
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * zlibbed output for small inputs.
+     */
+    flush(): void;
+}
+/**
+ * Asynchronous streaming Zlib compression
+ */
+export declare class AsyncZlib {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The handler to call whenever buffered source data is processed (i.e. `queuedSize` updates)
+     */
+    ondrain?: AsyncFlateDrainHandler;
+    /**
+     * The number of uncompressed bytes buffered in the stream
+     */
+    queuedSize: number;
+    /**
+     * Creates an asynchronous Zlib stream
+     * @param opts The compression options
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(opts: ZlibOptions, cb?: AsyncFlateStreamHandler);
+    /**
+     * Creates an asynchronous Zlib stream
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * zlibbed output for small inputs.
+     */
+    flush(): void;
+    /**
+     * A method to terminate the stream's internal worker. Subsequent calls to
+     * push() will silently fail.
+     */
+    terminate: AsyncTerminable;
+}
+/**
+ * Asynchronously compresses data with Zlib
+ * @param data The data to compress
+ * @param opts The compression options
+ * @param cb The function to be called upon compression completion
+ */
+export declare function zlib(data: Uint8Array, opts: AsyncZlibOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchronously compresses data with Zlib
+ * @param data The data to compress
+ * @param cb The function to be called upon compression completion
+ * @returns A function that can be used to immediately terminate the compression
+ */
+export declare function zlib(data: Uint8Array, cb: FlateCallback): AsyncTerminable;
+/**
+ * Compress data with Zlib
+ * @param data The data to compress
+ * @param opts The compression options
+ * @returns The zlib-compressed version of the data
+ */
+export declare function zlibSync(data: Uint8Array, opts?: ZlibOptions): Uint8Array;
+/**
+ * Streaming Zlib decompression
+ */
+export declare class Unzlib {
+    private v;
+    private p;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+    /**
+     * Creates a Zlib decompression stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(opts: UnzlibStreamOptions, cb?: FlateStreamHandler);
+    /**
+     * Creates a Zlib decompression stream
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(cb?: FlateStreamHandler);
+    /**
+     * Pushes a chunk to be unzlibbed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * Asynchronous streaming Zlib decompression
+ */
+export declare class AsyncUnzlib {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The handler to call whenever buffered source data is processed (i.e. `queuedSize` updates)
+     */
+    ondrain?: AsyncFlateDrainHandler;
+    /**
+     * The number of compressed bytes buffered in the stream
+     */
+    queuedSize: number;
+    /**
+     * Creates an asynchronous Zlib decompression stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(opts: UnzlibStreamOptions, cb?: AsyncFlateStreamHandler);
+    /**
+     * Creates an asynchronous Zlib decompression stream
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    /**
+     * Pushes a chunk to be decompressed from Zlib
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * A method to terminate the stream's internal worker. Subsequent calls to
+     * push() will silently fail.
+     */
+    terminate: AsyncTerminable;
+}
+/**
+ * Asynchronously expands Zlib data
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function unzlib(data: Uint8Array, opts: AsyncUnzlibOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchronously expands Zlib data
+ * @param data The data to decompress
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function unzlib(data: Uint8Array, cb: FlateCallback): AsyncTerminable;
+/**
+ * Expands Zlib data
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+export declare function unzlibSync(data: Uint8Array, opts?: UnzlibOptions): Uint8Array;
+export { gzip as compress, AsyncGzip as AsyncCompress };
+export { gzipSync as compressSync, Gzip as Compress };
+/**
+ * Streaming GZIP, Zlib, or raw DEFLATE decompression
+ */
+export declare class Decompress {
+    private G;
+    private I;
+    private Z;
+    private o;
+    private s;
+    private p;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+    /**
+     * Creates a decompression stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is decompressed
+     */
+    constructor(opts: InflateStreamOptions, cb?: FlateStreamHandler);
+    /**
+     * Creates a decompression stream
+     * @param cb The callback to call whenever data is decompressed
+     */
+    constructor(cb?: FlateStreamHandler);
+    private i;
+    /**
+     * Pushes a chunk to be decompressed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression
+ */
+export declare class AsyncDecompress {
+    private G;
+    private I;
+    private Z;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The handler to call whenever buffered source data is processed (i.e. `queuedSize` updates)
+     */
+    ondrain?: AsyncFlateDrainHandler;
+    /**
+     * The number of compressed bytes buffered in the stream
+     */
+    queuedSize: number;
+    /**
+     * Creates an asynchronous decompression stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is decompressed
+     */
+    constructor(opts: InflateStreamOptions, cb?: AsyncFlateStreamHandler);
+    /**
+     * Creates an asynchronous decompression stream
+     * @param cb The callback to call whenever data is decompressed
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    private i;
+    /**
+     * Pushes a chunk to be decompressed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * Asynchrononously expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function decompress(data: Uint8Array, opts: AsyncInflateOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchrononously expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format
+ * @param data The data to decompress
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function decompress(data: Uint8Array, cb: FlateCallback): AsyncTerminable;
+/**
+ * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+export declare function decompressSync(data: Uint8Array, opts?: InflateOptions): Uint8Array;
+/**
+ * Attributes for files added to a ZIP archive object
+ */
+export interface ZipAttributes {
+    /**
+     * The operating system of origin for this file. The value is defined
+     * by PKZIP's APPNOTE.txt, section 4.4.2.2. For example, 0 (the default)
+     * is MS/DOS, 3 is Unix, 19 is macOS.
+     */
+    os?: number;
+    /**
+     * The file's attributes. These are traditionally somewhat complicated
+     * and platform-dependent, so using them is scarcely necessary. However,
+     * here is a representation of what this is, bit by bit:
+     *
+     * `TTTTugtrwxrwxrwx0000000000ADVSHR`
+     *
+     * TTTT = file type (rarely useful)
+     *
+     * u = setuid, g = setgid, t = sticky
+     *
+     * rwx = user permissions, rwx = group permissions, rwx = other permissions
+     *
+     * 0000000000 = unused
+     *
+     * A = archive, D = directory, V = volume label, S = system file, H = hidden, R = read-only
+     *
+     * If you want to set the Unix permissions, for instance, just bit shift by 16, e.g. 0o644 << 16.
+     * Note that attributes usually only work in conjunction with the `os` setting: you must use
+     * `os` = 3 (Unix) if you want to set Unix permissions
+     */
+    attrs?: number;
+    /**
+     * Extra metadata to add to the file. This field is defined by PKZIP's APPNOTE.txt,
+     * section 4.4.28. At most 65,535 bytes may be used in each ID. The ID must be an
+     * integer between 0 and 65,535, inclusive.
+     *
+     * This field is incredibly rare and almost never needed except for compliance with
+     * proprietary standards and software.
+     */
+    extra?: Record<number, Uint8Array>;
+    /**
+     * The comment to attach to the file. This field is defined by PKZIP's APPNOTE.txt,
+     * section 4.4.26. The comment must be at most 65,535 bytes long UTF-8 encoded. This
+     * field is not read by consumer software.
+     */
+    comment?: string;
+    /**
+     * When the file was last modified. Defaults to the current time.
+     */
+    mtime?: GzipOptions['mtime'];
+}
+/**
+ * Options for creating a ZIP archive
+ */
+export interface ZipOptions extends DeflateOptions, ZipAttributes {
+}
+/**
+ * Options for expanding a ZIP archive
+ */
+export interface UnzipOptions {
+    /**
+     * A filter function to extract only certain files from a ZIP archive
+     */
+    filter?: UnzipFileFilter;
+}
+/**
+ * Options for asynchronously creating a ZIP archive
+ */
+export interface AsyncZipOptions extends AsyncDeflateOptions, ZipAttributes {
+}
+/**
+ * Options for asynchronously expanding a ZIP archive
+ */
+export interface AsyncUnzipOptions extends UnzipOptions {
+}
+/**
+ * A file that can be used to create a ZIP archive
+ */
+export type ZippableFile = Uint8Array | Zippable | [Uint8Array | Zippable, ZipOptions];
+/**
+ * A file that can be used to asynchronously create a ZIP archive
+ */
+export type AsyncZippableFile = Uint8Array | AsyncZippable | [Uint8Array | AsyncZippable, AsyncZipOptions];
+/**
+ * The complete directory structure of a ZIPpable archive
+ */
+export interface Zippable {
+    [path: string]: ZippableFile;
+}
+/**
+ * The complete directory structure of an asynchronously ZIPpable archive
+ */
+export interface AsyncZippable {
+    [path: string]: AsyncZippableFile;
+}
+/**
+ * An unzipped archive. The full path of each file is used as the key,
+ * and the file is the value
+ */
+export interface Unzipped {
+    [path: string]: Uint8Array;
+}
+/**
+ * Handler for string generation streams
+ * @param data The string output from the stream processor
+ * @param final Whether this is the final block
+ */
+export type StringStreamHandler = (data: string, final: boolean) => void;
+/**
+ * Callback for asynchronous ZIP decompression
+ * @param err Any error that occurred
+ * @param data The decompressed ZIP archive
+ */
+export type UnzipCallback = (err: FlateError | null, data: Unzipped) => void;
+/**
+ * Handler for streaming ZIP decompression
+ * @param file The file that was found in the archive
+ */
+export type UnzipFileHandler = (file: UnzipFile) => void;
+/**
+ * Streaming UTF-8 decoding
+ */
+export declare class DecodeUTF8 {
+    private p;
+    private t;
+    /**
+     * Creates a UTF-8 decoding stream
+     * @param cb The callback to call whenever data is decoded
+     */
+    constructor(cb?: StringStreamHandler);
+    /**
+     * Pushes a chunk to be decoded from UTF-8 binary
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: StringStreamHandler;
+}
+/**
+ * Streaming UTF-8 encoding
+ */
+export declare class EncodeUTF8 {
+    private d;
+    /**
+     * Creates a UTF-8 decoding stream
+     * @param cb The callback to call whenever data is encoded
+     */
+    constructor(cb?: FlateStreamHandler);
+    /**
+     * Pushes a chunk to be encoded to UTF-8
+     * @param chunk The string data to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: string, final?: boolean): void;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+}
+/**
+ * Converts a string into a Uint8Array for use with compression/decompression methods
+ * @param str The string to encode
+ * @param latin1 Whether or not to interpret the data as Latin-1. This should
+ *               not need to be true unless decoding a binary string.
+ * @returns The string encoded in UTF-8/Latin-1 binary
+ */
+export declare function strToU8(str: string, latin1?: boolean): Uint8Array;
+/**
+ * Converts a Uint8Array to a string
+ * @param dat The data to decode to string
+ * @param latin1 Whether or not to interpret the data as Latin-1. This should
+ *               not need to be true unless encoding to binary string.
+ * @returns The original UTF-8/Latin-1 string
+ */
+export declare function strFromU8(dat: Uint8Array, latin1?: boolean): string;
+/**
+ * A stream that can be used to create a file in a ZIP archive
+ */
+export interface ZipInputFile extends ZipAttributes {
+    /**
+     * The filename to associate with the data provided to this stream. If you
+     * want a file in a subdirectory, use forward slashes as a separator (e.g.
+     * `directory/filename.ext`). This will still work on Windows.
+     */
+    filename: string;
+    /**
+     * The size of the file in bytes. This attribute may be invalid after
+     * the file is added to the ZIP archive; it must be correct only before the
+     * stream completes.
+     *
+     * If you don't want to have to compute this yourself, consider extending the
+     * ZipPassThrough class and overriding its process() method, or using one of
+     * ZipDeflate or AsyncZipDeflate.
+     */
+    size: number;
+    /**
+     * A CRC of the original file contents. This attribute may be invalid after
+     * the file is added to the ZIP archive; it must be correct only before the
+     * stream completes.
+     *
+     * If you don't want to have to generate this yourself, consider extending the
+     * ZipPassThrough class and overriding its process() method, or using one of
+     * ZipDeflate or AsyncZipDeflate.
+     */
+    crc: number;
+    /**
+     * The compression format for the data stream. This number is determined by
+     * the spec in PKZIP's APPNOTE.txt, section 4.4.5. For example, 0 = no
+     * compression, 8 = deflate, 14 = LZMA
+     */
+    compression: number;
+    /**
+     * Bits 1 and 2 of the general purpose bit flag, specified in PKZIP's
+     * APPNOTE.txt, section 4.4.4. Should be between 0 and 3. This is unlikely
+     * to be necessary.
+     */
+    flag?: number;
+    /**
+     * The handler to be called when data is added. After passing this stream to
+     * the ZIP file object, this handler will always be defined. To call it:
+     *
+     * `stream.ondata(error, chunk, final)`
+     *
+     * error = any error that occurred (null if there was no error)
+     *
+     * chunk = a Uint8Array of the data that was added (null if there was an
+     * error)
+     *
+     * final = boolean, whether this is the final chunk in the stream
+     */
+    ondata?: AsyncFlateStreamHandler;
+    /**
+     * A method called when the stream is no longer needed, for clean-up
+     * purposes. This will not always be called after the stream completes,
+     * so you may wish to call this.terminate() after the final chunk is
+     * processed if you have clean-up logic.
+     */
+    terminate?: AsyncTerminable;
+}
+/**
+ * A pass-through stream to keep data uncompressed in a ZIP archive.
+ */
+export declare class ZipPassThrough implements ZipInputFile {
+    filename: string;
+    crc: number;
+    size: number;
+    compression: number;
+    os?: number;
+    attrs?: number;
+    comment?: string;
+    extra?: Record<number, Uint8Array>;
+    mtime?: GzipOptions['mtime'];
+    ondata: AsyncFlateStreamHandler;
+    private c;
+    /**
+     * Creates a pass-through stream that can be added to ZIP archives
+     * @param filename The filename to associate with this data stream
+     */
+    constructor(filename: string);
+    /**
+     * Processes a chunk and pushes to the output stream. You can override this
+     * method in a subclass for custom behavior, but by default this passes
+     * the data through. You must call this.ondata(err, chunk, final) at some
+     * point in this method.
+     * @param chunk The chunk to process
+     * @param final Whether this is the last chunk
+     */
+    protected process(chunk: Uint8Array, final: boolean): void;
+    /**
+     * Pushes a chunk to be added. If you are subclassing this with a custom
+     * compression algorithm, note that you must push data from the source
+     * file only, pre-compression.
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate
+ * for better performance
+ */
+export declare class ZipDeflate implements ZipInputFile {
+    filename: string;
+    crc: number;
+    size: number;
+    compression: number;
+    flag: 0 | 1 | 2 | 3;
+    os?: number;
+    attrs?: number;
+    comment?: string;
+    extra?: Record<number, Uint8Array>;
+    mtime?: GzipOptions['mtime'];
+    ondata: AsyncFlateStreamHandler;
+    private d;
+    /**
+     * Creates a DEFLATE stream that can be added to ZIP archives
+     * @param filename The filename to associate with this data stream
+     * @param opts The compression options
+     */
+    constructor(filename: string, opts?: DeflateOptions);
+    process(chunk: Uint8Array, final: boolean): void;
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * Asynchronous streaming DEFLATE compression for ZIP archives
+ */
+export declare class AsyncZipDeflate implements ZipInputFile {
+    filename: string;
+    crc: number;
+    size: number;
+    compression: number;
+    flag: 0 | 1 | 2 | 3;
+    os?: number;
+    attrs?: number;
+    comment?: string;
+    extra?: Record<number, Uint8Array>;
+    mtime?: GzipOptions['mtime'];
+    ondata: AsyncFlateStreamHandler;
+    private d;
+    terminate: AsyncTerminable;
+    /**
+     * Creates an asynchronous DEFLATE stream that can be added to ZIP archives
+     * @param filename The filename to associate with this data stream
+     * @param opts The compression options
+     */
+    constructor(filename: string, opts?: DeflateOptions);
+    process(chunk: Uint8Array, final: boolean): void;
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * A zippable archive to which files can incrementally be added
+ */
+export declare class Zip {
+    private u;
+    private d;
+    /**
+     * Creates an empty ZIP archive to which files can be added
+     * @param cb The callback to call whenever data for the generated ZIP archive
+     *           is available
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    /**
+     * Adds a file to the ZIP archive
+     * @param file The file stream to add
+     */
+    add(file: ZipInputFile): void;
+    /**
+     * Ends the process of adding files and prepares to emit the final chunks.
+     * This *must* be called after adding all desired files for the resulting
+     * ZIP file to work properly.
+     */
+    end(): void;
+    private e;
+    /**
+     * A method to terminate any internal workers used by the stream. Subsequent
+     * calls to add() will fail.
+     */
+    terminate(): void;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+}
+/**
+ * Asynchronously creates a ZIP file
+ * @param data The directory structure for the ZIP archive
+ * @param opts The main options, merged with per-file options
+ * @param cb The callback to call with the generated ZIP archive
+ * @returns A function that can be used to immediately terminate the compression
+ */
+export declare function zip(data: AsyncZippable, opts: AsyncZipOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchronously creates a ZIP file
+ * @param data The directory structure for the ZIP archive
+ * @param cb The callback to call with the generated ZIP archive
+ * @returns A function that can be used to immediately terminate the compression
+ */
+export declare function zip(data: AsyncZippable, cb: FlateCallback): AsyncTerminable;
+/**
+ * Synchronously creates a ZIP file. Prefer using `zip` for better performance
+ * with more than one file.
+ * @param data The directory structure for the ZIP archive
+ * @param opts The main options, merged with per-file options
+ * @returns The generated ZIP archive
+ */
+export declare function zipSync(data: Zippable, opts?: ZipOptions): Uint8Array;
+/**
+ * A decoder for files in ZIP streams
+ */
+export interface UnzipDecoder {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * Pushes a chunk to be decompressed
+     * @param data The data in this chunk. Do not consume (detach) this data.
+     * @param final Whether this is the last chunk in the data stream
+     */
+    push(data: Uint8Array, final: boolean): void;
+    /**
+     * A method to terminate any internal workers used by the stream. Subsequent
+     * calls to push() should silently fail.
+     */
+    terminate?: AsyncTerminable;
+}
+/**
+ * A constructor for a decoder for unzip streams
+ */
+export interface UnzipDecoderConstructor {
+    /**
+     * Creates an instance of the decoder
+     * @param filename The name of the file
+     * @param size The compressed size of the file
+     * @param originalSize The original size of the file
+     */
+    new (filename: string, size?: number, originalSize?: number): UnzipDecoder;
+    /**
+     * The compression format for the data stream. This number is determined by
+     * the spec in PKZIP's APPNOTE.txt, section 4.4.5. For example, 0 = no
+     * compression, 8 = deflate, 14 = LZMA
+     */
+    compression: number;
+}
+/**
+ * Information about a file to be extracted from a ZIP archive
+ */
+export interface UnzipFileInfo {
+    /**
+     * The name of the file
+     */
+    name: string;
+    /**
+     * The compressed size of the file
+     */
+    size: number;
+    /**
+     * The original size of the file
+     */
+    originalSize: number;
+    /**
+     * The compression format for the data stream. This number is determined by
+     * the spec in PKZIP's APPNOTE.txt, section 4.4.5. For example, 0 = no
+     * compression, 8 = deflate, 14 = LZMA. If the filter function returns true
+     * but this value is not 8, the unzip function will throw.
+     */
+    compression: number;
+}
+/**
+ * A filter for files to be extracted during the unzipping process
+ * @param file The info for the current file being processed
+ * @returns Whether or not to extract the current file
+ */
+export type UnzipFileFilter = (file: UnzipFileInfo) => boolean;
+/**
+ * Streaming file extraction from ZIP archives
+ */
+export interface UnzipFile {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The name of the file
+     */
+    name: string;
+    /**
+     * The compression format for the data stream. This number is determined by
+     * the spec in PKZIP's APPNOTE.txt, section 4.4.5. For example, 0 = no
+     * compression, 8 = deflate, 14 = LZMA. If start() is called but there is no
+     * decompression stream available for this method, start() will throw.
+     */
+    compression: number;
+    /**
+     * The compressed size of the file. Will not be present for archives created
+     * in a streaming fashion.
+     */
+    size?: number;
+    /**
+     * The original size of the file. Will not be present for archives created
+     * in a streaming fashion.
+     */
+    originalSize?: number;
+    /**
+     * Starts reading from the stream. Calling this function will always enable
+     * this stream, but ocassionally the stream will be enabled even without
+     * this being called.
+     */
+    start(): void;
+    /**
+     * A method to terminate any internal workers used by the stream. ondata
+     * will not be called any further.
+     */
+    terminate: AsyncTerminable;
+}
+/**
+ * Streaming pass-through decompression for ZIP archives
+ */
+export declare class UnzipPassThrough implements UnzipDecoder {
+    static compression: number;
+    ondata: AsyncFlateStreamHandler;
+    push(data: Uint8Array, final: boolean): void;
+}
+/**
+ * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for
+ * better performance.
+ */
+export declare class UnzipInflate implements UnzipDecoder {
+    static compression: number;
+    private i;
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * Creates a DEFLATE decompression that can be used in ZIP archives
+     */
+    constructor();
+    push(data: Uint8Array, final: boolean): void;
+}
+/**
+ * Asynchronous streaming DEFLATE decompression for ZIP archives
+ */
+export declare class AsyncUnzipInflate implements UnzipDecoder {
+    static compression: number;
+    private i;
+    ondata: AsyncFlateStreamHandler;
+    terminate: AsyncTerminable;
+    /**
+     * Creates a DEFLATE decompression that can be used in ZIP archives
+     */
+    constructor(_: string, sz?: number);
+    push(data: Uint8Array, final: boolean): void;
+}
+/**
+ * A ZIP archive decompression stream that emits files as they are discovered
+ */
+export declare class Unzip {
+    private d;
+    private c;
+    private p;
+    private k;
+    private o;
+    /**
+     * Creates a ZIP decompression stream
+     * @param cb The callback to call whenever a file in the ZIP archive is found
+     */
+    constructor(cb?: UnzipFileHandler);
+    /**
+     * Pushes a chunk to be unzipped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): any;
+    /**
+     * Registers a decoder with the stream, allowing for files compressed with
+     * the compression type provided to be expanded correctly
+     * @param decoder The decoder constructor
+     */
+    register(decoder: UnzipDecoderConstructor): void;
+    /**
+     * The handler to call whenever a file is discovered
+     */
+    onfile: UnzipFileHandler;
+}
+/**
+ * Asynchronously decompresses a ZIP archive
+ * @param data The raw compressed ZIP file
+ * @param opts The ZIP extraction options
+ * @param cb The callback to call with the decompressed files
+ * @returns A function that can be used to immediately terminate the unzipping
+ */
+export declare function unzip(data: Uint8Array, opts: AsyncUnzipOptions, cb: UnzipCallback): AsyncTerminable;
+/**
+ * Asynchronously decompresses a ZIP archive
+ * @param data The raw compressed ZIP file
+ * @param cb The callback to call with the decompressed files
+ * @returns A function that can be used to immediately terminate the unzipping
+ */
+export declare function unzip(data: Uint8Array, cb: UnzipCallback): AsyncTerminable;
+/**
+ * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better
+ * performance with more than one file.
+ * @param data The raw compressed ZIP file
+ * @param opts The ZIP extraction options
+ * @returns The decompressed files
+ */
+export declare function unzipSync(data: Uint8Array, opts?: UnzipOptions): Unzipped;
diff --git a/node_modules/fflate/esm/browser.js b/node_modules/fflate/esm/browser.js
new file mode 100644
index 0000000..e1a21e9
--- /dev/null
+++ b/node_modules/fflate/esm/browser.js
@@ -0,0 +1,2665 @@
+// DEFLATE is a complex format; to read this code, you should probably check the RFC first:
+// https://tools.ietf.org/html/rfc1951
+// You may also wish to take a look at the guide I made about this program:
+// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad
+// Some of the following code is similar to that of UZIP.js:
+// https://github.com/photopea/UZIP.js
+// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.
+// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint
+// is better for memory in most engines (I *think*).
+var ch2 = {};
+var wk = (function (c, id, msg, transfer, cb) {
+    var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([
+        c + ';addEventListener("error",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'
+    ], { type: 'text/javascript' }))));
+    w.onmessage = function (e) {
+        var d = e.data, ed = d.$e$;
+        if (ed) {
+            var err = new Error(ed[0]);
+            err['code'] = ed[1];
+            err.stack = ed[2];
+            cb(err, null);
+        }
+        else
+            cb(null, d);
+    };
+    w.postMessage(msg, transfer);
+    return w;
+});
+
+// aliases for shorter compressed code (most minifers don't do this)
+var u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;
+// fixed length extra bits
+var fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);
+// fixed distance extra bits
+var fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);
+// code length index map
+var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);
+// get base, reverse index map from extra bits
+var freb = function (eb, start) {
+    var b = new u16(31);
+    for (var i = 0; i < 31; ++i) {
+        b[i] = start += 1 << eb[i - 1];
+    }
+    // numbers here are at max 18 bits
+    var r = new i32(b[30]);
+    for (var i = 1; i < 30; ++i) {
+        for (var j = b[i]; j < b[i + 1]; ++j) {
+            r[j] = ((j - b[i]) << 5) | i;
+        }
+    }
+    return { b: b, r: r };
+};
+var _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;
+// we can ignore the fact that the other numbers are wrong; they never happen anyway
+fl[28] = 258, revfl[258] = 28;
+var _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;
+// map of value to reverse (assuming 16 bits)
+var rev = new u16(32768);
+for (var i = 0; i < 32768; ++i) {
+    // reverse table algorithm from SO
+    var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);
+    x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);
+    x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);
+    rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;
+}
+// create huffman tree from u8 "map": index -> code length for code index
+// mb (max bits) must be at most 15
+// TODO: optimize/split up?
+var hMap = (function (cd, mb, r) {
+    var s = cd.length;
+    // index
+    var i = 0;
+    // u16 "map": index -> # of codes with bit length = index
+    var l = new u16(mb);
+    // length of cd must be 288 (total # of codes)
+    for (; i < s; ++i) {
+        if (cd[i])
+            ++l[cd[i] - 1];
+    }
+    // u16 "map": index -> minimum code for bit length = index
+    var le = new u16(mb);
+    for (i = 1; i < mb; ++i) {
+        le[i] = (le[i - 1] + l[i - 1]) << 1;
+    }
+    var co;
+    if (r) {
+        // u16 "map": index -> number of actual bits, symbol for code
+        co = new u16(1 << mb);
+        // bits to remove for reverser
+        var rvb = 15 - mb;
+        for (i = 0; i < s; ++i) {
+            // ignore 0 lengths
+            if (cd[i]) {
+                // num encoding both symbol and bits read
+                var sv = (i << 4) | cd[i];
+                // free bits
+                var r_1 = mb - cd[i];
+                // start value
+                var v = le[cd[i] - 1]++ << r_1;
+                // m is end value
+                for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {
+                    // every 16 bit value starting with the code yields the same result
+                    co[rev[v] >> rvb] = sv;
+                }
+            }
+        }
+    }
+    else {
+        co = new u16(s);
+        for (i = 0; i < s; ++i) {
+            if (cd[i]) {
+                co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);
+            }
+        }
+    }
+    return co;
+});
+// fixed length tree
+var flt = new u8(288);
+for (var i = 0; i < 144; ++i)
+    flt[i] = 8;
+for (var i = 144; i < 256; ++i)
+    flt[i] = 9;
+for (var i = 256; i < 280; ++i)
+    flt[i] = 7;
+for (var i = 280; i < 288; ++i)
+    flt[i] = 8;
+// fixed distance tree
+var fdt = new u8(32);
+for (var i = 0; i < 32; ++i)
+    fdt[i] = 5;
+// fixed length map
+var flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);
+// fixed distance map
+var fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);
+// find max of array
+var max = function (a) {
+    var m = a[0];
+    for (var i = 1; i < a.length; ++i) {
+        if (a[i] > m)
+            m = a[i];
+    }
+    return m;
+};
+// read d, starting at bit p and mask with m
+var bits = function (d, p, m) {
+    var o = (p / 8) | 0;
+    return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;
+};
+// read d, starting at bit p continuing for at least 16 bits
+var bits16 = function (d, p) {
+    var o = (p / 8) | 0;
+    return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));
+};
+// get end of byte
+var shft = function (p) { return ((p + 7) / 8) | 0; };
+// typed array slice - allows garbage collector to free original reference,
+// while being more compatible than .slice
+var slc = function (v, s, e) {
+    if (s == null || s < 0)
+        s = 0;
+    if (e == null || e > v.length)
+        e = v.length;
+    // can't use .constructor in case user-supplied
+    return new u8(v.subarray(s, e));
+};
+/**
+ * Codes for errors generated within this library
+ */
+export var FlateErrorCode = {
+    UnexpectedEOF: 0,
+    InvalidBlockType: 1,
+    InvalidLengthLiteral: 2,
+    InvalidDistance: 3,
+    StreamFinished: 4,
+    NoStreamHandler: 5,
+    InvalidHeader: 6,
+    NoCallback: 7,
+    InvalidUTF8: 8,
+    ExtraFieldTooLong: 9,
+    InvalidDate: 10,
+    FilenameTooLong: 11,
+    StreamFinishing: 12,
+    InvalidZipData: 13,
+    UnknownCompressionMethod: 14
+};
+// error codes
+var ec = [
+    'unexpected EOF',
+    'invalid block type',
+    'invalid length/literal',
+    'invalid distance',
+    'stream finished',
+    'no stream handler',
+    ,
+    'no callback',
+    'invalid UTF-8 data',
+    'extra field too long',
+    'date not in range 1980-2099',
+    'filename too long',
+    'stream finishing',
+    'invalid zip data'
+    // determined by unknown compression method
+];
+;
+var err = function (ind, msg, nt) {
+    var e = new Error(msg || ec[ind]);
+    e.code = ind;
+    if (Error.captureStackTrace)
+        Error.captureStackTrace(e, err);
+    if (!nt)
+        throw e;
+    return e;
+};
+// expands raw DEFLATE data
+var inflt = function (dat, st, buf, dict) {
+    // source length       dict length
+    var sl = dat.length, dl = dict ? dict.length : 0;
+    if (!sl || st.f && !st.l)
+        return buf || new u8(0);
+    var noBuf = !buf;
+    // have to estimate size
+    var resize = noBuf || st.i != 2;
+    // no state
+    var noSt = st.i;
+    // Assumes roughly 33% compression ratio average
+    if (noBuf)
+        buf = new u8(sl * 3);
+    // ensure buffer can fit at least l elements
+    var cbuf = function (l) {
+        var bl = buf.length;
+        // need to increase size to fit
+        if (l > bl) {
+            // Double or set to necessary, whichever is greater
+            var nbuf = new u8(Math.max(bl * 2, l));
+            nbuf.set(buf);
+            buf = nbuf;
+        }
+    };
+    //  last chunk         bitpos           bytes
+    var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;
+    // total bits
+    var tbts = sl * 8;
+    do {
+        if (!lm) {
+            // BFINAL - this is only 1 when last chunk is next
+            final = bits(dat, pos, 1);
+            // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman
+            var type = bits(dat, pos + 1, 3);
+            pos += 3;
+            if (!type) {
+                // go to end of byte boundary
+                var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;
+                if (t > sl) {
+                    if (noSt)
+                        err(0);
+                    break;
+                }
+                // ensure size
+                if (resize)
+                    cbuf(bt + l);
+                // Copy over uncompressed data
+                buf.set(dat.subarray(s, t), bt);
+                // Get new bitpos, update byte count
+                st.b = bt += l, st.p = pos = t * 8, st.f = final;
+                continue;
+            }
+            else if (type == 1)
+                lm = flrm, dm = fdrm, lbt = 9, dbt = 5;
+            else if (type == 2) {
+                //  literal                            lengths
+                var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;
+                var tl = hLit + bits(dat, pos + 5, 31) + 1;
+                pos += 14;
+                // length+distance tree
+                var ldt = new u8(tl);
+                // code length tree
+                var clt = new u8(19);
+                for (var i = 0; i < hcLen; ++i) {
+                    // use index map to get real code
+                    clt[clim[i]] = bits(dat, pos + i * 3, 7);
+                }
+                pos += hcLen * 3;
+                // code lengths bits
+                var clb = max(clt), clbmsk = (1 << clb) - 1;
+                // code lengths map
+                var clm = hMap(clt, clb, 1);
+                for (var i = 0; i < tl;) {
+                    var r = clm[bits(dat, pos, clbmsk)];
+                    // bits read
+                    pos += r & 15;
+                    // symbol
+                    var s = r >> 4;
+                    // code length to copy
+                    if (s < 16) {
+                        ldt[i++] = s;
+                    }
+                    else {
+                        //  copy   count
+                        var c = 0, n = 0;
+                        if (s == 16)
+                            n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];
+                        else if (s == 17)
+                            n = 3 + bits(dat, pos, 7), pos += 3;
+                        else if (s == 18)
+                            n = 11 + bits(dat, pos, 127), pos += 7;
+                        while (n--)
+                            ldt[i++] = c;
+                    }
+                }
+                //    length tree                 distance tree
+                var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);
+                // max length bits
+                lbt = max(lt);
+                // max dist bits
+                dbt = max(dt);
+                lm = hMap(lt, lbt, 1);
+                dm = hMap(dt, dbt, 1);
+            }
+            else
+                err(1);
+            if (pos > tbts) {
+                if (noSt)
+                    err(0);
+                break;
+            }
+        }
+        // Make sure the buffer can hold this + the largest possible addition
+        // Maximum chunk size (practically, theoretically infinite) is 2^17
+        if (resize)
+            cbuf(bt + 131072);
+        var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;
+        var lpos = pos;
+        for (;; lpos = pos) {
+            // bits read, code
+            var c = lm[bits16(dat, pos) & lms], sym = c >> 4;
+            pos += c & 15;
+            if (pos > tbts) {
+                if (noSt)
+                    err(0);
+                break;
+            }
+            if (!c)
+                err(2);
+            if (sym < 256)
+                buf[bt++] = sym;
+            else if (sym == 256) {
+                lpos = pos, lm = null;
+                break;
+            }
+            else {
+                var add = sym - 254;
+                // no extra bits needed if less
+                if (sym > 264) {
+                    // index
+                    var i = sym - 257, b = fleb[i];
+                    add = bits(dat, pos, (1 << b) - 1) + fl[i];
+                    pos += b;
+                }
+                // dist
+                var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;
+                if (!d)
+                    err(3);
+                pos += d & 15;
+                var dt = fd[dsym];
+                if (dsym > 3) {
+                    var b = fdeb[dsym];
+                    dt += bits16(dat, pos) & (1 << b) - 1, pos += b;
+                }
+                if (pos > tbts) {
+                    if (noSt)
+                        err(0);
+                    break;
+                }
+                if (resize)
+                    cbuf(bt + 131072);
+                var end = bt + add;
+                if (bt < dt) {
+                    var shift = dl - dt, dend = Math.min(dt, end);
+                    if (shift + bt < 0)
+                        err(3);
+                    for (; bt < dend; ++bt)
+                        buf[bt] = dict[shift + bt];
+                }
+                for (; bt < end; ++bt)
+                    buf[bt] = buf[bt - dt];
+            }
+        }
+        st.l = lm, st.p = lpos, st.b = bt, st.f = final;
+        if (lm)
+            final = 1, st.m = lbt, st.d = dm, st.n = dbt;
+    } while (!final);
+    // don't reallocate for streams or user buffers
+    return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);
+};
+// starting at p, write the minimum number of bits that can hold v to d
+var wbits = function (d, p, v) {
+    v <<= p & 7;
+    var o = (p / 8) | 0;
+    d[o] |= v;
+    d[o + 1] |= v >> 8;
+};
+// starting at p, write the minimum number of bits (>8) that can hold v to d
+var wbits16 = function (d, p, v) {
+    v <<= p & 7;
+    var o = (p / 8) | 0;
+    d[o] |= v;
+    d[o + 1] |= v >> 8;
+    d[o + 2] |= v >> 16;
+};
+// creates code lengths from a frequency table
+var hTree = function (d, mb) {
+    // Need extra info to make a tree
+    var t = [];
+    for (var i = 0; i < d.length; ++i) {
+        if (d[i])
+            t.push({ s: i, f: d[i] });
+    }
+    var s = t.length;
+    var t2 = t.slice();
+    if (!s)
+        return { t: et, l: 0 };
+    if (s == 1) {
+        var v = new u8(t[0].s + 1);
+        v[t[0].s] = 1;
+        return { t: v, l: 1 };
+    }
+    t.sort(function (a, b) { return a.f - b.f; });
+    // after i2 reaches last ind, will be stopped
+    // freq must be greater than largest possible number of symbols
+    t.push({ s: -1, f: 25001 });
+    var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;
+    t[0] = { s: -1, f: l.f + r.f, l: l, r: r };
+    // efficient algorithm from UZIP.js
+    // i0 is lookbehind, i2 is lookahead - after processing two low-freq
+    // symbols that combined have high freq, will start processing i2 (high-freq,
+    // non-composite) symbols instead
+    // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/
+    while (i1 != s - 1) {
+        l = t[t[i0].f < t[i2].f ? i0++ : i2++];
+        r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];
+        t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };
+    }
+    var maxSym = t2[0].s;
+    for (var i = 1; i < s; ++i) {
+        if (t2[i].s > maxSym)
+            maxSym = t2[i].s;
+    }
+    // code lengths
+    var tr = new u16(maxSym + 1);
+    // max bits in tree
+    var mbt = ln(t[i1 - 1], tr, 0);
+    if (mbt > mb) {
+        // more algorithms from UZIP.js
+        // TODO: find out how this code works (debt)
+        //  ind    debt
+        var i = 0, dt = 0;
+        //    left            cost
+        var lft = mbt - mb, cst = 1 << lft;
+        t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });
+        for (; i < s; ++i) {
+            var i2_1 = t2[i].s;
+            if (tr[i2_1] > mb) {
+                dt += cst - (1 << (mbt - tr[i2_1]));
+                tr[i2_1] = mb;
+            }
+            else
+                break;
+        }
+        dt >>= lft;
+        while (dt > 0) {
+            var i2_2 = t2[i].s;
+            if (tr[i2_2] < mb)
+                dt -= 1 << (mb - tr[i2_2]++ - 1);
+            else
+                ++i;
+        }
+        for (; i >= 0 && dt; --i) {
+            var i2_3 = t2[i].s;
+            if (tr[i2_3] == mb) {
+                --tr[i2_3];
+                ++dt;
+            }
+        }
+        mbt = mb;
+    }
+    return { t: new u8(tr), l: mbt };
+};
+// get the max length and assign length codes
+var ln = function (n, l, d) {
+    return n.s == -1
+        ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))
+        : (l[n.s] = d);
+};
+// length codes generation
+var lc = function (c) {
+    var s = c.length;
+    // Note that the semicolon was intentional
+    while (s && !c[--s])
+        ;
+    var cl = new u16(++s);
+    //  ind      num         streak
+    var cli = 0, cln = c[0], cls = 1;
+    var w = function (v) { cl[cli++] = v; };
+    for (var i = 1; i <= s; ++i) {
+        if (c[i] == cln && i != s)
+            ++cls;
+        else {
+            if (!cln && cls > 2) {
+                for (; cls > 138; cls -= 138)
+                    w(32754);
+                if (cls > 2) {
+                    w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);
+                    cls = 0;
+                }
+            }
+            else if (cls > 3) {
+                w(cln), --cls;
+                for (; cls > 6; cls -= 6)
+                    w(8304);
+                if (cls > 2)
+                    w(((cls - 3) << 5) | 8208), cls = 0;
+            }
+            while (cls--)
+                w(cln);
+            cls = 1;
+            cln = c[i];
+        }
+    }
+    return { c: cl.subarray(0, cli), n: s };
+};
+// calculate the length of output from tree, code lengths
+var clen = function (cf, cl) {
+    var l = 0;
+    for (var i = 0; i < cl.length; ++i)
+        l += cf[i] * cl[i];
+    return l;
+};
+// writes a fixed block
+// returns the new bit pos
+var wfblk = function (out, pos, dat) {
+    // no need to write 00 as type: TypedArray defaults to 0
+    var s = dat.length;
+    var o = shft(pos + 2);
+    out[o] = s & 255;
+    out[o + 1] = s >> 8;
+    out[o + 2] = out[o] ^ 255;
+    out[o + 3] = out[o + 1] ^ 255;
+    for (var i = 0; i < s; ++i)
+        out[o + i + 4] = dat[i];
+    return (o + 4 + s) * 8;
+};
+// writes a block
+var wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {
+    wbits(out, p++, final);
+    ++lf[256];
+    var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;
+    var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;
+    var _c = lc(dlt), lclt = _c.c, nlc = _c.n;
+    var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;
+    var lcfreq = new u16(19);
+    for (var i = 0; i < lclt.length; ++i)
+        ++lcfreq[lclt[i] & 31];
+    for (var i = 0; i < lcdt.length; ++i)
+        ++lcfreq[lcdt[i] & 31];
+    var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;
+    var nlcc = 19;
+    for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)
+        ;
+    var flen = (bl + 5) << 3;
+    var ftlen = clen(lf, flt) + clen(df, fdt) + eb;
+    var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];
+    if (bs >= 0 && flen <= ftlen && flen <= dtlen)
+        return wfblk(out, p, dat.subarray(bs, bs + bl));
+    var lm, ll, dm, dl;
+    wbits(out, p, 1 + (dtlen < ftlen)), p += 2;
+    if (dtlen < ftlen) {
+        lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;
+        var llm = hMap(lct, mlcb, 0);
+        wbits(out, p, nlc - 257);
+        wbits(out, p + 5, ndc - 1);
+        wbits(out, p + 10, nlcc - 4);
+        p += 14;
+        for (var i = 0; i < nlcc; ++i)
+            wbits(out, p + 3 * i, lct[clim[i]]);
+        p += 3 * nlcc;
+        var lcts = [lclt, lcdt];
+        for (var it = 0; it < 2; ++it) {
+            var clct = lcts[it];
+            for (var i = 0; i < clct.length; ++i) {
+                var len = clct[i] & 31;
+                wbits(out, p, llm[len]), p += lct[len];
+                if (len > 15)
+                    wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;
+            }
+        }
+    }
+    else {
+        lm = flm, ll = flt, dm = fdm, dl = fdt;
+    }
+    for (var i = 0; i < li; ++i) {
+        var sym = syms[i];
+        if (sym > 255) {
+            var len = (sym >> 18) & 31;
+            wbits16(out, p, lm[len + 257]), p += ll[len + 257];
+            if (len > 7)
+                wbits(out, p, (sym >> 23) & 31), p += fleb[len];
+            var dst = sym & 31;
+            wbits16(out, p, dm[dst]), p += dl[dst];
+            if (dst > 3)
+                wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];
+        }
+        else {
+            wbits16(out, p, lm[sym]), p += ll[sym];
+        }
+    }
+    wbits16(out, p, lm[256]);
+    return p + ll[256];
+};
+// deflate options (nice << 13) | chain
+var deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);
+// empty
+var et = /*#__PURE__*/ new u8(0);
+// compresses data into a raw DEFLATE buffer
+var dflt = function (dat, lvl, plvl, pre, post, st) {
+    var s = st.z || dat.length;
+    var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);
+    // writing to this writes to the output buffer
+    var w = o.subarray(pre, o.length - post);
+    var lst = st.l;
+    var pos = (st.r || 0) & 7;
+    if (lvl) {
+        if (pos)
+            w[0] = st.r >> 3;
+        var opt = deo[lvl - 1];
+        var n = opt >> 13, c = opt & 8191;
+        var msk_1 = (1 << plvl) - 1;
+        //    prev 2-byte val map    curr 2-byte val map
+        var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);
+        var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;
+        var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };
+        // 24576 is an arbitrary number of maximum symbols per block
+        // 424 buffer for last block
+        var syms = new i32(25000);
+        // length/literal freq   distance freq
+        var lf = new u16(288), df = new u16(32);
+        //  l/lcnt  exbits  index          l/lind  waitdx          blkpos
+        var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;
+        for (; i + 2 < s; ++i) {
+            // hash value
+            var hv = hsh(i);
+            // index mod 32768    previous index mod
+            var imod = i & 32767, pimod = head[hv];
+            prev[imod] = pimod;
+            head[hv] = imod;
+            // We always should modify head and prev, but only add symbols if
+            // this data is not yet processed ("wait" for wait index)
+            if (wi <= i) {
+                // bytes remaining
+                var rem = s - i;
+                if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {
+                    pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);
+                    li = lc_1 = eb = 0, bs = i;
+                    for (var j = 0; j < 286; ++j)
+                        lf[j] = 0;
+                    for (var j = 0; j < 30; ++j)
+                        df[j] = 0;
+                }
+                //  len    dist   chain
+                var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;
+                if (rem > 2 && hv == hsh(i - dif)) {
+                    var maxn = Math.min(n, rem) - 1;
+                    var maxd = Math.min(32767, i);
+                    // max possible length
+                    // not capped at dif because decompressors implement "rolling" index population
+                    var ml = Math.min(258, rem);
+                    while (dif <= maxd && --ch_1 && imod != pimod) {
+                        if (dat[i + l] == dat[i + l - dif]) {
+                            var nl = 0;
+                            for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)
+                                ;
+                            if (nl > l) {
+                                l = nl, d = dif;
+                                // break out early when we reach "nice" (we are satisfied enough)
+                                if (nl > maxn)
+                                    break;
+                                // now, find the rarest 2-byte sequence within this
+                                // length of literals and search for that instead.
+                                // Much faster than just using the start
+                                var mmd = Math.min(dif, nl - 2);
+                                var md = 0;
+                                for (var j = 0; j < mmd; ++j) {
+                                    var ti = i - dif + j & 32767;
+                                    var pti = prev[ti];
+                                    var cd = ti - pti & 32767;
+                                    if (cd > md)
+                                        md = cd, pimod = ti;
+                                }
+                            }
+                        }
+                        // check the previous match
+                        imod = pimod, pimod = prev[imod];
+                        dif += imod - pimod & 32767;
+                    }
+                }
+                // d will be nonzero only when a match was found
+                if (d) {
+                    // store both dist and len data in one int32
+                    // Make sure this is recognized as a len/dist with 28th bit (2^28)
+                    syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];
+                    var lin = revfl[l] & 31, din = revfd[d] & 31;
+                    eb += fleb[lin] + fdeb[din];
+                    ++lf[257 + lin];
+                    ++df[din];
+                    wi = i + l;
+                    ++lc_1;
+                }
+                else {
+                    syms[li++] = dat[i];
+                    ++lf[dat[i]];
+                }
+            }
+        }
+        for (i = Math.max(i, wi); i < s; ++i) {
+            syms[li++] = dat[i];
+            ++lf[dat[i]];
+        }
+        pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);
+        if (!lst) {
+            st.r = (pos & 7) | w[(pos / 8) | 0] << 3;
+            // shft(pos) now 1 less if pos & 7 != 0
+            pos -= 7;
+            st.h = head, st.p = prev, st.i = i, st.w = wi;
+        }
+    }
+    else {
+        for (var i = st.w || 0; i < s + lst; i += 65535) {
+            // end
+            var e = i + 65535;
+            if (e >= s) {
+                // write final block
+                w[(pos / 8) | 0] = lst;
+                e = s;
+            }
+            pos = wfblk(w, pos + 1, dat.subarray(i, e));
+        }
+        st.i = s;
+    }
+    return slc(o, 0, pre + shft(pos) + post);
+};
+// CRC32 table
+var crct = /*#__PURE__*/ (function () {
+    var t = new Int32Array(256);
+    for (var i = 0; i < 256; ++i) {
+        var c = i, k = 9;
+        while (--k)
+            c = ((c & 1) && -306674912) ^ (c >>> 1);
+        t[i] = c;
+    }
+    return t;
+})();
+// CRC32
+var crc = function () {
+    var c = -1;
+    return {
+        p: function (d) {
+            // closures have awful performance
+            var cr = c;
+            for (var i = 0; i < d.length; ++i)
+                cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);
+            c = cr;
+        },
+        d: function () { return ~c; }
+    };
+};
+// Adler32
+var adler = function () {
+    var a = 1, b = 0;
+    return {
+        p: function (d) {
+            // closures have awful performance
+            var n = a, m = b;
+            var l = d.length | 0;
+            for (var i = 0; i != l;) {
+                var e = Math.min(i + 2655, l);
+                for (; i < e; ++i)
+                    m += n += d[i];
+                n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);
+            }
+            a = n, b = m;
+        },
+        d: function () {
+            a %= 65521, b %= 65521;
+            return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);
+        }
+    };
+};
+;
+// deflate with opts
+var dopt = function (dat, opt, pre, post, st) {
+    if (!st) {
+        st = { l: 1 };
+        if (opt.dictionary) {
+            var dict = opt.dictionary.subarray(-32768);
+            var newDat = new u8(dict.length + dat.length);
+            newDat.set(dict);
+            newDat.set(dat, dict.length);
+            dat = newDat;
+            st.w = dict.length;
+        }
+    }
+    return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? (st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20) : (12 + opt.mem), pre, post, st);
+};
+// Walmart object spread
+var mrg = function (a, b) {
+    var o = {};
+    for (var k in a)
+        o[k] = a[k];
+    for (var k in b)
+        o[k] = b[k];
+    return o;
+};
+// worker clone
+// This is possibly the craziest part of the entire codebase, despite how simple it may seem.
+// The only parameter to this function is a closure that returns an array of variables outside of the function scope.
+// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.
+// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).
+// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.
+// This took me three weeks to figure out how to do.
+var wcln = function (fn, fnStr, td) {
+    var dt = fn();
+    var st = fn.toString();
+    var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\s+/g, '').split(',');
+    for (var i = 0; i < dt.length; ++i) {
+        var v = dt[i], k = ks[i];
+        if (typeof v == 'function') {
+            fnStr += ';' + k + '=';
+            var st_1 = v.toString();
+            if (v.prototype) {
+                // for global objects
+                if (st_1.indexOf('[native code]') != -1) {
+                    var spInd = st_1.indexOf(' ', 8) + 1;
+                    fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));
+                }
+                else {
+                    fnStr += st_1;
+                    for (var t in v.prototype)
+                        fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();
+                }
+            }
+            else
+                fnStr += st_1;
+        }
+        else
+            td[k] = v;
+    }
+    return fnStr;
+};
+var ch = [];
+// clone bufs
+var cbfs = function (v) {
+    var tl = [];
+    for (var k in v) {
+        if (v[k].buffer) {
+            tl.push((v[k] = new v[k].constructor(v[k])).buffer);
+        }
+    }
+    return tl;
+};
+// use a worker to execute code
+var wrkr = function (fns, init, id, cb) {
+    if (!ch[id]) {
+        var fnStr = '', td_1 = {}, m = fns.length - 1;
+        for (var i = 0; i < m; ++i)
+            fnStr = wcln(fns[i], fnStr, td_1);
+        ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };
+    }
+    var td = mrg({}, ch[id].e);
+    return wk(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);
+};
+// base async inflate fn
+var bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };
+var bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };
+// gzip extra
+var gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };
+// gunzip extra
+var guze = function () { return [gzs, gzl]; };
+// zlib extra
+var zle = function () { return [zlh, wbytes, adler]; };
+// unzlib extra
+var zule = function () { return [zls]; };
+// post buf
+var pbf = function (msg) { return postMessage(msg, [msg.buffer]); };
+// get opts
+var gopt = function (o) { return o && {
+    out: o.size && new u8(o.size),
+    dictionary: o.dictionary
+}; };
+// async helper
+var cbify = function (dat, opts, fns, init, id, cb) {
+    var w = wrkr(fns, init, id, function (err, dat) {
+        w.terminate();
+        cb(err, dat);
+    });
+    w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);
+    return function () { w.terminate(); };
+};
+// auto stream
+var astrm = function (strm) {
+    strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };
+    return function (ev) {
+        if (ev.data.length) {
+            strm.push(ev.data[0], ev.data[1]);
+            postMessage([ev.data[0].length]);
+        }
+        else
+            strm.flush();
+    };
+};
+// async stream attach
+var astrmify = function (fns, strm, opts, init, id, flush, ext) {
+    var t;
+    var w = wrkr(fns, init, id, function (err, dat) {
+        if (err)
+            w.terminate(), strm.ondata.call(strm, err);
+        else if (!Array.isArray(dat))
+            ext(dat);
+        else if (dat.length == 1) {
+            strm.queuedSize -= dat[0];
+            if (strm.ondrain)
+                strm.ondrain(dat[0]);
+        }
+        else {
+            if (dat[1])
+                w.terminate();
+            strm.ondata.call(strm, err, dat[0], dat[1]);
+        }
+    });
+    w.postMessage(opts);
+    strm.queuedSize = 0;
+    strm.push = function (d, f) {
+        if (!strm.ondata)
+            err(5);
+        if (t)
+            strm.ondata(err(4, 0, 1), null, !!f);
+        strm.queuedSize += d.length;
+        w.postMessage([d, t = f], [d.buffer]);
+    };
+    strm.terminate = function () { w.terminate(); };
+    if (flush) {
+        strm.flush = function () { w.postMessage([]); };
+    }
+};
+// read 2 bytes
+var b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };
+// read 4 bytes
+var b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };
+var b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };
+// write bytes
+var wbytes = function (d, b, v) {
+    for (; v; ++b)
+        d[b] = v, v >>>= 8;
+};
+// gzip header
+var gzh = function (c, o) {
+    var fn = o.filename;
+    c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix
+    if (o.mtime != 0)
+        wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));
+    if (fn) {
+        c[3] = 8;
+        for (var i = 0; i <= fn.length; ++i)
+            c[i + 10] = fn.charCodeAt(i);
+    }
+};
+// gzip footer: -8 to -4 = CRC, -4 to -0 is length
+// gzip start
+var gzs = function (d) {
+    if (d[0] != 31 || d[1] != 139 || d[2] != 8)
+        err(6, 'invalid gzip data');
+    var flg = d[3];
+    var st = 10;
+    if (flg & 4)
+        st += (d[10] | d[11] << 8) + 2;
+    for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])
+        ;
+    return st + (flg & 2);
+};
+// gzip length
+var gzl = function (d) {
+    var l = d.length;
+    return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;
+};
+// gzip header length
+var gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };
+// zlib header
+var zlh = function (c, o) {
+    var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;
+    c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);
+    c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;
+    if (o.dictionary) {
+        var h = adler();
+        h.p(o.dictionary);
+        wbytes(c, 2, h.d());
+    }
+};
+// zlib start
+var zls = function (d, dict) {
+    if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))
+        err(6, 'invalid zlib data');
+    if ((d[1] >> 5 & 1) == +!dict)
+        err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');
+    return (d[1] >> 3 & 4) + 2;
+};
+function StrmOpt(opts, cb) {
+    if (typeof opts == 'function')
+        cb = opts, opts = {};
+    this.ondata = cb;
+    return opts;
+}
+/**
+ * Streaming DEFLATE compression
+ */
+var Deflate = /*#__PURE__*/ (function () {
+    function Deflate(opts, cb) {
+        if (typeof opts == 'function')
+            cb = opts, opts = {};
+        this.ondata = cb;
+        this.o = opts || {};
+        this.s = { l: 0, i: 32768, w: 32768, z: 32768 };
+        // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev
+        // 98304 = 32768 (lookback) + 65536 (common chunk size)
+        this.b = new u8(98304);
+        if (this.o.dictionary) {
+            var dict = this.o.dictionary.subarray(-32768);
+            this.b.set(dict, 32768 - dict.length);
+            this.s.i = 32768 - dict.length;
+        }
+    }
+    Deflate.prototype.p = function (c, f) {
+        this.ondata(dopt(c, this.o, 0, 0, this.s), f);
+    };
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    Deflate.prototype.push = function (chunk, final) {
+        if (!this.ondata)
+            err(5);
+        if (this.s.l)
+            err(4);
+        var endLen = chunk.length + this.s.z;
+        if (endLen > this.b.length) {
+            if (endLen > 2 * this.b.length - 32768) {
+                var newBuf = new u8(endLen & -32768);
+                newBuf.set(this.b.subarray(0, this.s.z));
+                this.b = newBuf;
+            }
+            var split = this.b.length - this.s.z;
+            this.b.set(chunk.subarray(0, split), this.s.z);
+            this.s.z = this.b.length;
+            this.p(this.b, false);
+            this.b.set(this.b.subarray(-32768));
+            this.b.set(chunk.subarray(split), 32768);
+            this.s.z = chunk.length - split + 32768;
+            this.s.i = 32766, this.s.w = 32768;
+        }
+        else {
+            this.b.set(chunk, this.s.z);
+            this.s.z += chunk.length;
+        }
+        this.s.l = final & 1;
+        if (this.s.z > this.s.w + 8191 || final) {
+            this.p(this.b, final || false);
+            this.s.w = this.s.i, this.s.i -= 2;
+        }
+    };
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * deflated output for small inputs.
+     */
+    Deflate.prototype.flush = function () {
+        if (!this.ondata)
+            err(5);
+        if (this.s.l)
+            err(4);
+        this.p(this.b, false);
+        this.s.w = this.s.i, this.s.i -= 2;
+    };
+    return Deflate;
+}());
+export { Deflate };
+/**
+ * Asynchronous streaming DEFLATE compression
+ */
+var AsyncDeflate = /*#__PURE__*/ (function () {
+    function AsyncDeflate(opts, cb) {
+        astrmify([
+            bDflt,
+            function () { return [astrm, Deflate]; }
+        ], this, StrmOpt.call(this, opts, cb), function (ev) {
+            var strm = new Deflate(ev.data);
+            onmessage = astrm(strm);
+        }, 6, 1);
+    }
+    return AsyncDeflate;
+}());
+export { AsyncDeflate };
+export function deflate(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    return cbify(data, opts, [
+        bDflt,
+    ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);
+}
+/**
+ * Compresses data with DEFLATE without any wrapper
+ * @param data The data to compress
+ * @param opts The compression options
+ * @returns The deflated version of the data
+ */
+export function deflateSync(data, opts) {
+    return dopt(data, opts || {}, 0, 0);
+}
+/**
+ * Streaming DEFLATE decompression
+ */
+var Inflate = /*#__PURE__*/ (function () {
+    function Inflate(opts, cb) {
+        // no StrmOpt here to avoid adding to workerizer
+        if (typeof opts == 'function')
+            cb = opts, opts = {};
+        this.ondata = cb;
+        var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);
+        this.s = { i: 0, b: dict ? dict.length : 0 };
+        this.o = new u8(32768);
+        this.p = new u8(0);
+        if (dict)
+            this.o.set(dict);
+    }
+    Inflate.prototype.e = function (c) {
+        if (!this.ondata)
+            err(5);
+        if (this.d)
+            err(4);
+        if (!this.p.length)
+            this.p = c;
+        else if (c.length) {
+            var n = new u8(this.p.length + c.length);
+            n.set(this.p), n.set(c, this.p.length), this.p = n;
+        }
+    };
+    Inflate.prototype.c = function (final) {
+        this.s.i = +(this.d = final || false);
+        var bts = this.s.b;
+        var dt = inflt(this.p, this.s, this.o);
+        this.ondata(slc(dt, bts, this.s.b), this.d);
+        this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;
+        this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;
+    };
+    /**
+     * Pushes a chunk to be inflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the final chunk
+     */
+    Inflate.prototype.push = function (chunk, final) {
+        this.e(chunk), this.c(final);
+    };
+    return Inflate;
+}());
+export { Inflate };
+/**
+ * Asynchronous streaming DEFLATE decompression
+ */
+var AsyncInflate = /*#__PURE__*/ (function () {
+    function AsyncInflate(opts, cb) {
+        astrmify([
+            bInflt,
+            function () { return [astrm, Inflate]; }
+        ], this, StrmOpt.call(this, opts, cb), function (ev) {
+            var strm = new Inflate(ev.data);
+            onmessage = astrm(strm);
+        }, 7, 0);
+    }
+    return AsyncInflate;
+}());
+export { AsyncInflate };
+export function inflate(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    return cbify(data, opts, [
+        bInflt
+    ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);
+}
+/**
+ * Expands DEFLATE data with no wrapper
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+export function inflateSync(data, opts) {
+    return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);
+}
+// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.
+/**
+ * Streaming GZIP compression
+ */
+var Gzip = /*#__PURE__*/ (function () {
+    function Gzip(opts, cb) {
+        this.c = crc();
+        this.l = 0;
+        this.v = 1;
+        Deflate.call(this, opts, cb);
+    }
+    /**
+     * Pushes a chunk to be GZIPped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    Gzip.prototype.push = function (chunk, final) {
+        this.c.p(chunk);
+        this.l += chunk.length;
+        Deflate.prototype.push.call(this, chunk, final);
+    };
+    Gzip.prototype.p = function (c, f) {
+        var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);
+        if (this.v)
+            gzh(raw, this.o), this.v = 0;
+        if (f)
+            wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);
+        this.ondata(raw, f);
+    };
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * GZIPped output for small inputs.
+     */
+    Gzip.prototype.flush = function () {
+        Deflate.prototype.flush.call(this);
+    };
+    return Gzip;
+}());
+export { Gzip };
+/**
+ * Asynchronous streaming GZIP compression
+ */
+var AsyncGzip = /*#__PURE__*/ (function () {
+    function AsyncGzip(opts, cb) {
+        astrmify([
+            bDflt,
+            gze,
+            function () { return [astrm, Deflate, Gzip]; }
+        ], this, StrmOpt.call(this, opts, cb), function (ev) {
+            var strm = new Gzip(ev.data);
+            onmessage = astrm(strm);
+        }, 8, 1);
+    }
+    return AsyncGzip;
+}());
+export { AsyncGzip };
+export function gzip(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    return cbify(data, opts, [
+        bDflt,
+        gze,
+        function () { return [gzipSync]; }
+    ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);
+}
+/**
+ * Compresses data with GZIP
+ * @param data The data to compress
+ * @param opts The compression options
+ * @returns The gzipped version of the data
+ */
+export function gzipSync(data, opts) {
+    if (!opts)
+        opts = {};
+    var c = crc(), l = data.length;
+    c.p(data);
+    var d = dopt(data, opts, gzhl(opts), 8), s = d.length;
+    return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;
+}
+/**
+ * Streaming single or multi-member GZIP decompression
+ */
+var Gunzip = /*#__PURE__*/ (function () {
+    function Gunzip(opts, cb) {
+        this.v = 1;
+        this.r = 0;
+        Inflate.call(this, opts, cb);
+    }
+    /**
+     * Pushes a chunk to be GUNZIPped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    Gunzip.prototype.push = function (chunk, final) {
+        Inflate.prototype.e.call(this, chunk);
+        this.r += chunk.length;
+        if (this.v) {
+            var p = this.p.subarray(this.v - 1);
+            var s = p.length > 3 ? gzs(p) : 4;
+            if (s > p.length) {
+                if (!final)
+                    return;
+            }
+            else if (this.v > 1 && this.onmember) {
+                this.onmember(this.r - p.length);
+            }
+            this.p = p.subarray(s), this.v = 0;
+        }
+        // necessary to prevent TS from using the closure value
+        // This allows for workerization to function correctly
+        Inflate.prototype.c.call(this, final);
+        // process concatenated GZIP
+        if (this.s.f && !this.s.l && !final) {
+            this.v = shft(this.s.p) + 9;
+            this.s = { i: 0 };
+            this.o = new u8(0);
+            this.push(new u8(0), final);
+        }
+    };
+    return Gunzip;
+}());
+export { Gunzip };
+/**
+ * Asynchronous streaming single or multi-member GZIP decompression
+ */
+var AsyncGunzip = /*#__PURE__*/ (function () {
+    function AsyncGunzip(opts, cb) {
+        var _this = this;
+        astrmify([
+            bInflt,
+            guze,
+            function () { return [astrm, Inflate, Gunzip]; }
+        ], this, StrmOpt.call(this, opts, cb), function (ev) {
+            var strm = new Gunzip(ev.data);
+            strm.onmember = function (offset) { return postMessage(offset); };
+            onmessage = astrm(strm);
+        }, 9, 0, function (offset) { return _this.onmember && _this.onmember(offset); });
+    }
+    return AsyncGunzip;
+}());
+export { AsyncGunzip };
+export function gunzip(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    return cbify(data, opts, [
+        bInflt,
+        guze,
+        function () { return [gunzipSync]; }
+    ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);
+}
+/**
+ * Expands GZIP data
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+export function gunzipSync(data, opts) {
+    var st = gzs(data);
+    if (st + 8 > data.length)
+        err(6, 'invalid gzip data');
+    return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);
+}
+/**
+ * Streaming Zlib compression
+ */
+var Zlib = /*#__PURE__*/ (function () {
+    function Zlib(opts, cb) {
+        this.c = adler();
+        this.v = 1;
+        Deflate.call(this, opts, cb);
+    }
+    /**
+     * Pushes a chunk to be zlibbed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    Zlib.prototype.push = function (chunk, final) {
+        this.c.p(chunk);
+        Deflate.prototype.push.call(this, chunk, final);
+    };
+    Zlib.prototype.p = function (c, f) {
+        var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);
+        if (this.v)
+            zlh(raw, this.o), this.v = 0;
+        if (f)
+            wbytes(raw, raw.length - 4, this.c.d());
+        this.ondata(raw, f);
+    };
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * zlibbed output for small inputs.
+     */
+    Zlib.prototype.flush = function () {
+        Deflate.prototype.flush.call(this);
+    };
+    return Zlib;
+}());
+export { Zlib };
+/**
+ * Asynchronous streaming Zlib compression
+ */
+var AsyncZlib = /*#__PURE__*/ (function () {
+    function AsyncZlib(opts, cb) {
+        astrmify([
+            bDflt,
+            zle,
+            function () { return [astrm, Deflate, Zlib]; }
+        ], this, StrmOpt.call(this, opts, cb), function (ev) {
+            var strm = new Zlib(ev.data);
+            onmessage = astrm(strm);
+        }, 10, 1);
+    }
+    return AsyncZlib;
+}());
+export { AsyncZlib };
+export function zlib(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    return cbify(data, opts, [
+        bDflt,
+        zle,
+        function () { return [zlibSync]; }
+    ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);
+}
+/**
+ * Compress data with Zlib
+ * @param data The data to compress
+ * @param opts The compression options
+ * @returns The zlib-compressed version of the data
+ */
+export function zlibSync(data, opts) {
+    if (!opts)
+        opts = {};
+    var a = adler();
+    a.p(data);
+    var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);
+    return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;
+}
+/**
+ * Streaming Zlib decompression
+ */
+var Unzlib = /*#__PURE__*/ (function () {
+    function Unzlib(opts, cb) {
+        Inflate.call(this, opts, cb);
+        this.v = opts && opts.dictionary ? 2 : 1;
+    }
+    /**
+     * Pushes a chunk to be unzlibbed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    Unzlib.prototype.push = function (chunk, final) {
+        Inflate.prototype.e.call(this, chunk);
+        if (this.v) {
+            if (this.p.length < 6 && !final)
+                return;
+            this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;
+        }
+        if (final) {
+            if (this.p.length < 4)
+                err(6, 'invalid zlib data');
+            this.p = this.p.subarray(0, -4);
+        }
+        // necessary to prevent TS from using the closure value
+        // This allows for workerization to function correctly
+        Inflate.prototype.c.call(this, final);
+    };
+    return Unzlib;
+}());
+export { Unzlib };
+/**
+ * Asynchronous streaming Zlib decompression
+ */
+var AsyncUnzlib = /*#__PURE__*/ (function () {
+    function AsyncUnzlib(opts, cb) {
+        astrmify([
+            bInflt,
+            zule,
+            function () { return [astrm, Inflate, Unzlib]; }
+        ], this, StrmOpt.call(this, opts, cb), function (ev) {
+            var strm = new Unzlib(ev.data);
+            onmessage = astrm(strm);
+        }, 11, 0);
+    }
+    return AsyncUnzlib;
+}());
+export { AsyncUnzlib };
+export function unzlib(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    return cbify(data, opts, [
+        bInflt,
+        zule,
+        function () { return [unzlibSync]; }
+    ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);
+}
+/**
+ * Expands Zlib data
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+export function unzlibSync(data, opts) {
+    return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);
+}
+// Default algorithm for compression (used because having a known output size allows faster decompression)
+export { gzip as compress, AsyncGzip as AsyncCompress };
+export { gzipSync as compressSync, Gzip as Compress };
+/**
+ * Streaming GZIP, Zlib, or raw DEFLATE decompression
+ */
+var Decompress = /*#__PURE__*/ (function () {
+    function Decompress(opts, cb) {
+        this.o = StrmOpt.call(this, opts, cb) || {};
+        this.G = Gunzip;
+        this.I = Inflate;
+        this.Z = Unzlib;
+    }
+    // init substream
+    // overriden by AsyncDecompress
+    Decompress.prototype.i = function () {
+        var _this = this;
+        this.s.ondata = function (dat, final) {
+            _this.ondata(dat, final);
+        };
+    };
+    /**
+     * Pushes a chunk to be decompressed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    Decompress.prototype.push = function (chunk, final) {
+        if (!this.ondata)
+            err(5);
+        if (!this.s) {
+            if (this.p && this.p.length) {
+                var n = new u8(this.p.length + chunk.length);
+                n.set(this.p), n.set(chunk, this.p.length);
+            }
+            else
+                this.p = chunk;
+            if (this.p.length > 2) {
+                this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)
+                    ? new this.G(this.o)
+                    : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))
+                        ? new this.I(this.o)
+                        : new this.Z(this.o);
+                this.i();
+                this.s.push(this.p, final);
+                this.p = null;
+            }
+        }
+        else
+            this.s.push(chunk, final);
+    };
+    return Decompress;
+}());
+export { Decompress };
+/**
+ * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression
+ */
+var AsyncDecompress = /*#__PURE__*/ (function () {
+    function AsyncDecompress(opts, cb) {
+        Decompress.call(this, opts, cb);
+        this.queuedSize = 0;
+        this.G = AsyncGunzip;
+        this.I = AsyncInflate;
+        this.Z = AsyncUnzlib;
+    }
+    AsyncDecompress.prototype.i = function () {
+        var _this = this;
+        this.s.ondata = function (err, dat, final) {
+            _this.ondata(err, dat, final);
+        };
+        this.s.ondrain = function (size) {
+            _this.queuedSize -= size;
+            if (_this.ondrain)
+                _this.ondrain(size);
+        };
+    };
+    /**
+     * Pushes a chunk to be decompressed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    AsyncDecompress.prototype.push = function (chunk, final) {
+        this.queuedSize += chunk.length;
+        Decompress.prototype.push.call(this, chunk, final);
+    };
+    return AsyncDecompress;
+}());
+export { AsyncDecompress };
+export function decompress(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    return (data[0] == 31 && data[1] == 139 && data[2] == 8)
+        ? gunzip(data, opts, cb)
+        : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))
+            ? inflate(data, opts, cb)
+            : unzlib(data, opts, cb);
+}
+/**
+ * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+export function decompressSync(data, opts) {
+    return (data[0] == 31 && data[1] == 139 && data[2] == 8)
+        ? gunzipSync(data, opts)
+        : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))
+            ? inflateSync(data, opts)
+            : unzlibSync(data, opts);
+}
+// flatten a directory structure
+var fltn = function (d, p, t, o) {
+    for (var k in d) {
+        var val = d[k], n = p + k, op = o;
+        if (Array.isArray(val))
+            op = mrg(o, val[1]), val = val[0];
+        if (val instanceof u8)
+            t[n] = [val, op];
+        else {
+            t[n += '/'] = [new u8(0), op];
+            fltn(val, n, t, o);
+        }
+    }
+};
+// text encoder
+var te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();
+// text decoder
+var td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();
+// text decoder stream
+var tds = 0;
+try {
+    td.decode(et, { stream: true });
+    tds = 1;
+}
+catch (e) { }
+// decode UTF8
+var dutf8 = function (d) {
+    for (var r = '', i = 0;;) {
+        var c = d[i++];
+        var eb = (c > 127) + (c > 223) + (c > 239);
+        if (i + eb > d.length)
+            return { s: r, r: slc(d, i - 1) };
+        if (!eb)
+            r += String.fromCharCode(c);
+        else if (eb == 3) {
+            c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,
+                r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));
+        }
+        else if (eb & 1)
+            r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));
+        else
+            r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));
+    }
+};
+/**
+ * Streaming UTF-8 decoding
+ */
+var DecodeUTF8 = /*#__PURE__*/ (function () {
+    /**
+     * Creates a UTF-8 decoding stream
+     * @param cb The callback to call whenever data is decoded
+     */
+    function DecodeUTF8(cb) {
+        this.ondata = cb;
+        if (tds)
+            this.t = new TextDecoder();
+        else
+            this.p = et;
+    }
+    /**
+     * Pushes a chunk to be decoded from UTF-8 binary
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    DecodeUTF8.prototype.push = function (chunk, final) {
+        if (!this.ondata)
+            err(5);
+        final = !!final;
+        if (this.t) {
+            this.ondata(this.t.decode(chunk, { stream: true }), final);
+            if (final) {
+                if (this.t.decode().length)
+                    err(8);
+                this.t = null;
+            }
+            return;
+        }
+        if (!this.p)
+            err(4);
+        var dat = new u8(this.p.length + chunk.length);
+        dat.set(this.p);
+        dat.set(chunk, this.p.length);
+        var _a = dutf8(dat), s = _a.s, r = _a.r;
+        if (final) {
+            if (r.length)
+                err(8);
+            this.p = null;
+        }
+        else
+            this.p = r;
+        this.ondata(s, final);
+    };
+    return DecodeUTF8;
+}());
+export { DecodeUTF8 };
+/**
+ * Streaming UTF-8 encoding
+ */
+var EncodeUTF8 = /*#__PURE__*/ (function () {
+    /**
+     * Creates a UTF-8 decoding stream
+     * @param cb The callback to call whenever data is encoded
+     */
+    function EncodeUTF8(cb) {
+        this.ondata = cb;
+    }
+    /**
+     * Pushes a chunk to be encoded to UTF-8
+     * @param chunk The string data to push
+     * @param final Whether this is the last chunk
+     */
+    EncodeUTF8.prototype.push = function (chunk, final) {
+        if (!this.ondata)
+            err(5);
+        if (this.d)
+            err(4);
+        this.ondata(strToU8(chunk), this.d = final || false);
+    };
+    return EncodeUTF8;
+}());
+export { EncodeUTF8 };
+/**
+ * Converts a string into a Uint8Array for use with compression/decompression methods
+ * @param str The string to encode
+ * @param latin1 Whether or not to interpret the data as Latin-1. This should
+ *               not need to be true unless decoding a binary string.
+ * @returns The string encoded in UTF-8/Latin-1 binary
+ */
+export function strToU8(str, latin1) {
+    if (latin1) {
+        var ar_1 = new u8(str.length);
+        for (var i = 0; i < str.length; ++i)
+            ar_1[i] = str.charCodeAt(i);
+        return ar_1;
+    }
+    if (te)
+        return te.encode(str);
+    var l = str.length;
+    var ar = new u8(str.length + (str.length >> 1));
+    var ai = 0;
+    var w = function (v) { ar[ai++] = v; };
+    for (var i = 0; i < l; ++i) {
+        if (ai + 5 > ar.length) {
+            var n = new u8(ai + 8 + ((l - i) << 1));
+            n.set(ar);
+            ar = n;
+        }
+        var c = str.charCodeAt(i);
+        if (c < 128 || latin1)
+            w(c);
+        else if (c < 2048)
+            w(192 | (c >> 6)), w(128 | (c & 63));
+        else if (c > 55295 && c < 57344)
+            c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),
+                w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));
+        else
+            w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));
+    }
+    return slc(ar, 0, ai);
+}
+/**
+ * Converts a Uint8Array to a string
+ * @param dat The data to decode to string
+ * @param latin1 Whether or not to interpret the data as Latin-1. This should
+ *               not need to be true unless encoding to binary string.
+ * @returns The original UTF-8/Latin-1 string
+ */
+export function strFromU8(dat, latin1) {
+    if (latin1) {
+        var r = '';
+        for (var i = 0; i < dat.length; i += 16384)
+            r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));
+        return r;
+    }
+    else if (td) {
+        return td.decode(dat);
+    }
+    else {
+        var _a = dutf8(dat), s = _a.s, r = _a.r;
+        if (r.length)
+            err(8);
+        return s;
+    }
+}
+;
+// deflate bit flag
+var dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };
+// skip local zip header
+var slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };
+// read zip header
+var zh = function (d, b, z) {
+    var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);
+    var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];
+    return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];
+};
+// read zip64 extra field
+var z64e = function (d, b) {
+    for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))
+        ;
+    return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];
+};
+// extra field length
+var exfl = function (ex) {
+    var le = 0;
+    if (ex) {
+        for (var k in ex) {
+            var l = ex[k].length;
+            if (l > 65535)
+                err(9);
+            le += l + 4;
+        }
+    }
+    return le;
+};
+// write zip header
+var wzh = function (d, b, f, fn, u, c, ce, co) {
+    var fl = fn.length, ex = f.extra, col = co && co.length;
+    var exl = exfl(ex);
+    wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;
+    if (ce != null)
+        d[b++] = 20, d[b++] = f.os;
+    d[b] = 20, b += 2; // spec compliance? what's that?
+    d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;
+    d[b++] = f.compression & 255, d[b++] = f.compression >> 8;
+    var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;
+    if (y < 0 || y > 119)
+        err(10);
+    wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;
+    if (c != -1) {
+        wbytes(d, b, f.crc);
+        wbytes(d, b + 4, c < 0 ? -c - 2 : c);
+        wbytes(d, b + 8, f.size);
+    }
+    wbytes(d, b + 12, fl);
+    wbytes(d, b + 14, exl), b += 16;
+    if (ce != null) {
+        wbytes(d, b, col);
+        wbytes(d, b + 6, f.attrs);
+        wbytes(d, b + 10, ce), b += 14;
+    }
+    d.set(fn, b);
+    b += fl;
+    if (exl) {
+        for (var k in ex) {
+            var exf = ex[k], l = exf.length;
+            wbytes(d, b, +k);
+            wbytes(d, b + 2, l);
+            d.set(exf, b + 4), b += 4 + l;
+        }
+    }
+    if (col)
+        d.set(co, b), b += col;
+    return b;
+};
+// write zip footer (end of central directory)
+var wzf = function (o, b, c, d, e) {
+    wbytes(o, b, 0x6054B50); // skip disk
+    wbytes(o, b + 8, c);
+    wbytes(o, b + 10, c);
+    wbytes(o, b + 12, d);
+    wbytes(o, b + 16, e);
+};
+/**
+ * A pass-through stream to keep data uncompressed in a ZIP archive.
+ */
+var ZipPassThrough = /*#__PURE__*/ (function () {
+    /**
+     * Creates a pass-through stream that can be added to ZIP archives
+     * @param filename The filename to associate with this data stream
+     */
+    function ZipPassThrough(filename) {
+        this.filename = filename;
+        this.c = crc();
+        this.size = 0;
+        this.compression = 0;
+    }
+    /**
+     * Processes a chunk and pushes to the output stream. You can override this
+     * method in a subclass for custom behavior, but by default this passes
+     * the data through. You must call this.ondata(err, chunk, final) at some
+     * point in this method.
+     * @param chunk The chunk to process
+     * @param final Whether this is the last chunk
+     */
+    ZipPassThrough.prototype.process = function (chunk, final) {
+        this.ondata(null, chunk, final);
+    };
+    /**
+     * Pushes a chunk to be added. If you are subclassing this with a custom
+     * compression algorithm, note that you must push data from the source
+     * file only, pre-compression.
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    ZipPassThrough.prototype.push = function (chunk, final) {
+        if (!this.ondata)
+            err(5);
+        this.c.p(chunk);
+        this.size += chunk.length;
+        if (final)
+            this.crc = this.c.d();
+        this.process(chunk, final || false);
+    };
+    return ZipPassThrough;
+}());
+export { ZipPassThrough };
+// I don't extend because TypeScript extension adds 1kB of runtime bloat
+/**
+ * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate
+ * for better performance
+ */
+var ZipDeflate = /*#__PURE__*/ (function () {
+    /**
+     * Creates a DEFLATE stream that can be added to ZIP archives
+     * @param filename The filename to associate with this data stream
+     * @param opts The compression options
+     */
+    function ZipDeflate(filename, opts) {
+        var _this = this;
+        if (!opts)
+            opts = {};
+        ZipPassThrough.call(this, filename);
+        this.d = new Deflate(opts, function (dat, final) {
+            _this.ondata(null, dat, final);
+        });
+        this.compression = 8;
+        this.flag = dbf(opts.level);
+    }
+    ZipDeflate.prototype.process = function (chunk, final) {
+        try {
+            this.d.push(chunk, final);
+        }
+        catch (e) {
+            this.ondata(e, null, final);
+        }
+    };
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    ZipDeflate.prototype.push = function (chunk, final) {
+        ZipPassThrough.prototype.push.call(this, chunk, final);
+    };
+    return ZipDeflate;
+}());
+export { ZipDeflate };
+/**
+ * Asynchronous streaming DEFLATE compression for ZIP archives
+ */
+var AsyncZipDeflate = /*#__PURE__*/ (function () {
+    /**
+     * Creates an asynchronous DEFLATE stream that can be added to ZIP archives
+     * @param filename The filename to associate with this data stream
+     * @param opts The compression options
+     */
+    function AsyncZipDeflate(filename, opts) {
+        var _this = this;
+        if (!opts)
+            opts = {};
+        ZipPassThrough.call(this, filename);
+        this.d = new AsyncDeflate(opts, function (err, dat, final) {
+            _this.ondata(err, dat, final);
+        });
+        this.compression = 8;
+        this.flag = dbf(opts.level);
+        this.terminate = this.d.terminate;
+    }
+    AsyncZipDeflate.prototype.process = function (chunk, final) {
+        this.d.push(chunk, final);
+    };
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    AsyncZipDeflate.prototype.push = function (chunk, final) {
+        ZipPassThrough.prototype.push.call(this, chunk, final);
+    };
+    return AsyncZipDeflate;
+}());
+export { AsyncZipDeflate };
+// TODO: Better tree shaking
+/**
+ * A zippable archive to which files can incrementally be added
+ */
+var Zip = /*#__PURE__*/ (function () {
+    /**
+     * Creates an empty ZIP archive to which files can be added
+     * @param cb The callback to call whenever data for the generated ZIP archive
+     *           is available
+     */
+    function Zip(cb) {
+        this.ondata = cb;
+        this.u = [];
+        this.d = 1;
+    }
+    /**
+     * Adds a file to the ZIP archive
+     * @param file The file stream to add
+     */
+    Zip.prototype.add = function (file) {
+        var _this = this;
+        if (!this.ondata)
+            err(5);
+        // finishing or finished
+        if (this.d & 2)
+            this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);
+        else {
+            var f = strToU8(file.filename), fl_1 = f.length;
+            var com = file.comment, o = com && strToU8(com);
+            var u = fl_1 != file.filename.length || (o && (com.length != o.length));
+            var hl_1 = fl_1 + exfl(file.extra) + 30;
+            if (fl_1 > 65535)
+                this.ondata(err(11, 0, 1), null, false);
+            var header = new u8(hl_1);
+            wzh(header, 0, file, f, u, -1);
+            var chks_1 = [header];
+            var pAll_1 = function () {
+                for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {
+                    var chk = chks_2[_i];
+                    _this.ondata(null, chk, false);
+                }
+                chks_1 = [];
+            };
+            var tr_1 = this.d;
+            this.d = 0;
+            var ind_1 = this.u.length;
+            var uf_1 = mrg(file, {
+                f: f,
+                u: u,
+                o: o,
+                t: function () {
+                    if (file.terminate)
+                        file.terminate();
+                },
+                r: function () {
+                    pAll_1();
+                    if (tr_1) {
+                        var nxt = _this.u[ind_1 + 1];
+                        if (nxt)
+                            nxt.r();
+                        else
+                            _this.d = 1;
+                    }
+                    tr_1 = 1;
+                }
+            });
+            var cl_1 = 0;
+            file.ondata = function (err, dat, final) {
+                if (err) {
+                    _this.ondata(err, dat, final);
+                    _this.terminate();
+                }
+                else {
+                    cl_1 += dat.length;
+                    chks_1.push(dat);
+                    if (final) {
+                        var dd = new u8(16);
+                        wbytes(dd, 0, 0x8074B50);
+                        wbytes(dd, 4, file.crc);
+                        wbytes(dd, 8, cl_1);
+                        wbytes(dd, 12, file.size);
+                        chks_1.push(dd);
+                        uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;
+                        if (tr_1)
+                            uf_1.r();
+                        tr_1 = 1;
+                    }
+                    else if (tr_1)
+                        pAll_1();
+                }
+            };
+            this.u.push(uf_1);
+        }
+    };
+    /**
+     * Ends the process of adding files and prepares to emit the final chunks.
+     * This *must* be called after adding all desired files for the resulting
+     * ZIP file to work properly.
+     */
+    Zip.prototype.end = function () {
+        var _this = this;
+        if (this.d & 2) {
+            this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);
+            return;
+        }
+        if (this.d)
+            this.e();
+        else
+            this.u.push({
+                r: function () {
+                    if (!(_this.d & 1))
+                        return;
+                    _this.u.splice(-1, 1);
+                    _this.e();
+                },
+                t: function () { }
+            });
+        this.d = 3;
+    };
+    Zip.prototype.e = function () {
+        var bt = 0, l = 0, tl = 0;
+        for (var _i = 0, _a = this.u; _i < _a.length; _i++) {
+            var f = _a[_i];
+            tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);
+        }
+        var out = new u8(tl + 22);
+        for (var _b = 0, _c = this.u; _b < _c.length; _b++) {
+            var f = _c[_b];
+            wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);
+            bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;
+        }
+        wzf(out, bt, this.u.length, tl, l);
+        this.ondata(null, out, true);
+        this.d = 2;
+    };
+    /**
+     * A method to terminate any internal workers used by the stream. Subsequent
+     * calls to add() will fail.
+     */
+    Zip.prototype.terminate = function () {
+        for (var _i = 0, _a = this.u; _i < _a.length; _i++) {
+            var f = _a[_i];
+            f.t();
+        }
+        this.d = 2;
+    };
+    return Zip;
+}());
+export { Zip };
+export function zip(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    var r = {};
+    fltn(data, '', r, opts);
+    var k = Object.keys(r);
+    var lft = k.length, o = 0, tot = 0;
+    var slft = lft, files = new Array(lft);
+    var term = [];
+    var tAll = function () {
+        for (var i = 0; i < term.length; ++i)
+            term[i]();
+    };
+    var cbd = function (a, b) {
+        mt(function () { cb(a, b); });
+    };
+    mt(function () { cbd = cb; });
+    var cbf = function () {
+        var out = new u8(tot + 22), oe = o, cdl = tot - o;
+        tot = 0;
+        for (var i = 0; i < slft; ++i) {
+            var f = files[i];
+            try {
+                var l = f.c.length;
+                wzh(out, tot, f, f.f, f.u, l);
+                var badd = 30 + f.f.length + exfl(f.extra);
+                var loc = tot + badd;
+                out.set(f.c, loc);
+                wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;
+            }
+            catch (e) {
+                return cbd(e, null);
+            }
+        }
+        wzf(out, o, files.length, cdl, oe);
+        cbd(null, out);
+    };
+    if (!lft)
+        cbf();
+    var _loop_1 = function (i) {
+        var fn = k[i];
+        var _a = r[fn], file = _a[0], p = _a[1];
+        var c = crc(), size = file.length;
+        c.p(file);
+        var f = strToU8(fn), s = f.length;
+        var com = p.comment, m = com && strToU8(com), ms = m && m.length;
+        var exl = exfl(p.extra);
+        var compression = p.level == 0 ? 0 : 8;
+        var cbl = function (e, d) {
+            if (e) {
+                tAll();
+                cbd(e, null);
+            }
+            else {
+                var l = d.length;
+                files[i] = mrg(p, {
+                    size: size,
+                    crc: c.d(),
+                    c: d,
+                    f: f,
+                    m: m,
+                    u: s != fn.length || (m && (com.length != ms)),
+                    compression: compression
+                });
+                o += 30 + s + exl + l;
+                tot += 76 + 2 * (s + exl) + (ms || 0) + l;
+                if (!--lft)
+                    cbf();
+            }
+        };
+        if (s > 65535)
+            cbl(err(11, 0, 1), null);
+        if (!compression)
+            cbl(null, file);
+        else if (size < 160000) {
+            try {
+                cbl(null, deflateSync(file, p));
+            }
+            catch (e) {
+                cbl(e, null);
+            }
+        }
+        else
+            term.push(deflate(file, p, cbl));
+    };
+    // Cannot use lft because it can decrease
+    for (var i = 0; i < slft; ++i) {
+        _loop_1(i);
+    }
+    return tAll;
+}
+/**
+ * Synchronously creates a ZIP file. Prefer using `zip` for better performance
+ * with more than one file.
+ * @param data The directory structure for the ZIP archive
+ * @param opts The main options, merged with per-file options
+ * @returns The generated ZIP archive
+ */
+export function zipSync(data, opts) {
+    if (!opts)
+        opts = {};
+    var r = {};
+    var files = [];
+    fltn(data, '', r, opts);
+    var o = 0;
+    var tot = 0;
+    for (var fn in r) {
+        var _a = r[fn], file = _a[0], p = _a[1];
+        var compression = p.level == 0 ? 0 : 8;
+        var f = strToU8(fn), s = f.length;
+        var com = p.comment, m = com && strToU8(com), ms = m && m.length;
+        var exl = exfl(p.extra);
+        if (s > 65535)
+            err(11);
+        var d = compression ? deflateSync(file, p) : file, l = d.length;
+        var c = crc();
+        c.p(file);
+        files.push(mrg(p, {
+            size: file.length,
+            crc: c.d(),
+            c: d,
+            f: f,
+            m: m,
+            u: s != fn.length || (m && (com.length != ms)),
+            o: o,
+            compression: compression
+        }));
+        o += 30 + s + exl + l;
+        tot += 76 + 2 * (s + exl) + (ms || 0) + l;
+    }
+    var out = new u8(tot + 22), oe = o, cdl = tot - o;
+    for (var i = 0; i < files.length; ++i) {
+        var f = files[i];
+        wzh(out, f.o, f, f.f, f.u, f.c.length);
+        var badd = 30 + f.f.length + exfl(f.extra);
+        out.set(f.c, f.o + badd);
+        wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);
+    }
+    wzf(out, o, files.length, cdl, oe);
+    return out;
+}
+/**
+ * Streaming pass-through decompression for ZIP archives
+ */
+var UnzipPassThrough = /*#__PURE__*/ (function () {
+    function UnzipPassThrough() {
+    }
+    UnzipPassThrough.prototype.push = function (data, final) {
+        this.ondata(null, data, final);
+    };
+    UnzipPassThrough.compression = 0;
+    return UnzipPassThrough;
+}());
+export { UnzipPassThrough };
+/**
+ * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for
+ * better performance.
+ */
+var UnzipInflate = /*#__PURE__*/ (function () {
+    /**
+     * Creates a DEFLATE decompression that can be used in ZIP archives
+     */
+    function UnzipInflate() {
+        var _this = this;
+        this.i = new Inflate(function (dat, final) {
+            _this.ondata(null, dat, final);
+        });
+    }
+    UnzipInflate.prototype.push = function (data, final) {
+        try {
+            this.i.push(data, final);
+        }
+        catch (e) {
+            this.ondata(e, null, final);
+        }
+    };
+    UnzipInflate.compression = 8;
+    return UnzipInflate;
+}());
+export { UnzipInflate };
+/**
+ * Asynchronous streaming DEFLATE decompression for ZIP archives
+ */
+var AsyncUnzipInflate = /*#__PURE__*/ (function () {
+    /**
+     * Creates a DEFLATE decompression that can be used in ZIP archives
+     */
+    function AsyncUnzipInflate(_, sz) {
+        var _this = this;
+        if (sz < 320000) {
+            this.i = new Inflate(function (dat, final) {
+                _this.ondata(null, dat, final);
+            });
+        }
+        else {
+            this.i = new AsyncInflate(function (err, dat, final) {
+                _this.ondata(err, dat, final);
+            });
+            this.terminate = this.i.terminate;
+        }
+    }
+    AsyncUnzipInflate.prototype.push = function (data, final) {
+        if (this.i.terminate)
+            data = slc(data, 0);
+        this.i.push(data, final);
+    };
+    AsyncUnzipInflate.compression = 8;
+    return AsyncUnzipInflate;
+}());
+export { AsyncUnzipInflate };
+/**
+ * A ZIP archive decompression stream that emits files as they are discovered
+ */
+var Unzip = /*#__PURE__*/ (function () {
+    /**
+     * Creates a ZIP decompression stream
+     * @param cb The callback to call whenever a file in the ZIP archive is found
+     */
+    function Unzip(cb) {
+        this.onfile = cb;
+        this.k = [];
+        this.o = {
+            0: UnzipPassThrough
+        };
+        this.p = et;
+    }
+    /**
+     * Pushes a chunk to be unzipped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    Unzip.prototype.push = function (chunk, final) {
+        var _this = this;
+        if (!this.onfile)
+            err(5);
+        if (!this.p)
+            err(4);
+        if (this.c > 0) {
+            var len = Math.min(this.c, chunk.length);
+            var toAdd = chunk.subarray(0, len);
+            this.c -= len;
+            if (this.d)
+                this.d.push(toAdd, !this.c);
+            else
+                this.k[0].push(toAdd);
+            chunk = chunk.subarray(len);
+            if (chunk.length)
+                return this.push(chunk, final);
+        }
+        else {
+            var f = 0, i = 0, is = void 0, buf = void 0;
+            if (!this.p.length)
+                buf = chunk;
+            else if (!chunk.length)
+                buf = this.p;
+            else {
+                buf = new u8(this.p.length + chunk.length);
+                buf.set(this.p), buf.set(chunk, this.p.length);
+            }
+            var l = buf.length, oc = this.c, add = oc && this.d;
+            var _loop_2 = function () {
+                var _a;
+                var sig = b4(buf, i);
+                if (sig == 0x4034B50) {
+                    f = 1, is = i;
+                    this_1.d = null;
+                    this_1.c = 0;
+                    var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);
+                    if (l > i + 30 + fnl + es) {
+                        var chks_3 = [];
+                        this_1.k.unshift(chks_3);
+                        f = 2;
+                        var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);
+                        var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);
+                        if (sc_1 == 4294967295) {
+                            _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];
+                        }
+                        else if (dd)
+                            sc_1 = -1;
+                        i += es;
+                        this_1.c = sc_1;
+                        var d_1;
+                        var file_1 = {
+                            name: fn_1,
+                            compression: cmp_1,
+                            start: function () {
+                                if (!file_1.ondata)
+                                    err(5);
+                                if (!sc_1)
+                                    file_1.ondata(null, et, true);
+                                else {
+                                    var ctr = _this.o[cmp_1];
+                                    if (!ctr)
+                                        file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);
+                                    d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);
+                                    d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };
+                                    for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {
+                                        var dat = chks_4[_i];
+                                        d_1.push(dat, false);
+                                    }
+                                    if (_this.k[0] == chks_3 && _this.c)
+                                        _this.d = d_1;
+                                    else
+                                        d_1.push(et, true);
+                                }
+                            },
+                            terminate: function () {
+                                if (d_1 && d_1.terminate)
+                                    d_1.terminate();
+                            }
+                        };
+                        if (sc_1 >= 0)
+                            file_1.size = sc_1, file_1.originalSize = su_1;
+                        this_1.onfile(file_1);
+                    }
+                    return "break";
+                }
+                else if (oc) {
+                    if (sig == 0x8074B50) {
+                        is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;
+                        return "break";
+                    }
+                    else if (sig == 0x2014B50) {
+                        is = i -= 4, f = 3, this_1.c = 0;
+                        return "break";
+                    }
+                }
+            };
+            var this_1 = this;
+            for (; i < l - 4; ++i) {
+                var state_1 = _loop_2();
+                if (state_1 === "break")
+                    break;
+            }
+            this.p = et;
+            if (oc < 0) {
+                var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);
+                if (add)
+                    add.push(dat, !!f);
+                else
+                    this.k[+(f == 2)].push(dat);
+            }
+            if (f & 2)
+                return this.push(buf.subarray(i), final);
+            this.p = buf.subarray(i);
+        }
+        if (final) {
+            if (this.c)
+                err(13);
+            this.p = null;
+        }
+    };
+    /**
+     * Registers a decoder with the stream, allowing for files compressed with
+     * the compression type provided to be expanded correctly
+     * @param decoder The decoder constructor
+     */
+    Unzip.prototype.register = function (decoder) {
+        this.o[decoder.compression] = decoder;
+    };
+    return Unzip;
+}());
+export { Unzip };
+var mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };
+export function unzip(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    var term = [];
+    var tAll = function () {
+        for (var i = 0; i < term.length; ++i)
+            term[i]();
+    };
+    var files = {};
+    var cbd = function (a, b) {
+        mt(function () { cb(a, b); });
+    };
+    mt(function () { cbd = cb; });
+    var e = data.length - 22;
+    for (; b4(data, e) != 0x6054B50; --e) {
+        if (!e || data.length - e > 65558) {
+            cbd(err(13, 0, 1), null);
+            return tAll;
+        }
+    }
+    ;
+    var lft = b2(data, e + 8);
+    if (lft) {
+        var c = lft;
+        var o = b4(data, e + 16);
+        var z = o == 4294967295 || c == 65535;
+        if (z) {
+            var ze = b4(data, e - 12);
+            z = b4(data, ze) == 0x6064B50;
+            if (z) {
+                c = lft = b4(data, ze + 32);
+                o = b4(data, ze + 48);
+            }
+        }
+        var fltr = opts && opts.filter;
+        var _loop_3 = function (i) {
+            var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);
+            o = no;
+            var cbl = function (e, d) {
+                if (e) {
+                    tAll();
+                    cbd(e, null);
+                }
+                else {
+                    if (d)
+                        files[fn] = d;
+                    if (!--lft)
+                        cbd(null, files);
+                }
+            };
+            if (!fltr || fltr({
+                name: fn,
+                size: sc,
+                originalSize: su,
+                compression: c_1
+            })) {
+                if (!c_1)
+                    cbl(null, slc(data, b, b + sc));
+                else if (c_1 == 8) {
+                    var infl = data.subarray(b, b + sc);
+                    // Synchronously decompress under 512KB, or barely-compressed data
+                    if (su < 524288 || sc > 0.8 * su) {
+                        try {
+                            cbl(null, inflateSync(infl, { out: new u8(su) }));
+                        }
+                        catch (e) {
+                            cbl(e, null);
+                        }
+                    }
+                    else
+                        term.push(inflate(infl, { size: su }, cbl));
+                }
+                else
+                    cbl(err(14, 'unknown compression type ' + c_1, 1), null);
+            }
+            else
+                cbl(null, null);
+        };
+        for (var i = 0; i < c; ++i) {
+            _loop_3(i);
+        }
+    }
+    else
+        cbd(null, {});
+    return tAll;
+}
+/**
+ * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better
+ * performance with more than one file.
+ * @param data The raw compressed ZIP file
+ * @param opts The ZIP extraction options
+ * @returns The decompressed files
+ */
+export function unzipSync(data, opts) {
+    var files = {};
+    var e = data.length - 22;
+    for (; b4(data, e) != 0x6054B50; --e) {
+        if (!e || data.length - e > 65558)
+            err(13);
+    }
+    ;
+    var c = b2(data, e + 8);
+    if (!c)
+        return {};
+    var o = b4(data, e + 16);
+    var z = o == 4294967295 || c == 65535;
+    if (z) {
+        var ze = b4(data, e - 12);
+        z = b4(data, ze) == 0x6064B50;
+        if (z) {
+            c = b4(data, ze + 32);
+            o = b4(data, ze + 48);
+        }
+    }
+    var fltr = opts && opts.filter;
+    for (var i = 0; i < c; ++i) {
+        var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);
+        o = no;
+        if (!fltr || fltr({
+            name: fn,
+            size: sc,
+            originalSize: su,
+            compression: c_2
+        })) {
+            if (!c_2)
+                files[fn] = slc(data, b, b + sc);
+            else if (c_2 == 8)
+                files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });
+            else
+                err(14, 'unknown compression type ' + c_2);
+        }
+    }
+    return files;
+}
diff --git a/node_modules/fflate/esm/index.d.mts b/node_modules/fflate/esm/index.d.mts
new file mode 100644
index 0000000..a3b5b01
--- /dev/null
+++ b/node_modules/fflate/esm/index.d.mts
@@ -0,0 +1,1501 @@
+/**
+ * Codes for errors generated within this library
+ */
+export declare const FlateErrorCode: {
+    readonly UnexpectedEOF: 0;
+    readonly InvalidBlockType: 1;
+    readonly InvalidLengthLiteral: 2;
+    readonly InvalidDistance: 3;
+    readonly StreamFinished: 4;
+    readonly NoStreamHandler: 5;
+    readonly InvalidHeader: 6;
+    readonly NoCallback: 7;
+    readonly InvalidUTF8: 8;
+    readonly ExtraFieldTooLong: 9;
+    readonly InvalidDate: 10;
+    readonly FilenameTooLong: 11;
+    readonly StreamFinishing: 12;
+    readonly InvalidZipData: 13;
+    readonly UnknownCompressionMethod: 14;
+};
+/**
+ * An error generated within this library
+ */
+export interface FlateError extends Error {
+    /**
+     * The code associated with this error
+     */
+    code: number;
+}
+/**
+ * Options for decompressing a DEFLATE stream
+ */
+export interface InflateStreamOptions {
+    /**
+     * The dictionary used to compress the original data. If no dictionary was used during compression, this option has no effect.
+     *
+     * Supplying the wrong dictionary during decompression usually yields corrupt output or causes an invalid distance error.
+     */
+    dictionary?: Uint8Array;
+}
+/**
+ * Options for decompressing DEFLATE data
+ */
+export interface InflateOptions extends InflateStreamOptions {
+    /**
+     * The buffer into which to write the decompressed data. Saves memory if you know the decompressed size in advance.
+     *
+     * Note that if the decompression result is larger than the size of this buffer, it will be truncated to fit.
+     */
+    out?: Uint8Array;
+}
+/**
+ * Options for decompressing a GZIP stream
+ */
+export interface GunzipStreamOptions extends InflateStreamOptions {
+}
+/**
+ * Options for decompressing GZIP data
+ */
+export interface GunzipOptions extends InflateStreamOptions {
+    /**
+     * The buffer into which to write the decompressed data. GZIP already encodes the output size, so providing this doesn't save memory.
+     *
+     * Note that if the decompression result is larger than the size of this buffer, it will be truncated to fit.
+     */
+    out?: Uint8Array;
+}
+/**
+ * Options for decompressing a Zlib stream
+ */
+export interface UnzlibStreamOptions extends InflateStreamOptions {
+}
+/**
+ * Options for decompressing Zlib data
+ */
+export interface UnzlibOptions extends InflateOptions {
+}
+/**
+ * Options for compressing data into a DEFLATE format
+ */
+export interface DeflateOptions {
+    /**
+     * The level of compression to use, ranging from 0-9.
+     *
+     * 0 will store the data without compression.
+     * 1 is fastest but compresses the worst, 9 is slowest but compresses the best.
+     * The default level is 6.
+     *
+     * Typically, binary data benefits much more from higher values than text data.
+     * In both cases, higher values usually take disproportionately longer than the reduction in final size that results.
+     *
+     * For example, a 1 MB text file could:
+     * - become 1.01 MB with level 0 in 1ms
+     * - become 400 kB with level 1 in 10ms
+     * - become 320 kB with level 9 in 100ms
+     */
+    level?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
+    /**
+     * The memory level to use, ranging from 0-12. Increasing this increases speed and compression ratio at the cost of memory.
+     *
+     * Note that this is exponential: while level 0 uses 4 kB, level 4 uses 64 kB, level 8 uses 1 MB, and level 12 uses 16 MB.
+     * It is recommended not to lower the value below 4, since that tends to hurt performance.
+     * In addition, values above 8 tend to help very little on most data and can even hurt performance.
+     *
+     * The default value is automatically determined based on the size of the input data.
+     */
+    mem?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
+    /**
+     * A buffer containing common byte sequences in the input data that can be used to significantly improve compression ratios.
+     *
+     * Dictionaries should be 32kB or smaller and include strings or byte sequences likely to appear in the input.
+     * The decompressor must supply the same dictionary as the compressor to extract the original data.
+     *
+     * Dictionaries only improve aggregate compression ratio when reused across multiple small inputs. They should typically not be used otherwise.
+     *
+     * Avoid using dictionaries with GZIP and ZIP to maximize software compatibility.
+     */
+    dictionary?: Uint8Array;
+}
+/**
+ * Options for compressing data into a GZIP format
+ */
+export interface GzipOptions extends DeflateOptions {
+    /**
+     * When the file was last modified. Defaults to the current time.
+     * Set this to 0 to avoid revealing a modification date entirely.
+     */
+    mtime?: Date | string | number;
+    /**
+     * The filename of the data. If the `gunzip` command is used to decompress the data, it will output a file
+     * with this name instead of the name of the compressed file.
+     */
+    filename?: string;
+}
+/**
+ * Options for compressing data into a Zlib format
+ */
+export interface ZlibOptions extends DeflateOptions {
+}
+/**
+ * Handler for data (de)compression streams
+ * @param data The data output from the stream processor
+ * @param final Whether this is the final block
+ */
+export type FlateStreamHandler = (data: Uint8Array, final: boolean) => void;
+/**
+ * Handler for asynchronous data (de)compression streams
+ * @param err Any error that occurred
+ * @param data The data output from the stream processor
+ * @param final Whether this is the final block
+ */
+export type AsyncFlateStreamHandler = (err: FlateError | null, data: Uint8Array, final: boolean) => void;
+/**
+ * Handler for the asynchronous completion of (de)compression for a data chunk
+ * @param size The number of bytes that were processed. This is measured in terms of the input
+ * (i.e. compressed bytes for decompression, uncompressed bytes for compression.)
+ */
+export type AsyncFlateDrainHandler = (size: number) => void;
+/**
+ * Callback for asynchronous (de)compression methods
+ * @param err Any error that occurred
+ * @param data The resulting data. Only present if `err` is null
+ */
+export type FlateCallback = (err: FlateError | null, data: Uint8Array) => void;
+interface AsyncOptions {
+    /**
+     * Whether or not to "consume" the source data. This will make the typed array/buffer you pass in
+     * unusable but will increase performance and reduce memory usage.
+     */
+    consume?: boolean;
+}
+/**
+ * Options for compressing data asynchronously into a DEFLATE format
+ */
+export interface AsyncDeflateOptions extends DeflateOptions, AsyncOptions {
+}
+/**
+ * Options for decompressing DEFLATE data asynchronously
+ */
+export interface AsyncInflateOptions extends AsyncOptions, InflateStreamOptions {
+    /**
+     * The original size of the data. Currently, the asynchronous API disallows
+     * writing into a buffer you provide; the best you can do is provide the
+     * size in bytes and be given back a new typed array.
+     */
+    size?: number;
+}
+/**
+ * Options for compressing data asynchronously into a GZIP format
+ */
+export interface AsyncGzipOptions extends GzipOptions, AsyncOptions {
+}
+/**
+ * Options for decompressing GZIP data asynchronously
+ */
+export interface AsyncGunzipOptions extends AsyncOptions, InflateStreamOptions {
+}
+/**
+ * Options for compressing data asynchronously into a Zlib format
+ */
+export interface AsyncZlibOptions extends ZlibOptions, AsyncOptions {
+}
+/**
+ * Options for decompressing Zlib data asynchronously
+ */
+export interface AsyncUnzlibOptions extends AsyncInflateOptions {
+}
+/**
+ * A terminable compression/decompression process
+ */
+export interface AsyncTerminable {
+    /**
+     * Terminates the worker thread immediately. The callback will not be called.
+     */
+    (): void;
+}
+/**
+ * Streaming DEFLATE compression
+ */
+export declare class Deflate {
+    /**
+     * Creates a DEFLATE stream
+     * @param opts The compression options
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(opts: DeflateOptions, cb?: FlateStreamHandler);
+    /**
+     * Creates a DEFLATE stream
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(cb?: FlateStreamHandler);
+    private b;
+    private s;
+    private o;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+    private p;
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * deflated output for small inputs.
+     */
+    flush(): void;
+}
+/**
+ * Asynchronous streaming DEFLATE compression
+ */
+export declare class AsyncDeflate {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The handler to call whenever buffered source data is processed (i.e. `queuedSize` updates)
+     */
+    ondrain?: AsyncFlateDrainHandler;
+    /**
+     * The number of uncompressed bytes buffered in the stream
+     */
+    queuedSize: number;
+    /**
+     * Creates an asynchronous DEFLATE stream
+     * @param opts The compression options
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(opts: DeflateOptions, cb?: AsyncFlateStreamHandler);
+    /**
+     * Creates an asynchronous DEFLATE stream
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * deflated output for small inputs.
+     */
+    flush(): void;
+    /**
+     * A method to terminate the stream's internal worker. Subsequent calls to
+     * push() will silently fail.
+     */
+    terminate: AsyncTerminable;
+}
+/**
+ * Asynchronously compresses data with DEFLATE without any wrapper
+ * @param data The data to compress
+ * @param opts The compression options
+ * @param cb The function to be called upon compression completion
+ * @returns A function that can be used to immediately terminate the compression
+ */
+export declare function deflate(data: Uint8Array, opts: AsyncDeflateOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchronously compresses data with DEFLATE without any wrapper
+ * @param data The data to compress
+ * @param cb The function to be called upon compression completion
+ */
+export declare function deflate(data: Uint8Array, cb: FlateCallback): AsyncTerminable;
+/**
+ * Compresses data with DEFLATE without any wrapper
+ * @param data The data to compress
+ * @param opts The compression options
+ * @returns The deflated version of the data
+ */
+export declare function deflateSync(data: Uint8Array, opts?: DeflateOptions): Uint8Array;
+/**
+ * Streaming DEFLATE decompression
+ */
+export declare class Inflate {
+    private s;
+    private o;
+    private p;
+    private d;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+    /**
+     * Creates a DEFLATE decompression stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(opts: InflateStreamOptions, cb?: FlateStreamHandler);
+    /**
+     * Creates a DEFLATE decompression stream
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(cb?: FlateStreamHandler);
+    private e;
+    private c;
+    /**
+     * Pushes a chunk to be inflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the final chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * Asynchronous streaming DEFLATE decompression
+ */
+export declare class AsyncInflate {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The handler to call whenever buffered source data is processed (i.e. `queuedSize` updates)
+     */
+    ondrain?: AsyncFlateDrainHandler;
+    /**
+     * The number of compressed bytes buffered in the stream
+     */
+    queuedSize: number;
+    /**
+     * Creates an asynchronous DEFLATE decompression stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(opts: InflateStreamOptions, cb?: AsyncFlateStreamHandler);
+    /**
+     * Creates an asynchronous DEFLATE decompression stream
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    /**
+     * Pushes a chunk to be inflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * A method to terminate the stream's internal worker. Subsequent calls to
+     * push() will silently fail.
+     */
+    terminate: AsyncTerminable;
+}
+/**
+ * Asynchronously expands DEFLATE data with no wrapper
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function inflate(data: Uint8Array, opts: AsyncInflateOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchronously expands DEFLATE data with no wrapper
+ * @param data The data to decompress
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function inflate(data: Uint8Array, cb: FlateCallback): AsyncTerminable;
+/**
+ * Expands DEFLATE data with no wrapper
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+export declare function inflateSync(data: Uint8Array, opts?: InflateOptions): Uint8Array;
+/**
+ * Streaming GZIP compression
+ */
+export declare class Gzip {
+    private c;
+    private l;
+    private v;
+    private o;
+    private s;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+    /**
+     * Creates a GZIP stream
+     * @param opts The compression options
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(opts: GzipOptions, cb?: FlateStreamHandler);
+    /**
+     * Creates a GZIP stream
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(cb?: FlateStreamHandler);
+    /**
+     * Pushes a chunk to be GZIPped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    private p;
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * GZIPped output for small inputs.
+     */
+    flush(): void;
+}
+/**
+ * Asynchronous streaming GZIP compression
+ */
+export declare class AsyncGzip {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The handler to call whenever buffered source data is processed (i.e. `queuedSize` updates)
+     */
+    ondrain?: AsyncFlateDrainHandler;
+    /**
+     * The number of uncompressed bytes buffered in the stream
+     */
+    queuedSize: number;
+    /**
+     * Creates an asynchronous GZIP stream
+     * @param opts The compression options
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(opts: GzipOptions, cb?: AsyncFlateStreamHandler);
+    /**
+     * Creates an asynchronous GZIP stream
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    /**
+     * Pushes a chunk to be GZIPped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * GZIPped output for small inputs.
+     */
+    flush(): void;
+    /**
+     * A method to terminate the stream's internal worker. Subsequent calls to
+     * push() will silently fail.
+     */
+    terminate: AsyncTerminable;
+}
+/**
+ * Asynchronously compresses data with GZIP
+ * @param data The data to compress
+ * @param opts The compression options
+ * @param cb The function to be called upon compression completion
+ * @returns A function that can be used to immediately terminate the compression
+ */
+export declare function gzip(data: Uint8Array, opts: AsyncGzipOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchronously compresses data with GZIP
+ * @param data The data to compress
+ * @param cb The function to be called upon compression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function gzip(data: Uint8Array, cb: FlateCallback): AsyncTerminable;
+/**
+ * Compresses data with GZIP
+ * @param data The data to compress
+ * @param opts The compression options
+ * @returns The gzipped version of the data
+ */
+export declare function gzipSync(data: Uint8Array, opts?: GzipOptions): Uint8Array;
+/**
+ * Handler for new GZIP members in concatenated GZIP streams. Useful for building indices used to perform random-access reads on compressed files.
+ * @param offset The offset of the new member relative to the start of the stream
+ */
+export type GunzipMemberHandler = (offset: number) => void;
+/**
+ * Streaming single or multi-member GZIP decompression
+ */
+export declare class Gunzip {
+    private v;
+    private r;
+    private o;
+    private p;
+    private s;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+    /**
+     * The handler to call whenever a new GZIP member is found
+     */
+    onmember?: GunzipMemberHandler;
+    /**
+     * Creates a GUNZIP stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(opts: GunzipStreamOptions, cb?: FlateStreamHandler);
+    /**
+     * Creates a GUNZIP stream
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(cb?: FlateStreamHandler);
+    /**
+     * Pushes a chunk to be GUNZIPped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * Asynchronous streaming single or multi-member GZIP decompression
+ */
+export declare class AsyncGunzip {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The handler to call whenever buffered source data is processed (i.e. `queuedSize` updates)
+     */
+    ondrain?: AsyncFlateDrainHandler;
+    /**
+     * The number of compressed bytes buffered in the stream
+     */
+    queuedSize: number;
+    /**
+     * The handler to call whenever a new GZIP member is found
+     */
+    onmember?: GunzipMemberHandler;
+    /**
+     * Creates an asynchronous GUNZIP stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(opts: GunzipStreamOptions, cb?: AsyncFlateStreamHandler);
+    /**
+     * Creates an asynchronous GUNZIP stream
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    /**
+     * Pushes a chunk to be GUNZIPped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * A method to terminate the stream's internal worker. Subsequent calls to
+     * push() will silently fail.
+     */
+    terminate: AsyncTerminable;
+}
+/**
+ * Asynchronously expands GZIP data
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function gunzip(data: Uint8Array, opts: AsyncGunzipOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchronously expands GZIP data
+ * @param data The data to decompress
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function gunzip(data: Uint8Array, cb: FlateCallback): AsyncTerminable;
+/**
+ * Expands GZIP data
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+export declare function gunzipSync(data: Uint8Array, opts?: GunzipOptions): Uint8Array;
+/**
+ * Streaming Zlib compression
+ */
+export declare class Zlib {
+    private c;
+    private v;
+    private o;
+    private s;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+    /**
+     * Creates a Zlib stream
+     * @param opts The compression options
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(opts: ZlibOptions, cb?: FlateStreamHandler);
+    /**
+     * Creates a Zlib stream
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(cb?: FlateStreamHandler);
+    /**
+     * Pushes a chunk to be zlibbed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    private p;
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * zlibbed output for small inputs.
+     */
+    flush(): void;
+}
+/**
+ * Asynchronous streaming Zlib compression
+ */
+export declare class AsyncZlib {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The handler to call whenever buffered source data is processed (i.e. `queuedSize` updates)
+     */
+    ondrain?: AsyncFlateDrainHandler;
+    /**
+     * The number of uncompressed bytes buffered in the stream
+     */
+    queuedSize: number;
+    /**
+     * Creates an asynchronous Zlib stream
+     * @param opts The compression options
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(opts: ZlibOptions, cb?: AsyncFlateStreamHandler);
+    /**
+     * Creates an asynchronous Zlib stream
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * zlibbed output for small inputs.
+     */
+    flush(): void;
+    /**
+     * A method to terminate the stream's internal worker. Subsequent calls to
+     * push() will silently fail.
+     */
+    terminate: AsyncTerminable;
+}
+/**
+ * Asynchronously compresses data with Zlib
+ * @param data The data to compress
+ * @param opts The compression options
+ * @param cb The function to be called upon compression completion
+ */
+export declare function zlib(data: Uint8Array, opts: AsyncZlibOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchronously compresses data with Zlib
+ * @param data The data to compress
+ * @param cb The function to be called upon compression completion
+ * @returns A function that can be used to immediately terminate the compression
+ */
+export declare function zlib(data: Uint8Array, cb: FlateCallback): AsyncTerminable;
+/**
+ * Compress data with Zlib
+ * @param data The data to compress
+ * @param opts The compression options
+ * @returns The zlib-compressed version of the data
+ */
+export declare function zlibSync(data: Uint8Array, opts?: ZlibOptions): Uint8Array;
+/**
+ * Streaming Zlib decompression
+ */
+export declare class Unzlib {
+    private v;
+    private p;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+    /**
+     * Creates a Zlib decompression stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(opts: UnzlibStreamOptions, cb?: FlateStreamHandler);
+    /**
+     * Creates a Zlib decompression stream
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(cb?: FlateStreamHandler);
+    /**
+     * Pushes a chunk to be unzlibbed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * Asynchronous streaming Zlib decompression
+ */
+export declare class AsyncUnzlib {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The handler to call whenever buffered source data is processed (i.e. `queuedSize` updates)
+     */
+    ondrain?: AsyncFlateDrainHandler;
+    /**
+     * The number of compressed bytes buffered in the stream
+     */
+    queuedSize: number;
+    /**
+     * Creates an asynchronous Zlib decompression stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(opts: UnzlibStreamOptions, cb?: AsyncFlateStreamHandler);
+    /**
+     * Creates an asynchronous Zlib decompression stream
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    /**
+     * Pushes a chunk to be decompressed from Zlib
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * A method to terminate the stream's internal worker. Subsequent calls to
+     * push() will silently fail.
+     */
+    terminate: AsyncTerminable;
+}
+/**
+ * Asynchronously expands Zlib data
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function unzlib(data: Uint8Array, opts: AsyncUnzlibOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchronously expands Zlib data
+ * @param data The data to decompress
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function unzlib(data: Uint8Array, cb: FlateCallback): AsyncTerminable;
+/**
+ * Expands Zlib data
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+export declare function unzlibSync(data: Uint8Array, opts?: UnzlibOptions): Uint8Array;
+export { gzip as compress, AsyncGzip as AsyncCompress };
+export { gzipSync as compressSync, Gzip as Compress };
+/**
+ * Streaming GZIP, Zlib, or raw DEFLATE decompression
+ */
+export declare class Decompress {
+    private G;
+    private I;
+    private Z;
+    private o;
+    private s;
+    private p;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+    /**
+     * Creates a decompression stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is decompressed
+     */
+    constructor(opts: InflateStreamOptions, cb?: FlateStreamHandler);
+    /**
+     * Creates a decompression stream
+     * @param cb The callback to call whenever data is decompressed
+     */
+    constructor(cb?: FlateStreamHandler);
+    private i;
+    /**
+     * Pushes a chunk to be decompressed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression
+ */
+export declare class AsyncDecompress {
+    private G;
+    private I;
+    private Z;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The handler to call whenever buffered source data is processed (i.e. `queuedSize` updates)
+     */
+    ondrain?: AsyncFlateDrainHandler;
+    /**
+     * The number of compressed bytes buffered in the stream
+     */
+    queuedSize: number;
+    /**
+     * Creates an asynchronous decompression stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is decompressed
+     */
+    constructor(opts: InflateStreamOptions, cb?: AsyncFlateStreamHandler);
+    /**
+     * Creates an asynchronous decompression stream
+     * @param cb The callback to call whenever data is decompressed
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    private i;
+    /**
+     * Pushes a chunk to be decompressed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * Asynchrononously expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function decompress(data: Uint8Array, opts: AsyncInflateOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchrononously expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format
+ * @param data The data to decompress
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function decompress(data: Uint8Array, cb: FlateCallback): AsyncTerminable;
+/**
+ * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+export declare function decompressSync(data: Uint8Array, opts?: InflateOptions): Uint8Array;
+/**
+ * Attributes for files added to a ZIP archive object
+ */
+export interface ZipAttributes {
+    /**
+     * The operating system of origin for this file. The value is defined
+     * by PKZIP's APPNOTE.txt, section 4.4.2.2. For example, 0 (the default)
+     * is MS/DOS, 3 is Unix, 19 is macOS.
+     */
+    os?: number;
+    /**
+     * The file's attributes. These are traditionally somewhat complicated
+     * and platform-dependent, so using them is scarcely necessary. However,
+     * here is a representation of what this is, bit by bit:
+     *
+     * `TTTTugtrwxrwxrwx0000000000ADVSHR`
+     *
+     * TTTT = file type (rarely useful)
+     *
+     * u = setuid, g = setgid, t = sticky
+     *
+     * rwx = user permissions, rwx = group permissions, rwx = other permissions
+     *
+     * 0000000000 = unused
+     *
+     * A = archive, D = directory, V = volume label, S = system file, H = hidden, R = read-only
+     *
+     * If you want to set the Unix permissions, for instance, just bit shift by 16, e.g. 0o644 << 16.
+     * Note that attributes usually only work in conjunction with the `os` setting: you must use
+     * `os` = 3 (Unix) if you want to set Unix permissions
+     */
+    attrs?: number;
+    /**
+     * Extra metadata to add to the file. This field is defined by PKZIP's APPNOTE.txt,
+     * section 4.4.28. At most 65,535 bytes may be used in each ID. The ID must be an
+     * integer between 0 and 65,535, inclusive.
+     *
+     * This field is incredibly rare and almost never needed except for compliance with
+     * proprietary standards and software.
+     */
+    extra?: Record<number, Uint8Array>;
+    /**
+     * The comment to attach to the file. This field is defined by PKZIP's APPNOTE.txt,
+     * section 4.4.26. The comment must be at most 65,535 bytes long UTF-8 encoded. This
+     * field is not read by consumer software.
+     */
+    comment?: string;
+    /**
+     * When the file was last modified. Defaults to the current time.
+     */
+    mtime?: GzipOptions['mtime'];
+}
+/**
+ * Options for creating a ZIP archive
+ */
+export interface ZipOptions extends DeflateOptions, ZipAttributes {
+}
+/**
+ * Options for expanding a ZIP archive
+ */
+export interface UnzipOptions {
+    /**
+     * A filter function to extract only certain files from a ZIP archive
+     */
+    filter?: UnzipFileFilter;
+}
+/**
+ * Options for asynchronously creating a ZIP archive
+ */
+export interface AsyncZipOptions extends AsyncDeflateOptions, ZipAttributes {
+}
+/**
+ * Options for asynchronously expanding a ZIP archive
+ */
+export interface AsyncUnzipOptions extends UnzipOptions {
+}
+/**
+ * A file that can be used to create a ZIP archive
+ */
+export type ZippableFile = Uint8Array | Zippable | [Uint8Array | Zippable, ZipOptions];
+/**
+ * A file that can be used to asynchronously create a ZIP archive
+ */
+export type AsyncZippableFile = Uint8Array | AsyncZippable | [Uint8Array | AsyncZippable, AsyncZipOptions];
+/**
+ * The complete directory structure of a ZIPpable archive
+ */
+export interface Zippable {
+    [path: string]: ZippableFile;
+}
+/**
+ * The complete directory structure of an asynchronously ZIPpable archive
+ */
+export interface AsyncZippable {
+    [path: string]: AsyncZippableFile;
+}
+/**
+ * An unzipped archive. The full path of each file is used as the key,
+ * and the file is the value
+ */
+export interface Unzipped {
+    [path: string]: Uint8Array;
+}
+/**
+ * Handler for string generation streams
+ * @param data The string output from the stream processor
+ * @param final Whether this is the final block
+ */
+export type StringStreamHandler = (data: string, final: boolean) => void;
+/**
+ * Callback for asynchronous ZIP decompression
+ * @param err Any error that occurred
+ * @param data The decompressed ZIP archive
+ */
+export type UnzipCallback = (err: FlateError | null, data: Unzipped) => void;
+/**
+ * Handler for streaming ZIP decompression
+ * @param file The file that was found in the archive
+ */
+export type UnzipFileHandler = (file: UnzipFile) => void;
+/**
+ * Streaming UTF-8 decoding
+ */
+export declare class DecodeUTF8 {
+    private p;
+    private t;
+    /**
+     * Creates a UTF-8 decoding stream
+     * @param cb The callback to call whenever data is decoded
+     */
+    constructor(cb?: StringStreamHandler);
+    /**
+     * Pushes a chunk to be decoded from UTF-8 binary
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: StringStreamHandler;
+}
+/**
+ * Streaming UTF-8 encoding
+ */
+export declare class EncodeUTF8 {
+    private d;
+    /**
+     * Creates a UTF-8 decoding stream
+     * @param cb The callback to call whenever data is encoded
+     */
+    constructor(cb?: FlateStreamHandler);
+    /**
+     * Pushes a chunk to be encoded to UTF-8
+     * @param chunk The string data to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: string, final?: boolean): void;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+}
+/**
+ * Converts a string into a Uint8Array for use with compression/decompression methods
+ * @param str The string to encode
+ * @param latin1 Whether or not to interpret the data as Latin-1. This should
+ *               not need to be true unless decoding a binary string.
+ * @returns The string encoded in UTF-8/Latin-1 binary
+ */
+export declare function strToU8(str: string, latin1?: boolean): Uint8Array;
+/**
+ * Converts a Uint8Array to a string
+ * @param dat The data to decode to string
+ * @param latin1 Whether or not to interpret the data as Latin-1. This should
+ *               not need to be true unless encoding to binary string.
+ * @returns The original UTF-8/Latin-1 string
+ */
+export declare function strFromU8(dat: Uint8Array, latin1?: boolean): string;
+/**
+ * A stream that can be used to create a file in a ZIP archive
+ */
+export interface ZipInputFile extends ZipAttributes {
+    /**
+     * The filename to associate with the data provided to this stream. If you
+     * want a file in a subdirectory, use forward slashes as a separator (e.g.
+     * `directory/filename.ext`). This will still work on Windows.
+     */
+    filename: string;
+    /**
+     * The size of the file in bytes. This attribute may be invalid after
+     * the file is added to the ZIP archive; it must be correct only before the
+     * stream completes.
+     *
+     * If you don't want to have to compute this yourself, consider extending the
+     * ZipPassThrough class and overriding its process() method, or using one of
+     * ZipDeflate or AsyncZipDeflate.
+     */
+    size: number;
+    /**
+     * A CRC of the original file contents. This attribute may be invalid after
+     * the file is added to the ZIP archive; it must be correct only before the
+     * stream completes.
+     *
+     * If you don't want to have to generate this yourself, consider extending the
+     * ZipPassThrough class and overriding its process() method, or using one of
+     * ZipDeflate or AsyncZipDeflate.
+     */
+    crc: number;
+    /**
+     * The compression format for the data stream. This number is determined by
+     * the spec in PKZIP's APPNOTE.txt, section 4.4.5. For example, 0 = no
+     * compression, 8 = deflate, 14 = LZMA
+     */
+    compression: number;
+    /**
+     * Bits 1 and 2 of the general purpose bit flag, specified in PKZIP's
+     * APPNOTE.txt, section 4.4.4. Should be between 0 and 3. This is unlikely
+     * to be necessary.
+     */
+    flag?: number;
+    /**
+     * The handler to be called when data is added. After passing this stream to
+     * the ZIP file object, this handler will always be defined. To call it:
+     *
+     * `stream.ondata(error, chunk, final)`
+     *
+     * error = any error that occurred (null if there was no error)
+     *
+     * chunk = a Uint8Array of the data that was added (null if there was an
+     * error)
+     *
+     * final = boolean, whether this is the final chunk in the stream
+     */
+    ondata?: AsyncFlateStreamHandler;
+    /**
+     * A method called when the stream is no longer needed, for clean-up
+     * purposes. This will not always be called after the stream completes,
+     * so you may wish to call this.terminate() after the final chunk is
+     * processed if you have clean-up logic.
+     */
+    terminate?: AsyncTerminable;
+}
+/**
+ * A pass-through stream to keep data uncompressed in a ZIP archive.
+ */
+export declare class ZipPassThrough implements ZipInputFile {
+    filename: string;
+    crc: number;
+    size: number;
+    compression: number;
+    os?: number;
+    attrs?: number;
+    comment?: string;
+    extra?: Record<number, Uint8Array>;
+    mtime?: GzipOptions['mtime'];
+    ondata: AsyncFlateStreamHandler;
+    private c;
+    /**
+     * Creates a pass-through stream that can be added to ZIP archives
+     * @param filename The filename to associate with this data stream
+     */
+    constructor(filename: string);
+    /**
+     * Processes a chunk and pushes to the output stream. You can override this
+     * method in a subclass for custom behavior, but by default this passes
+     * the data through. You must call this.ondata(err, chunk, final) at some
+     * point in this method.
+     * @param chunk The chunk to process
+     * @param final Whether this is the last chunk
+     */
+    protected process(chunk: Uint8Array, final: boolean): void;
+    /**
+     * Pushes a chunk to be added. If you are subclassing this with a custom
+     * compression algorithm, note that you must push data from the source
+     * file only, pre-compression.
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate
+ * for better performance
+ */
+export declare class ZipDeflate implements ZipInputFile {
+    filename: string;
+    crc: number;
+    size: number;
+    compression: number;
+    flag: 0 | 1 | 2 | 3;
+    os?: number;
+    attrs?: number;
+    comment?: string;
+    extra?: Record<number, Uint8Array>;
+    mtime?: GzipOptions['mtime'];
+    ondata: AsyncFlateStreamHandler;
+    private d;
+    /**
+     * Creates a DEFLATE stream that can be added to ZIP archives
+     * @param filename The filename to associate with this data stream
+     * @param opts The compression options
+     */
+    constructor(filename: string, opts?: DeflateOptions);
+    process(chunk: Uint8Array, final: boolean): void;
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * Asynchronous streaming DEFLATE compression for ZIP archives
+ */
+export declare class AsyncZipDeflate implements ZipInputFile {
+    filename: string;
+    crc: number;
+    size: number;
+    compression: number;
+    flag: 0 | 1 | 2 | 3;
+    os?: number;
+    attrs?: number;
+    comment?: string;
+    extra?: Record<number, Uint8Array>;
+    mtime?: GzipOptions['mtime'];
+    ondata: AsyncFlateStreamHandler;
+    private d;
+    terminate: AsyncTerminable;
+    /**
+     * Creates an asynchronous DEFLATE stream that can be added to ZIP archives
+     * @param filename The filename to associate with this data stream
+     * @param opts The compression options
+     */
+    constructor(filename: string, opts?: DeflateOptions);
+    process(chunk: Uint8Array, final: boolean): void;
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * A zippable archive to which files can incrementally be added
+ */
+export declare class Zip {
+    private u;
+    private d;
+    /**
+     * Creates an empty ZIP archive to which files can be added
+     * @param cb The callback to call whenever data for the generated ZIP archive
+     *           is available
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    /**
+     * Adds a file to the ZIP archive
+     * @param file The file stream to add
+     */
+    add(file: ZipInputFile): void;
+    /**
+     * Ends the process of adding files and prepares to emit the final chunks.
+     * This *must* be called after adding all desired files for the resulting
+     * ZIP file to work properly.
+     */
+    end(): void;
+    private e;
+    /**
+     * A method to terminate any internal workers used by the stream. Subsequent
+     * calls to add() will fail.
+     */
+    terminate(): void;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+}
+/**
+ * Asynchronously creates a ZIP file
+ * @param data The directory structure for the ZIP archive
+ * @param opts The main options, merged with per-file options
+ * @param cb The callback to call with the generated ZIP archive
+ * @returns A function that can be used to immediately terminate the compression
+ */
+export declare function zip(data: AsyncZippable, opts: AsyncZipOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchronously creates a ZIP file
+ * @param data The directory structure for the ZIP archive
+ * @param cb The callback to call with the generated ZIP archive
+ * @returns A function that can be used to immediately terminate the compression
+ */
+export declare function zip(data: AsyncZippable, cb: FlateCallback): AsyncTerminable;
+/**
+ * Synchronously creates a ZIP file. Prefer using `zip` for better performance
+ * with more than one file.
+ * @param data The directory structure for the ZIP archive
+ * @param opts The main options, merged with per-file options
+ * @returns The generated ZIP archive
+ */
+export declare function zipSync(data: Zippable, opts?: ZipOptions): Uint8Array;
+/**
+ * A decoder for files in ZIP streams
+ */
+export interface UnzipDecoder {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * Pushes a chunk to be decompressed
+     * @param data The data in this chunk. Do not consume (detach) this data.
+     * @param final Whether this is the last chunk in the data stream
+     */
+    push(data: Uint8Array, final: boolean): void;
+    /**
+     * A method to terminate any internal workers used by the stream. Subsequent
+     * calls to push() should silently fail.
+     */
+    terminate?: AsyncTerminable;
+}
+/**
+ * A constructor for a decoder for unzip streams
+ */
+export interface UnzipDecoderConstructor {
+    /**
+     * Creates an instance of the decoder
+     * @param filename The name of the file
+     * @param size The compressed size of the file
+     * @param originalSize The original size of the file
+     */
+    new (filename: string, size?: number, originalSize?: number): UnzipDecoder;
+    /**
+     * The compression format for the data stream. This number is determined by
+     * the spec in PKZIP's APPNOTE.txt, section 4.4.5. For example, 0 = no
+     * compression, 8 = deflate, 14 = LZMA
+     */
+    compression: number;
+}
+/**
+ * Information about a file to be extracted from a ZIP archive
+ */
+export interface UnzipFileInfo {
+    /**
+     * The name of the file
+     */
+    name: string;
+    /**
+     * The compressed size of the file
+     */
+    size: number;
+    /**
+     * The original size of the file
+     */
+    originalSize: number;
+    /**
+     * The compression format for the data stream. This number is determined by
+     * the spec in PKZIP's APPNOTE.txt, section 4.4.5. For example, 0 = no
+     * compression, 8 = deflate, 14 = LZMA. If the filter function returns true
+     * but this value is not 8, the unzip function will throw.
+     */
+    compression: number;
+}
+/**
+ * A filter for files to be extracted during the unzipping process
+ * @param file The info for the current file being processed
+ * @returns Whether or not to extract the current file
+ */
+export type UnzipFileFilter = (file: UnzipFileInfo) => boolean;
+/**
+ * Streaming file extraction from ZIP archives
+ */
+export interface UnzipFile {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The name of the file
+     */
+    name: string;
+    /**
+     * The compression format for the data stream. This number is determined by
+     * the spec in PKZIP's APPNOTE.txt, section 4.4.5. For example, 0 = no
+     * compression, 8 = deflate, 14 = LZMA. If start() is called but there is no
+     * decompression stream available for this method, start() will throw.
+     */
+    compression: number;
+    /**
+     * The compressed size of the file. Will not be present for archives created
+     * in a streaming fashion.
+     */
+    size?: number;
+    /**
+     * The original size of the file. Will not be present for archives created
+     * in a streaming fashion.
+     */
+    originalSize?: number;
+    /**
+     * Starts reading from the stream. Calling this function will always enable
+     * this stream, but ocassionally the stream will be enabled even without
+     * this being called.
+     */
+    start(): void;
+    /**
+     * A method to terminate any internal workers used by the stream. ondata
+     * will not be called any further.
+     */
+    terminate: AsyncTerminable;
+}
+/**
+ * Streaming pass-through decompression for ZIP archives
+ */
+export declare class UnzipPassThrough implements UnzipDecoder {
+    static compression: number;
+    ondata: AsyncFlateStreamHandler;
+    push(data: Uint8Array, final: boolean): void;
+}
+/**
+ * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for
+ * better performance.
+ */
+export declare class UnzipInflate implements UnzipDecoder {
+    static compression: number;
+    private i;
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * Creates a DEFLATE decompression that can be used in ZIP archives
+     */
+    constructor();
+    push(data: Uint8Array, final: boolean): void;
+}
+/**
+ * Asynchronous streaming DEFLATE decompression for ZIP archives
+ */
+export declare class AsyncUnzipInflate implements UnzipDecoder {
+    static compression: number;
+    private i;
+    ondata: AsyncFlateStreamHandler;
+    terminate: AsyncTerminable;
+    /**
+     * Creates a DEFLATE decompression that can be used in ZIP archives
+     */
+    constructor(_: string, sz?: number);
+    push(data: Uint8Array, final: boolean): void;
+}
+/**
+ * A ZIP archive decompression stream that emits files as they are discovered
+ */
+export declare class Unzip {
+    private d;
+    private c;
+    private p;
+    private k;
+    private o;
+    /**
+     * Creates a ZIP decompression stream
+     * @param cb The callback to call whenever a file in the ZIP archive is found
+     */
+    constructor(cb?: UnzipFileHandler);
+    /**
+     * Pushes a chunk to be unzipped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): any;
+    /**
+     * Registers a decoder with the stream, allowing for files compressed with
+     * the compression type provided to be expanded correctly
+     * @param decoder The decoder constructor
+     */
+    register(decoder: UnzipDecoderConstructor): void;
+    /**
+     * The handler to call whenever a file is discovered
+     */
+    onfile: UnzipFileHandler;
+}
+/**
+ * Asynchronously decompresses a ZIP archive
+ * @param data The raw compressed ZIP file
+ * @param opts The ZIP extraction options
+ * @param cb The callback to call with the decompressed files
+ * @returns A function that can be used to immediately terminate the unzipping
+ */
+export declare function unzip(data: Uint8Array, opts: AsyncUnzipOptions, cb: UnzipCallback): AsyncTerminable;
+/**
+ * Asynchronously decompresses a ZIP archive
+ * @param data The raw compressed ZIP file
+ * @param cb The callback to call with the decompressed files
+ * @returns A function that can be used to immediately terminate the unzipping
+ */
+export declare function unzip(data: Uint8Array, cb: UnzipCallback): AsyncTerminable;
+/**
+ * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better
+ * performance with more than one file.
+ * @param data The raw compressed ZIP file
+ * @param opts The ZIP extraction options
+ * @returns The decompressed files
+ */
+export declare function unzipSync(data: Uint8Array, opts?: UnzipOptions): Unzipped;
diff --git a/node_modules/fflate/esm/index.mjs b/node_modules/fflate/esm/index.mjs
new file mode 100644
index 0000000..87c11c6
--- /dev/null
+++ b/node_modules/fflate/esm/index.mjs
@@ -0,0 +1,2679 @@
+import { createRequire } from 'module';
+var require = createRequire('/');
+// DEFLATE is a complex format; to read this code, you should probably check the RFC first:
+// https://tools.ietf.org/html/rfc1951
+// You may also wish to take a look at the guide I made about this program:
+// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad
+// Some of the following code is similar to that of UZIP.js:
+// https://github.com/photopea/UZIP.js
+// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.
+// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint
+// is better for memory in most engines (I *think*).
+// Mediocre shim
+var Worker;
+var workerAdd = ";var __w=require('worker_threads');__w.parentPort.on('message',function(m){onmessage({data:m})}),postMessage=function(m,t){__w.parentPort.postMessage(m,t)},close=process.exit;self=global";
+try {
+    Worker = require('worker_threads').Worker;
+}
+catch (e) {
+}
+var wk = Worker ? function (c, _, msg, transfer, cb) {
+    var done = false;
+    var w = new Worker(c + workerAdd, { eval: true })
+        .on('error', function (e) { return cb(e, null); })
+        .on('message', function (m) { return cb(null, m); })
+        .on('exit', function (c) {
+        if (c && !done)
+            cb(new Error('exited with code ' + c), null);
+    });
+    w.postMessage(msg, transfer);
+    w.terminate = function () {
+        done = true;
+        return Worker.prototype.terminate.call(w);
+    };
+    return w;
+} : function (_, __, ___, ____, cb) {
+    setImmediate(function () { return cb(new Error('async operations unsupported - update to Node 12+ (or Node 10-11 with the --experimental-worker CLI flag)'), null); });
+    var NOP = function () { };
+    return {
+        terminate: NOP,
+        postMessage: NOP
+    };
+};
+
+// aliases for shorter compressed code (most minifers don't do this)
+var u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;
+// fixed length extra bits
+var fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);
+// fixed distance extra bits
+var fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);
+// code length index map
+var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);
+// get base, reverse index map from extra bits
+var freb = function (eb, start) {
+    var b = new u16(31);
+    for (var i = 0; i < 31; ++i) {
+        b[i] = start += 1 << eb[i - 1];
+    }
+    // numbers here are at max 18 bits
+    var r = new i32(b[30]);
+    for (var i = 1; i < 30; ++i) {
+        for (var j = b[i]; j < b[i + 1]; ++j) {
+            r[j] = ((j - b[i]) << 5) | i;
+        }
+    }
+    return { b: b, r: r };
+};
+var _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;
+// we can ignore the fact that the other numbers are wrong; they never happen anyway
+fl[28] = 258, revfl[258] = 28;
+var _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;
+// map of value to reverse (assuming 16 bits)
+var rev = new u16(32768);
+for (var i = 0; i < 32768; ++i) {
+    // reverse table algorithm from SO
+    var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);
+    x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);
+    x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);
+    rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;
+}
+// create huffman tree from u8 "map": index -> code length for code index
+// mb (max bits) must be at most 15
+// TODO: optimize/split up?
+var hMap = (function (cd, mb, r) {
+    var s = cd.length;
+    // index
+    var i = 0;
+    // u16 "map": index -> # of codes with bit length = index
+    var l = new u16(mb);
+    // length of cd must be 288 (total # of codes)
+    for (; i < s; ++i) {
+        if (cd[i])
+            ++l[cd[i] - 1];
+    }
+    // u16 "map": index -> minimum code for bit length = index
+    var le = new u16(mb);
+    for (i = 1; i < mb; ++i) {
+        le[i] = (le[i - 1] + l[i - 1]) << 1;
+    }
+    var co;
+    if (r) {
+        // u16 "map": index -> number of actual bits, symbol for code
+        co = new u16(1 << mb);
+        // bits to remove for reverser
+        var rvb = 15 - mb;
+        for (i = 0; i < s; ++i) {
+            // ignore 0 lengths
+            if (cd[i]) {
+                // num encoding both symbol and bits read
+                var sv = (i << 4) | cd[i];
+                // free bits
+                var r_1 = mb - cd[i];
+                // start value
+                var v = le[cd[i] - 1]++ << r_1;
+                // m is end value
+                for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {
+                    // every 16 bit value starting with the code yields the same result
+                    co[rev[v] >> rvb] = sv;
+                }
+            }
+        }
+    }
+    else {
+        co = new u16(s);
+        for (i = 0; i < s; ++i) {
+            if (cd[i]) {
+                co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);
+            }
+        }
+    }
+    return co;
+});
+// fixed length tree
+var flt = new u8(288);
+for (var i = 0; i < 144; ++i)
+    flt[i] = 8;
+for (var i = 144; i < 256; ++i)
+    flt[i] = 9;
+for (var i = 256; i < 280; ++i)
+    flt[i] = 7;
+for (var i = 280; i < 288; ++i)
+    flt[i] = 8;
+// fixed distance tree
+var fdt = new u8(32);
+for (var i = 0; i < 32; ++i)
+    fdt[i] = 5;
+// fixed length map
+var flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);
+// fixed distance map
+var fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);
+// find max of array
+var max = function (a) {
+    var m = a[0];
+    for (var i = 1; i < a.length; ++i) {
+        if (a[i] > m)
+            m = a[i];
+    }
+    return m;
+};
+// read d, starting at bit p and mask with m
+var bits = function (d, p, m) {
+    var o = (p / 8) | 0;
+    return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;
+};
+// read d, starting at bit p continuing for at least 16 bits
+var bits16 = function (d, p) {
+    var o = (p / 8) | 0;
+    return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));
+};
+// get end of byte
+var shft = function (p) { return ((p + 7) / 8) | 0; };
+// typed array slice - allows garbage collector to free original reference,
+// while being more compatible than .slice
+var slc = function (v, s, e) {
+    if (s == null || s < 0)
+        s = 0;
+    if (e == null || e > v.length)
+        e = v.length;
+    // can't use .constructor in case user-supplied
+    return new u8(v.subarray(s, e));
+};
+/**
+ * Codes for errors generated within this library
+ */
+export var FlateErrorCode = {
+    UnexpectedEOF: 0,
+    InvalidBlockType: 1,
+    InvalidLengthLiteral: 2,
+    InvalidDistance: 3,
+    StreamFinished: 4,
+    NoStreamHandler: 5,
+    InvalidHeader: 6,
+    NoCallback: 7,
+    InvalidUTF8: 8,
+    ExtraFieldTooLong: 9,
+    InvalidDate: 10,
+    FilenameTooLong: 11,
+    StreamFinishing: 12,
+    InvalidZipData: 13,
+    UnknownCompressionMethod: 14
+};
+// error codes
+var ec = [
+    'unexpected EOF',
+    'invalid block type',
+    'invalid length/literal',
+    'invalid distance',
+    'stream finished',
+    'no stream handler',
+    ,
+    'no callback',
+    'invalid UTF-8 data',
+    'extra field too long',
+    'date not in range 1980-2099',
+    'filename too long',
+    'stream finishing',
+    'invalid zip data'
+    // determined by unknown compression method
+];
+;
+var err = function (ind, msg, nt) {
+    var e = new Error(msg || ec[ind]);
+    e.code = ind;
+    if (Error.captureStackTrace)
+        Error.captureStackTrace(e, err);
+    if (!nt)
+        throw e;
+    return e;
+};
+// expands raw DEFLATE data
+var inflt = function (dat, st, buf, dict) {
+    // source length       dict length
+    var sl = dat.length, dl = dict ? dict.length : 0;
+    if (!sl || st.f && !st.l)
+        return buf || new u8(0);
+    var noBuf = !buf;
+    // have to estimate size
+    var resize = noBuf || st.i != 2;
+    // no state
+    var noSt = st.i;
+    // Assumes roughly 33% compression ratio average
+    if (noBuf)
+        buf = new u8(sl * 3);
+    // ensure buffer can fit at least l elements
+    var cbuf = function (l) {
+        var bl = buf.length;
+        // need to increase size to fit
+        if (l > bl) {
+            // Double or set to necessary, whichever is greater
+            var nbuf = new u8(Math.max(bl * 2, l));
+            nbuf.set(buf);
+            buf = nbuf;
+        }
+    };
+    //  last chunk         bitpos           bytes
+    var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;
+    // total bits
+    var tbts = sl * 8;
+    do {
+        if (!lm) {
+            // BFINAL - this is only 1 when last chunk is next
+            final = bits(dat, pos, 1);
+            // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman
+            var type = bits(dat, pos + 1, 3);
+            pos += 3;
+            if (!type) {
+                // go to end of byte boundary
+                var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;
+                if (t > sl) {
+                    if (noSt)
+                        err(0);
+                    break;
+                }
+                // ensure size
+                if (resize)
+                    cbuf(bt + l);
+                // Copy over uncompressed data
+                buf.set(dat.subarray(s, t), bt);
+                // Get new bitpos, update byte count
+                st.b = bt += l, st.p = pos = t * 8, st.f = final;
+                continue;
+            }
+            else if (type == 1)
+                lm = flrm, dm = fdrm, lbt = 9, dbt = 5;
+            else if (type == 2) {
+                //  literal                            lengths
+                var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;
+                var tl = hLit + bits(dat, pos + 5, 31) + 1;
+                pos += 14;
+                // length+distance tree
+                var ldt = new u8(tl);
+                // code length tree
+                var clt = new u8(19);
+                for (var i = 0; i < hcLen; ++i) {
+                    // use index map to get real code
+                    clt[clim[i]] = bits(dat, pos + i * 3, 7);
+                }
+                pos += hcLen * 3;
+                // code lengths bits
+                var clb = max(clt), clbmsk = (1 << clb) - 1;
+                // code lengths map
+                var clm = hMap(clt, clb, 1);
+                for (var i = 0; i < tl;) {
+                    var r = clm[bits(dat, pos, clbmsk)];
+                    // bits read
+                    pos += r & 15;
+                    // symbol
+                    var s = r >> 4;
+                    // code length to copy
+                    if (s < 16) {
+                        ldt[i++] = s;
+                    }
+                    else {
+                        //  copy   count
+                        var c = 0, n = 0;
+                        if (s == 16)
+                            n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];
+                        else if (s == 17)
+                            n = 3 + bits(dat, pos, 7), pos += 3;
+                        else if (s == 18)
+                            n = 11 + bits(dat, pos, 127), pos += 7;
+                        while (n--)
+                            ldt[i++] = c;
+                    }
+                }
+                //    length tree                 distance tree
+                var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);
+                // max length bits
+                lbt = max(lt);
+                // max dist bits
+                dbt = max(dt);
+                lm = hMap(lt, lbt, 1);
+                dm = hMap(dt, dbt, 1);
+            }
+            else
+                err(1);
+            if (pos > tbts) {
+                if (noSt)
+                    err(0);
+                break;
+            }
+        }
+        // Make sure the buffer can hold this + the largest possible addition
+        // Maximum chunk size (practically, theoretically infinite) is 2^17
+        if (resize)
+            cbuf(bt + 131072);
+        var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;
+        var lpos = pos;
+        for (;; lpos = pos) {
+            // bits read, code
+            var c = lm[bits16(dat, pos) & lms], sym = c >> 4;
+            pos += c & 15;
+            if (pos > tbts) {
+                if (noSt)
+                    err(0);
+                break;
+            }
+            if (!c)
+                err(2);
+            if (sym < 256)
+                buf[bt++] = sym;
+            else if (sym == 256) {
+                lpos = pos, lm = null;
+                break;
+            }
+            else {
+                var add = sym - 254;
+                // no extra bits needed if less
+                if (sym > 264) {
+                    // index
+                    var i = sym - 257, b = fleb[i];
+                    add = bits(dat, pos, (1 << b) - 1) + fl[i];
+                    pos += b;
+                }
+                // dist
+                var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;
+                if (!d)
+                    err(3);
+                pos += d & 15;
+                var dt = fd[dsym];
+                if (dsym > 3) {
+                    var b = fdeb[dsym];
+                    dt += bits16(dat, pos) & (1 << b) - 1, pos += b;
+                }
+                if (pos > tbts) {
+                    if (noSt)
+                        err(0);
+                    break;
+                }
+                if (resize)
+                    cbuf(bt + 131072);
+                var end = bt + add;
+                if (bt < dt) {
+                    var shift = dl - dt, dend = Math.min(dt, end);
+                    if (shift + bt < 0)
+                        err(3);
+                    for (; bt < dend; ++bt)
+                        buf[bt] = dict[shift + bt];
+                }
+                for (; bt < end; ++bt)
+                    buf[bt] = buf[bt - dt];
+            }
+        }
+        st.l = lm, st.p = lpos, st.b = bt, st.f = final;
+        if (lm)
+            final = 1, st.m = lbt, st.d = dm, st.n = dbt;
+    } while (!final);
+    // don't reallocate for streams or user buffers
+    return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);
+};
+// starting at p, write the minimum number of bits that can hold v to d
+var wbits = function (d, p, v) {
+    v <<= p & 7;
+    var o = (p / 8) | 0;
+    d[o] |= v;
+    d[o + 1] |= v >> 8;
+};
+// starting at p, write the minimum number of bits (>8) that can hold v to d
+var wbits16 = function (d, p, v) {
+    v <<= p & 7;
+    var o = (p / 8) | 0;
+    d[o] |= v;
+    d[o + 1] |= v >> 8;
+    d[o + 2] |= v >> 16;
+};
+// creates code lengths from a frequency table
+var hTree = function (d, mb) {
+    // Need extra info to make a tree
+    var t = [];
+    for (var i = 0; i < d.length; ++i) {
+        if (d[i])
+            t.push({ s: i, f: d[i] });
+    }
+    var s = t.length;
+    var t2 = t.slice();
+    if (!s)
+        return { t: et, l: 0 };
+    if (s == 1) {
+        var v = new u8(t[0].s + 1);
+        v[t[0].s] = 1;
+        return { t: v, l: 1 };
+    }
+    t.sort(function (a, b) { return a.f - b.f; });
+    // after i2 reaches last ind, will be stopped
+    // freq must be greater than largest possible number of symbols
+    t.push({ s: -1, f: 25001 });
+    var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;
+    t[0] = { s: -1, f: l.f + r.f, l: l, r: r };
+    // efficient algorithm from UZIP.js
+    // i0 is lookbehind, i2 is lookahead - after processing two low-freq
+    // symbols that combined have high freq, will start processing i2 (high-freq,
+    // non-composite) symbols instead
+    // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/
+    while (i1 != s - 1) {
+        l = t[t[i0].f < t[i2].f ? i0++ : i2++];
+        r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];
+        t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };
+    }
+    var maxSym = t2[0].s;
+    for (var i = 1; i < s; ++i) {
+        if (t2[i].s > maxSym)
+            maxSym = t2[i].s;
+    }
+    // code lengths
+    var tr = new u16(maxSym + 1);
+    // max bits in tree
+    var mbt = ln(t[i1 - 1], tr, 0);
+    if (mbt > mb) {
+        // more algorithms from UZIP.js
+        // TODO: find out how this code works (debt)
+        //  ind    debt
+        var i = 0, dt = 0;
+        //    left            cost
+        var lft = mbt - mb, cst = 1 << lft;
+        t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });
+        for (; i < s; ++i) {
+            var i2_1 = t2[i].s;
+            if (tr[i2_1] > mb) {
+                dt += cst - (1 << (mbt - tr[i2_1]));
+                tr[i2_1] = mb;
+            }
+            else
+                break;
+        }
+        dt >>= lft;
+        while (dt > 0) {
+            var i2_2 = t2[i].s;
+            if (tr[i2_2] < mb)
+                dt -= 1 << (mb - tr[i2_2]++ - 1);
+            else
+                ++i;
+        }
+        for (; i >= 0 && dt; --i) {
+            var i2_3 = t2[i].s;
+            if (tr[i2_3] == mb) {
+                --tr[i2_3];
+                ++dt;
+            }
+        }
+        mbt = mb;
+    }
+    return { t: new u8(tr), l: mbt };
+};
+// get the max length and assign length codes
+var ln = function (n, l, d) {
+    return n.s == -1
+        ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))
+        : (l[n.s] = d);
+};
+// length codes generation
+var lc = function (c) {
+    var s = c.length;
+    // Note that the semicolon was intentional
+    while (s && !c[--s])
+        ;
+    var cl = new u16(++s);
+    //  ind      num         streak
+    var cli = 0, cln = c[0], cls = 1;
+    var w = function (v) { cl[cli++] = v; };
+    for (var i = 1; i <= s; ++i) {
+        if (c[i] == cln && i != s)
+            ++cls;
+        else {
+            if (!cln && cls > 2) {
+                for (; cls > 138; cls -= 138)
+                    w(32754);
+                if (cls > 2) {
+                    w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);
+                    cls = 0;
+                }
+            }
+            else if (cls > 3) {
+                w(cln), --cls;
+                for (; cls > 6; cls -= 6)
+                    w(8304);
+                if (cls > 2)
+                    w(((cls - 3) << 5) | 8208), cls = 0;
+            }
+            while (cls--)
+                w(cln);
+            cls = 1;
+            cln = c[i];
+        }
+    }
+    return { c: cl.subarray(0, cli), n: s };
+};
+// calculate the length of output from tree, code lengths
+var clen = function (cf, cl) {
+    var l = 0;
+    for (var i = 0; i < cl.length; ++i)
+        l += cf[i] * cl[i];
+    return l;
+};
+// writes a fixed block
+// returns the new bit pos
+var wfblk = function (out, pos, dat) {
+    // no need to write 00 as type: TypedArray defaults to 0
+    var s = dat.length;
+    var o = shft(pos + 2);
+    out[o] = s & 255;
+    out[o + 1] = s >> 8;
+    out[o + 2] = out[o] ^ 255;
+    out[o + 3] = out[o + 1] ^ 255;
+    for (var i = 0; i < s; ++i)
+        out[o + i + 4] = dat[i];
+    return (o + 4 + s) * 8;
+};
+// writes a block
+var wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {
+    wbits(out, p++, final);
+    ++lf[256];
+    var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;
+    var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;
+    var _c = lc(dlt), lclt = _c.c, nlc = _c.n;
+    var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;
+    var lcfreq = new u16(19);
+    for (var i = 0; i < lclt.length; ++i)
+        ++lcfreq[lclt[i] & 31];
+    for (var i = 0; i < lcdt.length; ++i)
+        ++lcfreq[lcdt[i] & 31];
+    var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;
+    var nlcc = 19;
+    for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)
+        ;
+    var flen = (bl + 5) << 3;
+    var ftlen = clen(lf, flt) + clen(df, fdt) + eb;
+    var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];
+    if (bs >= 0 && flen <= ftlen && flen <= dtlen)
+        return wfblk(out, p, dat.subarray(bs, bs + bl));
+    var lm, ll, dm, dl;
+    wbits(out, p, 1 + (dtlen < ftlen)), p += 2;
+    if (dtlen < ftlen) {
+        lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;
+        var llm = hMap(lct, mlcb, 0);
+        wbits(out, p, nlc - 257);
+        wbits(out, p + 5, ndc - 1);
+        wbits(out, p + 10, nlcc - 4);
+        p += 14;
+        for (var i = 0; i < nlcc; ++i)
+            wbits(out, p + 3 * i, lct[clim[i]]);
+        p += 3 * nlcc;
+        var lcts = [lclt, lcdt];
+        for (var it = 0; it < 2; ++it) {
+            var clct = lcts[it];
+            for (var i = 0; i < clct.length; ++i) {
+                var len = clct[i] & 31;
+                wbits(out, p, llm[len]), p += lct[len];
+                if (len > 15)
+                    wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;
+            }
+        }
+    }
+    else {
+        lm = flm, ll = flt, dm = fdm, dl = fdt;
+    }
+    for (var i = 0; i < li; ++i) {
+        var sym = syms[i];
+        if (sym > 255) {
+            var len = (sym >> 18) & 31;
+            wbits16(out, p, lm[len + 257]), p += ll[len + 257];
+            if (len > 7)
+                wbits(out, p, (sym >> 23) & 31), p += fleb[len];
+            var dst = sym & 31;
+            wbits16(out, p, dm[dst]), p += dl[dst];
+            if (dst > 3)
+                wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];
+        }
+        else {
+            wbits16(out, p, lm[sym]), p += ll[sym];
+        }
+    }
+    wbits16(out, p, lm[256]);
+    return p + ll[256];
+};
+// deflate options (nice << 13) | chain
+var deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);
+// empty
+var et = /*#__PURE__*/ new u8(0);
+// compresses data into a raw DEFLATE buffer
+var dflt = function (dat, lvl, plvl, pre, post, st) {
+    var s = st.z || dat.length;
+    var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);
+    // writing to this writes to the output buffer
+    var w = o.subarray(pre, o.length - post);
+    var lst = st.l;
+    var pos = (st.r || 0) & 7;
+    if (lvl) {
+        if (pos)
+            w[0] = st.r >> 3;
+        var opt = deo[lvl - 1];
+        var n = opt >> 13, c = opt & 8191;
+        var msk_1 = (1 << plvl) - 1;
+        //    prev 2-byte val map    curr 2-byte val map
+        var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);
+        var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;
+        var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };
+        // 24576 is an arbitrary number of maximum symbols per block
+        // 424 buffer for last block
+        var syms = new i32(25000);
+        // length/literal freq   distance freq
+        var lf = new u16(288), df = new u16(32);
+        //  l/lcnt  exbits  index          l/lind  waitdx          blkpos
+        var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;
+        for (; i + 2 < s; ++i) {
+            // hash value
+            var hv = hsh(i);
+            // index mod 32768    previous index mod
+            var imod = i & 32767, pimod = head[hv];
+            prev[imod] = pimod;
+            head[hv] = imod;
+            // We always should modify head and prev, but only add symbols if
+            // this data is not yet processed ("wait" for wait index)
+            if (wi <= i) {
+                // bytes remaining
+                var rem = s - i;
+                if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {
+                    pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);
+                    li = lc_1 = eb = 0, bs = i;
+                    for (var j = 0; j < 286; ++j)
+                        lf[j] = 0;
+                    for (var j = 0; j < 30; ++j)
+                        df[j] = 0;
+                }
+                //  len    dist   chain
+                var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;
+                if (rem > 2 && hv == hsh(i - dif)) {
+                    var maxn = Math.min(n, rem) - 1;
+                    var maxd = Math.min(32767, i);
+                    // max possible length
+                    // not capped at dif because decompressors implement "rolling" index population
+                    var ml = Math.min(258, rem);
+                    while (dif <= maxd && --ch_1 && imod != pimod) {
+                        if (dat[i + l] == dat[i + l - dif]) {
+                            var nl = 0;
+                            for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)
+                                ;
+                            if (nl > l) {
+                                l = nl, d = dif;
+                                // break out early when we reach "nice" (we are satisfied enough)
+                                if (nl > maxn)
+                                    break;
+                                // now, find the rarest 2-byte sequence within this
+                                // length of literals and search for that instead.
+                                // Much faster than just using the start
+                                var mmd = Math.min(dif, nl - 2);
+                                var md = 0;
+                                for (var j = 0; j < mmd; ++j) {
+                                    var ti = i - dif + j & 32767;
+                                    var pti = prev[ti];
+                                    var cd = ti - pti & 32767;
+                                    if (cd > md)
+                                        md = cd, pimod = ti;
+                                }
+                            }
+                        }
+                        // check the previous match
+                        imod = pimod, pimod = prev[imod];
+                        dif += imod - pimod & 32767;
+                    }
+                }
+                // d will be nonzero only when a match was found
+                if (d) {
+                    // store both dist and len data in one int32
+                    // Make sure this is recognized as a len/dist with 28th bit (2^28)
+                    syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];
+                    var lin = revfl[l] & 31, din = revfd[d] & 31;
+                    eb += fleb[lin] + fdeb[din];
+                    ++lf[257 + lin];
+                    ++df[din];
+                    wi = i + l;
+                    ++lc_1;
+                }
+                else {
+                    syms[li++] = dat[i];
+                    ++lf[dat[i]];
+                }
+            }
+        }
+        for (i = Math.max(i, wi); i < s; ++i) {
+            syms[li++] = dat[i];
+            ++lf[dat[i]];
+        }
+        pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);
+        if (!lst) {
+            st.r = (pos & 7) | w[(pos / 8) | 0] << 3;
+            // shft(pos) now 1 less if pos & 7 != 0
+            pos -= 7;
+            st.h = head, st.p = prev, st.i = i, st.w = wi;
+        }
+    }
+    else {
+        for (var i = st.w || 0; i < s + lst; i += 65535) {
+            // end
+            var e = i + 65535;
+            if (e >= s) {
+                // write final block
+                w[(pos / 8) | 0] = lst;
+                e = s;
+            }
+            pos = wfblk(w, pos + 1, dat.subarray(i, e));
+        }
+        st.i = s;
+    }
+    return slc(o, 0, pre + shft(pos) + post);
+};
+// CRC32 table
+var crct = /*#__PURE__*/ (function () {
+    var t = new Int32Array(256);
+    for (var i = 0; i < 256; ++i) {
+        var c = i, k = 9;
+        while (--k)
+            c = ((c & 1) && -306674912) ^ (c >>> 1);
+        t[i] = c;
+    }
+    return t;
+})();
+// CRC32
+var crc = function () {
+    var c = -1;
+    return {
+        p: function (d) {
+            // closures have awful performance
+            var cr = c;
+            for (var i = 0; i < d.length; ++i)
+                cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);
+            c = cr;
+        },
+        d: function () { return ~c; }
+    };
+};
+// Adler32
+var adler = function () {
+    var a = 1, b = 0;
+    return {
+        p: function (d) {
+            // closures have awful performance
+            var n = a, m = b;
+            var l = d.length | 0;
+            for (var i = 0; i != l;) {
+                var e = Math.min(i + 2655, l);
+                for (; i < e; ++i)
+                    m += n += d[i];
+                n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);
+            }
+            a = n, b = m;
+        },
+        d: function () {
+            a %= 65521, b %= 65521;
+            return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);
+        }
+    };
+};
+;
+// deflate with opts
+var dopt = function (dat, opt, pre, post, st) {
+    if (!st) {
+        st = { l: 1 };
+        if (opt.dictionary) {
+            var dict = opt.dictionary.subarray(-32768);
+            var newDat = new u8(dict.length + dat.length);
+            newDat.set(dict);
+            newDat.set(dat, dict.length);
+            dat = newDat;
+            st.w = dict.length;
+        }
+    }
+    return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? (st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20) : (12 + opt.mem), pre, post, st);
+};
+// Walmart object spread
+var mrg = function (a, b) {
+    var o = {};
+    for (var k in a)
+        o[k] = a[k];
+    for (var k in b)
+        o[k] = b[k];
+    return o;
+};
+// worker clone
+// This is possibly the craziest part of the entire codebase, despite how simple it may seem.
+// The only parameter to this function is a closure that returns an array of variables outside of the function scope.
+// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.
+// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).
+// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.
+// This took me three weeks to figure out how to do.
+var wcln = function (fn, fnStr, td) {
+    var dt = fn();
+    var st = fn.toString();
+    var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\s+/g, '').split(',');
+    for (var i = 0; i < dt.length; ++i) {
+        var v = dt[i], k = ks[i];
+        if (typeof v == 'function') {
+            fnStr += ';' + k + '=';
+            var st_1 = v.toString();
+            if (v.prototype) {
+                // for global objects
+                if (st_1.indexOf('[native code]') != -1) {
+                    var spInd = st_1.indexOf(' ', 8) + 1;
+                    fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));
+                }
+                else {
+                    fnStr += st_1;
+                    for (var t in v.prototype)
+                        fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();
+                }
+            }
+            else
+                fnStr += st_1;
+        }
+        else
+            td[k] = v;
+    }
+    return fnStr;
+};
+var ch = [];
+// clone bufs
+var cbfs = function (v) {
+    var tl = [];
+    for (var k in v) {
+        if (v[k].buffer) {
+            tl.push((v[k] = new v[k].constructor(v[k])).buffer);
+        }
+    }
+    return tl;
+};
+// use a worker to execute code
+var wrkr = function (fns, init, id, cb) {
+    if (!ch[id]) {
+        var fnStr = '', td_1 = {}, m = fns.length - 1;
+        for (var i = 0; i < m; ++i)
+            fnStr = wcln(fns[i], fnStr, td_1);
+        ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };
+    }
+    var td = mrg({}, ch[id].e);
+    return wk(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);
+};
+// base async inflate fn
+var bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };
+var bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };
+// gzip extra
+var gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };
+// gunzip extra
+var guze = function () { return [gzs, gzl]; };
+// zlib extra
+var zle = function () { return [zlh, wbytes, adler]; };
+// unzlib extra
+var zule = function () { return [zls]; };
+// post buf
+var pbf = function (msg) { return postMessage(msg, [msg.buffer]); };
+// get opts
+var gopt = function (o) { return o && {
+    out: o.size && new u8(o.size),
+    dictionary: o.dictionary
+}; };
+// async helper
+var cbify = function (dat, opts, fns, init, id, cb) {
+    var w = wrkr(fns, init, id, function (err, dat) {
+        w.terminate();
+        cb(err, dat);
+    });
+    w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);
+    return function () { w.terminate(); };
+};
+// auto stream
+var astrm = function (strm) {
+    strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };
+    return function (ev) {
+        if (ev.data.length) {
+            strm.push(ev.data[0], ev.data[1]);
+            postMessage([ev.data[0].length]);
+        }
+        else
+            strm.flush();
+    };
+};
+// async stream attach
+var astrmify = function (fns, strm, opts, init, id, flush, ext) {
+    var t;
+    var w = wrkr(fns, init, id, function (err, dat) {
+        if (err)
+            w.terminate(), strm.ondata.call(strm, err);
+        else if (!Array.isArray(dat))
+            ext(dat);
+        else if (dat.length == 1) {
+            strm.queuedSize -= dat[0];
+            if (strm.ondrain)
+                strm.ondrain(dat[0]);
+        }
+        else {
+            if (dat[1])
+                w.terminate();
+            strm.ondata.call(strm, err, dat[0], dat[1]);
+        }
+    });
+    w.postMessage(opts);
+    strm.queuedSize = 0;
+    strm.push = function (d, f) {
+        if (!strm.ondata)
+            err(5);
+        if (t)
+            strm.ondata(err(4, 0, 1), null, !!f);
+        strm.queuedSize += d.length;
+        w.postMessage([d, t = f], [d.buffer]);
+    };
+    strm.terminate = function () { w.terminate(); };
+    if (flush) {
+        strm.flush = function () { w.postMessage([]); };
+    }
+};
+// read 2 bytes
+var b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };
+// read 4 bytes
+var b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };
+var b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };
+// write bytes
+var wbytes = function (d, b, v) {
+    for (; v; ++b)
+        d[b] = v, v >>>= 8;
+};
+// gzip header
+var gzh = function (c, o) {
+    var fn = o.filename;
+    c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix
+    if (o.mtime != 0)
+        wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));
+    if (fn) {
+        c[3] = 8;
+        for (var i = 0; i <= fn.length; ++i)
+            c[i + 10] = fn.charCodeAt(i);
+    }
+};
+// gzip footer: -8 to -4 = CRC, -4 to -0 is length
+// gzip start
+var gzs = function (d) {
+    if (d[0] != 31 || d[1] != 139 || d[2] != 8)
+        err(6, 'invalid gzip data');
+    var flg = d[3];
+    var st = 10;
+    if (flg & 4)
+        st += (d[10] | d[11] << 8) + 2;
+    for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])
+        ;
+    return st + (flg & 2);
+};
+// gzip length
+var gzl = function (d) {
+    var l = d.length;
+    return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;
+};
+// gzip header length
+var gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };
+// zlib header
+var zlh = function (c, o) {
+    var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;
+    c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);
+    c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;
+    if (o.dictionary) {
+        var h = adler();
+        h.p(o.dictionary);
+        wbytes(c, 2, h.d());
+    }
+};
+// zlib start
+var zls = function (d, dict) {
+    if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))
+        err(6, 'invalid zlib data');
+    if ((d[1] >> 5 & 1) == +!dict)
+        err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');
+    return (d[1] >> 3 & 4) + 2;
+};
+function StrmOpt(opts, cb) {
+    if (typeof opts == 'function')
+        cb = opts, opts = {};
+    this.ondata = cb;
+    return opts;
+}
+/**
+ * Streaming DEFLATE compression
+ */
+var Deflate = /*#__PURE__*/ (function () {
+    function Deflate(opts, cb) {
+        if (typeof opts == 'function')
+            cb = opts, opts = {};
+        this.ondata = cb;
+        this.o = opts || {};
+        this.s = { l: 0, i: 32768, w: 32768, z: 32768 };
+        // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev
+        // 98304 = 32768 (lookback) + 65536 (common chunk size)
+        this.b = new u8(98304);
+        if (this.o.dictionary) {
+            var dict = this.o.dictionary.subarray(-32768);
+            this.b.set(dict, 32768 - dict.length);
+            this.s.i = 32768 - dict.length;
+        }
+    }
+    Deflate.prototype.p = function (c, f) {
+        this.ondata(dopt(c, this.o, 0, 0, this.s), f);
+    };
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    Deflate.prototype.push = function (chunk, final) {
+        if (!this.ondata)
+            err(5);
+        if (this.s.l)
+            err(4);
+        var endLen = chunk.length + this.s.z;
+        if (endLen > this.b.length) {
+            if (endLen > 2 * this.b.length - 32768) {
+                var newBuf = new u8(endLen & -32768);
+                newBuf.set(this.b.subarray(0, this.s.z));
+                this.b = newBuf;
+            }
+            var split = this.b.length - this.s.z;
+            this.b.set(chunk.subarray(0, split), this.s.z);
+            this.s.z = this.b.length;
+            this.p(this.b, false);
+            this.b.set(this.b.subarray(-32768));
+            this.b.set(chunk.subarray(split), 32768);
+            this.s.z = chunk.length - split + 32768;
+            this.s.i = 32766, this.s.w = 32768;
+        }
+        else {
+            this.b.set(chunk, this.s.z);
+            this.s.z += chunk.length;
+        }
+        this.s.l = final & 1;
+        if (this.s.z > this.s.w + 8191 || final) {
+            this.p(this.b, final || false);
+            this.s.w = this.s.i, this.s.i -= 2;
+        }
+    };
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * deflated output for small inputs.
+     */
+    Deflate.prototype.flush = function () {
+        if (!this.ondata)
+            err(5);
+        if (this.s.l)
+            err(4);
+        this.p(this.b, false);
+        this.s.w = this.s.i, this.s.i -= 2;
+    };
+    return Deflate;
+}());
+export { Deflate };
+/**
+ * Asynchronous streaming DEFLATE compression
+ */
+var AsyncDeflate = /*#__PURE__*/ (function () {
+    function AsyncDeflate(opts, cb) {
+        astrmify([
+            bDflt,
+            function () { return [astrm, Deflate]; }
+        ], this, StrmOpt.call(this, opts, cb), function (ev) {
+            var strm = new Deflate(ev.data);
+            onmessage = astrm(strm);
+        }, 6, 1);
+    }
+    return AsyncDeflate;
+}());
+export { AsyncDeflate };
+export function deflate(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    return cbify(data, opts, [
+        bDflt,
+    ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);
+}
+/**
+ * Compresses data with DEFLATE without any wrapper
+ * @param data The data to compress
+ * @param opts The compression options
+ * @returns The deflated version of the data
+ */
+export function deflateSync(data, opts) {
+    return dopt(data, opts || {}, 0, 0);
+}
+/**
+ * Streaming DEFLATE decompression
+ */
+var Inflate = /*#__PURE__*/ (function () {
+    function Inflate(opts, cb) {
+        // no StrmOpt here to avoid adding to workerizer
+        if (typeof opts == 'function')
+            cb = opts, opts = {};
+        this.ondata = cb;
+        var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);
+        this.s = { i: 0, b: dict ? dict.length : 0 };
+        this.o = new u8(32768);
+        this.p = new u8(0);
+        if (dict)
+            this.o.set(dict);
+    }
+    Inflate.prototype.e = function (c) {
+        if (!this.ondata)
+            err(5);
+        if (this.d)
+            err(4);
+        if (!this.p.length)
+            this.p = c;
+        else if (c.length) {
+            var n = new u8(this.p.length + c.length);
+            n.set(this.p), n.set(c, this.p.length), this.p = n;
+        }
+    };
+    Inflate.prototype.c = function (final) {
+        this.s.i = +(this.d = final || false);
+        var bts = this.s.b;
+        var dt = inflt(this.p, this.s, this.o);
+        this.ondata(slc(dt, bts, this.s.b), this.d);
+        this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;
+        this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;
+    };
+    /**
+     * Pushes a chunk to be inflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the final chunk
+     */
+    Inflate.prototype.push = function (chunk, final) {
+        this.e(chunk), this.c(final);
+    };
+    return Inflate;
+}());
+export { Inflate };
+/**
+ * Asynchronous streaming DEFLATE decompression
+ */
+var AsyncInflate = /*#__PURE__*/ (function () {
+    function AsyncInflate(opts, cb) {
+        astrmify([
+            bInflt,
+            function () { return [astrm, Inflate]; }
+        ], this, StrmOpt.call(this, opts, cb), function (ev) {
+            var strm = new Inflate(ev.data);
+            onmessage = astrm(strm);
+        }, 7, 0);
+    }
+    return AsyncInflate;
+}());
+export { AsyncInflate };
+export function inflate(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    return cbify(data, opts, [
+        bInflt
+    ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);
+}
+/**
+ * Expands DEFLATE data with no wrapper
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+export function inflateSync(data, opts) {
+    return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);
+}
+// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.
+/**
+ * Streaming GZIP compression
+ */
+var Gzip = /*#__PURE__*/ (function () {
+    function Gzip(opts, cb) {
+        this.c = crc();
+        this.l = 0;
+        this.v = 1;
+        Deflate.call(this, opts, cb);
+    }
+    /**
+     * Pushes a chunk to be GZIPped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    Gzip.prototype.push = function (chunk, final) {
+        this.c.p(chunk);
+        this.l += chunk.length;
+        Deflate.prototype.push.call(this, chunk, final);
+    };
+    Gzip.prototype.p = function (c, f) {
+        var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);
+        if (this.v)
+            gzh(raw, this.o), this.v = 0;
+        if (f)
+            wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);
+        this.ondata(raw, f);
+    };
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * GZIPped output for small inputs.
+     */
+    Gzip.prototype.flush = function () {
+        Deflate.prototype.flush.call(this);
+    };
+    return Gzip;
+}());
+export { Gzip };
+/**
+ * Asynchronous streaming GZIP compression
+ */
+var AsyncGzip = /*#__PURE__*/ (function () {
+    function AsyncGzip(opts, cb) {
+        astrmify([
+            bDflt,
+            gze,
+            function () { return [astrm, Deflate, Gzip]; }
+        ], this, StrmOpt.call(this, opts, cb), function (ev) {
+            var strm = new Gzip(ev.data);
+            onmessage = astrm(strm);
+        }, 8, 1);
+    }
+    return AsyncGzip;
+}());
+export { AsyncGzip };
+export function gzip(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    return cbify(data, opts, [
+        bDflt,
+        gze,
+        function () { return [gzipSync]; }
+    ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);
+}
+/**
+ * Compresses data with GZIP
+ * @param data The data to compress
+ * @param opts The compression options
+ * @returns The gzipped version of the data
+ */
+export function gzipSync(data, opts) {
+    if (!opts)
+        opts = {};
+    var c = crc(), l = data.length;
+    c.p(data);
+    var d = dopt(data, opts, gzhl(opts), 8), s = d.length;
+    return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;
+}
+/**
+ * Streaming single or multi-member GZIP decompression
+ */
+var Gunzip = /*#__PURE__*/ (function () {
+    function Gunzip(opts, cb) {
+        this.v = 1;
+        this.r = 0;
+        Inflate.call(this, opts, cb);
+    }
+    /**
+     * Pushes a chunk to be GUNZIPped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    Gunzip.prototype.push = function (chunk, final) {
+        Inflate.prototype.e.call(this, chunk);
+        this.r += chunk.length;
+        if (this.v) {
+            var p = this.p.subarray(this.v - 1);
+            var s = p.length > 3 ? gzs(p) : 4;
+            if (s > p.length) {
+                if (!final)
+                    return;
+            }
+            else if (this.v > 1 && this.onmember) {
+                this.onmember(this.r - p.length);
+            }
+            this.p = p.subarray(s), this.v = 0;
+        }
+        // necessary to prevent TS from using the closure value
+        // This allows for workerization to function correctly
+        Inflate.prototype.c.call(this, final);
+        // process concatenated GZIP
+        if (this.s.f && !this.s.l && !final) {
+            this.v = shft(this.s.p) + 9;
+            this.s = { i: 0 };
+            this.o = new u8(0);
+            this.push(new u8(0), final);
+        }
+    };
+    return Gunzip;
+}());
+export { Gunzip };
+/**
+ * Asynchronous streaming single or multi-member GZIP decompression
+ */
+var AsyncGunzip = /*#__PURE__*/ (function () {
+    function AsyncGunzip(opts, cb) {
+        var _this = this;
+        astrmify([
+            bInflt,
+            guze,
+            function () { return [astrm, Inflate, Gunzip]; }
+        ], this, StrmOpt.call(this, opts, cb), function (ev) {
+            var strm = new Gunzip(ev.data);
+            strm.onmember = function (offset) { return postMessage(offset); };
+            onmessage = astrm(strm);
+        }, 9, 0, function (offset) { return _this.onmember && _this.onmember(offset); });
+    }
+    return AsyncGunzip;
+}());
+export { AsyncGunzip };
+export function gunzip(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    return cbify(data, opts, [
+        bInflt,
+        guze,
+        function () { return [gunzipSync]; }
+    ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);
+}
+/**
+ * Expands GZIP data
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+export function gunzipSync(data, opts) {
+    var st = gzs(data);
+    if (st + 8 > data.length)
+        err(6, 'invalid gzip data');
+    return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);
+}
+/**
+ * Streaming Zlib compression
+ */
+var Zlib = /*#__PURE__*/ (function () {
+    function Zlib(opts, cb) {
+        this.c = adler();
+        this.v = 1;
+        Deflate.call(this, opts, cb);
+    }
+    /**
+     * Pushes a chunk to be zlibbed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    Zlib.prototype.push = function (chunk, final) {
+        this.c.p(chunk);
+        Deflate.prototype.push.call(this, chunk, final);
+    };
+    Zlib.prototype.p = function (c, f) {
+        var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);
+        if (this.v)
+            zlh(raw, this.o), this.v = 0;
+        if (f)
+            wbytes(raw, raw.length - 4, this.c.d());
+        this.ondata(raw, f);
+    };
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * zlibbed output for small inputs.
+     */
+    Zlib.prototype.flush = function () {
+        Deflate.prototype.flush.call(this);
+    };
+    return Zlib;
+}());
+export { Zlib };
+/**
+ * Asynchronous streaming Zlib compression
+ */
+var AsyncZlib = /*#__PURE__*/ (function () {
+    function AsyncZlib(opts, cb) {
+        astrmify([
+            bDflt,
+            zle,
+            function () { return [astrm, Deflate, Zlib]; }
+        ], this, StrmOpt.call(this, opts, cb), function (ev) {
+            var strm = new Zlib(ev.data);
+            onmessage = astrm(strm);
+        }, 10, 1);
+    }
+    return AsyncZlib;
+}());
+export { AsyncZlib };
+export function zlib(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    return cbify(data, opts, [
+        bDflt,
+        zle,
+        function () { return [zlibSync]; }
+    ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);
+}
+/**
+ * Compress data with Zlib
+ * @param data The data to compress
+ * @param opts The compression options
+ * @returns The zlib-compressed version of the data
+ */
+export function zlibSync(data, opts) {
+    if (!opts)
+        opts = {};
+    var a = adler();
+    a.p(data);
+    var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);
+    return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;
+}
+/**
+ * Streaming Zlib decompression
+ */
+var Unzlib = /*#__PURE__*/ (function () {
+    function Unzlib(opts, cb) {
+        Inflate.call(this, opts, cb);
+        this.v = opts && opts.dictionary ? 2 : 1;
+    }
+    /**
+     * Pushes a chunk to be unzlibbed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    Unzlib.prototype.push = function (chunk, final) {
+        Inflate.prototype.e.call(this, chunk);
+        if (this.v) {
+            if (this.p.length < 6 && !final)
+                return;
+            this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;
+        }
+        if (final) {
+            if (this.p.length < 4)
+                err(6, 'invalid zlib data');
+            this.p = this.p.subarray(0, -4);
+        }
+        // necessary to prevent TS from using the closure value
+        // This allows for workerization to function correctly
+        Inflate.prototype.c.call(this, final);
+    };
+    return Unzlib;
+}());
+export { Unzlib };
+/**
+ * Asynchronous streaming Zlib decompression
+ */
+var AsyncUnzlib = /*#__PURE__*/ (function () {
+    function AsyncUnzlib(opts, cb) {
+        astrmify([
+            bInflt,
+            zule,
+            function () { return [astrm, Inflate, Unzlib]; }
+        ], this, StrmOpt.call(this, opts, cb), function (ev) {
+            var strm = new Unzlib(ev.data);
+            onmessage = astrm(strm);
+        }, 11, 0);
+    }
+    return AsyncUnzlib;
+}());
+export { AsyncUnzlib };
+export function unzlib(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    return cbify(data, opts, [
+        bInflt,
+        zule,
+        function () { return [unzlibSync]; }
+    ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);
+}
+/**
+ * Expands Zlib data
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+export function unzlibSync(data, opts) {
+    return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);
+}
+// Default algorithm for compression (used because having a known output size allows faster decompression)
+export { gzip as compress, AsyncGzip as AsyncCompress };
+export { gzipSync as compressSync, Gzip as Compress };
+/**
+ * Streaming GZIP, Zlib, or raw DEFLATE decompression
+ */
+var Decompress = /*#__PURE__*/ (function () {
+    function Decompress(opts, cb) {
+        this.o = StrmOpt.call(this, opts, cb) || {};
+        this.G = Gunzip;
+        this.I = Inflate;
+        this.Z = Unzlib;
+    }
+    // init substream
+    // overriden by AsyncDecompress
+    Decompress.prototype.i = function () {
+        var _this = this;
+        this.s.ondata = function (dat, final) {
+            _this.ondata(dat, final);
+        };
+    };
+    /**
+     * Pushes a chunk to be decompressed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    Decompress.prototype.push = function (chunk, final) {
+        if (!this.ondata)
+            err(5);
+        if (!this.s) {
+            if (this.p && this.p.length) {
+                var n = new u8(this.p.length + chunk.length);
+                n.set(this.p), n.set(chunk, this.p.length);
+            }
+            else
+                this.p = chunk;
+            if (this.p.length > 2) {
+                this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)
+                    ? new this.G(this.o)
+                    : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))
+                        ? new this.I(this.o)
+                        : new this.Z(this.o);
+                this.i();
+                this.s.push(this.p, final);
+                this.p = null;
+            }
+        }
+        else
+            this.s.push(chunk, final);
+    };
+    return Decompress;
+}());
+export { Decompress };
+/**
+ * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression
+ */
+var AsyncDecompress = /*#__PURE__*/ (function () {
+    function AsyncDecompress(opts, cb) {
+        Decompress.call(this, opts, cb);
+        this.queuedSize = 0;
+        this.G = AsyncGunzip;
+        this.I = AsyncInflate;
+        this.Z = AsyncUnzlib;
+    }
+    AsyncDecompress.prototype.i = function () {
+        var _this = this;
+        this.s.ondata = function (err, dat, final) {
+            _this.ondata(err, dat, final);
+        };
+        this.s.ondrain = function (size) {
+            _this.queuedSize -= size;
+            if (_this.ondrain)
+                _this.ondrain(size);
+        };
+    };
+    /**
+     * Pushes a chunk to be decompressed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    AsyncDecompress.prototype.push = function (chunk, final) {
+        this.queuedSize += chunk.length;
+        Decompress.prototype.push.call(this, chunk, final);
+    };
+    return AsyncDecompress;
+}());
+export { AsyncDecompress };
+export function decompress(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    return (data[0] == 31 && data[1] == 139 && data[2] == 8)
+        ? gunzip(data, opts, cb)
+        : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))
+            ? inflate(data, opts, cb)
+            : unzlib(data, opts, cb);
+}
+/**
+ * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+export function decompressSync(data, opts) {
+    return (data[0] == 31 && data[1] == 139 && data[2] == 8)
+        ? gunzipSync(data, opts)
+        : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))
+            ? inflateSync(data, opts)
+            : unzlibSync(data, opts);
+}
+// flatten a directory structure
+var fltn = function (d, p, t, o) {
+    for (var k in d) {
+        var val = d[k], n = p + k, op = o;
+        if (Array.isArray(val))
+            op = mrg(o, val[1]), val = val[0];
+        if (val instanceof u8)
+            t[n] = [val, op];
+        else {
+            t[n += '/'] = [new u8(0), op];
+            fltn(val, n, t, o);
+        }
+    }
+};
+// text encoder
+var te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();
+// text decoder
+var td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();
+// text decoder stream
+var tds = 0;
+try {
+    td.decode(et, { stream: true });
+    tds = 1;
+}
+catch (e) { }
+// decode UTF8
+var dutf8 = function (d) {
+    for (var r = '', i = 0;;) {
+        var c = d[i++];
+        var eb = (c > 127) + (c > 223) + (c > 239);
+        if (i + eb > d.length)
+            return { s: r, r: slc(d, i - 1) };
+        if (!eb)
+            r += String.fromCharCode(c);
+        else if (eb == 3) {
+            c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,
+                r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));
+        }
+        else if (eb & 1)
+            r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));
+        else
+            r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));
+    }
+};
+/**
+ * Streaming UTF-8 decoding
+ */
+var DecodeUTF8 = /*#__PURE__*/ (function () {
+    /**
+     * Creates a UTF-8 decoding stream
+     * @param cb The callback to call whenever data is decoded
+     */
+    function DecodeUTF8(cb) {
+        this.ondata = cb;
+        if (tds)
+            this.t = new TextDecoder();
+        else
+            this.p = et;
+    }
+    /**
+     * Pushes a chunk to be decoded from UTF-8 binary
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    DecodeUTF8.prototype.push = function (chunk, final) {
+        if (!this.ondata)
+            err(5);
+        final = !!final;
+        if (this.t) {
+            this.ondata(this.t.decode(chunk, { stream: true }), final);
+            if (final) {
+                if (this.t.decode().length)
+                    err(8);
+                this.t = null;
+            }
+            return;
+        }
+        if (!this.p)
+            err(4);
+        var dat = new u8(this.p.length + chunk.length);
+        dat.set(this.p);
+        dat.set(chunk, this.p.length);
+        var _a = dutf8(dat), s = _a.s, r = _a.r;
+        if (final) {
+            if (r.length)
+                err(8);
+            this.p = null;
+        }
+        else
+            this.p = r;
+        this.ondata(s, final);
+    };
+    return DecodeUTF8;
+}());
+export { DecodeUTF8 };
+/**
+ * Streaming UTF-8 encoding
+ */
+var EncodeUTF8 = /*#__PURE__*/ (function () {
+    /**
+     * Creates a UTF-8 decoding stream
+     * @param cb The callback to call whenever data is encoded
+     */
+    function EncodeUTF8(cb) {
+        this.ondata = cb;
+    }
+    /**
+     * Pushes a chunk to be encoded to UTF-8
+     * @param chunk The string data to push
+     * @param final Whether this is the last chunk
+     */
+    EncodeUTF8.prototype.push = function (chunk, final) {
+        if (!this.ondata)
+            err(5);
+        if (this.d)
+            err(4);
+        this.ondata(strToU8(chunk), this.d = final || false);
+    };
+    return EncodeUTF8;
+}());
+export { EncodeUTF8 };
+/**
+ * Converts a string into a Uint8Array for use with compression/decompression methods
+ * @param str The string to encode
+ * @param latin1 Whether or not to interpret the data as Latin-1. This should
+ *               not need to be true unless decoding a binary string.
+ * @returns The string encoded in UTF-8/Latin-1 binary
+ */
+export function strToU8(str, latin1) {
+    if (latin1) {
+        var ar_1 = new u8(str.length);
+        for (var i = 0; i < str.length; ++i)
+            ar_1[i] = str.charCodeAt(i);
+        return ar_1;
+    }
+    if (te)
+        return te.encode(str);
+    var l = str.length;
+    var ar = new u8(str.length + (str.length >> 1));
+    var ai = 0;
+    var w = function (v) { ar[ai++] = v; };
+    for (var i = 0; i < l; ++i) {
+        if (ai + 5 > ar.length) {
+            var n = new u8(ai + 8 + ((l - i) << 1));
+            n.set(ar);
+            ar = n;
+        }
+        var c = str.charCodeAt(i);
+        if (c < 128 || latin1)
+            w(c);
+        else if (c < 2048)
+            w(192 | (c >> 6)), w(128 | (c & 63));
+        else if (c > 55295 && c < 57344)
+            c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),
+                w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));
+        else
+            w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));
+    }
+    return slc(ar, 0, ai);
+}
+/**
+ * Converts a Uint8Array to a string
+ * @param dat The data to decode to string
+ * @param latin1 Whether or not to interpret the data as Latin-1. This should
+ *               not need to be true unless encoding to binary string.
+ * @returns The original UTF-8/Latin-1 string
+ */
+export function strFromU8(dat, latin1) {
+    if (latin1) {
+        var r = '';
+        for (var i = 0; i < dat.length; i += 16384)
+            r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));
+        return r;
+    }
+    else if (td) {
+        return td.decode(dat);
+    }
+    else {
+        var _a = dutf8(dat), s = _a.s, r = _a.r;
+        if (r.length)
+            err(8);
+        return s;
+    }
+}
+;
+// deflate bit flag
+var dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };
+// skip local zip header
+var slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };
+// read zip header
+var zh = function (d, b, z) {
+    var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);
+    var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];
+    return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];
+};
+// read zip64 extra field
+var z64e = function (d, b) {
+    for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))
+        ;
+    return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];
+};
+// extra field length
+var exfl = function (ex) {
+    var le = 0;
+    if (ex) {
+        for (var k in ex) {
+            var l = ex[k].length;
+            if (l > 65535)
+                err(9);
+            le += l + 4;
+        }
+    }
+    return le;
+};
+// write zip header
+var wzh = function (d, b, f, fn, u, c, ce, co) {
+    var fl = fn.length, ex = f.extra, col = co && co.length;
+    var exl = exfl(ex);
+    wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;
+    if (ce != null)
+        d[b++] = 20, d[b++] = f.os;
+    d[b] = 20, b += 2; // spec compliance? what's that?
+    d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;
+    d[b++] = f.compression & 255, d[b++] = f.compression >> 8;
+    var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;
+    if (y < 0 || y > 119)
+        err(10);
+    wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;
+    if (c != -1) {
+        wbytes(d, b, f.crc);
+        wbytes(d, b + 4, c < 0 ? -c - 2 : c);
+        wbytes(d, b + 8, f.size);
+    }
+    wbytes(d, b + 12, fl);
+    wbytes(d, b + 14, exl), b += 16;
+    if (ce != null) {
+        wbytes(d, b, col);
+        wbytes(d, b + 6, f.attrs);
+        wbytes(d, b + 10, ce), b += 14;
+    }
+    d.set(fn, b);
+    b += fl;
+    if (exl) {
+        for (var k in ex) {
+            var exf = ex[k], l = exf.length;
+            wbytes(d, b, +k);
+            wbytes(d, b + 2, l);
+            d.set(exf, b + 4), b += 4 + l;
+        }
+    }
+    if (col)
+        d.set(co, b), b += col;
+    return b;
+};
+// write zip footer (end of central directory)
+var wzf = function (o, b, c, d, e) {
+    wbytes(o, b, 0x6054B50); // skip disk
+    wbytes(o, b + 8, c);
+    wbytes(o, b + 10, c);
+    wbytes(o, b + 12, d);
+    wbytes(o, b + 16, e);
+};
+/**
+ * A pass-through stream to keep data uncompressed in a ZIP archive.
+ */
+var ZipPassThrough = /*#__PURE__*/ (function () {
+    /**
+     * Creates a pass-through stream that can be added to ZIP archives
+     * @param filename The filename to associate with this data stream
+     */
+    function ZipPassThrough(filename) {
+        this.filename = filename;
+        this.c = crc();
+        this.size = 0;
+        this.compression = 0;
+    }
+    /**
+     * Processes a chunk and pushes to the output stream. You can override this
+     * method in a subclass for custom behavior, but by default this passes
+     * the data through. You must call this.ondata(err, chunk, final) at some
+     * point in this method.
+     * @param chunk The chunk to process
+     * @param final Whether this is the last chunk
+     */
+    ZipPassThrough.prototype.process = function (chunk, final) {
+        this.ondata(null, chunk, final);
+    };
+    /**
+     * Pushes a chunk to be added. If you are subclassing this with a custom
+     * compression algorithm, note that you must push data from the source
+     * file only, pre-compression.
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    ZipPassThrough.prototype.push = function (chunk, final) {
+        if (!this.ondata)
+            err(5);
+        this.c.p(chunk);
+        this.size += chunk.length;
+        if (final)
+            this.crc = this.c.d();
+        this.process(chunk, final || false);
+    };
+    return ZipPassThrough;
+}());
+export { ZipPassThrough };
+// I don't extend because TypeScript extension adds 1kB of runtime bloat
+/**
+ * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate
+ * for better performance
+ */
+var ZipDeflate = /*#__PURE__*/ (function () {
+    /**
+     * Creates a DEFLATE stream that can be added to ZIP archives
+     * @param filename The filename to associate with this data stream
+     * @param opts The compression options
+     */
+    function ZipDeflate(filename, opts) {
+        var _this = this;
+        if (!opts)
+            opts = {};
+        ZipPassThrough.call(this, filename);
+        this.d = new Deflate(opts, function (dat, final) {
+            _this.ondata(null, dat, final);
+        });
+        this.compression = 8;
+        this.flag = dbf(opts.level);
+    }
+    ZipDeflate.prototype.process = function (chunk, final) {
+        try {
+            this.d.push(chunk, final);
+        }
+        catch (e) {
+            this.ondata(e, null, final);
+        }
+    };
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    ZipDeflate.prototype.push = function (chunk, final) {
+        ZipPassThrough.prototype.push.call(this, chunk, final);
+    };
+    return ZipDeflate;
+}());
+export { ZipDeflate };
+/**
+ * Asynchronous streaming DEFLATE compression for ZIP archives
+ */
+var AsyncZipDeflate = /*#__PURE__*/ (function () {
+    /**
+     * Creates an asynchronous DEFLATE stream that can be added to ZIP archives
+     * @param filename The filename to associate with this data stream
+     * @param opts The compression options
+     */
+    function AsyncZipDeflate(filename, opts) {
+        var _this = this;
+        if (!opts)
+            opts = {};
+        ZipPassThrough.call(this, filename);
+        this.d = new AsyncDeflate(opts, function (err, dat, final) {
+            _this.ondata(err, dat, final);
+        });
+        this.compression = 8;
+        this.flag = dbf(opts.level);
+        this.terminate = this.d.terminate;
+    }
+    AsyncZipDeflate.prototype.process = function (chunk, final) {
+        this.d.push(chunk, final);
+    };
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    AsyncZipDeflate.prototype.push = function (chunk, final) {
+        ZipPassThrough.prototype.push.call(this, chunk, final);
+    };
+    return AsyncZipDeflate;
+}());
+export { AsyncZipDeflate };
+// TODO: Better tree shaking
+/**
+ * A zippable archive to which files can incrementally be added
+ */
+var Zip = /*#__PURE__*/ (function () {
+    /**
+     * Creates an empty ZIP archive to which files can be added
+     * @param cb The callback to call whenever data for the generated ZIP archive
+     *           is available
+     */
+    function Zip(cb) {
+        this.ondata = cb;
+        this.u = [];
+        this.d = 1;
+    }
+    /**
+     * Adds a file to the ZIP archive
+     * @param file The file stream to add
+     */
+    Zip.prototype.add = function (file) {
+        var _this = this;
+        if (!this.ondata)
+            err(5);
+        // finishing or finished
+        if (this.d & 2)
+            this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);
+        else {
+            var f = strToU8(file.filename), fl_1 = f.length;
+            var com = file.comment, o = com && strToU8(com);
+            var u = fl_1 != file.filename.length || (o && (com.length != o.length));
+            var hl_1 = fl_1 + exfl(file.extra) + 30;
+            if (fl_1 > 65535)
+                this.ondata(err(11, 0, 1), null, false);
+            var header = new u8(hl_1);
+            wzh(header, 0, file, f, u, -1);
+            var chks_1 = [header];
+            var pAll_1 = function () {
+                for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {
+                    var chk = chks_2[_i];
+                    _this.ondata(null, chk, false);
+                }
+                chks_1 = [];
+            };
+            var tr_1 = this.d;
+            this.d = 0;
+            var ind_1 = this.u.length;
+            var uf_1 = mrg(file, {
+                f: f,
+                u: u,
+                o: o,
+                t: function () {
+                    if (file.terminate)
+                        file.terminate();
+                },
+                r: function () {
+                    pAll_1();
+                    if (tr_1) {
+                        var nxt = _this.u[ind_1 + 1];
+                        if (nxt)
+                            nxt.r();
+                        else
+                            _this.d = 1;
+                    }
+                    tr_1 = 1;
+                }
+            });
+            var cl_1 = 0;
+            file.ondata = function (err, dat, final) {
+                if (err) {
+                    _this.ondata(err, dat, final);
+                    _this.terminate();
+                }
+                else {
+                    cl_1 += dat.length;
+                    chks_1.push(dat);
+                    if (final) {
+                        var dd = new u8(16);
+                        wbytes(dd, 0, 0x8074B50);
+                        wbytes(dd, 4, file.crc);
+                        wbytes(dd, 8, cl_1);
+                        wbytes(dd, 12, file.size);
+                        chks_1.push(dd);
+                        uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;
+                        if (tr_1)
+                            uf_1.r();
+                        tr_1 = 1;
+                    }
+                    else if (tr_1)
+                        pAll_1();
+                }
+            };
+            this.u.push(uf_1);
+        }
+    };
+    /**
+     * Ends the process of adding files and prepares to emit the final chunks.
+     * This *must* be called after adding all desired files for the resulting
+     * ZIP file to work properly.
+     */
+    Zip.prototype.end = function () {
+        var _this = this;
+        if (this.d & 2) {
+            this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);
+            return;
+        }
+        if (this.d)
+            this.e();
+        else
+            this.u.push({
+                r: function () {
+                    if (!(_this.d & 1))
+                        return;
+                    _this.u.splice(-1, 1);
+                    _this.e();
+                },
+                t: function () { }
+            });
+        this.d = 3;
+    };
+    Zip.prototype.e = function () {
+        var bt = 0, l = 0, tl = 0;
+        for (var _i = 0, _a = this.u; _i < _a.length; _i++) {
+            var f = _a[_i];
+            tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);
+        }
+        var out = new u8(tl + 22);
+        for (var _b = 0, _c = this.u; _b < _c.length; _b++) {
+            var f = _c[_b];
+            wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);
+            bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;
+        }
+        wzf(out, bt, this.u.length, tl, l);
+        this.ondata(null, out, true);
+        this.d = 2;
+    };
+    /**
+     * A method to terminate any internal workers used by the stream. Subsequent
+     * calls to add() will fail.
+     */
+    Zip.prototype.terminate = function () {
+        for (var _i = 0, _a = this.u; _i < _a.length; _i++) {
+            var f = _a[_i];
+            f.t();
+        }
+        this.d = 2;
+    };
+    return Zip;
+}());
+export { Zip };
+export function zip(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    var r = {};
+    fltn(data, '', r, opts);
+    var k = Object.keys(r);
+    var lft = k.length, o = 0, tot = 0;
+    var slft = lft, files = new Array(lft);
+    var term = [];
+    var tAll = function () {
+        for (var i = 0; i < term.length; ++i)
+            term[i]();
+    };
+    var cbd = function (a, b) {
+        mt(function () { cb(a, b); });
+    };
+    mt(function () { cbd = cb; });
+    var cbf = function () {
+        var out = new u8(tot + 22), oe = o, cdl = tot - o;
+        tot = 0;
+        for (var i = 0; i < slft; ++i) {
+            var f = files[i];
+            try {
+                var l = f.c.length;
+                wzh(out, tot, f, f.f, f.u, l);
+                var badd = 30 + f.f.length + exfl(f.extra);
+                var loc = tot + badd;
+                out.set(f.c, loc);
+                wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;
+            }
+            catch (e) {
+                return cbd(e, null);
+            }
+        }
+        wzf(out, o, files.length, cdl, oe);
+        cbd(null, out);
+    };
+    if (!lft)
+        cbf();
+    var _loop_1 = function (i) {
+        var fn = k[i];
+        var _a = r[fn], file = _a[0], p = _a[1];
+        var c = crc(), size = file.length;
+        c.p(file);
+        var f = strToU8(fn), s = f.length;
+        var com = p.comment, m = com && strToU8(com), ms = m && m.length;
+        var exl = exfl(p.extra);
+        var compression = p.level == 0 ? 0 : 8;
+        var cbl = function (e, d) {
+            if (e) {
+                tAll();
+                cbd(e, null);
+            }
+            else {
+                var l = d.length;
+                files[i] = mrg(p, {
+                    size: size,
+                    crc: c.d(),
+                    c: d,
+                    f: f,
+                    m: m,
+                    u: s != fn.length || (m && (com.length != ms)),
+                    compression: compression
+                });
+                o += 30 + s + exl + l;
+                tot += 76 + 2 * (s + exl) + (ms || 0) + l;
+                if (!--lft)
+                    cbf();
+            }
+        };
+        if (s > 65535)
+            cbl(err(11, 0, 1), null);
+        if (!compression)
+            cbl(null, file);
+        else if (size < 160000) {
+            try {
+                cbl(null, deflateSync(file, p));
+            }
+            catch (e) {
+                cbl(e, null);
+            }
+        }
+        else
+            term.push(deflate(file, p, cbl));
+    };
+    // Cannot use lft because it can decrease
+    for (var i = 0; i < slft; ++i) {
+        _loop_1(i);
+    }
+    return tAll;
+}
+/**
+ * Synchronously creates a ZIP file. Prefer using `zip` for better performance
+ * with more than one file.
+ * @param data The directory structure for the ZIP archive
+ * @param opts The main options, merged with per-file options
+ * @returns The generated ZIP archive
+ */
+export function zipSync(data, opts) {
+    if (!opts)
+        opts = {};
+    var r = {};
+    var files = [];
+    fltn(data, '', r, opts);
+    var o = 0;
+    var tot = 0;
+    for (var fn in r) {
+        var _a = r[fn], file = _a[0], p = _a[1];
+        var compression = p.level == 0 ? 0 : 8;
+        var f = strToU8(fn), s = f.length;
+        var com = p.comment, m = com && strToU8(com), ms = m && m.length;
+        var exl = exfl(p.extra);
+        if (s > 65535)
+            err(11);
+        var d = compression ? deflateSync(file, p) : file, l = d.length;
+        var c = crc();
+        c.p(file);
+        files.push(mrg(p, {
+            size: file.length,
+            crc: c.d(),
+            c: d,
+            f: f,
+            m: m,
+            u: s != fn.length || (m && (com.length != ms)),
+            o: o,
+            compression: compression
+        }));
+        o += 30 + s + exl + l;
+        tot += 76 + 2 * (s + exl) + (ms || 0) + l;
+    }
+    var out = new u8(tot + 22), oe = o, cdl = tot - o;
+    for (var i = 0; i < files.length; ++i) {
+        var f = files[i];
+        wzh(out, f.o, f, f.f, f.u, f.c.length);
+        var badd = 30 + f.f.length + exfl(f.extra);
+        out.set(f.c, f.o + badd);
+        wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);
+    }
+    wzf(out, o, files.length, cdl, oe);
+    return out;
+}
+/**
+ * Streaming pass-through decompression for ZIP archives
+ */
+var UnzipPassThrough = /*#__PURE__*/ (function () {
+    function UnzipPassThrough() {
+    }
+    UnzipPassThrough.prototype.push = function (data, final) {
+        this.ondata(null, data, final);
+    };
+    UnzipPassThrough.compression = 0;
+    return UnzipPassThrough;
+}());
+export { UnzipPassThrough };
+/**
+ * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for
+ * better performance.
+ */
+var UnzipInflate = /*#__PURE__*/ (function () {
+    /**
+     * Creates a DEFLATE decompression that can be used in ZIP archives
+     */
+    function UnzipInflate() {
+        var _this = this;
+        this.i = new Inflate(function (dat, final) {
+            _this.ondata(null, dat, final);
+        });
+    }
+    UnzipInflate.prototype.push = function (data, final) {
+        try {
+            this.i.push(data, final);
+        }
+        catch (e) {
+            this.ondata(e, null, final);
+        }
+    };
+    UnzipInflate.compression = 8;
+    return UnzipInflate;
+}());
+export { UnzipInflate };
+/**
+ * Asynchronous streaming DEFLATE decompression for ZIP archives
+ */
+var AsyncUnzipInflate = /*#__PURE__*/ (function () {
+    /**
+     * Creates a DEFLATE decompression that can be used in ZIP archives
+     */
+    function AsyncUnzipInflate(_, sz) {
+        var _this = this;
+        if (sz < 320000) {
+            this.i = new Inflate(function (dat, final) {
+                _this.ondata(null, dat, final);
+            });
+        }
+        else {
+            this.i = new AsyncInflate(function (err, dat, final) {
+                _this.ondata(err, dat, final);
+            });
+            this.terminate = this.i.terminate;
+        }
+    }
+    AsyncUnzipInflate.prototype.push = function (data, final) {
+        if (this.i.terminate)
+            data = slc(data, 0);
+        this.i.push(data, final);
+    };
+    AsyncUnzipInflate.compression = 8;
+    return AsyncUnzipInflate;
+}());
+export { AsyncUnzipInflate };
+/**
+ * A ZIP archive decompression stream that emits files as they are discovered
+ */
+var Unzip = /*#__PURE__*/ (function () {
+    /**
+     * Creates a ZIP decompression stream
+     * @param cb The callback to call whenever a file in the ZIP archive is found
+     */
+    function Unzip(cb) {
+        this.onfile = cb;
+        this.k = [];
+        this.o = {
+            0: UnzipPassThrough
+        };
+        this.p = et;
+    }
+    /**
+     * Pushes a chunk to be unzipped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    Unzip.prototype.push = function (chunk, final) {
+        var _this = this;
+        if (!this.onfile)
+            err(5);
+        if (!this.p)
+            err(4);
+        if (this.c > 0) {
+            var len = Math.min(this.c, chunk.length);
+            var toAdd = chunk.subarray(0, len);
+            this.c -= len;
+            if (this.d)
+                this.d.push(toAdd, !this.c);
+            else
+                this.k[0].push(toAdd);
+            chunk = chunk.subarray(len);
+            if (chunk.length)
+                return this.push(chunk, final);
+        }
+        else {
+            var f = 0, i = 0, is = void 0, buf = void 0;
+            if (!this.p.length)
+                buf = chunk;
+            else if (!chunk.length)
+                buf = this.p;
+            else {
+                buf = new u8(this.p.length + chunk.length);
+                buf.set(this.p), buf.set(chunk, this.p.length);
+            }
+            var l = buf.length, oc = this.c, add = oc && this.d;
+            var _loop_2 = function () {
+                var _a;
+                var sig = b4(buf, i);
+                if (sig == 0x4034B50) {
+                    f = 1, is = i;
+                    this_1.d = null;
+                    this_1.c = 0;
+                    var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);
+                    if (l > i + 30 + fnl + es) {
+                        var chks_3 = [];
+                        this_1.k.unshift(chks_3);
+                        f = 2;
+                        var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);
+                        var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);
+                        if (sc_1 == 4294967295) {
+                            _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];
+                        }
+                        else if (dd)
+                            sc_1 = -1;
+                        i += es;
+                        this_1.c = sc_1;
+                        var d_1;
+                        var file_1 = {
+                            name: fn_1,
+                            compression: cmp_1,
+                            start: function () {
+                                if (!file_1.ondata)
+                                    err(5);
+                                if (!sc_1)
+                                    file_1.ondata(null, et, true);
+                                else {
+                                    var ctr = _this.o[cmp_1];
+                                    if (!ctr)
+                                        file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);
+                                    d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);
+                                    d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };
+                                    for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {
+                                        var dat = chks_4[_i];
+                                        d_1.push(dat, false);
+                                    }
+                                    if (_this.k[0] == chks_3 && _this.c)
+                                        _this.d = d_1;
+                                    else
+                                        d_1.push(et, true);
+                                }
+                            },
+                            terminate: function () {
+                                if (d_1 && d_1.terminate)
+                                    d_1.terminate();
+                            }
+                        };
+                        if (sc_1 >= 0)
+                            file_1.size = sc_1, file_1.originalSize = su_1;
+                        this_1.onfile(file_1);
+                    }
+                    return "break";
+                }
+                else if (oc) {
+                    if (sig == 0x8074B50) {
+                        is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;
+                        return "break";
+                    }
+                    else if (sig == 0x2014B50) {
+                        is = i -= 4, f = 3, this_1.c = 0;
+                        return "break";
+                    }
+                }
+            };
+            var this_1 = this;
+            for (; i < l - 4; ++i) {
+                var state_1 = _loop_2();
+                if (state_1 === "break")
+                    break;
+            }
+            this.p = et;
+            if (oc < 0) {
+                var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);
+                if (add)
+                    add.push(dat, !!f);
+                else
+                    this.k[+(f == 2)].push(dat);
+            }
+            if (f & 2)
+                return this.push(buf.subarray(i), final);
+            this.p = buf.subarray(i);
+        }
+        if (final) {
+            if (this.c)
+                err(13);
+            this.p = null;
+        }
+    };
+    /**
+     * Registers a decoder with the stream, allowing for files compressed with
+     * the compression type provided to be expanded correctly
+     * @param decoder The decoder constructor
+     */
+    Unzip.prototype.register = function (decoder) {
+        this.o[decoder.compression] = decoder;
+    };
+    return Unzip;
+}());
+export { Unzip };
+var mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };
+export function unzip(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    var term = [];
+    var tAll = function () {
+        for (var i = 0; i < term.length; ++i)
+            term[i]();
+    };
+    var files = {};
+    var cbd = function (a, b) {
+        mt(function () { cb(a, b); });
+    };
+    mt(function () { cbd = cb; });
+    var e = data.length - 22;
+    for (; b4(data, e) != 0x6054B50; --e) {
+        if (!e || data.length - e > 65558) {
+            cbd(err(13, 0, 1), null);
+            return tAll;
+        }
+    }
+    ;
+    var lft = b2(data, e + 8);
+    if (lft) {
+        var c = lft;
+        var o = b4(data, e + 16);
+        var z = o == 4294967295 || c == 65535;
+        if (z) {
+            var ze = b4(data, e - 12);
+            z = b4(data, ze) == 0x6064B50;
+            if (z) {
+                c = lft = b4(data, ze + 32);
+                o = b4(data, ze + 48);
+            }
+        }
+        var fltr = opts && opts.filter;
+        var _loop_3 = function (i) {
+            var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);
+            o = no;
+            var cbl = function (e, d) {
+                if (e) {
+                    tAll();
+                    cbd(e, null);
+                }
+                else {
+                    if (d)
+                        files[fn] = d;
+                    if (!--lft)
+                        cbd(null, files);
+                }
+            };
+            if (!fltr || fltr({
+                name: fn,
+                size: sc,
+                originalSize: su,
+                compression: c_1
+            })) {
+                if (!c_1)
+                    cbl(null, slc(data, b, b + sc));
+                else if (c_1 == 8) {
+                    var infl = data.subarray(b, b + sc);
+                    // Synchronously decompress under 512KB, or barely-compressed data
+                    if (su < 524288 || sc > 0.8 * su) {
+                        try {
+                            cbl(null, inflateSync(infl, { out: new u8(su) }));
+                        }
+                        catch (e) {
+                            cbl(e, null);
+                        }
+                    }
+                    else
+                        term.push(inflate(infl, { size: su }, cbl));
+                }
+                else
+                    cbl(err(14, 'unknown compression type ' + c_1, 1), null);
+            }
+            else
+                cbl(null, null);
+        };
+        for (var i = 0; i < c; ++i) {
+            _loop_3(i);
+        }
+    }
+    else
+        cbd(null, {});
+    return tAll;
+}
+/**
+ * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better
+ * performance with more than one file.
+ * @param data The raw compressed ZIP file
+ * @param opts The ZIP extraction options
+ * @returns The decompressed files
+ */
+export function unzipSync(data, opts) {
+    var files = {};
+    var e = data.length - 22;
+    for (; b4(data, e) != 0x6054B50; --e) {
+        if (!e || data.length - e > 65558)
+            err(13);
+    }
+    ;
+    var c = b2(data, e + 8);
+    if (!c)
+        return {};
+    var o = b4(data, e + 16);
+    var z = o == 4294967295 || c == 65535;
+    if (z) {
+        var ze = b4(data, e - 12);
+        z = b4(data, ze) == 0x6064B50;
+        if (z) {
+            c = b4(data, ze + 32);
+            o = b4(data, ze + 48);
+        }
+    }
+    var fltr = opts && opts.filter;
+    for (var i = 0; i < c; ++i) {
+        var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);
+        o = no;
+        if (!fltr || fltr({
+            name: fn,
+            size: sc,
+            originalSize: su,
+            compression: c_2
+        })) {
+            if (!c_2)
+                files[fn] = slc(data, b, b + sc);
+            else if (c_2 == 8)
+                files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });
+            else
+                err(14, 'unknown compression type ' + c_2);
+        }
+    }
+    return files;
+}
diff --git a/node_modules/fflate/lib/browser.cjs b/node_modules/fflate/lib/browser.cjs
new file mode 100644
index 0000000..c7fe934
--- /dev/null
+++ b/node_modules/fflate/lib/browser.cjs
@@ -0,0 +1,2688 @@
+"use strict";
+// DEFLATE is a complex format; to read this code, you should probably check the RFC first:
+// https://tools.ietf.org/html/rfc1951
+// You may also wish to take a look at the guide I made about this program:
+// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad
+// Some of the following code is similar to that of UZIP.js:
+// https://github.com/photopea/UZIP.js
+// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.
+// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint
+// is better for memory in most engines (I *think*).
+var ch2 = {};
+var node_worker_1 = {};
+node_worker_1["default"] = (function (c, id, msg, transfer, cb) {
+    var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([
+        c + ';addEventListener("error",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'
+    ], { type: 'text/javascript' }))));
+    w.onmessage = function (e) {
+        var d = e.data, ed = d.$e$;
+        if (ed) {
+            var err = new Error(ed[0]);
+            err['code'] = ed[1];
+            err.stack = ed[2];
+            cb(err, null);
+        }
+        else
+            cb(null, d);
+    };
+    w.postMessage(msg, transfer);
+    return w;
+});
+
+// aliases for shorter compressed code (most minifers don't do this)
+var u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;
+// fixed length extra bits
+var fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);
+// fixed distance extra bits
+var fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);
+// code length index map
+var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);
+// get base, reverse index map from extra bits
+var freb = function (eb, start) {
+    var b = new u16(31);
+    for (var i = 0; i < 31; ++i) {
+        b[i] = start += 1 << eb[i - 1];
+    }
+    // numbers here are at max 18 bits
+    var r = new i32(b[30]);
+    for (var i = 1; i < 30; ++i) {
+        for (var j = b[i]; j < b[i + 1]; ++j) {
+            r[j] = ((j - b[i]) << 5) | i;
+        }
+    }
+    return { b: b, r: r };
+};
+var _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;
+// we can ignore the fact that the other numbers are wrong; they never happen anyway
+fl[28] = 258, revfl[258] = 28;
+var _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;
+// map of value to reverse (assuming 16 bits)
+var rev = new u16(32768);
+for (var i = 0; i < 32768; ++i) {
+    // reverse table algorithm from SO
+    var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);
+    x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);
+    x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);
+    rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;
+}
+// create huffman tree from u8 "map": index -> code length for code index
+// mb (max bits) must be at most 15
+// TODO: optimize/split up?
+var hMap = (function (cd, mb, r) {
+    var s = cd.length;
+    // index
+    var i = 0;
+    // u16 "map": index -> # of codes with bit length = index
+    var l = new u16(mb);
+    // length of cd must be 288 (total # of codes)
+    for (; i < s; ++i) {
+        if (cd[i])
+            ++l[cd[i] - 1];
+    }
+    // u16 "map": index -> minimum code for bit length = index
+    var le = new u16(mb);
+    for (i = 1; i < mb; ++i) {
+        le[i] = (le[i - 1] + l[i - 1]) << 1;
+    }
+    var co;
+    if (r) {
+        // u16 "map": index -> number of actual bits, symbol for code
+        co = new u16(1 << mb);
+        // bits to remove for reverser
+        var rvb = 15 - mb;
+        for (i = 0; i < s; ++i) {
+            // ignore 0 lengths
+            if (cd[i]) {
+                // num encoding both symbol and bits read
+                var sv = (i << 4) | cd[i];
+                // free bits
+                var r_1 = mb - cd[i];
+                // start value
+                var v = le[cd[i] - 1]++ << r_1;
+                // m is end value
+                for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {
+                    // every 16 bit value starting with the code yields the same result
+                    co[rev[v] >> rvb] = sv;
+                }
+            }
+        }
+    }
+    else {
+        co = new u16(s);
+        for (i = 0; i < s; ++i) {
+            if (cd[i]) {
+                co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);
+            }
+        }
+    }
+    return co;
+});
+// fixed length tree
+var flt = new u8(288);
+for (var i = 0; i < 144; ++i)
+    flt[i] = 8;
+for (var i = 144; i < 256; ++i)
+    flt[i] = 9;
+for (var i = 256; i < 280; ++i)
+    flt[i] = 7;
+for (var i = 280; i < 288; ++i)
+    flt[i] = 8;
+// fixed distance tree
+var fdt = new u8(32);
+for (var i = 0; i < 32; ++i)
+    fdt[i] = 5;
+// fixed length map
+var flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);
+// fixed distance map
+var fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);
+// find max of array
+var max = function (a) {
+    var m = a[0];
+    for (var i = 1; i < a.length; ++i) {
+        if (a[i] > m)
+            m = a[i];
+    }
+    return m;
+};
+// read d, starting at bit p and mask with m
+var bits = function (d, p, m) {
+    var o = (p / 8) | 0;
+    return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;
+};
+// read d, starting at bit p continuing for at least 16 bits
+var bits16 = function (d, p) {
+    var o = (p / 8) | 0;
+    return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));
+};
+// get end of byte
+var shft = function (p) { return ((p + 7) / 8) | 0; };
+// typed array slice - allows garbage collector to free original reference,
+// while being more compatible than .slice
+var slc = function (v, s, e) {
+    if (s == null || s < 0)
+        s = 0;
+    if (e == null || e > v.length)
+        e = v.length;
+    // can't use .constructor in case user-supplied
+    return new u8(v.subarray(s, e));
+};
+/**
+ * Codes for errors generated within this library
+ */
+exports.FlateErrorCode = {
+    UnexpectedEOF: 0,
+    InvalidBlockType: 1,
+    InvalidLengthLiteral: 2,
+    InvalidDistance: 3,
+    StreamFinished: 4,
+    NoStreamHandler: 5,
+    InvalidHeader: 6,
+    NoCallback: 7,
+    InvalidUTF8: 8,
+    ExtraFieldTooLong: 9,
+    InvalidDate: 10,
+    FilenameTooLong: 11,
+    StreamFinishing: 12,
+    InvalidZipData: 13,
+    UnknownCompressionMethod: 14
+};
+// error codes
+var ec = [
+    'unexpected EOF',
+    'invalid block type',
+    'invalid length/literal',
+    'invalid distance',
+    'stream finished',
+    'no stream handler',
+    ,
+    'no callback',
+    'invalid UTF-8 data',
+    'extra field too long',
+    'date not in range 1980-2099',
+    'filename too long',
+    'stream finishing',
+    'invalid zip data'
+    // determined by unknown compression method
+];
+;
+var err = function (ind, msg, nt) {
+    var e = new Error(msg || ec[ind]);
+    e.code = ind;
+    if (Error.captureStackTrace)
+        Error.captureStackTrace(e, err);
+    if (!nt)
+        throw e;
+    return e;
+};
+// expands raw DEFLATE data
+var inflt = function (dat, st, buf, dict) {
+    // source length       dict length
+    var sl = dat.length, dl = dict ? dict.length : 0;
+    if (!sl || st.f && !st.l)
+        return buf || new u8(0);
+    var noBuf = !buf;
+    // have to estimate size
+    var resize = noBuf || st.i != 2;
+    // no state
+    var noSt = st.i;
+    // Assumes roughly 33% compression ratio average
+    if (noBuf)
+        buf = new u8(sl * 3);
+    // ensure buffer can fit at least l elements
+    var cbuf = function (l) {
+        var bl = buf.length;
+        // need to increase size to fit
+        if (l > bl) {
+            // Double or set to necessary, whichever is greater
+            var nbuf = new u8(Math.max(bl * 2, l));
+            nbuf.set(buf);
+            buf = nbuf;
+        }
+    };
+    //  last chunk         bitpos           bytes
+    var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;
+    // total bits
+    var tbts = sl * 8;
+    do {
+        if (!lm) {
+            // BFINAL - this is only 1 when last chunk is next
+            final = bits(dat, pos, 1);
+            // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman
+            var type = bits(dat, pos + 1, 3);
+            pos += 3;
+            if (!type) {
+                // go to end of byte boundary
+                var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;
+                if (t > sl) {
+                    if (noSt)
+                        err(0);
+                    break;
+                }
+                // ensure size
+                if (resize)
+                    cbuf(bt + l);
+                // Copy over uncompressed data
+                buf.set(dat.subarray(s, t), bt);
+                // Get new bitpos, update byte count
+                st.b = bt += l, st.p = pos = t * 8, st.f = final;
+                continue;
+            }
+            else if (type == 1)
+                lm = flrm, dm = fdrm, lbt = 9, dbt = 5;
+            else if (type == 2) {
+                //  literal                            lengths
+                var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;
+                var tl = hLit + bits(dat, pos + 5, 31) + 1;
+                pos += 14;
+                // length+distance tree
+                var ldt = new u8(tl);
+                // code length tree
+                var clt = new u8(19);
+                for (var i = 0; i < hcLen; ++i) {
+                    // use index map to get real code
+                    clt[clim[i]] = bits(dat, pos + i * 3, 7);
+                }
+                pos += hcLen * 3;
+                // code lengths bits
+                var clb = max(clt), clbmsk = (1 << clb) - 1;
+                // code lengths map
+                var clm = hMap(clt, clb, 1);
+                for (var i = 0; i < tl;) {
+                    var r = clm[bits(dat, pos, clbmsk)];
+                    // bits read
+                    pos += r & 15;
+                    // symbol
+                    var s = r >> 4;
+                    // code length to copy
+                    if (s < 16) {
+                        ldt[i++] = s;
+                    }
+                    else {
+                        //  copy   count
+                        var c = 0, n = 0;
+                        if (s == 16)
+                            n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];
+                        else if (s == 17)
+                            n = 3 + bits(dat, pos, 7), pos += 3;
+                        else if (s == 18)
+                            n = 11 + bits(dat, pos, 127), pos += 7;
+                        while (n--)
+                            ldt[i++] = c;
+                    }
+                }
+                //    length tree                 distance tree
+                var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);
+                // max length bits
+                lbt = max(lt);
+                // max dist bits
+                dbt = max(dt);
+                lm = hMap(lt, lbt, 1);
+                dm = hMap(dt, dbt, 1);
+            }
+            else
+                err(1);
+            if (pos > tbts) {
+                if (noSt)
+                    err(0);
+                break;
+            }
+        }
+        // Make sure the buffer can hold this + the largest possible addition
+        // Maximum chunk size (practically, theoretically infinite) is 2^17
+        if (resize)
+            cbuf(bt + 131072);
+        var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;
+        var lpos = pos;
+        for (;; lpos = pos) {
+            // bits read, code
+            var c = lm[bits16(dat, pos) & lms], sym = c >> 4;
+            pos += c & 15;
+            if (pos > tbts) {
+                if (noSt)
+                    err(0);
+                break;
+            }
+            if (!c)
+                err(2);
+            if (sym < 256)
+                buf[bt++] = sym;
+            else if (sym == 256) {
+                lpos = pos, lm = null;
+                break;
+            }
+            else {
+                var add = sym - 254;
+                // no extra bits needed if less
+                if (sym > 264) {
+                    // index
+                    var i = sym - 257, b = fleb[i];
+                    add = bits(dat, pos, (1 << b) - 1) + fl[i];
+                    pos += b;
+                }
+                // dist
+                var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;
+                if (!d)
+                    err(3);
+                pos += d & 15;
+                var dt = fd[dsym];
+                if (dsym > 3) {
+                    var b = fdeb[dsym];
+                    dt += bits16(dat, pos) & (1 << b) - 1, pos += b;
+                }
+                if (pos > tbts) {
+                    if (noSt)
+                        err(0);
+                    break;
+                }
+                if (resize)
+                    cbuf(bt + 131072);
+                var end = bt + add;
+                if (bt < dt) {
+                    var shift = dl - dt, dend = Math.min(dt, end);
+                    if (shift + bt < 0)
+                        err(3);
+                    for (; bt < dend; ++bt)
+                        buf[bt] = dict[shift + bt];
+                }
+                for (; bt < end; ++bt)
+                    buf[bt] = buf[bt - dt];
+            }
+        }
+        st.l = lm, st.p = lpos, st.b = bt, st.f = final;
+        if (lm)
+            final = 1, st.m = lbt, st.d = dm, st.n = dbt;
+    } while (!final);
+    // don't reallocate for streams or user buffers
+    return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);
+};
+// starting at p, write the minimum number of bits that can hold v to d
+var wbits = function (d, p, v) {
+    v <<= p & 7;
+    var o = (p / 8) | 0;
+    d[o] |= v;
+    d[o + 1] |= v >> 8;
+};
+// starting at p, write the minimum number of bits (>8) that can hold v to d
+var wbits16 = function (d, p, v) {
+    v <<= p & 7;
+    var o = (p / 8) | 0;
+    d[o] |= v;
+    d[o + 1] |= v >> 8;
+    d[o + 2] |= v >> 16;
+};
+// creates code lengths from a frequency table
+var hTree = function (d, mb) {
+    // Need extra info to make a tree
+    var t = [];
+    for (var i = 0; i < d.length; ++i) {
+        if (d[i])
+            t.push({ s: i, f: d[i] });
+    }
+    var s = t.length;
+    var t2 = t.slice();
+    if (!s)
+        return { t: et, l: 0 };
+    if (s == 1) {
+        var v = new u8(t[0].s + 1);
+        v[t[0].s] = 1;
+        return { t: v, l: 1 };
+    }
+    t.sort(function (a, b) { return a.f - b.f; });
+    // after i2 reaches last ind, will be stopped
+    // freq must be greater than largest possible number of symbols
+    t.push({ s: -1, f: 25001 });
+    var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;
+    t[0] = { s: -1, f: l.f + r.f, l: l, r: r };
+    // efficient algorithm from UZIP.js
+    // i0 is lookbehind, i2 is lookahead - after processing two low-freq
+    // symbols that combined have high freq, will start processing i2 (high-freq,
+    // non-composite) symbols instead
+    // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/
+    while (i1 != s - 1) {
+        l = t[t[i0].f < t[i2].f ? i0++ : i2++];
+        r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];
+        t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };
+    }
+    var maxSym = t2[0].s;
+    for (var i = 1; i < s; ++i) {
+        if (t2[i].s > maxSym)
+            maxSym = t2[i].s;
+    }
+    // code lengths
+    var tr = new u16(maxSym + 1);
+    // max bits in tree
+    var mbt = ln(t[i1 - 1], tr, 0);
+    if (mbt > mb) {
+        // more algorithms from UZIP.js
+        // TODO: find out how this code works (debt)
+        //  ind    debt
+        var i = 0, dt = 0;
+        //    left            cost
+        var lft = mbt - mb, cst = 1 << lft;
+        t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });
+        for (; i < s; ++i) {
+            var i2_1 = t2[i].s;
+            if (tr[i2_1] > mb) {
+                dt += cst - (1 << (mbt - tr[i2_1]));
+                tr[i2_1] = mb;
+            }
+            else
+                break;
+        }
+        dt >>= lft;
+        while (dt > 0) {
+            var i2_2 = t2[i].s;
+            if (tr[i2_2] < mb)
+                dt -= 1 << (mb - tr[i2_2]++ - 1);
+            else
+                ++i;
+        }
+        for (; i >= 0 && dt; --i) {
+            var i2_3 = t2[i].s;
+            if (tr[i2_3] == mb) {
+                --tr[i2_3];
+                ++dt;
+            }
+        }
+        mbt = mb;
+    }
+    return { t: new u8(tr), l: mbt };
+};
+// get the max length and assign length codes
+var ln = function (n, l, d) {
+    return n.s == -1
+        ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))
+        : (l[n.s] = d);
+};
+// length codes generation
+var lc = function (c) {
+    var s = c.length;
+    // Note that the semicolon was intentional
+    while (s && !c[--s])
+        ;
+    var cl = new u16(++s);
+    //  ind      num         streak
+    var cli = 0, cln = c[0], cls = 1;
+    var w = function (v) { cl[cli++] = v; };
+    for (var i = 1; i <= s; ++i) {
+        if (c[i] == cln && i != s)
+            ++cls;
+        else {
+            if (!cln && cls > 2) {
+                for (; cls > 138; cls -= 138)
+                    w(32754);
+                if (cls > 2) {
+                    w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);
+                    cls = 0;
+                }
+            }
+            else if (cls > 3) {
+                w(cln), --cls;
+                for (; cls > 6; cls -= 6)
+                    w(8304);
+                if (cls > 2)
+                    w(((cls - 3) << 5) | 8208), cls = 0;
+            }
+            while (cls--)
+                w(cln);
+            cls = 1;
+            cln = c[i];
+        }
+    }
+    return { c: cl.subarray(0, cli), n: s };
+};
+// calculate the length of output from tree, code lengths
+var clen = function (cf, cl) {
+    var l = 0;
+    for (var i = 0; i < cl.length; ++i)
+        l += cf[i] * cl[i];
+    return l;
+};
+// writes a fixed block
+// returns the new bit pos
+var wfblk = function (out, pos, dat) {
+    // no need to write 00 as type: TypedArray defaults to 0
+    var s = dat.length;
+    var o = shft(pos + 2);
+    out[o] = s & 255;
+    out[o + 1] = s >> 8;
+    out[o + 2] = out[o] ^ 255;
+    out[o + 3] = out[o + 1] ^ 255;
+    for (var i = 0; i < s; ++i)
+        out[o + i + 4] = dat[i];
+    return (o + 4 + s) * 8;
+};
+// writes a block
+var wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {
+    wbits(out, p++, final);
+    ++lf[256];
+    var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;
+    var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;
+    var _c = lc(dlt), lclt = _c.c, nlc = _c.n;
+    var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;
+    var lcfreq = new u16(19);
+    for (var i = 0; i < lclt.length; ++i)
+        ++lcfreq[lclt[i] & 31];
+    for (var i = 0; i < lcdt.length; ++i)
+        ++lcfreq[lcdt[i] & 31];
+    var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;
+    var nlcc = 19;
+    for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)
+        ;
+    var flen = (bl + 5) << 3;
+    var ftlen = clen(lf, flt) + clen(df, fdt) + eb;
+    var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];
+    if (bs >= 0 && flen <= ftlen && flen <= dtlen)
+        return wfblk(out, p, dat.subarray(bs, bs + bl));
+    var lm, ll, dm, dl;
+    wbits(out, p, 1 + (dtlen < ftlen)), p += 2;
+    if (dtlen < ftlen) {
+        lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;
+        var llm = hMap(lct, mlcb, 0);
+        wbits(out, p, nlc - 257);
+        wbits(out, p + 5, ndc - 1);
+        wbits(out, p + 10, nlcc - 4);
+        p += 14;
+        for (var i = 0; i < nlcc; ++i)
+            wbits(out, p + 3 * i, lct[clim[i]]);
+        p += 3 * nlcc;
+        var lcts = [lclt, lcdt];
+        for (var it = 0; it < 2; ++it) {
+            var clct = lcts[it];
+            for (var i = 0; i < clct.length; ++i) {
+                var len = clct[i] & 31;
+                wbits(out, p, llm[len]), p += lct[len];
+                if (len > 15)
+                    wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;
+            }
+        }
+    }
+    else {
+        lm = flm, ll = flt, dm = fdm, dl = fdt;
+    }
+    for (var i = 0; i < li; ++i) {
+        var sym = syms[i];
+        if (sym > 255) {
+            var len = (sym >> 18) & 31;
+            wbits16(out, p, lm[len + 257]), p += ll[len + 257];
+            if (len > 7)
+                wbits(out, p, (sym >> 23) & 31), p += fleb[len];
+            var dst = sym & 31;
+            wbits16(out, p, dm[dst]), p += dl[dst];
+            if (dst > 3)
+                wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];
+        }
+        else {
+            wbits16(out, p, lm[sym]), p += ll[sym];
+        }
+    }
+    wbits16(out, p, lm[256]);
+    return p + ll[256];
+};
+// deflate options (nice << 13) | chain
+var deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);
+// empty
+var et = /*#__PURE__*/ new u8(0);
+// compresses data into a raw DEFLATE buffer
+var dflt = function (dat, lvl, plvl, pre, post, st) {
+    var s = st.z || dat.length;
+    var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);
+    // writing to this writes to the output buffer
+    var w = o.subarray(pre, o.length - post);
+    var lst = st.l;
+    var pos = (st.r || 0) & 7;
+    if (lvl) {
+        if (pos)
+            w[0] = st.r >> 3;
+        var opt = deo[lvl - 1];
+        var n = opt >> 13, c = opt & 8191;
+        var msk_1 = (1 << plvl) - 1;
+        //    prev 2-byte val map    curr 2-byte val map
+        var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);
+        var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;
+        var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };
+        // 24576 is an arbitrary number of maximum symbols per block
+        // 424 buffer for last block
+        var syms = new i32(25000);
+        // length/literal freq   distance freq
+        var lf = new u16(288), df = new u16(32);
+        //  l/lcnt  exbits  index          l/lind  waitdx          blkpos
+        var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;
+        for (; i + 2 < s; ++i) {
+            // hash value
+            var hv = hsh(i);
+            // index mod 32768    previous index mod
+            var imod = i & 32767, pimod = head[hv];
+            prev[imod] = pimod;
+            head[hv] = imod;
+            // We always should modify head and prev, but only add symbols if
+            // this data is not yet processed ("wait" for wait index)
+            if (wi <= i) {
+                // bytes remaining
+                var rem = s - i;
+                if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {
+                    pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);
+                    li = lc_1 = eb = 0, bs = i;
+                    for (var j = 0; j < 286; ++j)
+                        lf[j] = 0;
+                    for (var j = 0; j < 30; ++j)
+                        df[j] = 0;
+                }
+                //  len    dist   chain
+                var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;
+                if (rem > 2 && hv == hsh(i - dif)) {
+                    var maxn = Math.min(n, rem) - 1;
+                    var maxd = Math.min(32767, i);
+                    // max possible length
+                    // not capped at dif because decompressors implement "rolling" index population
+                    var ml = Math.min(258, rem);
+                    while (dif <= maxd && --ch_1 && imod != pimod) {
+                        if (dat[i + l] == dat[i + l - dif]) {
+                            var nl = 0;
+                            for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)
+                                ;
+                            if (nl > l) {
+                                l = nl, d = dif;
+                                // break out early when we reach "nice" (we are satisfied enough)
+                                if (nl > maxn)
+                                    break;
+                                // now, find the rarest 2-byte sequence within this
+                                // length of literals and search for that instead.
+                                // Much faster than just using the start
+                                var mmd = Math.min(dif, nl - 2);
+                                var md = 0;
+                                for (var j = 0; j < mmd; ++j) {
+                                    var ti = i - dif + j & 32767;
+                                    var pti = prev[ti];
+                                    var cd = ti - pti & 32767;
+                                    if (cd > md)
+                                        md = cd, pimod = ti;
+                                }
+                            }
+                        }
+                        // check the previous match
+                        imod = pimod, pimod = prev[imod];
+                        dif += imod - pimod & 32767;
+                    }
+                }
+                // d will be nonzero only when a match was found
+                if (d) {
+                    // store both dist and len data in one int32
+                    // Make sure this is recognized as a len/dist with 28th bit (2^28)
+                    syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];
+                    var lin = revfl[l] & 31, din = revfd[d] & 31;
+                    eb += fleb[lin] + fdeb[din];
+                    ++lf[257 + lin];
+                    ++df[din];
+                    wi = i + l;
+                    ++lc_1;
+                }
+                else {
+                    syms[li++] = dat[i];
+                    ++lf[dat[i]];
+                }
+            }
+        }
+        for (i = Math.max(i, wi); i < s; ++i) {
+            syms[li++] = dat[i];
+            ++lf[dat[i]];
+        }
+        pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);
+        if (!lst) {
+            st.r = (pos & 7) | w[(pos / 8) | 0] << 3;
+            // shft(pos) now 1 less if pos & 7 != 0
+            pos -= 7;
+            st.h = head, st.p = prev, st.i = i, st.w = wi;
+        }
+    }
+    else {
+        for (var i = st.w || 0; i < s + lst; i += 65535) {
+            // end
+            var e = i + 65535;
+            if (e >= s) {
+                // write final block
+                w[(pos / 8) | 0] = lst;
+                e = s;
+            }
+            pos = wfblk(w, pos + 1, dat.subarray(i, e));
+        }
+        st.i = s;
+    }
+    return slc(o, 0, pre + shft(pos) + post);
+};
+// CRC32 table
+var crct = /*#__PURE__*/ (function () {
+    var t = new Int32Array(256);
+    for (var i = 0; i < 256; ++i) {
+        var c = i, k = 9;
+        while (--k)
+            c = ((c & 1) && -306674912) ^ (c >>> 1);
+        t[i] = c;
+    }
+    return t;
+})();
+// CRC32
+var crc = function () {
+    var c = -1;
+    return {
+        p: function (d) {
+            // closures have awful performance
+            var cr = c;
+            for (var i = 0; i < d.length; ++i)
+                cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);
+            c = cr;
+        },
+        d: function () { return ~c; }
+    };
+};
+// Adler32
+var adler = function () {
+    var a = 1, b = 0;
+    return {
+        p: function (d) {
+            // closures have awful performance
+            var n = a, m = b;
+            var l = d.length | 0;
+            for (var i = 0; i != l;) {
+                var e = Math.min(i + 2655, l);
+                for (; i < e; ++i)
+                    m += n += d[i];
+                n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);
+            }
+            a = n, b = m;
+        },
+        d: function () {
+            a %= 65521, b %= 65521;
+            return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);
+        }
+    };
+};
+;
+// deflate with opts
+var dopt = function (dat, opt, pre, post, st) {
+    if (!st) {
+        st = { l: 1 };
+        if (opt.dictionary) {
+            var dict = opt.dictionary.subarray(-32768);
+            var newDat = new u8(dict.length + dat.length);
+            newDat.set(dict);
+            newDat.set(dat, dict.length);
+            dat = newDat;
+            st.w = dict.length;
+        }
+    }
+    return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? (st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20) : (12 + opt.mem), pre, post, st);
+};
+// Walmart object spread
+var mrg = function (a, b) {
+    var o = {};
+    for (var k in a)
+        o[k] = a[k];
+    for (var k in b)
+        o[k] = b[k];
+    return o;
+};
+// worker clone
+// This is possibly the craziest part of the entire codebase, despite how simple it may seem.
+// The only parameter to this function is a closure that returns an array of variables outside of the function scope.
+// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.
+// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).
+// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.
+// This took me three weeks to figure out how to do.
+var wcln = function (fn, fnStr, td) {
+    var dt = fn();
+    var st = fn.toString();
+    var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\s+/g, '').split(',');
+    for (var i = 0; i < dt.length; ++i) {
+        var v = dt[i], k = ks[i];
+        if (typeof v == 'function') {
+            fnStr += ';' + k + '=';
+            var st_1 = v.toString();
+            if (v.prototype) {
+                // for global objects
+                if (st_1.indexOf('[native code]') != -1) {
+                    var spInd = st_1.indexOf(' ', 8) + 1;
+                    fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));
+                }
+                else {
+                    fnStr += st_1;
+                    for (var t in v.prototype)
+                        fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();
+                }
+            }
+            else
+                fnStr += st_1;
+        }
+        else
+            td[k] = v;
+    }
+    return fnStr;
+};
+var ch = [];
+// clone bufs
+var cbfs = function (v) {
+    var tl = [];
+    for (var k in v) {
+        if (v[k].buffer) {
+            tl.push((v[k] = new v[k].constructor(v[k])).buffer);
+        }
+    }
+    return tl;
+};
+// use a worker to execute code
+var wrkr = function (fns, init, id, cb) {
+    if (!ch[id]) {
+        var fnStr = '', td_1 = {}, m = fns.length - 1;
+        for (var i = 0; i < m; ++i)
+            fnStr = wcln(fns[i], fnStr, td_1);
+        ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };
+    }
+    var td = mrg({}, ch[id].e);
+    return (0, node_worker_1.default)(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);
+};
+// base async inflate fn
+var bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };
+var bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };
+// gzip extra
+var gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };
+// gunzip extra
+var guze = function () { return [gzs, gzl]; };
+// zlib extra
+var zle = function () { return [zlh, wbytes, adler]; };
+// unzlib extra
+var zule = function () { return [zls]; };
+// post buf
+var pbf = function (msg) { return postMessage(msg, [msg.buffer]); };
+// get opts
+var gopt = function (o) { return o && {
+    out: o.size && new u8(o.size),
+    dictionary: o.dictionary
+}; };
+// async helper
+var cbify = function (dat, opts, fns, init, id, cb) {
+    var w = wrkr(fns, init, id, function (err, dat) {
+        w.terminate();
+        cb(err, dat);
+    });
+    w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);
+    return function () { w.terminate(); };
+};
+// auto stream
+var astrm = function (strm) {
+    strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };
+    return function (ev) {
+        if (ev.data.length) {
+            strm.push(ev.data[0], ev.data[1]);
+            postMessage([ev.data[0].length]);
+        }
+        else
+            strm.flush();
+    };
+};
+// async stream attach
+var astrmify = function (fns, strm, opts, init, id, flush, ext) {
+    var t;
+    var w = wrkr(fns, init, id, function (err, dat) {
+        if (err)
+            w.terminate(), strm.ondata.call(strm, err);
+        else if (!Array.isArray(dat))
+            ext(dat);
+        else if (dat.length == 1) {
+            strm.queuedSize -= dat[0];
+            if (strm.ondrain)
+                strm.ondrain(dat[0]);
+        }
+        else {
+            if (dat[1])
+                w.terminate();
+            strm.ondata.call(strm, err, dat[0], dat[1]);
+        }
+    });
+    w.postMessage(opts);
+    strm.queuedSize = 0;
+    strm.push = function (d, f) {
+        if (!strm.ondata)
+            err(5);
+        if (t)
+            strm.ondata(err(4, 0, 1), null, !!f);
+        strm.queuedSize += d.length;
+        w.postMessage([d, t = f], [d.buffer]);
+    };
+    strm.terminate = function () { w.terminate(); };
+    if (flush) {
+        strm.flush = function () { w.postMessage([]); };
+    }
+};
+// read 2 bytes
+var b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };
+// read 4 bytes
+var b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };
+var b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };
+// write bytes
+var wbytes = function (d, b, v) {
+    for (; v; ++b)
+        d[b] = v, v >>>= 8;
+};
+// gzip header
+var gzh = function (c, o) {
+    var fn = o.filename;
+    c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix
+    if (o.mtime != 0)
+        wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));
+    if (fn) {
+        c[3] = 8;
+        for (var i = 0; i <= fn.length; ++i)
+            c[i + 10] = fn.charCodeAt(i);
+    }
+};
+// gzip footer: -8 to -4 = CRC, -4 to -0 is length
+// gzip start
+var gzs = function (d) {
+    if (d[0] != 31 || d[1] != 139 || d[2] != 8)
+        err(6, 'invalid gzip data');
+    var flg = d[3];
+    var st = 10;
+    if (flg & 4)
+        st += (d[10] | d[11] << 8) + 2;
+    for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])
+        ;
+    return st + (flg & 2);
+};
+// gzip length
+var gzl = function (d) {
+    var l = d.length;
+    return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;
+};
+// gzip header length
+var gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };
+// zlib header
+var zlh = function (c, o) {
+    var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;
+    c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);
+    c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;
+    if (o.dictionary) {
+        var h = adler();
+        h.p(o.dictionary);
+        wbytes(c, 2, h.d());
+    }
+};
+// zlib start
+var zls = function (d, dict) {
+    if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))
+        err(6, 'invalid zlib data');
+    if ((d[1] >> 5 & 1) == +!dict)
+        err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');
+    return (d[1] >> 3 & 4) + 2;
+};
+function StrmOpt(opts, cb) {
+    if (typeof opts == 'function')
+        cb = opts, opts = {};
+    this.ondata = cb;
+    return opts;
+}
+/**
+ * Streaming DEFLATE compression
+ */
+var Deflate = /*#__PURE__*/ (function () {
+    function Deflate(opts, cb) {
+        if (typeof opts == 'function')
+            cb = opts, opts = {};
+        this.ondata = cb;
+        this.o = opts || {};
+        this.s = { l: 0, i: 32768, w: 32768, z: 32768 };
+        // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev
+        // 98304 = 32768 (lookback) + 65536 (common chunk size)
+        this.b = new u8(98304);
+        if (this.o.dictionary) {
+            var dict = this.o.dictionary.subarray(-32768);
+            this.b.set(dict, 32768 - dict.length);
+            this.s.i = 32768 - dict.length;
+        }
+    }
+    Deflate.prototype.p = function (c, f) {
+        this.ondata(dopt(c, this.o, 0, 0, this.s), f);
+    };
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    Deflate.prototype.push = function (chunk, final) {
+        if (!this.ondata)
+            err(5);
+        if (this.s.l)
+            err(4);
+        var endLen = chunk.length + this.s.z;
+        if (endLen > this.b.length) {
+            if (endLen > 2 * this.b.length - 32768) {
+                var newBuf = new u8(endLen & -32768);
+                newBuf.set(this.b.subarray(0, this.s.z));
+                this.b = newBuf;
+            }
+            var split = this.b.length - this.s.z;
+            this.b.set(chunk.subarray(0, split), this.s.z);
+            this.s.z = this.b.length;
+            this.p(this.b, false);
+            this.b.set(this.b.subarray(-32768));
+            this.b.set(chunk.subarray(split), 32768);
+            this.s.z = chunk.length - split + 32768;
+            this.s.i = 32766, this.s.w = 32768;
+        }
+        else {
+            this.b.set(chunk, this.s.z);
+            this.s.z += chunk.length;
+        }
+        this.s.l = final & 1;
+        if (this.s.z > this.s.w + 8191 || final) {
+            this.p(this.b, final || false);
+            this.s.w = this.s.i, this.s.i -= 2;
+        }
+    };
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * deflated output for small inputs.
+     */
+    Deflate.prototype.flush = function () {
+        if (!this.ondata)
+            err(5);
+        if (this.s.l)
+            err(4);
+        this.p(this.b, false);
+        this.s.w = this.s.i, this.s.i -= 2;
+    };
+    return Deflate;
+}());
+exports.Deflate = Deflate;
+/**
+ * Asynchronous streaming DEFLATE compression
+ */
+var AsyncDeflate = /*#__PURE__*/ (function () {
+    function AsyncDeflate(opts, cb) {
+        astrmify([
+            bDflt,
+            function () { return [astrm, Deflate]; }
+        ], this, StrmOpt.call(this, opts, cb), function (ev) {
+            var strm = new Deflate(ev.data);
+            onmessage = astrm(strm);
+        }, 6, 1);
+    }
+    return AsyncDeflate;
+}());
+exports.AsyncDeflate = AsyncDeflate;
+function deflate(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    return cbify(data, opts, [
+        bDflt,
+    ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);
+}
+exports.deflate = deflate;
+/**
+ * Compresses data with DEFLATE without any wrapper
+ * @param data The data to compress
+ * @param opts The compression options
+ * @returns The deflated version of the data
+ */
+function deflateSync(data, opts) {
+    return dopt(data, opts || {}, 0, 0);
+}
+exports.deflateSync = deflateSync;
+/**
+ * Streaming DEFLATE decompression
+ */
+var Inflate = /*#__PURE__*/ (function () {
+    function Inflate(opts, cb) {
+        // no StrmOpt here to avoid adding to workerizer
+        if (typeof opts == 'function')
+            cb = opts, opts = {};
+        this.ondata = cb;
+        var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);
+        this.s = { i: 0, b: dict ? dict.length : 0 };
+        this.o = new u8(32768);
+        this.p = new u8(0);
+        if (dict)
+            this.o.set(dict);
+    }
+    Inflate.prototype.e = function (c) {
+        if (!this.ondata)
+            err(5);
+        if (this.d)
+            err(4);
+        if (!this.p.length)
+            this.p = c;
+        else if (c.length) {
+            var n = new u8(this.p.length + c.length);
+            n.set(this.p), n.set(c, this.p.length), this.p = n;
+        }
+    };
+    Inflate.prototype.c = function (final) {
+        this.s.i = +(this.d = final || false);
+        var bts = this.s.b;
+        var dt = inflt(this.p, this.s, this.o);
+        this.ondata(slc(dt, bts, this.s.b), this.d);
+        this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;
+        this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;
+    };
+    /**
+     * Pushes a chunk to be inflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the final chunk
+     */
+    Inflate.prototype.push = function (chunk, final) {
+        this.e(chunk), this.c(final);
+    };
+    return Inflate;
+}());
+exports.Inflate = Inflate;
+/**
+ * Asynchronous streaming DEFLATE decompression
+ */
+var AsyncInflate = /*#__PURE__*/ (function () {
+    function AsyncInflate(opts, cb) {
+        astrmify([
+            bInflt,
+            function () { return [astrm, Inflate]; }
+        ], this, StrmOpt.call(this, opts, cb), function (ev) {
+            var strm = new Inflate(ev.data);
+            onmessage = astrm(strm);
+        }, 7, 0);
+    }
+    return AsyncInflate;
+}());
+exports.AsyncInflate = AsyncInflate;
+function inflate(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    return cbify(data, opts, [
+        bInflt
+    ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);
+}
+exports.inflate = inflate;
+/**
+ * Expands DEFLATE data with no wrapper
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+function inflateSync(data, opts) {
+    return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);
+}
+exports.inflateSync = inflateSync;
+// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.
+/**
+ * Streaming GZIP compression
+ */
+var Gzip = /*#__PURE__*/ (function () {
+    function Gzip(opts, cb) {
+        this.c = crc();
+        this.l = 0;
+        this.v = 1;
+        Deflate.call(this, opts, cb);
+    }
+    /**
+     * Pushes a chunk to be GZIPped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    Gzip.prototype.push = function (chunk, final) {
+        this.c.p(chunk);
+        this.l += chunk.length;
+        Deflate.prototype.push.call(this, chunk, final);
+    };
+    Gzip.prototype.p = function (c, f) {
+        var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);
+        if (this.v)
+            gzh(raw, this.o), this.v = 0;
+        if (f)
+            wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);
+        this.ondata(raw, f);
+    };
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * GZIPped output for small inputs.
+     */
+    Gzip.prototype.flush = function () {
+        Deflate.prototype.flush.call(this);
+    };
+    return Gzip;
+}());
+exports.Gzip = Gzip;
+exports.Compress = Gzip;
+/**
+ * Asynchronous streaming GZIP compression
+ */
+var AsyncGzip = /*#__PURE__*/ (function () {
+    function AsyncGzip(opts, cb) {
+        astrmify([
+            bDflt,
+            gze,
+            function () { return [astrm, Deflate, Gzip]; }
+        ], this, StrmOpt.call(this, opts, cb), function (ev) {
+            var strm = new Gzip(ev.data);
+            onmessage = astrm(strm);
+        }, 8, 1);
+    }
+    return AsyncGzip;
+}());
+exports.AsyncGzip = AsyncGzip;
+exports.AsyncCompress = AsyncGzip;
+function gzip(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    return cbify(data, opts, [
+        bDflt,
+        gze,
+        function () { return [gzipSync]; }
+    ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);
+}
+exports.gzip = gzip;
+exports.compress = gzip;
+/**
+ * Compresses data with GZIP
+ * @param data The data to compress
+ * @param opts The compression options
+ * @returns The gzipped version of the data
+ */
+function gzipSync(data, opts) {
+    if (!opts)
+        opts = {};
+    var c = crc(), l = data.length;
+    c.p(data);
+    var d = dopt(data, opts, gzhl(opts), 8), s = d.length;
+    return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;
+}
+exports.gzipSync = gzipSync;
+exports.compressSync = gzipSync;
+/**
+ * Streaming single or multi-member GZIP decompression
+ */
+var Gunzip = /*#__PURE__*/ (function () {
+    function Gunzip(opts, cb) {
+        this.v = 1;
+        this.r = 0;
+        Inflate.call(this, opts, cb);
+    }
+    /**
+     * Pushes a chunk to be GUNZIPped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    Gunzip.prototype.push = function (chunk, final) {
+        Inflate.prototype.e.call(this, chunk);
+        this.r += chunk.length;
+        if (this.v) {
+            var p = this.p.subarray(this.v - 1);
+            var s = p.length > 3 ? gzs(p) : 4;
+            if (s > p.length) {
+                if (!final)
+                    return;
+            }
+            else if (this.v > 1 && this.onmember) {
+                this.onmember(this.r - p.length);
+            }
+            this.p = p.subarray(s), this.v = 0;
+        }
+        // necessary to prevent TS from using the closure value
+        // This allows for workerization to function correctly
+        Inflate.prototype.c.call(this, final);
+        // process concatenated GZIP
+        if (this.s.f && !this.s.l && !final) {
+            this.v = shft(this.s.p) + 9;
+            this.s = { i: 0 };
+            this.o = new u8(0);
+            this.push(new u8(0), final);
+        }
+    };
+    return Gunzip;
+}());
+exports.Gunzip = Gunzip;
+/**
+ * Asynchronous streaming single or multi-member GZIP decompression
+ */
+var AsyncGunzip = /*#__PURE__*/ (function () {
+    function AsyncGunzip(opts, cb) {
+        var _this = this;
+        astrmify([
+            bInflt,
+            guze,
+            function () { return [astrm, Inflate, Gunzip]; }
+        ], this, StrmOpt.call(this, opts, cb), function (ev) {
+            var strm = new Gunzip(ev.data);
+            strm.onmember = function (offset) { return postMessage(offset); };
+            onmessage = astrm(strm);
+        }, 9, 0, function (offset) { return _this.onmember && _this.onmember(offset); });
+    }
+    return AsyncGunzip;
+}());
+exports.AsyncGunzip = AsyncGunzip;
+function gunzip(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    return cbify(data, opts, [
+        bInflt,
+        guze,
+        function () { return [gunzipSync]; }
+    ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);
+}
+exports.gunzip = gunzip;
+/**
+ * Expands GZIP data
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+function gunzipSync(data, opts) {
+    var st = gzs(data);
+    if (st + 8 > data.length)
+        err(6, 'invalid gzip data');
+    return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);
+}
+exports.gunzipSync = gunzipSync;
+/**
+ * Streaming Zlib compression
+ */
+var Zlib = /*#__PURE__*/ (function () {
+    function Zlib(opts, cb) {
+        this.c = adler();
+        this.v = 1;
+        Deflate.call(this, opts, cb);
+    }
+    /**
+     * Pushes a chunk to be zlibbed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    Zlib.prototype.push = function (chunk, final) {
+        this.c.p(chunk);
+        Deflate.prototype.push.call(this, chunk, final);
+    };
+    Zlib.prototype.p = function (c, f) {
+        var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);
+        if (this.v)
+            zlh(raw, this.o), this.v = 0;
+        if (f)
+            wbytes(raw, raw.length - 4, this.c.d());
+        this.ondata(raw, f);
+    };
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * zlibbed output for small inputs.
+     */
+    Zlib.prototype.flush = function () {
+        Deflate.prototype.flush.call(this);
+    };
+    return Zlib;
+}());
+exports.Zlib = Zlib;
+/**
+ * Asynchronous streaming Zlib compression
+ */
+var AsyncZlib = /*#__PURE__*/ (function () {
+    function AsyncZlib(opts, cb) {
+        astrmify([
+            bDflt,
+            zle,
+            function () { return [astrm, Deflate, Zlib]; }
+        ], this, StrmOpt.call(this, opts, cb), function (ev) {
+            var strm = new Zlib(ev.data);
+            onmessage = astrm(strm);
+        }, 10, 1);
+    }
+    return AsyncZlib;
+}());
+exports.AsyncZlib = AsyncZlib;
+function zlib(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    return cbify(data, opts, [
+        bDflt,
+        zle,
+        function () { return [zlibSync]; }
+    ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);
+}
+exports.zlib = zlib;
+/**
+ * Compress data with Zlib
+ * @param data The data to compress
+ * @param opts The compression options
+ * @returns The zlib-compressed version of the data
+ */
+function zlibSync(data, opts) {
+    if (!opts)
+        opts = {};
+    var a = adler();
+    a.p(data);
+    var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);
+    return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;
+}
+exports.zlibSync = zlibSync;
+/**
+ * Streaming Zlib decompression
+ */
+var Unzlib = /*#__PURE__*/ (function () {
+    function Unzlib(opts, cb) {
+        Inflate.call(this, opts, cb);
+        this.v = opts && opts.dictionary ? 2 : 1;
+    }
+    /**
+     * Pushes a chunk to be unzlibbed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    Unzlib.prototype.push = function (chunk, final) {
+        Inflate.prototype.e.call(this, chunk);
+        if (this.v) {
+            if (this.p.length < 6 && !final)
+                return;
+            this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;
+        }
+        if (final) {
+            if (this.p.length < 4)
+                err(6, 'invalid zlib data');
+            this.p = this.p.subarray(0, -4);
+        }
+        // necessary to prevent TS from using the closure value
+        // This allows for workerization to function correctly
+        Inflate.prototype.c.call(this, final);
+    };
+    return Unzlib;
+}());
+exports.Unzlib = Unzlib;
+/**
+ * Asynchronous streaming Zlib decompression
+ */
+var AsyncUnzlib = /*#__PURE__*/ (function () {
+    function AsyncUnzlib(opts, cb) {
+        astrmify([
+            bInflt,
+            zule,
+            function () { return [astrm, Inflate, Unzlib]; }
+        ], this, StrmOpt.call(this, opts, cb), function (ev) {
+            var strm = new Unzlib(ev.data);
+            onmessage = astrm(strm);
+        }, 11, 0);
+    }
+    return AsyncUnzlib;
+}());
+exports.AsyncUnzlib = AsyncUnzlib;
+function unzlib(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    return cbify(data, opts, [
+        bInflt,
+        zule,
+        function () { return [unzlibSync]; }
+    ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);
+}
+exports.unzlib = unzlib;
+/**
+ * Expands Zlib data
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+function unzlibSync(data, opts) {
+    return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);
+}
+exports.unzlibSync = unzlibSync;
+/**
+ * Streaming GZIP, Zlib, or raw DEFLATE decompression
+ */
+var Decompress = /*#__PURE__*/ (function () {
+    function Decompress(opts, cb) {
+        this.o = StrmOpt.call(this, opts, cb) || {};
+        this.G = Gunzip;
+        this.I = Inflate;
+        this.Z = Unzlib;
+    }
+    // init substream
+    // overriden by AsyncDecompress
+    Decompress.prototype.i = function () {
+        var _this = this;
+        this.s.ondata = function (dat, final) {
+            _this.ondata(dat, final);
+        };
+    };
+    /**
+     * Pushes a chunk to be decompressed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    Decompress.prototype.push = function (chunk, final) {
+        if (!this.ondata)
+            err(5);
+        if (!this.s) {
+            if (this.p && this.p.length) {
+                var n = new u8(this.p.length + chunk.length);
+                n.set(this.p), n.set(chunk, this.p.length);
+            }
+            else
+                this.p = chunk;
+            if (this.p.length > 2) {
+                this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)
+                    ? new this.G(this.o)
+                    : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))
+                        ? new this.I(this.o)
+                        : new this.Z(this.o);
+                this.i();
+                this.s.push(this.p, final);
+                this.p = null;
+            }
+        }
+        else
+            this.s.push(chunk, final);
+    };
+    return Decompress;
+}());
+exports.Decompress = Decompress;
+/**
+ * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression
+ */
+var AsyncDecompress = /*#__PURE__*/ (function () {
+    function AsyncDecompress(opts, cb) {
+        Decompress.call(this, opts, cb);
+        this.queuedSize = 0;
+        this.G = AsyncGunzip;
+        this.I = AsyncInflate;
+        this.Z = AsyncUnzlib;
+    }
+    AsyncDecompress.prototype.i = function () {
+        var _this = this;
+        this.s.ondata = function (err, dat, final) {
+            _this.ondata(err, dat, final);
+        };
+        this.s.ondrain = function (size) {
+            _this.queuedSize -= size;
+            if (_this.ondrain)
+                _this.ondrain(size);
+        };
+    };
+    /**
+     * Pushes a chunk to be decompressed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    AsyncDecompress.prototype.push = function (chunk, final) {
+        this.queuedSize += chunk.length;
+        Decompress.prototype.push.call(this, chunk, final);
+    };
+    return AsyncDecompress;
+}());
+exports.AsyncDecompress = AsyncDecompress;
+function decompress(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    return (data[0] == 31 && data[1] == 139 && data[2] == 8)
+        ? gunzip(data, opts, cb)
+        : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))
+            ? inflate(data, opts, cb)
+            : unzlib(data, opts, cb);
+}
+exports.decompress = decompress;
+/**
+ * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+function decompressSync(data, opts) {
+    return (data[0] == 31 && data[1] == 139 && data[2] == 8)
+        ? gunzipSync(data, opts)
+        : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))
+            ? inflateSync(data, opts)
+            : unzlibSync(data, opts);
+}
+exports.decompressSync = decompressSync;
+// flatten a directory structure
+var fltn = function (d, p, t, o) {
+    for (var k in d) {
+        var val = d[k], n = p + k, op = o;
+        if (Array.isArray(val))
+            op = mrg(o, val[1]), val = val[0];
+        if (val instanceof u8)
+            t[n] = [val, op];
+        else {
+            t[n += '/'] = [new u8(0), op];
+            fltn(val, n, t, o);
+        }
+    }
+};
+// text encoder
+var te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();
+// text decoder
+var td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();
+// text decoder stream
+var tds = 0;
+try {
+    td.decode(et, { stream: true });
+    tds = 1;
+}
+catch (e) { }
+// decode UTF8
+var dutf8 = function (d) {
+    for (var r = '', i = 0;;) {
+        var c = d[i++];
+        var eb = (c > 127) + (c > 223) + (c > 239);
+        if (i + eb > d.length)
+            return { s: r, r: slc(d, i - 1) };
+        if (!eb)
+            r += String.fromCharCode(c);
+        else if (eb == 3) {
+            c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,
+                r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));
+        }
+        else if (eb & 1)
+            r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));
+        else
+            r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));
+    }
+};
+/**
+ * Streaming UTF-8 decoding
+ */
+var DecodeUTF8 = /*#__PURE__*/ (function () {
+    /**
+     * Creates a UTF-8 decoding stream
+     * @param cb The callback to call whenever data is decoded
+     */
+    function DecodeUTF8(cb) {
+        this.ondata = cb;
+        if (tds)
+            this.t = new TextDecoder();
+        else
+            this.p = et;
+    }
+    /**
+     * Pushes a chunk to be decoded from UTF-8 binary
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    DecodeUTF8.prototype.push = function (chunk, final) {
+        if (!this.ondata)
+            err(5);
+        final = !!final;
+        if (this.t) {
+            this.ondata(this.t.decode(chunk, { stream: true }), final);
+            if (final) {
+                if (this.t.decode().length)
+                    err(8);
+                this.t = null;
+            }
+            return;
+        }
+        if (!this.p)
+            err(4);
+        var dat = new u8(this.p.length + chunk.length);
+        dat.set(this.p);
+        dat.set(chunk, this.p.length);
+        var _a = dutf8(dat), s = _a.s, r = _a.r;
+        if (final) {
+            if (r.length)
+                err(8);
+            this.p = null;
+        }
+        else
+            this.p = r;
+        this.ondata(s, final);
+    };
+    return DecodeUTF8;
+}());
+exports.DecodeUTF8 = DecodeUTF8;
+/**
+ * Streaming UTF-8 encoding
+ */
+var EncodeUTF8 = /*#__PURE__*/ (function () {
+    /**
+     * Creates a UTF-8 decoding stream
+     * @param cb The callback to call whenever data is encoded
+     */
+    function EncodeUTF8(cb) {
+        this.ondata = cb;
+    }
+    /**
+     * Pushes a chunk to be encoded to UTF-8
+     * @param chunk The string data to push
+     * @param final Whether this is the last chunk
+     */
+    EncodeUTF8.prototype.push = function (chunk, final) {
+        if (!this.ondata)
+            err(5);
+        if (this.d)
+            err(4);
+        this.ondata(strToU8(chunk), this.d = final || false);
+    };
+    return EncodeUTF8;
+}());
+exports.EncodeUTF8 = EncodeUTF8;
+/**
+ * Converts a string into a Uint8Array for use with compression/decompression methods
+ * @param str The string to encode
+ * @param latin1 Whether or not to interpret the data as Latin-1. This should
+ *               not need to be true unless decoding a binary string.
+ * @returns The string encoded in UTF-8/Latin-1 binary
+ */
+function strToU8(str, latin1) {
+    if (latin1) {
+        var ar_1 = new u8(str.length);
+        for (var i = 0; i < str.length; ++i)
+            ar_1[i] = str.charCodeAt(i);
+        return ar_1;
+    }
+    if (te)
+        return te.encode(str);
+    var l = str.length;
+    var ar = new u8(str.length + (str.length >> 1));
+    var ai = 0;
+    var w = function (v) { ar[ai++] = v; };
+    for (var i = 0; i < l; ++i) {
+        if (ai + 5 > ar.length) {
+            var n = new u8(ai + 8 + ((l - i) << 1));
+            n.set(ar);
+            ar = n;
+        }
+        var c = str.charCodeAt(i);
+        if (c < 128 || latin1)
+            w(c);
+        else if (c < 2048)
+            w(192 | (c >> 6)), w(128 | (c & 63));
+        else if (c > 55295 && c < 57344)
+            c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),
+                w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));
+        else
+            w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));
+    }
+    return slc(ar, 0, ai);
+}
+exports.strToU8 = strToU8;
+/**
+ * Converts a Uint8Array to a string
+ * @param dat The data to decode to string
+ * @param latin1 Whether or not to interpret the data as Latin-1. This should
+ *               not need to be true unless encoding to binary string.
+ * @returns The original UTF-8/Latin-1 string
+ */
+function strFromU8(dat, latin1) {
+    if (latin1) {
+        var r = '';
+        for (var i = 0; i < dat.length; i += 16384)
+            r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));
+        return r;
+    }
+    else if (td) {
+        return td.decode(dat);
+    }
+    else {
+        var _a = dutf8(dat), s = _a.s, r = _a.r;
+        if (r.length)
+            err(8);
+        return s;
+    }
+}
+exports.strFromU8 = strFromU8;
+;
+// deflate bit flag
+var dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };
+// skip local zip header
+var slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };
+// read zip header
+var zh = function (d, b, z) {
+    var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);
+    var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];
+    return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];
+};
+// read zip64 extra field
+var z64e = function (d, b) {
+    for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))
+        ;
+    return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];
+};
+// extra field length
+var exfl = function (ex) {
+    var le = 0;
+    if (ex) {
+        for (var k in ex) {
+            var l = ex[k].length;
+            if (l > 65535)
+                err(9);
+            le += l + 4;
+        }
+    }
+    return le;
+};
+// write zip header
+var wzh = function (d, b, f, fn, u, c, ce, co) {
+    var fl = fn.length, ex = f.extra, col = co && co.length;
+    var exl = exfl(ex);
+    wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;
+    if (ce != null)
+        d[b++] = 20, d[b++] = f.os;
+    d[b] = 20, b += 2; // spec compliance? what's that?
+    d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;
+    d[b++] = f.compression & 255, d[b++] = f.compression >> 8;
+    var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;
+    if (y < 0 || y > 119)
+        err(10);
+    wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;
+    if (c != -1) {
+        wbytes(d, b, f.crc);
+        wbytes(d, b + 4, c < 0 ? -c - 2 : c);
+        wbytes(d, b + 8, f.size);
+    }
+    wbytes(d, b + 12, fl);
+    wbytes(d, b + 14, exl), b += 16;
+    if (ce != null) {
+        wbytes(d, b, col);
+        wbytes(d, b + 6, f.attrs);
+        wbytes(d, b + 10, ce), b += 14;
+    }
+    d.set(fn, b);
+    b += fl;
+    if (exl) {
+        for (var k in ex) {
+            var exf = ex[k], l = exf.length;
+            wbytes(d, b, +k);
+            wbytes(d, b + 2, l);
+            d.set(exf, b + 4), b += 4 + l;
+        }
+    }
+    if (col)
+        d.set(co, b), b += col;
+    return b;
+};
+// write zip footer (end of central directory)
+var wzf = function (o, b, c, d, e) {
+    wbytes(o, b, 0x6054B50); // skip disk
+    wbytes(o, b + 8, c);
+    wbytes(o, b + 10, c);
+    wbytes(o, b + 12, d);
+    wbytes(o, b + 16, e);
+};
+/**
+ * A pass-through stream to keep data uncompressed in a ZIP archive.
+ */
+var ZipPassThrough = /*#__PURE__*/ (function () {
+    /**
+     * Creates a pass-through stream that can be added to ZIP archives
+     * @param filename The filename to associate with this data stream
+     */
+    function ZipPassThrough(filename) {
+        this.filename = filename;
+        this.c = crc();
+        this.size = 0;
+        this.compression = 0;
+    }
+    /**
+     * Processes a chunk and pushes to the output stream. You can override this
+     * method in a subclass for custom behavior, but by default this passes
+     * the data through. You must call this.ondata(err, chunk, final) at some
+     * point in this method.
+     * @param chunk The chunk to process
+     * @param final Whether this is the last chunk
+     */
+    ZipPassThrough.prototype.process = function (chunk, final) {
+        this.ondata(null, chunk, final);
+    };
+    /**
+     * Pushes a chunk to be added. If you are subclassing this with a custom
+     * compression algorithm, note that you must push data from the source
+     * file only, pre-compression.
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    ZipPassThrough.prototype.push = function (chunk, final) {
+        if (!this.ondata)
+            err(5);
+        this.c.p(chunk);
+        this.size += chunk.length;
+        if (final)
+            this.crc = this.c.d();
+        this.process(chunk, final || false);
+    };
+    return ZipPassThrough;
+}());
+exports.ZipPassThrough = ZipPassThrough;
+// I don't extend because TypeScript extension adds 1kB of runtime bloat
+/**
+ * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate
+ * for better performance
+ */
+var ZipDeflate = /*#__PURE__*/ (function () {
+    /**
+     * Creates a DEFLATE stream that can be added to ZIP archives
+     * @param filename The filename to associate with this data stream
+     * @param opts The compression options
+     */
+    function ZipDeflate(filename, opts) {
+        var _this = this;
+        if (!opts)
+            opts = {};
+        ZipPassThrough.call(this, filename);
+        this.d = new Deflate(opts, function (dat, final) {
+            _this.ondata(null, dat, final);
+        });
+        this.compression = 8;
+        this.flag = dbf(opts.level);
+    }
+    ZipDeflate.prototype.process = function (chunk, final) {
+        try {
+            this.d.push(chunk, final);
+        }
+        catch (e) {
+            this.ondata(e, null, final);
+        }
+    };
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    ZipDeflate.prototype.push = function (chunk, final) {
+        ZipPassThrough.prototype.push.call(this, chunk, final);
+    };
+    return ZipDeflate;
+}());
+exports.ZipDeflate = ZipDeflate;
+/**
+ * Asynchronous streaming DEFLATE compression for ZIP archives
+ */
+var AsyncZipDeflate = /*#__PURE__*/ (function () {
+    /**
+     * Creates an asynchronous DEFLATE stream that can be added to ZIP archives
+     * @param filename The filename to associate with this data stream
+     * @param opts The compression options
+     */
+    function AsyncZipDeflate(filename, opts) {
+        var _this = this;
+        if (!opts)
+            opts = {};
+        ZipPassThrough.call(this, filename);
+        this.d = new AsyncDeflate(opts, function (err, dat, final) {
+            _this.ondata(err, dat, final);
+        });
+        this.compression = 8;
+        this.flag = dbf(opts.level);
+        this.terminate = this.d.terminate;
+    }
+    AsyncZipDeflate.prototype.process = function (chunk, final) {
+        this.d.push(chunk, final);
+    };
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    AsyncZipDeflate.prototype.push = function (chunk, final) {
+        ZipPassThrough.prototype.push.call(this, chunk, final);
+    };
+    return AsyncZipDeflate;
+}());
+exports.AsyncZipDeflate = AsyncZipDeflate;
+// TODO: Better tree shaking
+/**
+ * A zippable archive to which files can incrementally be added
+ */
+var Zip = /*#__PURE__*/ (function () {
+    /**
+     * Creates an empty ZIP archive to which files can be added
+     * @param cb The callback to call whenever data for the generated ZIP archive
+     *           is available
+     */
+    function Zip(cb) {
+        this.ondata = cb;
+        this.u = [];
+        this.d = 1;
+    }
+    /**
+     * Adds a file to the ZIP archive
+     * @param file The file stream to add
+     */
+    Zip.prototype.add = function (file) {
+        var _this = this;
+        if (!this.ondata)
+            err(5);
+        // finishing or finished
+        if (this.d & 2)
+            this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);
+        else {
+            var f = strToU8(file.filename), fl_1 = f.length;
+            var com = file.comment, o = com && strToU8(com);
+            var u = fl_1 != file.filename.length || (o && (com.length != o.length));
+            var hl_1 = fl_1 + exfl(file.extra) + 30;
+            if (fl_1 > 65535)
+                this.ondata(err(11, 0, 1), null, false);
+            var header = new u8(hl_1);
+            wzh(header, 0, file, f, u, -1);
+            var chks_1 = [header];
+            var pAll_1 = function () {
+                for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {
+                    var chk = chks_2[_i];
+                    _this.ondata(null, chk, false);
+                }
+                chks_1 = [];
+            };
+            var tr_1 = this.d;
+            this.d = 0;
+            var ind_1 = this.u.length;
+            var uf_1 = mrg(file, {
+                f: f,
+                u: u,
+                o: o,
+                t: function () {
+                    if (file.terminate)
+                        file.terminate();
+                },
+                r: function () {
+                    pAll_1();
+                    if (tr_1) {
+                        var nxt = _this.u[ind_1 + 1];
+                        if (nxt)
+                            nxt.r();
+                        else
+                            _this.d = 1;
+                    }
+                    tr_1 = 1;
+                }
+            });
+            var cl_1 = 0;
+            file.ondata = function (err, dat, final) {
+                if (err) {
+                    _this.ondata(err, dat, final);
+                    _this.terminate();
+                }
+                else {
+                    cl_1 += dat.length;
+                    chks_1.push(dat);
+                    if (final) {
+                        var dd = new u8(16);
+                        wbytes(dd, 0, 0x8074B50);
+                        wbytes(dd, 4, file.crc);
+                        wbytes(dd, 8, cl_1);
+                        wbytes(dd, 12, file.size);
+                        chks_1.push(dd);
+                        uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;
+                        if (tr_1)
+                            uf_1.r();
+                        tr_1 = 1;
+                    }
+                    else if (tr_1)
+                        pAll_1();
+                }
+            };
+            this.u.push(uf_1);
+        }
+    };
+    /**
+     * Ends the process of adding files and prepares to emit the final chunks.
+     * This *must* be called after adding all desired files for the resulting
+     * ZIP file to work properly.
+     */
+    Zip.prototype.end = function () {
+        var _this = this;
+        if (this.d & 2) {
+            this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);
+            return;
+        }
+        if (this.d)
+            this.e();
+        else
+            this.u.push({
+                r: function () {
+                    if (!(_this.d & 1))
+                        return;
+                    _this.u.splice(-1, 1);
+                    _this.e();
+                },
+                t: function () { }
+            });
+        this.d = 3;
+    };
+    Zip.prototype.e = function () {
+        var bt = 0, l = 0, tl = 0;
+        for (var _i = 0, _a = this.u; _i < _a.length; _i++) {
+            var f = _a[_i];
+            tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);
+        }
+        var out = new u8(tl + 22);
+        for (var _b = 0, _c = this.u; _b < _c.length; _b++) {
+            var f = _c[_b];
+            wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);
+            bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;
+        }
+        wzf(out, bt, this.u.length, tl, l);
+        this.ondata(null, out, true);
+        this.d = 2;
+    };
+    /**
+     * A method to terminate any internal workers used by the stream. Subsequent
+     * calls to add() will fail.
+     */
+    Zip.prototype.terminate = function () {
+        for (var _i = 0, _a = this.u; _i < _a.length; _i++) {
+            var f = _a[_i];
+            f.t();
+        }
+        this.d = 2;
+    };
+    return Zip;
+}());
+exports.Zip = Zip;
+function zip(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    var r = {};
+    fltn(data, '', r, opts);
+    var k = Object.keys(r);
+    var lft = k.length, o = 0, tot = 0;
+    var slft = lft, files = new Array(lft);
+    var term = [];
+    var tAll = function () {
+        for (var i = 0; i < term.length; ++i)
+            term[i]();
+    };
+    var cbd = function (a, b) {
+        mt(function () { cb(a, b); });
+    };
+    mt(function () { cbd = cb; });
+    var cbf = function () {
+        var out = new u8(tot + 22), oe = o, cdl = tot - o;
+        tot = 0;
+        for (var i = 0; i < slft; ++i) {
+            var f = files[i];
+            try {
+                var l = f.c.length;
+                wzh(out, tot, f, f.f, f.u, l);
+                var badd = 30 + f.f.length + exfl(f.extra);
+                var loc = tot + badd;
+                out.set(f.c, loc);
+                wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;
+            }
+            catch (e) {
+                return cbd(e, null);
+            }
+        }
+        wzf(out, o, files.length, cdl, oe);
+        cbd(null, out);
+    };
+    if (!lft)
+        cbf();
+    var _loop_1 = function (i) {
+        var fn = k[i];
+        var _a = r[fn], file = _a[0], p = _a[1];
+        var c = crc(), size = file.length;
+        c.p(file);
+        var f = strToU8(fn), s = f.length;
+        var com = p.comment, m = com && strToU8(com), ms = m && m.length;
+        var exl = exfl(p.extra);
+        var compression = p.level == 0 ? 0 : 8;
+        var cbl = function (e, d) {
+            if (e) {
+                tAll();
+                cbd(e, null);
+            }
+            else {
+                var l = d.length;
+                files[i] = mrg(p, {
+                    size: size,
+                    crc: c.d(),
+                    c: d,
+                    f: f,
+                    m: m,
+                    u: s != fn.length || (m && (com.length != ms)),
+                    compression: compression
+                });
+                o += 30 + s + exl + l;
+                tot += 76 + 2 * (s + exl) + (ms || 0) + l;
+                if (!--lft)
+                    cbf();
+            }
+        };
+        if (s > 65535)
+            cbl(err(11, 0, 1), null);
+        if (!compression)
+            cbl(null, file);
+        else if (size < 160000) {
+            try {
+                cbl(null, deflateSync(file, p));
+            }
+            catch (e) {
+                cbl(e, null);
+            }
+        }
+        else
+            term.push(deflate(file, p, cbl));
+    };
+    // Cannot use lft because it can decrease
+    for (var i = 0; i < slft; ++i) {
+        _loop_1(i);
+    }
+    return tAll;
+}
+exports.zip = zip;
+/**
+ * Synchronously creates a ZIP file. Prefer using `zip` for better performance
+ * with more than one file.
+ * @param data The directory structure for the ZIP archive
+ * @param opts The main options, merged with per-file options
+ * @returns The generated ZIP archive
+ */
+function zipSync(data, opts) {
+    if (!opts)
+        opts = {};
+    var r = {};
+    var files = [];
+    fltn(data, '', r, opts);
+    var o = 0;
+    var tot = 0;
+    for (var fn in r) {
+        var _a = r[fn], file = _a[0], p = _a[1];
+        var compression = p.level == 0 ? 0 : 8;
+        var f = strToU8(fn), s = f.length;
+        var com = p.comment, m = com && strToU8(com), ms = m && m.length;
+        var exl = exfl(p.extra);
+        if (s > 65535)
+            err(11);
+        var d = compression ? deflateSync(file, p) : file, l = d.length;
+        var c = crc();
+        c.p(file);
+        files.push(mrg(p, {
+            size: file.length,
+            crc: c.d(),
+            c: d,
+            f: f,
+            m: m,
+            u: s != fn.length || (m && (com.length != ms)),
+            o: o,
+            compression: compression
+        }));
+        o += 30 + s + exl + l;
+        tot += 76 + 2 * (s + exl) + (ms || 0) + l;
+    }
+    var out = new u8(tot + 22), oe = o, cdl = tot - o;
+    for (var i = 0; i < files.length; ++i) {
+        var f = files[i];
+        wzh(out, f.o, f, f.f, f.u, f.c.length);
+        var badd = 30 + f.f.length + exfl(f.extra);
+        out.set(f.c, f.o + badd);
+        wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);
+    }
+    wzf(out, o, files.length, cdl, oe);
+    return out;
+}
+exports.zipSync = zipSync;
+/**
+ * Streaming pass-through decompression for ZIP archives
+ */
+var UnzipPassThrough = /*#__PURE__*/ (function () {
+    function UnzipPassThrough() {
+    }
+    UnzipPassThrough.prototype.push = function (data, final) {
+        this.ondata(null, data, final);
+    };
+    UnzipPassThrough.compression = 0;
+    return UnzipPassThrough;
+}());
+exports.UnzipPassThrough = UnzipPassThrough;
+/**
+ * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for
+ * better performance.
+ */
+var UnzipInflate = /*#__PURE__*/ (function () {
+    /**
+     * Creates a DEFLATE decompression that can be used in ZIP archives
+     */
+    function UnzipInflate() {
+        var _this = this;
+        this.i = new Inflate(function (dat, final) {
+            _this.ondata(null, dat, final);
+        });
+    }
+    UnzipInflate.prototype.push = function (data, final) {
+        try {
+            this.i.push(data, final);
+        }
+        catch (e) {
+            this.ondata(e, null, final);
+        }
+    };
+    UnzipInflate.compression = 8;
+    return UnzipInflate;
+}());
+exports.UnzipInflate = UnzipInflate;
+/**
+ * Asynchronous streaming DEFLATE decompression for ZIP archives
+ */
+var AsyncUnzipInflate = /*#__PURE__*/ (function () {
+    /**
+     * Creates a DEFLATE decompression that can be used in ZIP archives
+     */
+    function AsyncUnzipInflate(_, sz) {
+        var _this = this;
+        if (sz < 320000) {
+            this.i = new Inflate(function (dat, final) {
+                _this.ondata(null, dat, final);
+            });
+        }
+        else {
+            this.i = new AsyncInflate(function (err, dat, final) {
+                _this.ondata(err, dat, final);
+            });
+            this.terminate = this.i.terminate;
+        }
+    }
+    AsyncUnzipInflate.prototype.push = function (data, final) {
+        if (this.i.terminate)
+            data = slc(data, 0);
+        this.i.push(data, final);
+    };
+    AsyncUnzipInflate.compression = 8;
+    return AsyncUnzipInflate;
+}());
+exports.AsyncUnzipInflate = AsyncUnzipInflate;
+/**
+ * A ZIP archive decompression stream that emits files as they are discovered
+ */
+var Unzip = /*#__PURE__*/ (function () {
+    /**
+     * Creates a ZIP decompression stream
+     * @param cb The callback to call whenever a file in the ZIP archive is found
+     */
+    function Unzip(cb) {
+        this.onfile = cb;
+        this.k = [];
+        this.o = {
+            0: UnzipPassThrough
+        };
+        this.p = et;
+    }
+    /**
+     * Pushes a chunk to be unzipped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    Unzip.prototype.push = function (chunk, final) {
+        var _this = this;
+        if (!this.onfile)
+            err(5);
+        if (!this.p)
+            err(4);
+        if (this.c > 0) {
+            var len = Math.min(this.c, chunk.length);
+            var toAdd = chunk.subarray(0, len);
+            this.c -= len;
+            if (this.d)
+                this.d.push(toAdd, !this.c);
+            else
+                this.k[0].push(toAdd);
+            chunk = chunk.subarray(len);
+            if (chunk.length)
+                return this.push(chunk, final);
+        }
+        else {
+            var f = 0, i = 0, is = void 0, buf = void 0;
+            if (!this.p.length)
+                buf = chunk;
+            else if (!chunk.length)
+                buf = this.p;
+            else {
+                buf = new u8(this.p.length + chunk.length);
+                buf.set(this.p), buf.set(chunk, this.p.length);
+            }
+            var l = buf.length, oc = this.c, add = oc && this.d;
+            var _loop_2 = function () {
+                var _a;
+                var sig = b4(buf, i);
+                if (sig == 0x4034B50) {
+                    f = 1, is = i;
+                    this_1.d = null;
+                    this_1.c = 0;
+                    var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);
+                    if (l > i + 30 + fnl + es) {
+                        var chks_3 = [];
+                        this_1.k.unshift(chks_3);
+                        f = 2;
+                        var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);
+                        var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);
+                        if (sc_1 == 4294967295) {
+                            _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];
+                        }
+                        else if (dd)
+                            sc_1 = -1;
+                        i += es;
+                        this_1.c = sc_1;
+                        var d_1;
+                        var file_1 = {
+                            name: fn_1,
+                            compression: cmp_1,
+                            start: function () {
+                                if (!file_1.ondata)
+                                    err(5);
+                                if (!sc_1)
+                                    file_1.ondata(null, et, true);
+                                else {
+                                    var ctr = _this.o[cmp_1];
+                                    if (!ctr)
+                                        file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);
+                                    d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);
+                                    d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };
+                                    for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {
+                                        var dat = chks_4[_i];
+                                        d_1.push(dat, false);
+                                    }
+                                    if (_this.k[0] == chks_3 && _this.c)
+                                        _this.d = d_1;
+                                    else
+                                        d_1.push(et, true);
+                                }
+                            },
+                            terminate: function () {
+                                if (d_1 && d_1.terminate)
+                                    d_1.terminate();
+                            }
+                        };
+                        if (sc_1 >= 0)
+                            file_1.size = sc_1, file_1.originalSize = su_1;
+                        this_1.onfile(file_1);
+                    }
+                    return "break";
+                }
+                else if (oc) {
+                    if (sig == 0x8074B50) {
+                        is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;
+                        return "break";
+                    }
+                    else if (sig == 0x2014B50) {
+                        is = i -= 4, f = 3, this_1.c = 0;
+                        return "break";
+                    }
+                }
+            };
+            var this_1 = this;
+            for (; i < l - 4; ++i) {
+                var state_1 = _loop_2();
+                if (state_1 === "break")
+                    break;
+            }
+            this.p = et;
+            if (oc < 0) {
+                var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);
+                if (add)
+                    add.push(dat, !!f);
+                else
+                    this.k[+(f == 2)].push(dat);
+            }
+            if (f & 2)
+                return this.push(buf.subarray(i), final);
+            this.p = buf.subarray(i);
+        }
+        if (final) {
+            if (this.c)
+                err(13);
+            this.p = null;
+        }
+    };
+    /**
+     * Registers a decoder with the stream, allowing for files compressed with
+     * the compression type provided to be expanded correctly
+     * @param decoder The decoder constructor
+     */
+    Unzip.prototype.register = function (decoder) {
+        this.o[decoder.compression] = decoder;
+    };
+    return Unzip;
+}());
+exports.Unzip = Unzip;
+var mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };
+function unzip(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    var term = [];
+    var tAll = function () {
+        for (var i = 0; i < term.length; ++i)
+            term[i]();
+    };
+    var files = {};
+    var cbd = function (a, b) {
+        mt(function () { cb(a, b); });
+    };
+    mt(function () { cbd = cb; });
+    var e = data.length - 22;
+    for (; b4(data, e) != 0x6054B50; --e) {
+        if (!e || data.length - e > 65558) {
+            cbd(err(13, 0, 1), null);
+            return tAll;
+        }
+    }
+    ;
+    var lft = b2(data, e + 8);
+    if (lft) {
+        var c = lft;
+        var o = b4(data, e + 16);
+        var z = o == 4294967295 || c == 65535;
+        if (z) {
+            var ze = b4(data, e - 12);
+            z = b4(data, ze) == 0x6064B50;
+            if (z) {
+                c = lft = b4(data, ze + 32);
+                o = b4(data, ze + 48);
+            }
+        }
+        var fltr = opts && opts.filter;
+        var _loop_3 = function (i) {
+            var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);
+            o = no;
+            var cbl = function (e, d) {
+                if (e) {
+                    tAll();
+                    cbd(e, null);
+                }
+                else {
+                    if (d)
+                        files[fn] = d;
+                    if (!--lft)
+                        cbd(null, files);
+                }
+            };
+            if (!fltr || fltr({
+                name: fn,
+                size: sc,
+                originalSize: su,
+                compression: c_1
+            })) {
+                if (!c_1)
+                    cbl(null, slc(data, b, b + sc));
+                else if (c_1 == 8) {
+                    var infl = data.subarray(b, b + sc);
+                    // Synchronously decompress under 512KB, or barely-compressed data
+                    if (su < 524288 || sc > 0.8 * su) {
+                        try {
+                            cbl(null, inflateSync(infl, { out: new u8(su) }));
+                        }
+                        catch (e) {
+                            cbl(e, null);
+                        }
+                    }
+                    else
+                        term.push(inflate(infl, { size: su }, cbl));
+                }
+                else
+                    cbl(err(14, 'unknown compression type ' + c_1, 1), null);
+            }
+            else
+                cbl(null, null);
+        };
+        for (var i = 0; i < c; ++i) {
+            _loop_3(i);
+        }
+    }
+    else
+        cbd(null, {});
+    return tAll;
+}
+exports.unzip = unzip;
+/**
+ * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better
+ * performance with more than one file.
+ * @param data The raw compressed ZIP file
+ * @param opts The ZIP extraction options
+ * @returns The decompressed files
+ */
+function unzipSync(data, opts) {
+    var files = {};
+    var e = data.length - 22;
+    for (; b4(data, e) != 0x6054B50; --e) {
+        if (!e || data.length - e > 65558)
+            err(13);
+    }
+    ;
+    var c = b2(data, e + 8);
+    if (!c)
+        return {};
+    var o = b4(data, e + 16);
+    var z = o == 4294967295 || c == 65535;
+    if (z) {
+        var ze = b4(data, e - 12);
+        z = b4(data, ze) == 0x6064B50;
+        if (z) {
+            c = b4(data, ze + 32);
+            o = b4(data, ze + 48);
+        }
+    }
+    var fltr = opts && opts.filter;
+    for (var i = 0; i < c; ++i) {
+        var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);
+        o = no;
+        if (!fltr || fltr({
+            name: fn,
+            size: sc,
+            originalSize: su,
+            compression: c_2
+        })) {
+            if (!c_2)
+                files[fn] = slc(data, b, b + sc);
+            else if (c_2 == 8)
+                files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });
+            else
+                err(14, 'unknown compression type ' + c_2);
+        }
+    }
+    return files;
+}
+exports.unzipSync = unzipSync;
diff --git a/node_modules/fflate/lib/browser.d.cts b/node_modules/fflate/lib/browser.d.cts
new file mode 100644
index 0000000..a3b5b01
--- /dev/null
+++ b/node_modules/fflate/lib/browser.d.cts
@@ -0,0 +1,1501 @@
+/**
+ * Codes for errors generated within this library
+ */
+export declare const FlateErrorCode: {
+    readonly UnexpectedEOF: 0;
+    readonly InvalidBlockType: 1;
+    readonly InvalidLengthLiteral: 2;
+    readonly InvalidDistance: 3;
+    readonly StreamFinished: 4;
+    readonly NoStreamHandler: 5;
+    readonly InvalidHeader: 6;
+    readonly NoCallback: 7;
+    readonly InvalidUTF8: 8;
+    readonly ExtraFieldTooLong: 9;
+    readonly InvalidDate: 10;
+    readonly FilenameTooLong: 11;
+    readonly StreamFinishing: 12;
+    readonly InvalidZipData: 13;
+    readonly UnknownCompressionMethod: 14;
+};
+/**
+ * An error generated within this library
+ */
+export interface FlateError extends Error {
+    /**
+     * The code associated with this error
+     */
+    code: number;
+}
+/**
+ * Options for decompressing a DEFLATE stream
+ */
+export interface InflateStreamOptions {
+    /**
+     * The dictionary used to compress the original data. If no dictionary was used during compression, this option has no effect.
+     *
+     * Supplying the wrong dictionary during decompression usually yields corrupt output or causes an invalid distance error.
+     */
+    dictionary?: Uint8Array;
+}
+/**
+ * Options for decompressing DEFLATE data
+ */
+export interface InflateOptions extends InflateStreamOptions {
+    /**
+     * The buffer into which to write the decompressed data. Saves memory if you know the decompressed size in advance.
+     *
+     * Note that if the decompression result is larger than the size of this buffer, it will be truncated to fit.
+     */
+    out?: Uint8Array;
+}
+/**
+ * Options for decompressing a GZIP stream
+ */
+export interface GunzipStreamOptions extends InflateStreamOptions {
+}
+/**
+ * Options for decompressing GZIP data
+ */
+export interface GunzipOptions extends InflateStreamOptions {
+    /**
+     * The buffer into which to write the decompressed data. GZIP already encodes the output size, so providing this doesn't save memory.
+     *
+     * Note that if the decompression result is larger than the size of this buffer, it will be truncated to fit.
+     */
+    out?: Uint8Array;
+}
+/**
+ * Options for decompressing a Zlib stream
+ */
+export interface UnzlibStreamOptions extends InflateStreamOptions {
+}
+/**
+ * Options for decompressing Zlib data
+ */
+export interface UnzlibOptions extends InflateOptions {
+}
+/**
+ * Options for compressing data into a DEFLATE format
+ */
+export interface DeflateOptions {
+    /**
+     * The level of compression to use, ranging from 0-9.
+     *
+     * 0 will store the data without compression.
+     * 1 is fastest but compresses the worst, 9 is slowest but compresses the best.
+     * The default level is 6.
+     *
+     * Typically, binary data benefits much more from higher values than text data.
+     * In both cases, higher values usually take disproportionately longer than the reduction in final size that results.
+     *
+     * For example, a 1 MB text file could:
+     * - become 1.01 MB with level 0 in 1ms
+     * - become 400 kB with level 1 in 10ms
+     * - become 320 kB with level 9 in 100ms
+     */
+    level?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
+    /**
+     * The memory level to use, ranging from 0-12. Increasing this increases speed and compression ratio at the cost of memory.
+     *
+     * Note that this is exponential: while level 0 uses 4 kB, level 4 uses 64 kB, level 8 uses 1 MB, and level 12 uses 16 MB.
+     * It is recommended not to lower the value below 4, since that tends to hurt performance.
+     * In addition, values above 8 tend to help very little on most data and can even hurt performance.
+     *
+     * The default value is automatically determined based on the size of the input data.
+     */
+    mem?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
+    /**
+     * A buffer containing common byte sequences in the input data that can be used to significantly improve compression ratios.
+     *
+     * Dictionaries should be 32kB or smaller and include strings or byte sequences likely to appear in the input.
+     * The decompressor must supply the same dictionary as the compressor to extract the original data.
+     *
+     * Dictionaries only improve aggregate compression ratio when reused across multiple small inputs. They should typically not be used otherwise.
+     *
+     * Avoid using dictionaries with GZIP and ZIP to maximize software compatibility.
+     */
+    dictionary?: Uint8Array;
+}
+/**
+ * Options for compressing data into a GZIP format
+ */
+export interface GzipOptions extends DeflateOptions {
+    /**
+     * When the file was last modified. Defaults to the current time.
+     * Set this to 0 to avoid revealing a modification date entirely.
+     */
+    mtime?: Date | string | number;
+    /**
+     * The filename of the data. If the `gunzip` command is used to decompress the data, it will output a file
+     * with this name instead of the name of the compressed file.
+     */
+    filename?: string;
+}
+/**
+ * Options for compressing data into a Zlib format
+ */
+export interface ZlibOptions extends DeflateOptions {
+}
+/**
+ * Handler for data (de)compression streams
+ * @param data The data output from the stream processor
+ * @param final Whether this is the final block
+ */
+export type FlateStreamHandler = (data: Uint8Array, final: boolean) => void;
+/**
+ * Handler for asynchronous data (de)compression streams
+ * @param err Any error that occurred
+ * @param data The data output from the stream processor
+ * @param final Whether this is the final block
+ */
+export type AsyncFlateStreamHandler = (err: FlateError | null, data: Uint8Array, final: boolean) => void;
+/**
+ * Handler for the asynchronous completion of (de)compression for a data chunk
+ * @param size The number of bytes that were processed. This is measured in terms of the input
+ * (i.e. compressed bytes for decompression, uncompressed bytes for compression.)
+ */
+export type AsyncFlateDrainHandler = (size: number) => void;
+/**
+ * Callback for asynchronous (de)compression methods
+ * @param err Any error that occurred
+ * @param data The resulting data. Only present if `err` is null
+ */
+export type FlateCallback = (err: FlateError | null, data: Uint8Array) => void;
+interface AsyncOptions {
+    /**
+     * Whether or not to "consume" the source data. This will make the typed array/buffer you pass in
+     * unusable but will increase performance and reduce memory usage.
+     */
+    consume?: boolean;
+}
+/**
+ * Options for compressing data asynchronously into a DEFLATE format
+ */
+export interface AsyncDeflateOptions extends DeflateOptions, AsyncOptions {
+}
+/**
+ * Options for decompressing DEFLATE data asynchronously
+ */
+export interface AsyncInflateOptions extends AsyncOptions, InflateStreamOptions {
+    /**
+     * The original size of the data. Currently, the asynchronous API disallows
+     * writing into a buffer you provide; the best you can do is provide the
+     * size in bytes and be given back a new typed array.
+     */
+    size?: number;
+}
+/**
+ * Options for compressing data asynchronously into a GZIP format
+ */
+export interface AsyncGzipOptions extends GzipOptions, AsyncOptions {
+}
+/**
+ * Options for decompressing GZIP data asynchronously
+ */
+export interface AsyncGunzipOptions extends AsyncOptions, InflateStreamOptions {
+}
+/**
+ * Options for compressing data asynchronously into a Zlib format
+ */
+export interface AsyncZlibOptions extends ZlibOptions, AsyncOptions {
+}
+/**
+ * Options for decompressing Zlib data asynchronously
+ */
+export interface AsyncUnzlibOptions extends AsyncInflateOptions {
+}
+/**
+ * A terminable compression/decompression process
+ */
+export interface AsyncTerminable {
+    /**
+     * Terminates the worker thread immediately. The callback will not be called.
+     */
+    (): void;
+}
+/**
+ * Streaming DEFLATE compression
+ */
+export declare class Deflate {
+    /**
+     * Creates a DEFLATE stream
+     * @param opts The compression options
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(opts: DeflateOptions, cb?: FlateStreamHandler);
+    /**
+     * Creates a DEFLATE stream
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(cb?: FlateStreamHandler);
+    private b;
+    private s;
+    private o;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+    private p;
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * deflated output for small inputs.
+     */
+    flush(): void;
+}
+/**
+ * Asynchronous streaming DEFLATE compression
+ */
+export declare class AsyncDeflate {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The handler to call whenever buffered source data is processed (i.e. `queuedSize` updates)
+     */
+    ondrain?: AsyncFlateDrainHandler;
+    /**
+     * The number of uncompressed bytes buffered in the stream
+     */
+    queuedSize: number;
+    /**
+     * Creates an asynchronous DEFLATE stream
+     * @param opts The compression options
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(opts: DeflateOptions, cb?: AsyncFlateStreamHandler);
+    /**
+     * Creates an asynchronous DEFLATE stream
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * deflated output for small inputs.
+     */
+    flush(): void;
+    /**
+     * A method to terminate the stream's internal worker. Subsequent calls to
+     * push() will silently fail.
+     */
+    terminate: AsyncTerminable;
+}
+/**
+ * Asynchronously compresses data with DEFLATE without any wrapper
+ * @param data The data to compress
+ * @param opts The compression options
+ * @param cb The function to be called upon compression completion
+ * @returns A function that can be used to immediately terminate the compression
+ */
+export declare function deflate(data: Uint8Array, opts: AsyncDeflateOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchronously compresses data with DEFLATE without any wrapper
+ * @param data The data to compress
+ * @param cb The function to be called upon compression completion
+ */
+export declare function deflate(data: Uint8Array, cb: FlateCallback): AsyncTerminable;
+/**
+ * Compresses data with DEFLATE without any wrapper
+ * @param data The data to compress
+ * @param opts The compression options
+ * @returns The deflated version of the data
+ */
+export declare function deflateSync(data: Uint8Array, opts?: DeflateOptions): Uint8Array;
+/**
+ * Streaming DEFLATE decompression
+ */
+export declare class Inflate {
+    private s;
+    private o;
+    private p;
+    private d;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+    /**
+     * Creates a DEFLATE decompression stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(opts: InflateStreamOptions, cb?: FlateStreamHandler);
+    /**
+     * Creates a DEFLATE decompression stream
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(cb?: FlateStreamHandler);
+    private e;
+    private c;
+    /**
+     * Pushes a chunk to be inflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the final chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * Asynchronous streaming DEFLATE decompression
+ */
+export declare class AsyncInflate {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The handler to call whenever buffered source data is processed (i.e. `queuedSize` updates)
+     */
+    ondrain?: AsyncFlateDrainHandler;
+    /**
+     * The number of compressed bytes buffered in the stream
+     */
+    queuedSize: number;
+    /**
+     * Creates an asynchronous DEFLATE decompression stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(opts: InflateStreamOptions, cb?: AsyncFlateStreamHandler);
+    /**
+     * Creates an asynchronous DEFLATE decompression stream
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    /**
+     * Pushes a chunk to be inflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * A method to terminate the stream's internal worker. Subsequent calls to
+     * push() will silently fail.
+     */
+    terminate: AsyncTerminable;
+}
+/**
+ * Asynchronously expands DEFLATE data with no wrapper
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function inflate(data: Uint8Array, opts: AsyncInflateOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchronously expands DEFLATE data with no wrapper
+ * @param data The data to decompress
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function inflate(data: Uint8Array, cb: FlateCallback): AsyncTerminable;
+/**
+ * Expands DEFLATE data with no wrapper
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+export declare function inflateSync(data: Uint8Array, opts?: InflateOptions): Uint8Array;
+/**
+ * Streaming GZIP compression
+ */
+export declare class Gzip {
+    private c;
+    private l;
+    private v;
+    private o;
+    private s;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+    /**
+     * Creates a GZIP stream
+     * @param opts The compression options
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(opts: GzipOptions, cb?: FlateStreamHandler);
+    /**
+     * Creates a GZIP stream
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(cb?: FlateStreamHandler);
+    /**
+     * Pushes a chunk to be GZIPped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    private p;
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * GZIPped output for small inputs.
+     */
+    flush(): void;
+}
+/**
+ * Asynchronous streaming GZIP compression
+ */
+export declare class AsyncGzip {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The handler to call whenever buffered source data is processed (i.e. `queuedSize` updates)
+     */
+    ondrain?: AsyncFlateDrainHandler;
+    /**
+     * The number of uncompressed bytes buffered in the stream
+     */
+    queuedSize: number;
+    /**
+     * Creates an asynchronous GZIP stream
+     * @param opts The compression options
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(opts: GzipOptions, cb?: AsyncFlateStreamHandler);
+    /**
+     * Creates an asynchronous GZIP stream
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    /**
+     * Pushes a chunk to be GZIPped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * GZIPped output for small inputs.
+     */
+    flush(): void;
+    /**
+     * A method to terminate the stream's internal worker. Subsequent calls to
+     * push() will silently fail.
+     */
+    terminate: AsyncTerminable;
+}
+/**
+ * Asynchronously compresses data with GZIP
+ * @param data The data to compress
+ * @param opts The compression options
+ * @param cb The function to be called upon compression completion
+ * @returns A function that can be used to immediately terminate the compression
+ */
+export declare function gzip(data: Uint8Array, opts: AsyncGzipOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchronously compresses data with GZIP
+ * @param data The data to compress
+ * @param cb The function to be called upon compression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function gzip(data: Uint8Array, cb: FlateCallback): AsyncTerminable;
+/**
+ * Compresses data with GZIP
+ * @param data The data to compress
+ * @param opts The compression options
+ * @returns The gzipped version of the data
+ */
+export declare function gzipSync(data: Uint8Array, opts?: GzipOptions): Uint8Array;
+/**
+ * Handler for new GZIP members in concatenated GZIP streams. Useful for building indices used to perform random-access reads on compressed files.
+ * @param offset The offset of the new member relative to the start of the stream
+ */
+export type GunzipMemberHandler = (offset: number) => void;
+/**
+ * Streaming single or multi-member GZIP decompression
+ */
+export declare class Gunzip {
+    private v;
+    private r;
+    private o;
+    private p;
+    private s;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+    /**
+     * The handler to call whenever a new GZIP member is found
+     */
+    onmember?: GunzipMemberHandler;
+    /**
+     * Creates a GUNZIP stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(opts: GunzipStreamOptions, cb?: FlateStreamHandler);
+    /**
+     * Creates a GUNZIP stream
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(cb?: FlateStreamHandler);
+    /**
+     * Pushes a chunk to be GUNZIPped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * Asynchronous streaming single or multi-member GZIP decompression
+ */
+export declare class AsyncGunzip {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The handler to call whenever buffered source data is processed (i.e. `queuedSize` updates)
+     */
+    ondrain?: AsyncFlateDrainHandler;
+    /**
+     * The number of compressed bytes buffered in the stream
+     */
+    queuedSize: number;
+    /**
+     * The handler to call whenever a new GZIP member is found
+     */
+    onmember?: GunzipMemberHandler;
+    /**
+     * Creates an asynchronous GUNZIP stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(opts: GunzipStreamOptions, cb?: AsyncFlateStreamHandler);
+    /**
+     * Creates an asynchronous GUNZIP stream
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    /**
+     * Pushes a chunk to be GUNZIPped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * A method to terminate the stream's internal worker. Subsequent calls to
+     * push() will silently fail.
+     */
+    terminate: AsyncTerminable;
+}
+/**
+ * Asynchronously expands GZIP data
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function gunzip(data: Uint8Array, opts: AsyncGunzipOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchronously expands GZIP data
+ * @param data The data to decompress
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function gunzip(data: Uint8Array, cb: FlateCallback): AsyncTerminable;
+/**
+ * Expands GZIP data
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+export declare function gunzipSync(data: Uint8Array, opts?: GunzipOptions): Uint8Array;
+/**
+ * Streaming Zlib compression
+ */
+export declare class Zlib {
+    private c;
+    private v;
+    private o;
+    private s;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+    /**
+     * Creates a Zlib stream
+     * @param opts The compression options
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(opts: ZlibOptions, cb?: FlateStreamHandler);
+    /**
+     * Creates a Zlib stream
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(cb?: FlateStreamHandler);
+    /**
+     * Pushes a chunk to be zlibbed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    private p;
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * zlibbed output for small inputs.
+     */
+    flush(): void;
+}
+/**
+ * Asynchronous streaming Zlib compression
+ */
+export declare class AsyncZlib {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The handler to call whenever buffered source data is processed (i.e. `queuedSize` updates)
+     */
+    ondrain?: AsyncFlateDrainHandler;
+    /**
+     * The number of uncompressed bytes buffered in the stream
+     */
+    queuedSize: number;
+    /**
+     * Creates an asynchronous Zlib stream
+     * @param opts The compression options
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(opts: ZlibOptions, cb?: AsyncFlateStreamHandler);
+    /**
+     * Creates an asynchronous Zlib stream
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * zlibbed output for small inputs.
+     */
+    flush(): void;
+    /**
+     * A method to terminate the stream's internal worker. Subsequent calls to
+     * push() will silently fail.
+     */
+    terminate: AsyncTerminable;
+}
+/**
+ * Asynchronously compresses data with Zlib
+ * @param data The data to compress
+ * @param opts The compression options
+ * @param cb The function to be called upon compression completion
+ */
+export declare function zlib(data: Uint8Array, opts: AsyncZlibOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchronously compresses data with Zlib
+ * @param data The data to compress
+ * @param cb The function to be called upon compression completion
+ * @returns A function that can be used to immediately terminate the compression
+ */
+export declare function zlib(data: Uint8Array, cb: FlateCallback): AsyncTerminable;
+/**
+ * Compress data with Zlib
+ * @param data The data to compress
+ * @param opts The compression options
+ * @returns The zlib-compressed version of the data
+ */
+export declare function zlibSync(data: Uint8Array, opts?: ZlibOptions): Uint8Array;
+/**
+ * Streaming Zlib decompression
+ */
+export declare class Unzlib {
+    private v;
+    private p;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+    /**
+     * Creates a Zlib decompression stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(opts: UnzlibStreamOptions, cb?: FlateStreamHandler);
+    /**
+     * Creates a Zlib decompression stream
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(cb?: FlateStreamHandler);
+    /**
+     * Pushes a chunk to be unzlibbed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * Asynchronous streaming Zlib decompression
+ */
+export declare class AsyncUnzlib {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The handler to call whenever buffered source data is processed (i.e. `queuedSize` updates)
+     */
+    ondrain?: AsyncFlateDrainHandler;
+    /**
+     * The number of compressed bytes buffered in the stream
+     */
+    queuedSize: number;
+    /**
+     * Creates an asynchronous Zlib decompression stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(opts: UnzlibStreamOptions, cb?: AsyncFlateStreamHandler);
+    /**
+     * Creates an asynchronous Zlib decompression stream
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    /**
+     * Pushes a chunk to be decompressed from Zlib
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * A method to terminate the stream's internal worker. Subsequent calls to
+     * push() will silently fail.
+     */
+    terminate: AsyncTerminable;
+}
+/**
+ * Asynchronously expands Zlib data
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function unzlib(data: Uint8Array, opts: AsyncUnzlibOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchronously expands Zlib data
+ * @param data The data to decompress
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function unzlib(data: Uint8Array, cb: FlateCallback): AsyncTerminable;
+/**
+ * Expands Zlib data
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+export declare function unzlibSync(data: Uint8Array, opts?: UnzlibOptions): Uint8Array;
+export { gzip as compress, AsyncGzip as AsyncCompress };
+export { gzipSync as compressSync, Gzip as Compress };
+/**
+ * Streaming GZIP, Zlib, or raw DEFLATE decompression
+ */
+export declare class Decompress {
+    private G;
+    private I;
+    private Z;
+    private o;
+    private s;
+    private p;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+    /**
+     * Creates a decompression stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is decompressed
+     */
+    constructor(opts: InflateStreamOptions, cb?: FlateStreamHandler);
+    /**
+     * Creates a decompression stream
+     * @param cb The callback to call whenever data is decompressed
+     */
+    constructor(cb?: FlateStreamHandler);
+    private i;
+    /**
+     * Pushes a chunk to be decompressed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression
+ */
+export declare class AsyncDecompress {
+    private G;
+    private I;
+    private Z;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The handler to call whenever buffered source data is processed (i.e. `queuedSize` updates)
+     */
+    ondrain?: AsyncFlateDrainHandler;
+    /**
+     * The number of compressed bytes buffered in the stream
+     */
+    queuedSize: number;
+    /**
+     * Creates an asynchronous decompression stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is decompressed
+     */
+    constructor(opts: InflateStreamOptions, cb?: AsyncFlateStreamHandler);
+    /**
+     * Creates an asynchronous decompression stream
+     * @param cb The callback to call whenever data is decompressed
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    private i;
+    /**
+     * Pushes a chunk to be decompressed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * Asynchrononously expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function decompress(data: Uint8Array, opts: AsyncInflateOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchrononously expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format
+ * @param data The data to decompress
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function decompress(data: Uint8Array, cb: FlateCallback): AsyncTerminable;
+/**
+ * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+export declare function decompressSync(data: Uint8Array, opts?: InflateOptions): Uint8Array;
+/**
+ * Attributes for files added to a ZIP archive object
+ */
+export interface ZipAttributes {
+    /**
+     * The operating system of origin for this file. The value is defined
+     * by PKZIP's APPNOTE.txt, section 4.4.2.2. For example, 0 (the default)
+     * is MS/DOS, 3 is Unix, 19 is macOS.
+     */
+    os?: number;
+    /**
+     * The file's attributes. These are traditionally somewhat complicated
+     * and platform-dependent, so using them is scarcely necessary. However,
+     * here is a representation of what this is, bit by bit:
+     *
+     * `TTTTugtrwxrwxrwx0000000000ADVSHR`
+     *
+     * TTTT = file type (rarely useful)
+     *
+     * u = setuid, g = setgid, t = sticky
+     *
+     * rwx = user permissions, rwx = group permissions, rwx = other permissions
+     *
+     * 0000000000 = unused
+     *
+     * A = archive, D = directory, V = volume label, S = system file, H = hidden, R = read-only
+     *
+     * If you want to set the Unix permissions, for instance, just bit shift by 16, e.g. 0o644 << 16.
+     * Note that attributes usually only work in conjunction with the `os` setting: you must use
+     * `os` = 3 (Unix) if you want to set Unix permissions
+     */
+    attrs?: number;
+    /**
+     * Extra metadata to add to the file. This field is defined by PKZIP's APPNOTE.txt,
+     * section 4.4.28. At most 65,535 bytes may be used in each ID. The ID must be an
+     * integer between 0 and 65,535, inclusive.
+     *
+     * This field is incredibly rare and almost never needed except for compliance with
+     * proprietary standards and software.
+     */
+    extra?: Record<number, Uint8Array>;
+    /**
+     * The comment to attach to the file. This field is defined by PKZIP's APPNOTE.txt,
+     * section 4.4.26. The comment must be at most 65,535 bytes long UTF-8 encoded. This
+     * field is not read by consumer software.
+     */
+    comment?: string;
+    /**
+     * When the file was last modified. Defaults to the current time.
+     */
+    mtime?: GzipOptions['mtime'];
+}
+/**
+ * Options for creating a ZIP archive
+ */
+export interface ZipOptions extends DeflateOptions, ZipAttributes {
+}
+/**
+ * Options for expanding a ZIP archive
+ */
+export interface UnzipOptions {
+    /**
+     * A filter function to extract only certain files from a ZIP archive
+     */
+    filter?: UnzipFileFilter;
+}
+/**
+ * Options for asynchronously creating a ZIP archive
+ */
+export interface AsyncZipOptions extends AsyncDeflateOptions, ZipAttributes {
+}
+/**
+ * Options for asynchronously expanding a ZIP archive
+ */
+export interface AsyncUnzipOptions extends UnzipOptions {
+}
+/**
+ * A file that can be used to create a ZIP archive
+ */
+export type ZippableFile = Uint8Array | Zippable | [Uint8Array | Zippable, ZipOptions];
+/**
+ * A file that can be used to asynchronously create a ZIP archive
+ */
+export type AsyncZippableFile = Uint8Array | AsyncZippable | [Uint8Array | AsyncZippable, AsyncZipOptions];
+/**
+ * The complete directory structure of a ZIPpable archive
+ */
+export interface Zippable {
+    [path: string]: ZippableFile;
+}
+/**
+ * The complete directory structure of an asynchronously ZIPpable archive
+ */
+export interface AsyncZippable {
+    [path: string]: AsyncZippableFile;
+}
+/**
+ * An unzipped archive. The full path of each file is used as the key,
+ * and the file is the value
+ */
+export interface Unzipped {
+    [path: string]: Uint8Array;
+}
+/**
+ * Handler for string generation streams
+ * @param data The string output from the stream processor
+ * @param final Whether this is the final block
+ */
+export type StringStreamHandler = (data: string, final: boolean) => void;
+/**
+ * Callback for asynchronous ZIP decompression
+ * @param err Any error that occurred
+ * @param data The decompressed ZIP archive
+ */
+export type UnzipCallback = (err: FlateError | null, data: Unzipped) => void;
+/**
+ * Handler for streaming ZIP decompression
+ * @param file The file that was found in the archive
+ */
+export type UnzipFileHandler = (file: UnzipFile) => void;
+/**
+ * Streaming UTF-8 decoding
+ */
+export declare class DecodeUTF8 {
+    private p;
+    private t;
+    /**
+     * Creates a UTF-8 decoding stream
+     * @param cb The callback to call whenever data is decoded
+     */
+    constructor(cb?: StringStreamHandler);
+    /**
+     * Pushes a chunk to be decoded from UTF-8 binary
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: StringStreamHandler;
+}
+/**
+ * Streaming UTF-8 encoding
+ */
+export declare class EncodeUTF8 {
+    private d;
+    /**
+     * Creates a UTF-8 decoding stream
+     * @param cb The callback to call whenever data is encoded
+     */
+    constructor(cb?: FlateStreamHandler);
+    /**
+     * Pushes a chunk to be encoded to UTF-8
+     * @param chunk The string data to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: string, final?: boolean): void;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+}
+/**
+ * Converts a string into a Uint8Array for use with compression/decompression methods
+ * @param str The string to encode
+ * @param latin1 Whether or not to interpret the data as Latin-1. This should
+ *               not need to be true unless decoding a binary string.
+ * @returns The string encoded in UTF-8/Latin-1 binary
+ */
+export declare function strToU8(str: string, latin1?: boolean): Uint8Array;
+/**
+ * Converts a Uint8Array to a string
+ * @param dat The data to decode to string
+ * @param latin1 Whether or not to interpret the data as Latin-1. This should
+ *               not need to be true unless encoding to binary string.
+ * @returns The original UTF-8/Latin-1 string
+ */
+export declare function strFromU8(dat: Uint8Array, latin1?: boolean): string;
+/**
+ * A stream that can be used to create a file in a ZIP archive
+ */
+export interface ZipInputFile extends ZipAttributes {
+    /**
+     * The filename to associate with the data provided to this stream. If you
+     * want a file in a subdirectory, use forward slashes as a separator (e.g.
+     * `directory/filename.ext`). This will still work on Windows.
+     */
+    filename: string;
+    /**
+     * The size of the file in bytes. This attribute may be invalid after
+     * the file is added to the ZIP archive; it must be correct only before the
+     * stream completes.
+     *
+     * If you don't want to have to compute this yourself, consider extending the
+     * ZipPassThrough class and overriding its process() method, or using one of
+     * ZipDeflate or AsyncZipDeflate.
+     */
+    size: number;
+    /**
+     * A CRC of the original file contents. This attribute may be invalid after
+     * the file is added to the ZIP archive; it must be correct only before the
+     * stream completes.
+     *
+     * If you don't want to have to generate this yourself, consider extending the
+     * ZipPassThrough class and overriding its process() method, or using one of
+     * ZipDeflate or AsyncZipDeflate.
+     */
+    crc: number;
+    /**
+     * The compression format for the data stream. This number is determined by
+     * the spec in PKZIP's APPNOTE.txt, section 4.4.5. For example, 0 = no
+     * compression, 8 = deflate, 14 = LZMA
+     */
+    compression: number;
+    /**
+     * Bits 1 and 2 of the general purpose bit flag, specified in PKZIP's
+     * APPNOTE.txt, section 4.4.4. Should be between 0 and 3. This is unlikely
+     * to be necessary.
+     */
+    flag?: number;
+    /**
+     * The handler to be called when data is added. After passing this stream to
+     * the ZIP file object, this handler will always be defined. To call it:
+     *
+     * `stream.ondata(error, chunk, final)`
+     *
+     * error = any error that occurred (null if there was no error)
+     *
+     * chunk = a Uint8Array of the data that was added (null if there was an
+     * error)
+     *
+     * final = boolean, whether this is the final chunk in the stream
+     */
+    ondata?: AsyncFlateStreamHandler;
+    /**
+     * A method called when the stream is no longer needed, for clean-up
+     * purposes. This will not always be called after the stream completes,
+     * so you may wish to call this.terminate() after the final chunk is
+     * processed if you have clean-up logic.
+     */
+    terminate?: AsyncTerminable;
+}
+/**
+ * A pass-through stream to keep data uncompressed in a ZIP archive.
+ */
+export declare class ZipPassThrough implements ZipInputFile {
+    filename: string;
+    crc: number;
+    size: number;
+    compression: number;
+    os?: number;
+    attrs?: number;
+    comment?: string;
+    extra?: Record<number, Uint8Array>;
+    mtime?: GzipOptions['mtime'];
+    ondata: AsyncFlateStreamHandler;
+    private c;
+    /**
+     * Creates a pass-through stream that can be added to ZIP archives
+     * @param filename The filename to associate with this data stream
+     */
+    constructor(filename: string);
+    /**
+     * Processes a chunk and pushes to the output stream. You can override this
+     * method in a subclass for custom behavior, but by default this passes
+     * the data through. You must call this.ondata(err, chunk, final) at some
+     * point in this method.
+     * @param chunk The chunk to process
+     * @param final Whether this is the last chunk
+     */
+    protected process(chunk: Uint8Array, final: boolean): void;
+    /**
+     * Pushes a chunk to be added. If you are subclassing this with a custom
+     * compression algorithm, note that you must push data from the source
+     * file only, pre-compression.
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate
+ * for better performance
+ */
+export declare class ZipDeflate implements ZipInputFile {
+    filename: string;
+    crc: number;
+    size: number;
+    compression: number;
+    flag: 0 | 1 | 2 | 3;
+    os?: number;
+    attrs?: number;
+    comment?: string;
+    extra?: Record<number, Uint8Array>;
+    mtime?: GzipOptions['mtime'];
+    ondata: AsyncFlateStreamHandler;
+    private d;
+    /**
+     * Creates a DEFLATE stream that can be added to ZIP archives
+     * @param filename The filename to associate with this data stream
+     * @param opts The compression options
+     */
+    constructor(filename: string, opts?: DeflateOptions);
+    process(chunk: Uint8Array, final: boolean): void;
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * Asynchronous streaming DEFLATE compression for ZIP archives
+ */
+export declare class AsyncZipDeflate implements ZipInputFile {
+    filename: string;
+    crc: number;
+    size: number;
+    compression: number;
+    flag: 0 | 1 | 2 | 3;
+    os?: number;
+    attrs?: number;
+    comment?: string;
+    extra?: Record<number, Uint8Array>;
+    mtime?: GzipOptions['mtime'];
+    ondata: AsyncFlateStreamHandler;
+    private d;
+    terminate: AsyncTerminable;
+    /**
+     * Creates an asynchronous DEFLATE stream that can be added to ZIP archives
+     * @param filename The filename to associate with this data stream
+     * @param opts The compression options
+     */
+    constructor(filename: string, opts?: DeflateOptions);
+    process(chunk: Uint8Array, final: boolean): void;
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * A zippable archive to which files can incrementally be added
+ */
+export declare class Zip {
+    private u;
+    private d;
+    /**
+     * Creates an empty ZIP archive to which files can be added
+     * @param cb The callback to call whenever data for the generated ZIP archive
+     *           is available
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    /**
+     * Adds a file to the ZIP archive
+     * @param file The file stream to add
+     */
+    add(file: ZipInputFile): void;
+    /**
+     * Ends the process of adding files and prepares to emit the final chunks.
+     * This *must* be called after adding all desired files for the resulting
+     * ZIP file to work properly.
+     */
+    end(): void;
+    private e;
+    /**
+     * A method to terminate any internal workers used by the stream. Subsequent
+     * calls to add() will fail.
+     */
+    terminate(): void;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+}
+/**
+ * Asynchronously creates a ZIP file
+ * @param data The directory structure for the ZIP archive
+ * @param opts The main options, merged with per-file options
+ * @param cb The callback to call with the generated ZIP archive
+ * @returns A function that can be used to immediately terminate the compression
+ */
+export declare function zip(data: AsyncZippable, opts: AsyncZipOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchronously creates a ZIP file
+ * @param data The directory structure for the ZIP archive
+ * @param cb The callback to call with the generated ZIP archive
+ * @returns A function that can be used to immediately terminate the compression
+ */
+export declare function zip(data: AsyncZippable, cb: FlateCallback): AsyncTerminable;
+/**
+ * Synchronously creates a ZIP file. Prefer using `zip` for better performance
+ * with more than one file.
+ * @param data The directory structure for the ZIP archive
+ * @param opts The main options, merged with per-file options
+ * @returns The generated ZIP archive
+ */
+export declare function zipSync(data: Zippable, opts?: ZipOptions): Uint8Array;
+/**
+ * A decoder for files in ZIP streams
+ */
+export interface UnzipDecoder {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * Pushes a chunk to be decompressed
+     * @param data The data in this chunk. Do not consume (detach) this data.
+     * @param final Whether this is the last chunk in the data stream
+     */
+    push(data: Uint8Array, final: boolean): void;
+    /**
+     * A method to terminate any internal workers used by the stream. Subsequent
+     * calls to push() should silently fail.
+     */
+    terminate?: AsyncTerminable;
+}
+/**
+ * A constructor for a decoder for unzip streams
+ */
+export interface UnzipDecoderConstructor {
+    /**
+     * Creates an instance of the decoder
+     * @param filename The name of the file
+     * @param size The compressed size of the file
+     * @param originalSize The original size of the file
+     */
+    new (filename: string, size?: number, originalSize?: number): UnzipDecoder;
+    /**
+     * The compression format for the data stream. This number is determined by
+     * the spec in PKZIP's APPNOTE.txt, section 4.4.5. For example, 0 = no
+     * compression, 8 = deflate, 14 = LZMA
+     */
+    compression: number;
+}
+/**
+ * Information about a file to be extracted from a ZIP archive
+ */
+export interface UnzipFileInfo {
+    /**
+     * The name of the file
+     */
+    name: string;
+    /**
+     * The compressed size of the file
+     */
+    size: number;
+    /**
+     * The original size of the file
+     */
+    originalSize: number;
+    /**
+     * The compression format for the data stream. This number is determined by
+     * the spec in PKZIP's APPNOTE.txt, section 4.4.5. For example, 0 = no
+     * compression, 8 = deflate, 14 = LZMA. If the filter function returns true
+     * but this value is not 8, the unzip function will throw.
+     */
+    compression: number;
+}
+/**
+ * A filter for files to be extracted during the unzipping process
+ * @param file The info for the current file being processed
+ * @returns Whether or not to extract the current file
+ */
+export type UnzipFileFilter = (file: UnzipFileInfo) => boolean;
+/**
+ * Streaming file extraction from ZIP archives
+ */
+export interface UnzipFile {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The name of the file
+     */
+    name: string;
+    /**
+     * The compression format for the data stream. This number is determined by
+     * the spec in PKZIP's APPNOTE.txt, section 4.4.5. For example, 0 = no
+     * compression, 8 = deflate, 14 = LZMA. If start() is called but there is no
+     * decompression stream available for this method, start() will throw.
+     */
+    compression: number;
+    /**
+     * The compressed size of the file. Will not be present for archives created
+     * in a streaming fashion.
+     */
+    size?: number;
+    /**
+     * The original size of the file. Will not be present for archives created
+     * in a streaming fashion.
+     */
+    originalSize?: number;
+    /**
+     * Starts reading from the stream. Calling this function will always enable
+     * this stream, but ocassionally the stream will be enabled even without
+     * this being called.
+     */
+    start(): void;
+    /**
+     * A method to terminate any internal workers used by the stream. ondata
+     * will not be called any further.
+     */
+    terminate: AsyncTerminable;
+}
+/**
+ * Streaming pass-through decompression for ZIP archives
+ */
+export declare class UnzipPassThrough implements UnzipDecoder {
+    static compression: number;
+    ondata: AsyncFlateStreamHandler;
+    push(data: Uint8Array, final: boolean): void;
+}
+/**
+ * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for
+ * better performance.
+ */
+export declare class UnzipInflate implements UnzipDecoder {
+    static compression: number;
+    private i;
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * Creates a DEFLATE decompression that can be used in ZIP archives
+     */
+    constructor();
+    push(data: Uint8Array, final: boolean): void;
+}
+/**
+ * Asynchronous streaming DEFLATE decompression for ZIP archives
+ */
+export declare class AsyncUnzipInflate implements UnzipDecoder {
+    static compression: number;
+    private i;
+    ondata: AsyncFlateStreamHandler;
+    terminate: AsyncTerminable;
+    /**
+     * Creates a DEFLATE decompression that can be used in ZIP archives
+     */
+    constructor(_: string, sz?: number);
+    push(data: Uint8Array, final: boolean): void;
+}
+/**
+ * A ZIP archive decompression stream that emits files as they are discovered
+ */
+export declare class Unzip {
+    private d;
+    private c;
+    private p;
+    private k;
+    private o;
+    /**
+     * Creates a ZIP decompression stream
+     * @param cb The callback to call whenever a file in the ZIP archive is found
+     */
+    constructor(cb?: UnzipFileHandler);
+    /**
+     * Pushes a chunk to be unzipped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): any;
+    /**
+     * Registers a decoder with the stream, allowing for files compressed with
+     * the compression type provided to be expanded correctly
+     * @param decoder The decoder constructor
+     */
+    register(decoder: UnzipDecoderConstructor): void;
+    /**
+     * The handler to call whenever a file is discovered
+     */
+    onfile: UnzipFileHandler;
+}
+/**
+ * Asynchronously decompresses a ZIP archive
+ * @param data The raw compressed ZIP file
+ * @param opts The ZIP extraction options
+ * @param cb The callback to call with the decompressed files
+ * @returns A function that can be used to immediately terminate the unzipping
+ */
+export declare function unzip(data: Uint8Array, opts: AsyncUnzipOptions, cb: UnzipCallback): AsyncTerminable;
+/**
+ * Asynchronously decompresses a ZIP archive
+ * @param data The raw compressed ZIP file
+ * @param cb The callback to call with the decompressed files
+ * @returns A function that can be used to immediately terminate the unzipping
+ */
+export declare function unzip(data: Uint8Array, cb: UnzipCallback): AsyncTerminable;
+/**
+ * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better
+ * performance with more than one file.
+ * @param data The raw compressed ZIP file
+ * @param opts The ZIP extraction options
+ * @returns The decompressed files
+ */
+export declare function unzipSync(data: Uint8Array, opts?: UnzipOptions): Unzipped;
diff --git a/node_modules/fflate/lib/index.cjs b/node_modules/fflate/lib/index.cjs
new file mode 100644
index 0000000..56e09c6
--- /dev/null
+++ b/node_modules/fflate/lib/index.cjs
@@ -0,0 +1,2668 @@
+"use strict";
+// DEFLATE is a complex format; to read this code, you should probably check the RFC first:
+// https://tools.ietf.org/html/rfc1951
+// You may also wish to take a look at the guide I made about this program:
+// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad
+// Some of the following code is similar to that of UZIP.js:
+// https://github.com/photopea/UZIP.js
+// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.
+// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint
+// is better for memory in most engines (I *think*).
+var node_worker_1 = require("./node-worker.cjs");
+// aliases for shorter compressed code (most minifers don't do this)
+var u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;
+// fixed length extra bits
+var fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);
+// fixed distance extra bits
+var fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);
+// code length index map
+var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);
+// get base, reverse index map from extra bits
+var freb = function (eb, start) {
+    var b = new u16(31);
+    for (var i = 0; i < 31; ++i) {
+        b[i] = start += 1 << eb[i - 1];
+    }
+    // numbers here are at max 18 bits
+    var r = new i32(b[30]);
+    for (var i = 1; i < 30; ++i) {
+        for (var j = b[i]; j < b[i + 1]; ++j) {
+            r[j] = ((j - b[i]) << 5) | i;
+        }
+    }
+    return { b: b, r: r };
+};
+var _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;
+// we can ignore the fact that the other numbers are wrong; they never happen anyway
+fl[28] = 258, revfl[258] = 28;
+var _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;
+// map of value to reverse (assuming 16 bits)
+var rev = new u16(32768);
+for (var i = 0; i < 32768; ++i) {
+    // reverse table algorithm from SO
+    var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);
+    x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);
+    x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);
+    rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;
+}
+// create huffman tree from u8 "map": index -> code length for code index
+// mb (max bits) must be at most 15
+// TODO: optimize/split up?
+var hMap = (function (cd, mb, r) {
+    var s = cd.length;
+    // index
+    var i = 0;
+    // u16 "map": index -> # of codes with bit length = index
+    var l = new u16(mb);
+    // length of cd must be 288 (total # of codes)
+    for (; i < s; ++i) {
+        if (cd[i])
+            ++l[cd[i] - 1];
+    }
+    // u16 "map": index -> minimum code for bit length = index
+    var le = new u16(mb);
+    for (i = 1; i < mb; ++i) {
+        le[i] = (le[i - 1] + l[i - 1]) << 1;
+    }
+    var co;
+    if (r) {
+        // u16 "map": index -> number of actual bits, symbol for code
+        co = new u16(1 << mb);
+        // bits to remove for reverser
+        var rvb = 15 - mb;
+        for (i = 0; i < s; ++i) {
+            // ignore 0 lengths
+            if (cd[i]) {
+                // num encoding both symbol and bits read
+                var sv = (i << 4) | cd[i];
+                // free bits
+                var r_1 = mb - cd[i];
+                // start value
+                var v = le[cd[i] - 1]++ << r_1;
+                // m is end value
+                for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {
+                    // every 16 bit value starting with the code yields the same result
+                    co[rev[v] >> rvb] = sv;
+                }
+            }
+        }
+    }
+    else {
+        co = new u16(s);
+        for (i = 0; i < s; ++i) {
+            if (cd[i]) {
+                co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);
+            }
+        }
+    }
+    return co;
+});
+// fixed length tree
+var flt = new u8(288);
+for (var i = 0; i < 144; ++i)
+    flt[i] = 8;
+for (var i = 144; i < 256; ++i)
+    flt[i] = 9;
+for (var i = 256; i < 280; ++i)
+    flt[i] = 7;
+for (var i = 280; i < 288; ++i)
+    flt[i] = 8;
+// fixed distance tree
+var fdt = new u8(32);
+for (var i = 0; i < 32; ++i)
+    fdt[i] = 5;
+// fixed length map
+var flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);
+// fixed distance map
+var fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);
+// find max of array
+var max = function (a) {
+    var m = a[0];
+    for (var i = 1; i < a.length; ++i) {
+        if (a[i] > m)
+            m = a[i];
+    }
+    return m;
+};
+// read d, starting at bit p and mask with m
+var bits = function (d, p, m) {
+    var o = (p / 8) | 0;
+    return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;
+};
+// read d, starting at bit p continuing for at least 16 bits
+var bits16 = function (d, p) {
+    var o = (p / 8) | 0;
+    return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));
+};
+// get end of byte
+var shft = function (p) { return ((p + 7) / 8) | 0; };
+// typed array slice - allows garbage collector to free original reference,
+// while being more compatible than .slice
+var slc = function (v, s, e) {
+    if (s == null || s < 0)
+        s = 0;
+    if (e == null || e > v.length)
+        e = v.length;
+    // can't use .constructor in case user-supplied
+    return new u8(v.subarray(s, e));
+};
+/**
+ * Codes for errors generated within this library
+ */
+exports.FlateErrorCode = {
+    UnexpectedEOF: 0,
+    InvalidBlockType: 1,
+    InvalidLengthLiteral: 2,
+    InvalidDistance: 3,
+    StreamFinished: 4,
+    NoStreamHandler: 5,
+    InvalidHeader: 6,
+    NoCallback: 7,
+    InvalidUTF8: 8,
+    ExtraFieldTooLong: 9,
+    InvalidDate: 10,
+    FilenameTooLong: 11,
+    StreamFinishing: 12,
+    InvalidZipData: 13,
+    UnknownCompressionMethod: 14
+};
+// error codes
+var ec = [
+    'unexpected EOF',
+    'invalid block type',
+    'invalid length/literal',
+    'invalid distance',
+    'stream finished',
+    'no stream handler',
+    ,
+    'no callback',
+    'invalid UTF-8 data',
+    'extra field too long',
+    'date not in range 1980-2099',
+    'filename too long',
+    'stream finishing',
+    'invalid zip data'
+    // determined by unknown compression method
+];
+;
+var err = function (ind, msg, nt) {
+    var e = new Error(msg || ec[ind]);
+    e.code = ind;
+    if (Error.captureStackTrace)
+        Error.captureStackTrace(e, err);
+    if (!nt)
+        throw e;
+    return e;
+};
+// expands raw DEFLATE data
+var inflt = function (dat, st, buf, dict) {
+    // source length       dict length
+    var sl = dat.length, dl = dict ? dict.length : 0;
+    if (!sl || st.f && !st.l)
+        return buf || new u8(0);
+    var noBuf = !buf;
+    // have to estimate size
+    var resize = noBuf || st.i != 2;
+    // no state
+    var noSt = st.i;
+    // Assumes roughly 33% compression ratio average
+    if (noBuf)
+        buf = new u8(sl * 3);
+    // ensure buffer can fit at least l elements
+    var cbuf = function (l) {
+        var bl = buf.length;
+        // need to increase size to fit
+        if (l > bl) {
+            // Double or set to necessary, whichever is greater
+            var nbuf = new u8(Math.max(bl * 2, l));
+            nbuf.set(buf);
+            buf = nbuf;
+        }
+    };
+    //  last chunk         bitpos           bytes
+    var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;
+    // total bits
+    var tbts = sl * 8;
+    do {
+        if (!lm) {
+            // BFINAL - this is only 1 when last chunk is next
+            final = bits(dat, pos, 1);
+            // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman
+            var type = bits(dat, pos + 1, 3);
+            pos += 3;
+            if (!type) {
+                // go to end of byte boundary
+                var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;
+                if (t > sl) {
+                    if (noSt)
+                        err(0);
+                    break;
+                }
+                // ensure size
+                if (resize)
+                    cbuf(bt + l);
+                // Copy over uncompressed data
+                buf.set(dat.subarray(s, t), bt);
+                // Get new bitpos, update byte count
+                st.b = bt += l, st.p = pos = t * 8, st.f = final;
+                continue;
+            }
+            else if (type == 1)
+                lm = flrm, dm = fdrm, lbt = 9, dbt = 5;
+            else if (type == 2) {
+                //  literal                            lengths
+                var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;
+                var tl = hLit + bits(dat, pos + 5, 31) + 1;
+                pos += 14;
+                // length+distance tree
+                var ldt = new u8(tl);
+                // code length tree
+                var clt = new u8(19);
+                for (var i = 0; i < hcLen; ++i) {
+                    // use index map to get real code
+                    clt[clim[i]] = bits(dat, pos + i * 3, 7);
+                }
+                pos += hcLen * 3;
+                // code lengths bits
+                var clb = max(clt), clbmsk = (1 << clb) - 1;
+                // code lengths map
+                var clm = hMap(clt, clb, 1);
+                for (var i = 0; i < tl;) {
+                    var r = clm[bits(dat, pos, clbmsk)];
+                    // bits read
+                    pos += r & 15;
+                    // symbol
+                    var s = r >> 4;
+                    // code length to copy
+                    if (s < 16) {
+                        ldt[i++] = s;
+                    }
+                    else {
+                        //  copy   count
+                        var c = 0, n = 0;
+                        if (s == 16)
+                            n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];
+                        else if (s == 17)
+                            n = 3 + bits(dat, pos, 7), pos += 3;
+                        else if (s == 18)
+                            n = 11 + bits(dat, pos, 127), pos += 7;
+                        while (n--)
+                            ldt[i++] = c;
+                    }
+                }
+                //    length tree                 distance tree
+                var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);
+                // max length bits
+                lbt = max(lt);
+                // max dist bits
+                dbt = max(dt);
+                lm = hMap(lt, lbt, 1);
+                dm = hMap(dt, dbt, 1);
+            }
+            else
+                err(1);
+            if (pos > tbts) {
+                if (noSt)
+                    err(0);
+                break;
+            }
+        }
+        // Make sure the buffer can hold this + the largest possible addition
+        // Maximum chunk size (practically, theoretically infinite) is 2^17
+        if (resize)
+            cbuf(bt + 131072);
+        var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;
+        var lpos = pos;
+        for (;; lpos = pos) {
+            // bits read, code
+            var c = lm[bits16(dat, pos) & lms], sym = c >> 4;
+            pos += c & 15;
+            if (pos > tbts) {
+                if (noSt)
+                    err(0);
+                break;
+            }
+            if (!c)
+                err(2);
+            if (sym < 256)
+                buf[bt++] = sym;
+            else if (sym == 256) {
+                lpos = pos, lm = null;
+                break;
+            }
+            else {
+                var add = sym - 254;
+                // no extra bits needed if less
+                if (sym > 264) {
+                    // index
+                    var i = sym - 257, b = fleb[i];
+                    add = bits(dat, pos, (1 << b) - 1) + fl[i];
+                    pos += b;
+                }
+                // dist
+                var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;
+                if (!d)
+                    err(3);
+                pos += d & 15;
+                var dt = fd[dsym];
+                if (dsym > 3) {
+                    var b = fdeb[dsym];
+                    dt += bits16(dat, pos) & (1 << b) - 1, pos += b;
+                }
+                if (pos > tbts) {
+                    if (noSt)
+                        err(0);
+                    break;
+                }
+                if (resize)
+                    cbuf(bt + 131072);
+                var end = bt + add;
+                if (bt < dt) {
+                    var shift = dl - dt, dend = Math.min(dt, end);
+                    if (shift + bt < 0)
+                        err(3);
+                    for (; bt < dend; ++bt)
+                        buf[bt] = dict[shift + bt];
+                }
+                for (; bt < end; ++bt)
+                    buf[bt] = buf[bt - dt];
+            }
+        }
+        st.l = lm, st.p = lpos, st.b = bt, st.f = final;
+        if (lm)
+            final = 1, st.m = lbt, st.d = dm, st.n = dbt;
+    } while (!final);
+    // don't reallocate for streams or user buffers
+    return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);
+};
+// starting at p, write the minimum number of bits that can hold v to d
+var wbits = function (d, p, v) {
+    v <<= p & 7;
+    var o = (p / 8) | 0;
+    d[o] |= v;
+    d[o + 1] |= v >> 8;
+};
+// starting at p, write the minimum number of bits (>8) that can hold v to d
+var wbits16 = function (d, p, v) {
+    v <<= p & 7;
+    var o = (p / 8) | 0;
+    d[o] |= v;
+    d[o + 1] |= v >> 8;
+    d[o + 2] |= v >> 16;
+};
+// creates code lengths from a frequency table
+var hTree = function (d, mb) {
+    // Need extra info to make a tree
+    var t = [];
+    for (var i = 0; i < d.length; ++i) {
+        if (d[i])
+            t.push({ s: i, f: d[i] });
+    }
+    var s = t.length;
+    var t2 = t.slice();
+    if (!s)
+        return { t: et, l: 0 };
+    if (s == 1) {
+        var v = new u8(t[0].s + 1);
+        v[t[0].s] = 1;
+        return { t: v, l: 1 };
+    }
+    t.sort(function (a, b) { return a.f - b.f; });
+    // after i2 reaches last ind, will be stopped
+    // freq must be greater than largest possible number of symbols
+    t.push({ s: -1, f: 25001 });
+    var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;
+    t[0] = { s: -1, f: l.f + r.f, l: l, r: r };
+    // efficient algorithm from UZIP.js
+    // i0 is lookbehind, i2 is lookahead - after processing two low-freq
+    // symbols that combined have high freq, will start processing i2 (high-freq,
+    // non-composite) symbols instead
+    // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/
+    while (i1 != s - 1) {
+        l = t[t[i0].f < t[i2].f ? i0++ : i2++];
+        r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];
+        t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };
+    }
+    var maxSym = t2[0].s;
+    for (var i = 1; i < s; ++i) {
+        if (t2[i].s > maxSym)
+            maxSym = t2[i].s;
+    }
+    // code lengths
+    var tr = new u16(maxSym + 1);
+    // max bits in tree
+    var mbt = ln(t[i1 - 1], tr, 0);
+    if (mbt > mb) {
+        // more algorithms from UZIP.js
+        // TODO: find out how this code works (debt)
+        //  ind    debt
+        var i = 0, dt = 0;
+        //    left            cost
+        var lft = mbt - mb, cst = 1 << lft;
+        t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });
+        for (; i < s; ++i) {
+            var i2_1 = t2[i].s;
+            if (tr[i2_1] > mb) {
+                dt += cst - (1 << (mbt - tr[i2_1]));
+                tr[i2_1] = mb;
+            }
+            else
+                break;
+        }
+        dt >>= lft;
+        while (dt > 0) {
+            var i2_2 = t2[i].s;
+            if (tr[i2_2] < mb)
+                dt -= 1 << (mb - tr[i2_2]++ - 1);
+            else
+                ++i;
+        }
+        for (; i >= 0 && dt; --i) {
+            var i2_3 = t2[i].s;
+            if (tr[i2_3] == mb) {
+                --tr[i2_3];
+                ++dt;
+            }
+        }
+        mbt = mb;
+    }
+    return { t: new u8(tr), l: mbt };
+};
+// get the max length and assign length codes
+var ln = function (n, l, d) {
+    return n.s == -1
+        ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))
+        : (l[n.s] = d);
+};
+// length codes generation
+var lc = function (c) {
+    var s = c.length;
+    // Note that the semicolon was intentional
+    while (s && !c[--s])
+        ;
+    var cl = new u16(++s);
+    //  ind      num         streak
+    var cli = 0, cln = c[0], cls = 1;
+    var w = function (v) { cl[cli++] = v; };
+    for (var i = 1; i <= s; ++i) {
+        if (c[i] == cln && i != s)
+            ++cls;
+        else {
+            if (!cln && cls > 2) {
+                for (; cls > 138; cls -= 138)
+                    w(32754);
+                if (cls > 2) {
+                    w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);
+                    cls = 0;
+                }
+            }
+            else if (cls > 3) {
+                w(cln), --cls;
+                for (; cls > 6; cls -= 6)
+                    w(8304);
+                if (cls > 2)
+                    w(((cls - 3) << 5) | 8208), cls = 0;
+            }
+            while (cls--)
+                w(cln);
+            cls = 1;
+            cln = c[i];
+        }
+    }
+    return { c: cl.subarray(0, cli), n: s };
+};
+// calculate the length of output from tree, code lengths
+var clen = function (cf, cl) {
+    var l = 0;
+    for (var i = 0; i < cl.length; ++i)
+        l += cf[i] * cl[i];
+    return l;
+};
+// writes a fixed block
+// returns the new bit pos
+var wfblk = function (out, pos, dat) {
+    // no need to write 00 as type: TypedArray defaults to 0
+    var s = dat.length;
+    var o = shft(pos + 2);
+    out[o] = s & 255;
+    out[o + 1] = s >> 8;
+    out[o + 2] = out[o] ^ 255;
+    out[o + 3] = out[o + 1] ^ 255;
+    for (var i = 0; i < s; ++i)
+        out[o + i + 4] = dat[i];
+    return (o + 4 + s) * 8;
+};
+// writes a block
+var wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {
+    wbits(out, p++, final);
+    ++lf[256];
+    var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;
+    var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;
+    var _c = lc(dlt), lclt = _c.c, nlc = _c.n;
+    var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;
+    var lcfreq = new u16(19);
+    for (var i = 0; i < lclt.length; ++i)
+        ++lcfreq[lclt[i] & 31];
+    for (var i = 0; i < lcdt.length; ++i)
+        ++lcfreq[lcdt[i] & 31];
+    var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;
+    var nlcc = 19;
+    for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)
+        ;
+    var flen = (bl + 5) << 3;
+    var ftlen = clen(lf, flt) + clen(df, fdt) + eb;
+    var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];
+    if (bs >= 0 && flen <= ftlen && flen <= dtlen)
+        return wfblk(out, p, dat.subarray(bs, bs + bl));
+    var lm, ll, dm, dl;
+    wbits(out, p, 1 + (dtlen < ftlen)), p += 2;
+    if (dtlen < ftlen) {
+        lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;
+        var llm = hMap(lct, mlcb, 0);
+        wbits(out, p, nlc - 257);
+        wbits(out, p + 5, ndc - 1);
+        wbits(out, p + 10, nlcc - 4);
+        p += 14;
+        for (var i = 0; i < nlcc; ++i)
+            wbits(out, p + 3 * i, lct[clim[i]]);
+        p += 3 * nlcc;
+        var lcts = [lclt, lcdt];
+        for (var it = 0; it < 2; ++it) {
+            var clct = lcts[it];
+            for (var i = 0; i < clct.length; ++i) {
+                var len = clct[i] & 31;
+                wbits(out, p, llm[len]), p += lct[len];
+                if (len > 15)
+                    wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;
+            }
+        }
+    }
+    else {
+        lm = flm, ll = flt, dm = fdm, dl = fdt;
+    }
+    for (var i = 0; i < li; ++i) {
+        var sym = syms[i];
+        if (sym > 255) {
+            var len = (sym >> 18) & 31;
+            wbits16(out, p, lm[len + 257]), p += ll[len + 257];
+            if (len > 7)
+                wbits(out, p, (sym >> 23) & 31), p += fleb[len];
+            var dst = sym & 31;
+            wbits16(out, p, dm[dst]), p += dl[dst];
+            if (dst > 3)
+                wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];
+        }
+        else {
+            wbits16(out, p, lm[sym]), p += ll[sym];
+        }
+    }
+    wbits16(out, p, lm[256]);
+    return p + ll[256];
+};
+// deflate options (nice << 13) | chain
+var deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);
+// empty
+var et = /*#__PURE__*/ new u8(0);
+// compresses data into a raw DEFLATE buffer
+var dflt = function (dat, lvl, plvl, pre, post, st) {
+    var s = st.z || dat.length;
+    var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);
+    // writing to this writes to the output buffer
+    var w = o.subarray(pre, o.length - post);
+    var lst = st.l;
+    var pos = (st.r || 0) & 7;
+    if (lvl) {
+        if (pos)
+            w[0] = st.r >> 3;
+        var opt = deo[lvl - 1];
+        var n = opt >> 13, c = opt & 8191;
+        var msk_1 = (1 << plvl) - 1;
+        //    prev 2-byte val map    curr 2-byte val map
+        var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);
+        var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;
+        var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };
+        // 24576 is an arbitrary number of maximum symbols per block
+        // 424 buffer for last block
+        var syms = new i32(25000);
+        // length/literal freq   distance freq
+        var lf = new u16(288), df = new u16(32);
+        //  l/lcnt  exbits  index          l/lind  waitdx          blkpos
+        var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;
+        for (; i + 2 < s; ++i) {
+            // hash value
+            var hv = hsh(i);
+            // index mod 32768    previous index mod
+            var imod = i & 32767, pimod = head[hv];
+            prev[imod] = pimod;
+            head[hv] = imod;
+            // We always should modify head and prev, but only add symbols if
+            // this data is not yet processed ("wait" for wait index)
+            if (wi <= i) {
+                // bytes remaining
+                var rem = s - i;
+                if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {
+                    pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);
+                    li = lc_1 = eb = 0, bs = i;
+                    for (var j = 0; j < 286; ++j)
+                        lf[j] = 0;
+                    for (var j = 0; j < 30; ++j)
+                        df[j] = 0;
+                }
+                //  len    dist   chain
+                var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;
+                if (rem > 2 && hv == hsh(i - dif)) {
+                    var maxn = Math.min(n, rem) - 1;
+                    var maxd = Math.min(32767, i);
+                    // max possible length
+                    // not capped at dif because decompressors implement "rolling" index population
+                    var ml = Math.min(258, rem);
+                    while (dif <= maxd && --ch_1 && imod != pimod) {
+                        if (dat[i + l] == dat[i + l - dif]) {
+                            var nl = 0;
+                            for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)
+                                ;
+                            if (nl > l) {
+                                l = nl, d = dif;
+                                // break out early when we reach "nice" (we are satisfied enough)
+                                if (nl > maxn)
+                                    break;
+                                // now, find the rarest 2-byte sequence within this
+                                // length of literals and search for that instead.
+                                // Much faster than just using the start
+                                var mmd = Math.min(dif, nl - 2);
+                                var md = 0;
+                                for (var j = 0; j < mmd; ++j) {
+                                    var ti = i - dif + j & 32767;
+                                    var pti = prev[ti];
+                                    var cd = ti - pti & 32767;
+                                    if (cd > md)
+                                        md = cd, pimod = ti;
+                                }
+                            }
+                        }
+                        // check the previous match
+                        imod = pimod, pimod = prev[imod];
+                        dif += imod - pimod & 32767;
+                    }
+                }
+                // d will be nonzero only when a match was found
+                if (d) {
+                    // store both dist and len data in one int32
+                    // Make sure this is recognized as a len/dist with 28th bit (2^28)
+                    syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];
+                    var lin = revfl[l] & 31, din = revfd[d] & 31;
+                    eb += fleb[lin] + fdeb[din];
+                    ++lf[257 + lin];
+                    ++df[din];
+                    wi = i + l;
+                    ++lc_1;
+                }
+                else {
+                    syms[li++] = dat[i];
+                    ++lf[dat[i]];
+                }
+            }
+        }
+        for (i = Math.max(i, wi); i < s; ++i) {
+            syms[li++] = dat[i];
+            ++lf[dat[i]];
+        }
+        pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);
+        if (!lst) {
+            st.r = (pos & 7) | w[(pos / 8) | 0] << 3;
+            // shft(pos) now 1 less if pos & 7 != 0
+            pos -= 7;
+            st.h = head, st.p = prev, st.i = i, st.w = wi;
+        }
+    }
+    else {
+        for (var i = st.w || 0; i < s + lst; i += 65535) {
+            // end
+            var e = i + 65535;
+            if (e >= s) {
+                // write final block
+                w[(pos / 8) | 0] = lst;
+                e = s;
+            }
+            pos = wfblk(w, pos + 1, dat.subarray(i, e));
+        }
+        st.i = s;
+    }
+    return slc(o, 0, pre + shft(pos) + post);
+};
+// CRC32 table
+var crct = /*#__PURE__*/ (function () {
+    var t = new Int32Array(256);
+    for (var i = 0; i < 256; ++i) {
+        var c = i, k = 9;
+        while (--k)
+            c = ((c & 1) && -306674912) ^ (c >>> 1);
+        t[i] = c;
+    }
+    return t;
+})();
+// CRC32
+var crc = function () {
+    var c = -1;
+    return {
+        p: function (d) {
+            // closures have awful performance
+            var cr = c;
+            for (var i = 0; i < d.length; ++i)
+                cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);
+            c = cr;
+        },
+        d: function () { return ~c; }
+    };
+};
+// Adler32
+var adler = function () {
+    var a = 1, b = 0;
+    return {
+        p: function (d) {
+            // closures have awful performance
+            var n = a, m = b;
+            var l = d.length | 0;
+            for (var i = 0; i != l;) {
+                var e = Math.min(i + 2655, l);
+                for (; i < e; ++i)
+                    m += n += d[i];
+                n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);
+            }
+            a = n, b = m;
+        },
+        d: function () {
+            a %= 65521, b %= 65521;
+            return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);
+        }
+    };
+};
+;
+// deflate with opts
+var dopt = function (dat, opt, pre, post, st) {
+    if (!st) {
+        st = { l: 1 };
+        if (opt.dictionary) {
+            var dict = opt.dictionary.subarray(-32768);
+            var newDat = new u8(dict.length + dat.length);
+            newDat.set(dict);
+            newDat.set(dat, dict.length);
+            dat = newDat;
+            st.w = dict.length;
+        }
+    }
+    return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? (st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20) : (12 + opt.mem), pre, post, st);
+};
+// Walmart object spread
+var mrg = function (a, b) {
+    var o = {};
+    for (var k in a)
+        o[k] = a[k];
+    for (var k in b)
+        o[k] = b[k];
+    return o;
+};
+// worker clone
+// This is possibly the craziest part of the entire codebase, despite how simple it may seem.
+// The only parameter to this function is a closure that returns an array of variables outside of the function scope.
+// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.
+// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).
+// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.
+// This took me three weeks to figure out how to do.
+var wcln = function (fn, fnStr, td) {
+    var dt = fn();
+    var st = fn.toString();
+    var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\s+/g, '').split(',');
+    for (var i = 0; i < dt.length; ++i) {
+        var v = dt[i], k = ks[i];
+        if (typeof v == 'function') {
+            fnStr += ';' + k + '=';
+            var st_1 = v.toString();
+            if (v.prototype) {
+                // for global objects
+                if (st_1.indexOf('[native code]') != -1) {
+                    var spInd = st_1.indexOf(' ', 8) + 1;
+                    fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));
+                }
+                else {
+                    fnStr += st_1;
+                    for (var t in v.prototype)
+                        fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();
+                }
+            }
+            else
+                fnStr += st_1;
+        }
+        else
+            td[k] = v;
+    }
+    return fnStr;
+};
+var ch = [];
+// clone bufs
+var cbfs = function (v) {
+    var tl = [];
+    for (var k in v) {
+        if (v[k].buffer) {
+            tl.push((v[k] = new v[k].constructor(v[k])).buffer);
+        }
+    }
+    return tl;
+};
+// use a worker to execute code
+var wrkr = function (fns, init, id, cb) {
+    if (!ch[id]) {
+        var fnStr = '', td_1 = {}, m = fns.length - 1;
+        for (var i = 0; i < m; ++i)
+            fnStr = wcln(fns[i], fnStr, td_1);
+        ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };
+    }
+    var td = mrg({}, ch[id].e);
+    return (0, node_worker_1.default)(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);
+};
+// base async inflate fn
+var bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };
+var bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };
+// gzip extra
+var gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };
+// gunzip extra
+var guze = function () { return [gzs, gzl]; };
+// zlib extra
+var zle = function () { return [zlh, wbytes, adler]; };
+// unzlib extra
+var zule = function () { return [zls]; };
+// post buf
+var pbf = function (msg) { return postMessage(msg, [msg.buffer]); };
+// get opts
+var gopt = function (o) { return o && {
+    out: o.size && new u8(o.size),
+    dictionary: o.dictionary
+}; };
+// async helper
+var cbify = function (dat, opts, fns, init, id, cb) {
+    var w = wrkr(fns, init, id, function (err, dat) {
+        w.terminate();
+        cb(err, dat);
+    });
+    w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);
+    return function () { w.terminate(); };
+};
+// auto stream
+var astrm = function (strm) {
+    strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };
+    return function (ev) {
+        if (ev.data.length) {
+            strm.push(ev.data[0], ev.data[1]);
+            postMessage([ev.data[0].length]);
+        }
+        else
+            strm.flush();
+    };
+};
+// async stream attach
+var astrmify = function (fns, strm, opts, init, id, flush, ext) {
+    var t;
+    var w = wrkr(fns, init, id, function (err, dat) {
+        if (err)
+            w.terminate(), strm.ondata.call(strm, err);
+        else if (!Array.isArray(dat))
+            ext(dat);
+        else if (dat.length == 1) {
+            strm.queuedSize -= dat[0];
+            if (strm.ondrain)
+                strm.ondrain(dat[0]);
+        }
+        else {
+            if (dat[1])
+                w.terminate();
+            strm.ondata.call(strm, err, dat[0], dat[1]);
+        }
+    });
+    w.postMessage(opts);
+    strm.queuedSize = 0;
+    strm.push = function (d, f) {
+        if (!strm.ondata)
+            err(5);
+        if (t)
+            strm.ondata(err(4, 0, 1), null, !!f);
+        strm.queuedSize += d.length;
+        w.postMessage([d, t = f], [d.buffer]);
+    };
+    strm.terminate = function () { w.terminate(); };
+    if (flush) {
+        strm.flush = function () { w.postMessage([]); };
+    }
+};
+// read 2 bytes
+var b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };
+// read 4 bytes
+var b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };
+var b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };
+// write bytes
+var wbytes = function (d, b, v) {
+    for (; v; ++b)
+        d[b] = v, v >>>= 8;
+};
+// gzip header
+var gzh = function (c, o) {
+    var fn = o.filename;
+    c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix
+    if (o.mtime != 0)
+        wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));
+    if (fn) {
+        c[3] = 8;
+        for (var i = 0; i <= fn.length; ++i)
+            c[i + 10] = fn.charCodeAt(i);
+    }
+};
+// gzip footer: -8 to -4 = CRC, -4 to -0 is length
+// gzip start
+var gzs = function (d) {
+    if (d[0] != 31 || d[1] != 139 || d[2] != 8)
+        err(6, 'invalid gzip data');
+    var flg = d[3];
+    var st = 10;
+    if (flg & 4)
+        st += (d[10] | d[11] << 8) + 2;
+    for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])
+        ;
+    return st + (flg & 2);
+};
+// gzip length
+var gzl = function (d) {
+    var l = d.length;
+    return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;
+};
+// gzip header length
+var gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };
+// zlib header
+var zlh = function (c, o) {
+    var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;
+    c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);
+    c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;
+    if (o.dictionary) {
+        var h = adler();
+        h.p(o.dictionary);
+        wbytes(c, 2, h.d());
+    }
+};
+// zlib start
+var zls = function (d, dict) {
+    if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))
+        err(6, 'invalid zlib data');
+    if ((d[1] >> 5 & 1) == +!dict)
+        err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');
+    return (d[1] >> 3 & 4) + 2;
+};
+function StrmOpt(opts, cb) {
+    if (typeof opts == 'function')
+        cb = opts, opts = {};
+    this.ondata = cb;
+    return opts;
+}
+/**
+ * Streaming DEFLATE compression
+ */
+var Deflate = /*#__PURE__*/ (function () {
+    function Deflate(opts, cb) {
+        if (typeof opts == 'function')
+            cb = opts, opts = {};
+        this.ondata = cb;
+        this.o = opts || {};
+        this.s = { l: 0, i: 32768, w: 32768, z: 32768 };
+        // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev
+        // 98304 = 32768 (lookback) + 65536 (common chunk size)
+        this.b = new u8(98304);
+        if (this.o.dictionary) {
+            var dict = this.o.dictionary.subarray(-32768);
+            this.b.set(dict, 32768 - dict.length);
+            this.s.i = 32768 - dict.length;
+        }
+    }
+    Deflate.prototype.p = function (c, f) {
+        this.ondata(dopt(c, this.o, 0, 0, this.s), f);
+    };
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    Deflate.prototype.push = function (chunk, final) {
+        if (!this.ondata)
+            err(5);
+        if (this.s.l)
+            err(4);
+        var endLen = chunk.length + this.s.z;
+        if (endLen > this.b.length) {
+            if (endLen > 2 * this.b.length - 32768) {
+                var newBuf = new u8(endLen & -32768);
+                newBuf.set(this.b.subarray(0, this.s.z));
+                this.b = newBuf;
+            }
+            var split = this.b.length - this.s.z;
+            this.b.set(chunk.subarray(0, split), this.s.z);
+            this.s.z = this.b.length;
+            this.p(this.b, false);
+            this.b.set(this.b.subarray(-32768));
+            this.b.set(chunk.subarray(split), 32768);
+            this.s.z = chunk.length - split + 32768;
+            this.s.i = 32766, this.s.w = 32768;
+        }
+        else {
+            this.b.set(chunk, this.s.z);
+            this.s.z += chunk.length;
+        }
+        this.s.l = final & 1;
+        if (this.s.z > this.s.w + 8191 || final) {
+            this.p(this.b, final || false);
+            this.s.w = this.s.i, this.s.i -= 2;
+        }
+    };
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * deflated output for small inputs.
+     */
+    Deflate.prototype.flush = function () {
+        if (!this.ondata)
+            err(5);
+        if (this.s.l)
+            err(4);
+        this.p(this.b, false);
+        this.s.w = this.s.i, this.s.i -= 2;
+    };
+    return Deflate;
+}());
+exports.Deflate = Deflate;
+/**
+ * Asynchronous streaming DEFLATE compression
+ */
+var AsyncDeflate = /*#__PURE__*/ (function () {
+    function AsyncDeflate(opts, cb) {
+        astrmify([
+            bDflt,
+            function () { return [astrm, Deflate]; }
+        ], this, StrmOpt.call(this, opts, cb), function (ev) {
+            var strm = new Deflate(ev.data);
+            onmessage = astrm(strm);
+        }, 6, 1);
+    }
+    return AsyncDeflate;
+}());
+exports.AsyncDeflate = AsyncDeflate;
+function deflate(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    return cbify(data, opts, [
+        bDflt,
+    ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);
+}
+exports.deflate = deflate;
+/**
+ * Compresses data with DEFLATE without any wrapper
+ * @param data The data to compress
+ * @param opts The compression options
+ * @returns The deflated version of the data
+ */
+function deflateSync(data, opts) {
+    return dopt(data, opts || {}, 0, 0);
+}
+exports.deflateSync = deflateSync;
+/**
+ * Streaming DEFLATE decompression
+ */
+var Inflate = /*#__PURE__*/ (function () {
+    function Inflate(opts, cb) {
+        // no StrmOpt here to avoid adding to workerizer
+        if (typeof opts == 'function')
+            cb = opts, opts = {};
+        this.ondata = cb;
+        var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);
+        this.s = { i: 0, b: dict ? dict.length : 0 };
+        this.o = new u8(32768);
+        this.p = new u8(0);
+        if (dict)
+            this.o.set(dict);
+    }
+    Inflate.prototype.e = function (c) {
+        if (!this.ondata)
+            err(5);
+        if (this.d)
+            err(4);
+        if (!this.p.length)
+            this.p = c;
+        else if (c.length) {
+            var n = new u8(this.p.length + c.length);
+            n.set(this.p), n.set(c, this.p.length), this.p = n;
+        }
+    };
+    Inflate.prototype.c = function (final) {
+        this.s.i = +(this.d = final || false);
+        var bts = this.s.b;
+        var dt = inflt(this.p, this.s, this.o);
+        this.ondata(slc(dt, bts, this.s.b), this.d);
+        this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;
+        this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;
+    };
+    /**
+     * Pushes a chunk to be inflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the final chunk
+     */
+    Inflate.prototype.push = function (chunk, final) {
+        this.e(chunk), this.c(final);
+    };
+    return Inflate;
+}());
+exports.Inflate = Inflate;
+/**
+ * Asynchronous streaming DEFLATE decompression
+ */
+var AsyncInflate = /*#__PURE__*/ (function () {
+    function AsyncInflate(opts, cb) {
+        astrmify([
+            bInflt,
+            function () { return [astrm, Inflate]; }
+        ], this, StrmOpt.call(this, opts, cb), function (ev) {
+            var strm = new Inflate(ev.data);
+            onmessage = astrm(strm);
+        }, 7, 0);
+    }
+    return AsyncInflate;
+}());
+exports.AsyncInflate = AsyncInflate;
+function inflate(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    return cbify(data, opts, [
+        bInflt
+    ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);
+}
+exports.inflate = inflate;
+/**
+ * Expands DEFLATE data with no wrapper
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+function inflateSync(data, opts) {
+    return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);
+}
+exports.inflateSync = inflateSync;
+// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.
+/**
+ * Streaming GZIP compression
+ */
+var Gzip = /*#__PURE__*/ (function () {
+    function Gzip(opts, cb) {
+        this.c = crc();
+        this.l = 0;
+        this.v = 1;
+        Deflate.call(this, opts, cb);
+    }
+    /**
+     * Pushes a chunk to be GZIPped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    Gzip.prototype.push = function (chunk, final) {
+        this.c.p(chunk);
+        this.l += chunk.length;
+        Deflate.prototype.push.call(this, chunk, final);
+    };
+    Gzip.prototype.p = function (c, f) {
+        var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);
+        if (this.v)
+            gzh(raw, this.o), this.v = 0;
+        if (f)
+            wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);
+        this.ondata(raw, f);
+    };
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * GZIPped output for small inputs.
+     */
+    Gzip.prototype.flush = function () {
+        Deflate.prototype.flush.call(this);
+    };
+    return Gzip;
+}());
+exports.Gzip = Gzip;
+exports.Compress = Gzip;
+/**
+ * Asynchronous streaming GZIP compression
+ */
+var AsyncGzip = /*#__PURE__*/ (function () {
+    function AsyncGzip(opts, cb) {
+        astrmify([
+            bDflt,
+            gze,
+            function () { return [astrm, Deflate, Gzip]; }
+        ], this, StrmOpt.call(this, opts, cb), function (ev) {
+            var strm = new Gzip(ev.data);
+            onmessage = astrm(strm);
+        }, 8, 1);
+    }
+    return AsyncGzip;
+}());
+exports.AsyncGzip = AsyncGzip;
+exports.AsyncCompress = AsyncGzip;
+function gzip(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    return cbify(data, opts, [
+        bDflt,
+        gze,
+        function () { return [gzipSync]; }
+    ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);
+}
+exports.gzip = gzip;
+exports.compress = gzip;
+/**
+ * Compresses data with GZIP
+ * @param data The data to compress
+ * @param opts The compression options
+ * @returns The gzipped version of the data
+ */
+function gzipSync(data, opts) {
+    if (!opts)
+        opts = {};
+    var c = crc(), l = data.length;
+    c.p(data);
+    var d = dopt(data, opts, gzhl(opts), 8), s = d.length;
+    return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;
+}
+exports.gzipSync = gzipSync;
+exports.compressSync = gzipSync;
+/**
+ * Streaming single or multi-member GZIP decompression
+ */
+var Gunzip = /*#__PURE__*/ (function () {
+    function Gunzip(opts, cb) {
+        this.v = 1;
+        this.r = 0;
+        Inflate.call(this, opts, cb);
+    }
+    /**
+     * Pushes a chunk to be GUNZIPped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    Gunzip.prototype.push = function (chunk, final) {
+        Inflate.prototype.e.call(this, chunk);
+        this.r += chunk.length;
+        if (this.v) {
+            var p = this.p.subarray(this.v - 1);
+            var s = p.length > 3 ? gzs(p) : 4;
+            if (s > p.length) {
+                if (!final)
+                    return;
+            }
+            else if (this.v > 1 && this.onmember) {
+                this.onmember(this.r - p.length);
+            }
+            this.p = p.subarray(s), this.v = 0;
+        }
+        // necessary to prevent TS from using the closure value
+        // This allows for workerization to function correctly
+        Inflate.prototype.c.call(this, final);
+        // process concatenated GZIP
+        if (this.s.f && !this.s.l && !final) {
+            this.v = shft(this.s.p) + 9;
+            this.s = { i: 0 };
+            this.o = new u8(0);
+            this.push(new u8(0), final);
+        }
+    };
+    return Gunzip;
+}());
+exports.Gunzip = Gunzip;
+/**
+ * Asynchronous streaming single or multi-member GZIP decompression
+ */
+var AsyncGunzip = /*#__PURE__*/ (function () {
+    function AsyncGunzip(opts, cb) {
+        var _this = this;
+        astrmify([
+            bInflt,
+            guze,
+            function () { return [astrm, Inflate, Gunzip]; }
+        ], this, StrmOpt.call(this, opts, cb), function (ev) {
+            var strm = new Gunzip(ev.data);
+            strm.onmember = function (offset) { return postMessage(offset); };
+            onmessage = astrm(strm);
+        }, 9, 0, function (offset) { return _this.onmember && _this.onmember(offset); });
+    }
+    return AsyncGunzip;
+}());
+exports.AsyncGunzip = AsyncGunzip;
+function gunzip(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    return cbify(data, opts, [
+        bInflt,
+        guze,
+        function () { return [gunzipSync]; }
+    ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);
+}
+exports.gunzip = gunzip;
+/**
+ * Expands GZIP data
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+function gunzipSync(data, opts) {
+    var st = gzs(data);
+    if (st + 8 > data.length)
+        err(6, 'invalid gzip data');
+    return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);
+}
+exports.gunzipSync = gunzipSync;
+/**
+ * Streaming Zlib compression
+ */
+var Zlib = /*#__PURE__*/ (function () {
+    function Zlib(opts, cb) {
+        this.c = adler();
+        this.v = 1;
+        Deflate.call(this, opts, cb);
+    }
+    /**
+     * Pushes a chunk to be zlibbed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    Zlib.prototype.push = function (chunk, final) {
+        this.c.p(chunk);
+        Deflate.prototype.push.call(this, chunk, final);
+    };
+    Zlib.prototype.p = function (c, f) {
+        var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);
+        if (this.v)
+            zlh(raw, this.o), this.v = 0;
+        if (f)
+            wbytes(raw, raw.length - 4, this.c.d());
+        this.ondata(raw, f);
+    };
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * zlibbed output for small inputs.
+     */
+    Zlib.prototype.flush = function () {
+        Deflate.prototype.flush.call(this);
+    };
+    return Zlib;
+}());
+exports.Zlib = Zlib;
+/**
+ * Asynchronous streaming Zlib compression
+ */
+var AsyncZlib = /*#__PURE__*/ (function () {
+    function AsyncZlib(opts, cb) {
+        astrmify([
+            bDflt,
+            zle,
+            function () { return [astrm, Deflate, Zlib]; }
+        ], this, StrmOpt.call(this, opts, cb), function (ev) {
+            var strm = new Zlib(ev.data);
+            onmessage = astrm(strm);
+        }, 10, 1);
+    }
+    return AsyncZlib;
+}());
+exports.AsyncZlib = AsyncZlib;
+function zlib(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    return cbify(data, opts, [
+        bDflt,
+        zle,
+        function () { return [zlibSync]; }
+    ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);
+}
+exports.zlib = zlib;
+/**
+ * Compress data with Zlib
+ * @param data The data to compress
+ * @param opts The compression options
+ * @returns The zlib-compressed version of the data
+ */
+function zlibSync(data, opts) {
+    if (!opts)
+        opts = {};
+    var a = adler();
+    a.p(data);
+    var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);
+    return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;
+}
+exports.zlibSync = zlibSync;
+/**
+ * Streaming Zlib decompression
+ */
+var Unzlib = /*#__PURE__*/ (function () {
+    function Unzlib(opts, cb) {
+        Inflate.call(this, opts, cb);
+        this.v = opts && opts.dictionary ? 2 : 1;
+    }
+    /**
+     * Pushes a chunk to be unzlibbed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    Unzlib.prototype.push = function (chunk, final) {
+        Inflate.prototype.e.call(this, chunk);
+        if (this.v) {
+            if (this.p.length < 6 && !final)
+                return;
+            this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;
+        }
+        if (final) {
+            if (this.p.length < 4)
+                err(6, 'invalid zlib data');
+            this.p = this.p.subarray(0, -4);
+        }
+        // necessary to prevent TS from using the closure value
+        // This allows for workerization to function correctly
+        Inflate.prototype.c.call(this, final);
+    };
+    return Unzlib;
+}());
+exports.Unzlib = Unzlib;
+/**
+ * Asynchronous streaming Zlib decompression
+ */
+var AsyncUnzlib = /*#__PURE__*/ (function () {
+    function AsyncUnzlib(opts, cb) {
+        astrmify([
+            bInflt,
+            zule,
+            function () { return [astrm, Inflate, Unzlib]; }
+        ], this, StrmOpt.call(this, opts, cb), function (ev) {
+            var strm = new Unzlib(ev.data);
+            onmessage = astrm(strm);
+        }, 11, 0);
+    }
+    return AsyncUnzlib;
+}());
+exports.AsyncUnzlib = AsyncUnzlib;
+function unzlib(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    return cbify(data, opts, [
+        bInflt,
+        zule,
+        function () { return [unzlibSync]; }
+    ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);
+}
+exports.unzlib = unzlib;
+/**
+ * Expands Zlib data
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+function unzlibSync(data, opts) {
+    return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);
+}
+exports.unzlibSync = unzlibSync;
+/**
+ * Streaming GZIP, Zlib, or raw DEFLATE decompression
+ */
+var Decompress = /*#__PURE__*/ (function () {
+    function Decompress(opts, cb) {
+        this.o = StrmOpt.call(this, opts, cb) || {};
+        this.G = Gunzip;
+        this.I = Inflate;
+        this.Z = Unzlib;
+    }
+    // init substream
+    // overriden by AsyncDecompress
+    Decompress.prototype.i = function () {
+        var _this = this;
+        this.s.ondata = function (dat, final) {
+            _this.ondata(dat, final);
+        };
+    };
+    /**
+     * Pushes a chunk to be decompressed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    Decompress.prototype.push = function (chunk, final) {
+        if (!this.ondata)
+            err(5);
+        if (!this.s) {
+            if (this.p && this.p.length) {
+                var n = new u8(this.p.length + chunk.length);
+                n.set(this.p), n.set(chunk, this.p.length);
+            }
+            else
+                this.p = chunk;
+            if (this.p.length > 2) {
+                this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)
+                    ? new this.G(this.o)
+                    : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))
+                        ? new this.I(this.o)
+                        : new this.Z(this.o);
+                this.i();
+                this.s.push(this.p, final);
+                this.p = null;
+            }
+        }
+        else
+            this.s.push(chunk, final);
+    };
+    return Decompress;
+}());
+exports.Decompress = Decompress;
+/**
+ * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression
+ */
+var AsyncDecompress = /*#__PURE__*/ (function () {
+    function AsyncDecompress(opts, cb) {
+        Decompress.call(this, opts, cb);
+        this.queuedSize = 0;
+        this.G = AsyncGunzip;
+        this.I = AsyncInflate;
+        this.Z = AsyncUnzlib;
+    }
+    AsyncDecompress.prototype.i = function () {
+        var _this = this;
+        this.s.ondata = function (err, dat, final) {
+            _this.ondata(err, dat, final);
+        };
+        this.s.ondrain = function (size) {
+            _this.queuedSize -= size;
+            if (_this.ondrain)
+                _this.ondrain(size);
+        };
+    };
+    /**
+     * Pushes a chunk to be decompressed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    AsyncDecompress.prototype.push = function (chunk, final) {
+        this.queuedSize += chunk.length;
+        Decompress.prototype.push.call(this, chunk, final);
+    };
+    return AsyncDecompress;
+}());
+exports.AsyncDecompress = AsyncDecompress;
+function decompress(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    return (data[0] == 31 && data[1] == 139 && data[2] == 8)
+        ? gunzip(data, opts, cb)
+        : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))
+            ? inflate(data, opts, cb)
+            : unzlib(data, opts, cb);
+}
+exports.decompress = decompress;
+/**
+ * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+function decompressSync(data, opts) {
+    return (data[0] == 31 && data[1] == 139 && data[2] == 8)
+        ? gunzipSync(data, opts)
+        : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))
+            ? inflateSync(data, opts)
+            : unzlibSync(data, opts);
+}
+exports.decompressSync = decompressSync;
+// flatten a directory structure
+var fltn = function (d, p, t, o) {
+    for (var k in d) {
+        var val = d[k], n = p + k, op = o;
+        if (Array.isArray(val))
+            op = mrg(o, val[1]), val = val[0];
+        if (val instanceof u8)
+            t[n] = [val, op];
+        else {
+            t[n += '/'] = [new u8(0), op];
+            fltn(val, n, t, o);
+        }
+    }
+};
+// text encoder
+var te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();
+// text decoder
+var td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();
+// text decoder stream
+var tds = 0;
+try {
+    td.decode(et, { stream: true });
+    tds = 1;
+}
+catch (e) { }
+// decode UTF8
+var dutf8 = function (d) {
+    for (var r = '', i = 0;;) {
+        var c = d[i++];
+        var eb = (c > 127) + (c > 223) + (c > 239);
+        if (i + eb > d.length)
+            return { s: r, r: slc(d, i - 1) };
+        if (!eb)
+            r += String.fromCharCode(c);
+        else if (eb == 3) {
+            c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,
+                r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));
+        }
+        else if (eb & 1)
+            r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));
+        else
+            r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));
+    }
+};
+/**
+ * Streaming UTF-8 decoding
+ */
+var DecodeUTF8 = /*#__PURE__*/ (function () {
+    /**
+     * Creates a UTF-8 decoding stream
+     * @param cb The callback to call whenever data is decoded
+     */
+    function DecodeUTF8(cb) {
+        this.ondata = cb;
+        if (tds)
+            this.t = new TextDecoder();
+        else
+            this.p = et;
+    }
+    /**
+     * Pushes a chunk to be decoded from UTF-8 binary
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    DecodeUTF8.prototype.push = function (chunk, final) {
+        if (!this.ondata)
+            err(5);
+        final = !!final;
+        if (this.t) {
+            this.ondata(this.t.decode(chunk, { stream: true }), final);
+            if (final) {
+                if (this.t.decode().length)
+                    err(8);
+                this.t = null;
+            }
+            return;
+        }
+        if (!this.p)
+            err(4);
+        var dat = new u8(this.p.length + chunk.length);
+        dat.set(this.p);
+        dat.set(chunk, this.p.length);
+        var _a = dutf8(dat), s = _a.s, r = _a.r;
+        if (final) {
+            if (r.length)
+                err(8);
+            this.p = null;
+        }
+        else
+            this.p = r;
+        this.ondata(s, final);
+    };
+    return DecodeUTF8;
+}());
+exports.DecodeUTF8 = DecodeUTF8;
+/**
+ * Streaming UTF-8 encoding
+ */
+var EncodeUTF8 = /*#__PURE__*/ (function () {
+    /**
+     * Creates a UTF-8 decoding stream
+     * @param cb The callback to call whenever data is encoded
+     */
+    function EncodeUTF8(cb) {
+        this.ondata = cb;
+    }
+    /**
+     * Pushes a chunk to be encoded to UTF-8
+     * @param chunk The string data to push
+     * @param final Whether this is the last chunk
+     */
+    EncodeUTF8.prototype.push = function (chunk, final) {
+        if (!this.ondata)
+            err(5);
+        if (this.d)
+            err(4);
+        this.ondata(strToU8(chunk), this.d = final || false);
+    };
+    return EncodeUTF8;
+}());
+exports.EncodeUTF8 = EncodeUTF8;
+/**
+ * Converts a string into a Uint8Array for use with compression/decompression methods
+ * @param str The string to encode
+ * @param latin1 Whether or not to interpret the data as Latin-1. This should
+ *               not need to be true unless decoding a binary string.
+ * @returns The string encoded in UTF-8/Latin-1 binary
+ */
+function strToU8(str, latin1) {
+    if (latin1) {
+        var ar_1 = new u8(str.length);
+        for (var i = 0; i < str.length; ++i)
+            ar_1[i] = str.charCodeAt(i);
+        return ar_1;
+    }
+    if (te)
+        return te.encode(str);
+    var l = str.length;
+    var ar = new u8(str.length + (str.length >> 1));
+    var ai = 0;
+    var w = function (v) { ar[ai++] = v; };
+    for (var i = 0; i < l; ++i) {
+        if (ai + 5 > ar.length) {
+            var n = new u8(ai + 8 + ((l - i) << 1));
+            n.set(ar);
+            ar = n;
+        }
+        var c = str.charCodeAt(i);
+        if (c < 128 || latin1)
+            w(c);
+        else if (c < 2048)
+            w(192 | (c >> 6)), w(128 | (c & 63));
+        else if (c > 55295 && c < 57344)
+            c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),
+                w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));
+        else
+            w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));
+    }
+    return slc(ar, 0, ai);
+}
+exports.strToU8 = strToU8;
+/**
+ * Converts a Uint8Array to a string
+ * @param dat The data to decode to string
+ * @param latin1 Whether or not to interpret the data as Latin-1. This should
+ *               not need to be true unless encoding to binary string.
+ * @returns The original UTF-8/Latin-1 string
+ */
+function strFromU8(dat, latin1) {
+    if (latin1) {
+        var r = '';
+        for (var i = 0; i < dat.length; i += 16384)
+            r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));
+        return r;
+    }
+    else if (td) {
+        return td.decode(dat);
+    }
+    else {
+        var _a = dutf8(dat), s = _a.s, r = _a.r;
+        if (r.length)
+            err(8);
+        return s;
+    }
+}
+exports.strFromU8 = strFromU8;
+;
+// deflate bit flag
+var dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };
+// skip local zip header
+var slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };
+// read zip header
+var zh = function (d, b, z) {
+    var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);
+    var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];
+    return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];
+};
+// read zip64 extra field
+var z64e = function (d, b) {
+    for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))
+        ;
+    return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];
+};
+// extra field length
+var exfl = function (ex) {
+    var le = 0;
+    if (ex) {
+        for (var k in ex) {
+            var l = ex[k].length;
+            if (l > 65535)
+                err(9);
+            le += l + 4;
+        }
+    }
+    return le;
+};
+// write zip header
+var wzh = function (d, b, f, fn, u, c, ce, co) {
+    var fl = fn.length, ex = f.extra, col = co && co.length;
+    var exl = exfl(ex);
+    wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;
+    if (ce != null)
+        d[b++] = 20, d[b++] = f.os;
+    d[b] = 20, b += 2; // spec compliance? what's that?
+    d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;
+    d[b++] = f.compression & 255, d[b++] = f.compression >> 8;
+    var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;
+    if (y < 0 || y > 119)
+        err(10);
+    wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;
+    if (c != -1) {
+        wbytes(d, b, f.crc);
+        wbytes(d, b + 4, c < 0 ? -c - 2 : c);
+        wbytes(d, b + 8, f.size);
+    }
+    wbytes(d, b + 12, fl);
+    wbytes(d, b + 14, exl), b += 16;
+    if (ce != null) {
+        wbytes(d, b, col);
+        wbytes(d, b + 6, f.attrs);
+        wbytes(d, b + 10, ce), b += 14;
+    }
+    d.set(fn, b);
+    b += fl;
+    if (exl) {
+        for (var k in ex) {
+            var exf = ex[k], l = exf.length;
+            wbytes(d, b, +k);
+            wbytes(d, b + 2, l);
+            d.set(exf, b + 4), b += 4 + l;
+        }
+    }
+    if (col)
+        d.set(co, b), b += col;
+    return b;
+};
+// write zip footer (end of central directory)
+var wzf = function (o, b, c, d, e) {
+    wbytes(o, b, 0x6054B50); // skip disk
+    wbytes(o, b + 8, c);
+    wbytes(o, b + 10, c);
+    wbytes(o, b + 12, d);
+    wbytes(o, b + 16, e);
+};
+/**
+ * A pass-through stream to keep data uncompressed in a ZIP archive.
+ */
+var ZipPassThrough = /*#__PURE__*/ (function () {
+    /**
+     * Creates a pass-through stream that can be added to ZIP archives
+     * @param filename The filename to associate with this data stream
+     */
+    function ZipPassThrough(filename) {
+        this.filename = filename;
+        this.c = crc();
+        this.size = 0;
+        this.compression = 0;
+    }
+    /**
+     * Processes a chunk and pushes to the output stream. You can override this
+     * method in a subclass for custom behavior, but by default this passes
+     * the data through. You must call this.ondata(err, chunk, final) at some
+     * point in this method.
+     * @param chunk The chunk to process
+     * @param final Whether this is the last chunk
+     */
+    ZipPassThrough.prototype.process = function (chunk, final) {
+        this.ondata(null, chunk, final);
+    };
+    /**
+     * Pushes a chunk to be added. If you are subclassing this with a custom
+     * compression algorithm, note that you must push data from the source
+     * file only, pre-compression.
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    ZipPassThrough.prototype.push = function (chunk, final) {
+        if (!this.ondata)
+            err(5);
+        this.c.p(chunk);
+        this.size += chunk.length;
+        if (final)
+            this.crc = this.c.d();
+        this.process(chunk, final || false);
+    };
+    return ZipPassThrough;
+}());
+exports.ZipPassThrough = ZipPassThrough;
+// I don't extend because TypeScript extension adds 1kB of runtime bloat
+/**
+ * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate
+ * for better performance
+ */
+var ZipDeflate = /*#__PURE__*/ (function () {
+    /**
+     * Creates a DEFLATE stream that can be added to ZIP archives
+     * @param filename The filename to associate with this data stream
+     * @param opts The compression options
+     */
+    function ZipDeflate(filename, opts) {
+        var _this = this;
+        if (!opts)
+            opts = {};
+        ZipPassThrough.call(this, filename);
+        this.d = new Deflate(opts, function (dat, final) {
+            _this.ondata(null, dat, final);
+        });
+        this.compression = 8;
+        this.flag = dbf(opts.level);
+    }
+    ZipDeflate.prototype.process = function (chunk, final) {
+        try {
+            this.d.push(chunk, final);
+        }
+        catch (e) {
+            this.ondata(e, null, final);
+        }
+    };
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    ZipDeflate.prototype.push = function (chunk, final) {
+        ZipPassThrough.prototype.push.call(this, chunk, final);
+    };
+    return ZipDeflate;
+}());
+exports.ZipDeflate = ZipDeflate;
+/**
+ * Asynchronous streaming DEFLATE compression for ZIP archives
+ */
+var AsyncZipDeflate = /*#__PURE__*/ (function () {
+    /**
+     * Creates an asynchronous DEFLATE stream that can be added to ZIP archives
+     * @param filename The filename to associate with this data stream
+     * @param opts The compression options
+     */
+    function AsyncZipDeflate(filename, opts) {
+        var _this = this;
+        if (!opts)
+            opts = {};
+        ZipPassThrough.call(this, filename);
+        this.d = new AsyncDeflate(opts, function (err, dat, final) {
+            _this.ondata(err, dat, final);
+        });
+        this.compression = 8;
+        this.flag = dbf(opts.level);
+        this.terminate = this.d.terminate;
+    }
+    AsyncZipDeflate.prototype.process = function (chunk, final) {
+        this.d.push(chunk, final);
+    };
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    AsyncZipDeflate.prototype.push = function (chunk, final) {
+        ZipPassThrough.prototype.push.call(this, chunk, final);
+    };
+    return AsyncZipDeflate;
+}());
+exports.AsyncZipDeflate = AsyncZipDeflate;
+// TODO: Better tree shaking
+/**
+ * A zippable archive to which files can incrementally be added
+ */
+var Zip = /*#__PURE__*/ (function () {
+    /**
+     * Creates an empty ZIP archive to which files can be added
+     * @param cb The callback to call whenever data for the generated ZIP archive
+     *           is available
+     */
+    function Zip(cb) {
+        this.ondata = cb;
+        this.u = [];
+        this.d = 1;
+    }
+    /**
+     * Adds a file to the ZIP archive
+     * @param file The file stream to add
+     */
+    Zip.prototype.add = function (file) {
+        var _this = this;
+        if (!this.ondata)
+            err(5);
+        // finishing or finished
+        if (this.d & 2)
+            this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);
+        else {
+            var f = strToU8(file.filename), fl_1 = f.length;
+            var com = file.comment, o = com && strToU8(com);
+            var u = fl_1 != file.filename.length || (o && (com.length != o.length));
+            var hl_1 = fl_1 + exfl(file.extra) + 30;
+            if (fl_1 > 65535)
+                this.ondata(err(11, 0, 1), null, false);
+            var header = new u8(hl_1);
+            wzh(header, 0, file, f, u, -1);
+            var chks_1 = [header];
+            var pAll_1 = function () {
+                for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {
+                    var chk = chks_2[_i];
+                    _this.ondata(null, chk, false);
+                }
+                chks_1 = [];
+            };
+            var tr_1 = this.d;
+            this.d = 0;
+            var ind_1 = this.u.length;
+            var uf_1 = mrg(file, {
+                f: f,
+                u: u,
+                o: o,
+                t: function () {
+                    if (file.terminate)
+                        file.terminate();
+                },
+                r: function () {
+                    pAll_1();
+                    if (tr_1) {
+                        var nxt = _this.u[ind_1 + 1];
+                        if (nxt)
+                            nxt.r();
+                        else
+                            _this.d = 1;
+                    }
+                    tr_1 = 1;
+                }
+            });
+            var cl_1 = 0;
+            file.ondata = function (err, dat, final) {
+                if (err) {
+                    _this.ondata(err, dat, final);
+                    _this.terminate();
+                }
+                else {
+                    cl_1 += dat.length;
+                    chks_1.push(dat);
+                    if (final) {
+                        var dd = new u8(16);
+                        wbytes(dd, 0, 0x8074B50);
+                        wbytes(dd, 4, file.crc);
+                        wbytes(dd, 8, cl_1);
+                        wbytes(dd, 12, file.size);
+                        chks_1.push(dd);
+                        uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;
+                        if (tr_1)
+                            uf_1.r();
+                        tr_1 = 1;
+                    }
+                    else if (tr_1)
+                        pAll_1();
+                }
+            };
+            this.u.push(uf_1);
+        }
+    };
+    /**
+     * Ends the process of adding files and prepares to emit the final chunks.
+     * This *must* be called after adding all desired files for the resulting
+     * ZIP file to work properly.
+     */
+    Zip.prototype.end = function () {
+        var _this = this;
+        if (this.d & 2) {
+            this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);
+            return;
+        }
+        if (this.d)
+            this.e();
+        else
+            this.u.push({
+                r: function () {
+                    if (!(_this.d & 1))
+                        return;
+                    _this.u.splice(-1, 1);
+                    _this.e();
+                },
+                t: function () { }
+            });
+        this.d = 3;
+    };
+    Zip.prototype.e = function () {
+        var bt = 0, l = 0, tl = 0;
+        for (var _i = 0, _a = this.u; _i < _a.length; _i++) {
+            var f = _a[_i];
+            tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);
+        }
+        var out = new u8(tl + 22);
+        for (var _b = 0, _c = this.u; _b < _c.length; _b++) {
+            var f = _c[_b];
+            wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);
+            bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;
+        }
+        wzf(out, bt, this.u.length, tl, l);
+        this.ondata(null, out, true);
+        this.d = 2;
+    };
+    /**
+     * A method to terminate any internal workers used by the stream. Subsequent
+     * calls to add() will fail.
+     */
+    Zip.prototype.terminate = function () {
+        for (var _i = 0, _a = this.u; _i < _a.length; _i++) {
+            var f = _a[_i];
+            f.t();
+        }
+        this.d = 2;
+    };
+    return Zip;
+}());
+exports.Zip = Zip;
+function zip(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    var r = {};
+    fltn(data, '', r, opts);
+    var k = Object.keys(r);
+    var lft = k.length, o = 0, tot = 0;
+    var slft = lft, files = new Array(lft);
+    var term = [];
+    var tAll = function () {
+        for (var i = 0; i < term.length; ++i)
+            term[i]();
+    };
+    var cbd = function (a, b) {
+        mt(function () { cb(a, b); });
+    };
+    mt(function () { cbd = cb; });
+    var cbf = function () {
+        var out = new u8(tot + 22), oe = o, cdl = tot - o;
+        tot = 0;
+        for (var i = 0; i < slft; ++i) {
+            var f = files[i];
+            try {
+                var l = f.c.length;
+                wzh(out, tot, f, f.f, f.u, l);
+                var badd = 30 + f.f.length + exfl(f.extra);
+                var loc = tot + badd;
+                out.set(f.c, loc);
+                wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;
+            }
+            catch (e) {
+                return cbd(e, null);
+            }
+        }
+        wzf(out, o, files.length, cdl, oe);
+        cbd(null, out);
+    };
+    if (!lft)
+        cbf();
+    var _loop_1 = function (i) {
+        var fn = k[i];
+        var _a = r[fn], file = _a[0], p = _a[1];
+        var c = crc(), size = file.length;
+        c.p(file);
+        var f = strToU8(fn), s = f.length;
+        var com = p.comment, m = com && strToU8(com), ms = m && m.length;
+        var exl = exfl(p.extra);
+        var compression = p.level == 0 ? 0 : 8;
+        var cbl = function (e, d) {
+            if (e) {
+                tAll();
+                cbd(e, null);
+            }
+            else {
+                var l = d.length;
+                files[i] = mrg(p, {
+                    size: size,
+                    crc: c.d(),
+                    c: d,
+                    f: f,
+                    m: m,
+                    u: s != fn.length || (m && (com.length != ms)),
+                    compression: compression
+                });
+                o += 30 + s + exl + l;
+                tot += 76 + 2 * (s + exl) + (ms || 0) + l;
+                if (!--lft)
+                    cbf();
+            }
+        };
+        if (s > 65535)
+            cbl(err(11, 0, 1), null);
+        if (!compression)
+            cbl(null, file);
+        else if (size < 160000) {
+            try {
+                cbl(null, deflateSync(file, p));
+            }
+            catch (e) {
+                cbl(e, null);
+            }
+        }
+        else
+            term.push(deflate(file, p, cbl));
+    };
+    // Cannot use lft because it can decrease
+    for (var i = 0; i < slft; ++i) {
+        _loop_1(i);
+    }
+    return tAll;
+}
+exports.zip = zip;
+/**
+ * Synchronously creates a ZIP file. Prefer using `zip` for better performance
+ * with more than one file.
+ * @param data The directory structure for the ZIP archive
+ * @param opts The main options, merged with per-file options
+ * @returns The generated ZIP archive
+ */
+function zipSync(data, opts) {
+    if (!opts)
+        opts = {};
+    var r = {};
+    var files = [];
+    fltn(data, '', r, opts);
+    var o = 0;
+    var tot = 0;
+    for (var fn in r) {
+        var _a = r[fn], file = _a[0], p = _a[1];
+        var compression = p.level == 0 ? 0 : 8;
+        var f = strToU8(fn), s = f.length;
+        var com = p.comment, m = com && strToU8(com), ms = m && m.length;
+        var exl = exfl(p.extra);
+        if (s > 65535)
+            err(11);
+        var d = compression ? deflateSync(file, p) : file, l = d.length;
+        var c = crc();
+        c.p(file);
+        files.push(mrg(p, {
+            size: file.length,
+            crc: c.d(),
+            c: d,
+            f: f,
+            m: m,
+            u: s != fn.length || (m && (com.length != ms)),
+            o: o,
+            compression: compression
+        }));
+        o += 30 + s + exl + l;
+        tot += 76 + 2 * (s + exl) + (ms || 0) + l;
+    }
+    var out = new u8(tot + 22), oe = o, cdl = tot - o;
+    for (var i = 0; i < files.length; ++i) {
+        var f = files[i];
+        wzh(out, f.o, f, f.f, f.u, f.c.length);
+        var badd = 30 + f.f.length + exfl(f.extra);
+        out.set(f.c, f.o + badd);
+        wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);
+    }
+    wzf(out, o, files.length, cdl, oe);
+    return out;
+}
+exports.zipSync = zipSync;
+/**
+ * Streaming pass-through decompression for ZIP archives
+ */
+var UnzipPassThrough = /*#__PURE__*/ (function () {
+    function UnzipPassThrough() {
+    }
+    UnzipPassThrough.prototype.push = function (data, final) {
+        this.ondata(null, data, final);
+    };
+    UnzipPassThrough.compression = 0;
+    return UnzipPassThrough;
+}());
+exports.UnzipPassThrough = UnzipPassThrough;
+/**
+ * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for
+ * better performance.
+ */
+var UnzipInflate = /*#__PURE__*/ (function () {
+    /**
+     * Creates a DEFLATE decompression that can be used in ZIP archives
+     */
+    function UnzipInflate() {
+        var _this = this;
+        this.i = new Inflate(function (dat, final) {
+            _this.ondata(null, dat, final);
+        });
+    }
+    UnzipInflate.prototype.push = function (data, final) {
+        try {
+            this.i.push(data, final);
+        }
+        catch (e) {
+            this.ondata(e, null, final);
+        }
+    };
+    UnzipInflate.compression = 8;
+    return UnzipInflate;
+}());
+exports.UnzipInflate = UnzipInflate;
+/**
+ * Asynchronous streaming DEFLATE decompression for ZIP archives
+ */
+var AsyncUnzipInflate = /*#__PURE__*/ (function () {
+    /**
+     * Creates a DEFLATE decompression that can be used in ZIP archives
+     */
+    function AsyncUnzipInflate(_, sz) {
+        var _this = this;
+        if (sz < 320000) {
+            this.i = new Inflate(function (dat, final) {
+                _this.ondata(null, dat, final);
+            });
+        }
+        else {
+            this.i = new AsyncInflate(function (err, dat, final) {
+                _this.ondata(err, dat, final);
+            });
+            this.terminate = this.i.terminate;
+        }
+    }
+    AsyncUnzipInflate.prototype.push = function (data, final) {
+        if (this.i.terminate)
+            data = slc(data, 0);
+        this.i.push(data, final);
+    };
+    AsyncUnzipInflate.compression = 8;
+    return AsyncUnzipInflate;
+}());
+exports.AsyncUnzipInflate = AsyncUnzipInflate;
+/**
+ * A ZIP archive decompression stream that emits files as they are discovered
+ */
+var Unzip = /*#__PURE__*/ (function () {
+    /**
+     * Creates a ZIP decompression stream
+     * @param cb The callback to call whenever a file in the ZIP archive is found
+     */
+    function Unzip(cb) {
+        this.onfile = cb;
+        this.k = [];
+        this.o = {
+            0: UnzipPassThrough
+        };
+        this.p = et;
+    }
+    /**
+     * Pushes a chunk to be unzipped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    Unzip.prototype.push = function (chunk, final) {
+        var _this = this;
+        if (!this.onfile)
+            err(5);
+        if (!this.p)
+            err(4);
+        if (this.c > 0) {
+            var len = Math.min(this.c, chunk.length);
+            var toAdd = chunk.subarray(0, len);
+            this.c -= len;
+            if (this.d)
+                this.d.push(toAdd, !this.c);
+            else
+                this.k[0].push(toAdd);
+            chunk = chunk.subarray(len);
+            if (chunk.length)
+                return this.push(chunk, final);
+        }
+        else {
+            var f = 0, i = 0, is = void 0, buf = void 0;
+            if (!this.p.length)
+                buf = chunk;
+            else if (!chunk.length)
+                buf = this.p;
+            else {
+                buf = new u8(this.p.length + chunk.length);
+                buf.set(this.p), buf.set(chunk, this.p.length);
+            }
+            var l = buf.length, oc = this.c, add = oc && this.d;
+            var _loop_2 = function () {
+                var _a;
+                var sig = b4(buf, i);
+                if (sig == 0x4034B50) {
+                    f = 1, is = i;
+                    this_1.d = null;
+                    this_1.c = 0;
+                    var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);
+                    if (l > i + 30 + fnl + es) {
+                        var chks_3 = [];
+                        this_1.k.unshift(chks_3);
+                        f = 2;
+                        var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);
+                        var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);
+                        if (sc_1 == 4294967295) {
+                            _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];
+                        }
+                        else if (dd)
+                            sc_1 = -1;
+                        i += es;
+                        this_1.c = sc_1;
+                        var d_1;
+                        var file_1 = {
+                            name: fn_1,
+                            compression: cmp_1,
+                            start: function () {
+                                if (!file_1.ondata)
+                                    err(5);
+                                if (!sc_1)
+                                    file_1.ondata(null, et, true);
+                                else {
+                                    var ctr = _this.o[cmp_1];
+                                    if (!ctr)
+                                        file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);
+                                    d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);
+                                    d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };
+                                    for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {
+                                        var dat = chks_4[_i];
+                                        d_1.push(dat, false);
+                                    }
+                                    if (_this.k[0] == chks_3 && _this.c)
+                                        _this.d = d_1;
+                                    else
+                                        d_1.push(et, true);
+                                }
+                            },
+                            terminate: function () {
+                                if (d_1 && d_1.terminate)
+                                    d_1.terminate();
+                            }
+                        };
+                        if (sc_1 >= 0)
+                            file_1.size = sc_1, file_1.originalSize = su_1;
+                        this_1.onfile(file_1);
+                    }
+                    return "break";
+                }
+                else if (oc) {
+                    if (sig == 0x8074B50) {
+                        is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;
+                        return "break";
+                    }
+                    else if (sig == 0x2014B50) {
+                        is = i -= 4, f = 3, this_1.c = 0;
+                        return "break";
+                    }
+                }
+            };
+            var this_1 = this;
+            for (; i < l - 4; ++i) {
+                var state_1 = _loop_2();
+                if (state_1 === "break")
+                    break;
+            }
+            this.p = et;
+            if (oc < 0) {
+                var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);
+                if (add)
+                    add.push(dat, !!f);
+                else
+                    this.k[+(f == 2)].push(dat);
+            }
+            if (f & 2)
+                return this.push(buf.subarray(i), final);
+            this.p = buf.subarray(i);
+        }
+        if (final) {
+            if (this.c)
+                err(13);
+            this.p = null;
+        }
+    };
+    /**
+     * Registers a decoder with the stream, allowing for files compressed with
+     * the compression type provided to be expanded correctly
+     * @param decoder The decoder constructor
+     */
+    Unzip.prototype.register = function (decoder) {
+        this.o[decoder.compression] = decoder;
+    };
+    return Unzip;
+}());
+exports.Unzip = Unzip;
+var mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };
+function unzip(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    var term = [];
+    var tAll = function () {
+        for (var i = 0; i < term.length; ++i)
+            term[i]();
+    };
+    var files = {};
+    var cbd = function (a, b) {
+        mt(function () { cb(a, b); });
+    };
+    mt(function () { cbd = cb; });
+    var e = data.length - 22;
+    for (; b4(data, e) != 0x6054B50; --e) {
+        if (!e || data.length - e > 65558) {
+            cbd(err(13, 0, 1), null);
+            return tAll;
+        }
+    }
+    ;
+    var lft = b2(data, e + 8);
+    if (lft) {
+        var c = lft;
+        var o = b4(data, e + 16);
+        var z = o == 4294967295 || c == 65535;
+        if (z) {
+            var ze = b4(data, e - 12);
+            z = b4(data, ze) == 0x6064B50;
+            if (z) {
+                c = lft = b4(data, ze + 32);
+                o = b4(data, ze + 48);
+            }
+        }
+        var fltr = opts && opts.filter;
+        var _loop_3 = function (i) {
+            var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);
+            o = no;
+            var cbl = function (e, d) {
+                if (e) {
+                    tAll();
+                    cbd(e, null);
+                }
+                else {
+                    if (d)
+                        files[fn] = d;
+                    if (!--lft)
+                        cbd(null, files);
+                }
+            };
+            if (!fltr || fltr({
+                name: fn,
+                size: sc,
+                originalSize: su,
+                compression: c_1
+            })) {
+                if (!c_1)
+                    cbl(null, slc(data, b, b + sc));
+                else if (c_1 == 8) {
+                    var infl = data.subarray(b, b + sc);
+                    // Synchronously decompress under 512KB, or barely-compressed data
+                    if (su < 524288 || sc > 0.8 * su) {
+                        try {
+                            cbl(null, inflateSync(infl, { out: new u8(su) }));
+                        }
+                        catch (e) {
+                            cbl(e, null);
+                        }
+                    }
+                    else
+                        term.push(inflate(infl, { size: su }, cbl));
+                }
+                else
+                    cbl(err(14, 'unknown compression type ' + c_1, 1), null);
+            }
+            else
+                cbl(null, null);
+        };
+        for (var i = 0; i < c; ++i) {
+            _loop_3(i);
+        }
+    }
+    else
+        cbd(null, {});
+    return tAll;
+}
+exports.unzip = unzip;
+/**
+ * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better
+ * performance with more than one file.
+ * @param data The raw compressed ZIP file
+ * @param opts The ZIP extraction options
+ * @returns The decompressed files
+ */
+function unzipSync(data, opts) {
+    var files = {};
+    var e = data.length - 22;
+    for (; b4(data, e) != 0x6054B50; --e) {
+        if (!e || data.length - e > 65558)
+            err(13);
+    }
+    ;
+    var c = b2(data, e + 8);
+    if (!c)
+        return {};
+    var o = b4(data, e + 16);
+    var z = o == 4294967295 || c == 65535;
+    if (z) {
+        var ze = b4(data, e - 12);
+        z = b4(data, ze) == 0x6064B50;
+        if (z) {
+            c = b4(data, ze + 32);
+            o = b4(data, ze + 48);
+        }
+    }
+    var fltr = opts && opts.filter;
+    for (var i = 0; i < c; ++i) {
+        var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);
+        o = no;
+        if (!fltr || fltr({
+            name: fn,
+            size: sc,
+            originalSize: su,
+            compression: c_2
+        })) {
+            if (!c_2)
+                files[fn] = slc(data, b, b + sc);
+            else if (c_2 == 8)
+                files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });
+            else
+                err(14, 'unknown compression type ' + c_2);
+        }
+    }
+    return files;
+}
+exports.unzipSync = unzipSync;
diff --git a/node_modules/fflate/lib/index.d.ts b/node_modules/fflate/lib/index.d.ts
new file mode 100644
index 0000000..a3b5b01
--- /dev/null
+++ b/node_modules/fflate/lib/index.d.ts
@@ -0,0 +1,1501 @@
+/**
+ * Codes for errors generated within this library
+ */
+export declare const FlateErrorCode: {
+    readonly UnexpectedEOF: 0;
+    readonly InvalidBlockType: 1;
+    readonly InvalidLengthLiteral: 2;
+    readonly InvalidDistance: 3;
+    readonly StreamFinished: 4;
+    readonly NoStreamHandler: 5;
+    readonly InvalidHeader: 6;
+    readonly NoCallback: 7;
+    readonly InvalidUTF8: 8;
+    readonly ExtraFieldTooLong: 9;
+    readonly InvalidDate: 10;
+    readonly FilenameTooLong: 11;
+    readonly StreamFinishing: 12;
+    readonly InvalidZipData: 13;
+    readonly UnknownCompressionMethod: 14;
+};
+/**
+ * An error generated within this library
+ */
+export interface FlateError extends Error {
+    /**
+     * The code associated with this error
+     */
+    code: number;
+}
+/**
+ * Options for decompressing a DEFLATE stream
+ */
+export interface InflateStreamOptions {
+    /**
+     * The dictionary used to compress the original data. If no dictionary was used during compression, this option has no effect.
+     *
+     * Supplying the wrong dictionary during decompression usually yields corrupt output or causes an invalid distance error.
+     */
+    dictionary?: Uint8Array;
+}
+/**
+ * Options for decompressing DEFLATE data
+ */
+export interface InflateOptions extends InflateStreamOptions {
+    /**
+     * The buffer into which to write the decompressed data. Saves memory if you know the decompressed size in advance.
+     *
+     * Note that if the decompression result is larger than the size of this buffer, it will be truncated to fit.
+     */
+    out?: Uint8Array;
+}
+/**
+ * Options for decompressing a GZIP stream
+ */
+export interface GunzipStreamOptions extends InflateStreamOptions {
+}
+/**
+ * Options for decompressing GZIP data
+ */
+export interface GunzipOptions extends InflateStreamOptions {
+    /**
+     * The buffer into which to write the decompressed data. GZIP already encodes the output size, so providing this doesn't save memory.
+     *
+     * Note that if the decompression result is larger than the size of this buffer, it will be truncated to fit.
+     */
+    out?: Uint8Array;
+}
+/**
+ * Options for decompressing a Zlib stream
+ */
+export interface UnzlibStreamOptions extends InflateStreamOptions {
+}
+/**
+ * Options for decompressing Zlib data
+ */
+export interface UnzlibOptions extends InflateOptions {
+}
+/**
+ * Options for compressing data into a DEFLATE format
+ */
+export interface DeflateOptions {
+    /**
+     * The level of compression to use, ranging from 0-9.
+     *
+     * 0 will store the data without compression.
+     * 1 is fastest but compresses the worst, 9 is slowest but compresses the best.
+     * The default level is 6.
+     *
+     * Typically, binary data benefits much more from higher values than text data.
+     * In both cases, higher values usually take disproportionately longer than the reduction in final size that results.
+     *
+     * For example, a 1 MB text file could:
+     * - become 1.01 MB with level 0 in 1ms
+     * - become 400 kB with level 1 in 10ms
+     * - become 320 kB with level 9 in 100ms
+     */
+    level?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
+    /**
+     * The memory level to use, ranging from 0-12. Increasing this increases speed and compression ratio at the cost of memory.
+     *
+     * Note that this is exponential: while level 0 uses 4 kB, level 4 uses 64 kB, level 8 uses 1 MB, and level 12 uses 16 MB.
+     * It is recommended not to lower the value below 4, since that tends to hurt performance.
+     * In addition, values above 8 tend to help very little on most data and can even hurt performance.
+     *
+     * The default value is automatically determined based on the size of the input data.
+     */
+    mem?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
+    /**
+     * A buffer containing common byte sequences in the input data that can be used to significantly improve compression ratios.
+     *
+     * Dictionaries should be 32kB or smaller and include strings or byte sequences likely to appear in the input.
+     * The decompressor must supply the same dictionary as the compressor to extract the original data.
+     *
+     * Dictionaries only improve aggregate compression ratio when reused across multiple small inputs. They should typically not be used otherwise.
+     *
+     * Avoid using dictionaries with GZIP and ZIP to maximize software compatibility.
+     */
+    dictionary?: Uint8Array;
+}
+/**
+ * Options for compressing data into a GZIP format
+ */
+export interface GzipOptions extends DeflateOptions {
+    /**
+     * When the file was last modified. Defaults to the current time.
+     * Set this to 0 to avoid revealing a modification date entirely.
+     */
+    mtime?: Date | string | number;
+    /**
+     * The filename of the data. If the `gunzip` command is used to decompress the data, it will output a file
+     * with this name instead of the name of the compressed file.
+     */
+    filename?: string;
+}
+/**
+ * Options for compressing data into a Zlib format
+ */
+export interface ZlibOptions extends DeflateOptions {
+}
+/**
+ * Handler for data (de)compression streams
+ * @param data The data output from the stream processor
+ * @param final Whether this is the final block
+ */
+export type FlateStreamHandler = (data: Uint8Array, final: boolean) => void;
+/**
+ * Handler for asynchronous data (de)compression streams
+ * @param err Any error that occurred
+ * @param data The data output from the stream processor
+ * @param final Whether this is the final block
+ */
+export type AsyncFlateStreamHandler = (err: FlateError | null, data: Uint8Array, final: boolean) => void;
+/**
+ * Handler for the asynchronous completion of (de)compression for a data chunk
+ * @param size The number of bytes that were processed. This is measured in terms of the input
+ * (i.e. compressed bytes for decompression, uncompressed bytes for compression.)
+ */
+export type AsyncFlateDrainHandler = (size: number) => void;
+/**
+ * Callback for asynchronous (de)compression methods
+ * @param err Any error that occurred
+ * @param data The resulting data. Only present if `err` is null
+ */
+export type FlateCallback = (err: FlateError | null, data: Uint8Array) => void;
+interface AsyncOptions {
+    /**
+     * Whether or not to "consume" the source data. This will make the typed array/buffer you pass in
+     * unusable but will increase performance and reduce memory usage.
+     */
+    consume?: boolean;
+}
+/**
+ * Options for compressing data asynchronously into a DEFLATE format
+ */
+export interface AsyncDeflateOptions extends DeflateOptions, AsyncOptions {
+}
+/**
+ * Options for decompressing DEFLATE data asynchronously
+ */
+export interface AsyncInflateOptions extends AsyncOptions, InflateStreamOptions {
+    /**
+     * The original size of the data. Currently, the asynchronous API disallows
+     * writing into a buffer you provide; the best you can do is provide the
+     * size in bytes and be given back a new typed array.
+     */
+    size?: number;
+}
+/**
+ * Options for compressing data asynchronously into a GZIP format
+ */
+export interface AsyncGzipOptions extends GzipOptions, AsyncOptions {
+}
+/**
+ * Options for decompressing GZIP data asynchronously
+ */
+export interface AsyncGunzipOptions extends AsyncOptions, InflateStreamOptions {
+}
+/**
+ * Options for compressing data asynchronously into a Zlib format
+ */
+export interface AsyncZlibOptions extends ZlibOptions, AsyncOptions {
+}
+/**
+ * Options for decompressing Zlib data asynchronously
+ */
+export interface AsyncUnzlibOptions extends AsyncInflateOptions {
+}
+/**
+ * A terminable compression/decompression process
+ */
+export interface AsyncTerminable {
+    /**
+     * Terminates the worker thread immediately. The callback will not be called.
+     */
+    (): void;
+}
+/**
+ * Streaming DEFLATE compression
+ */
+export declare class Deflate {
+    /**
+     * Creates a DEFLATE stream
+     * @param opts The compression options
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(opts: DeflateOptions, cb?: FlateStreamHandler);
+    /**
+     * Creates a DEFLATE stream
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(cb?: FlateStreamHandler);
+    private b;
+    private s;
+    private o;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+    private p;
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * deflated output for small inputs.
+     */
+    flush(): void;
+}
+/**
+ * Asynchronous streaming DEFLATE compression
+ */
+export declare class AsyncDeflate {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The handler to call whenever buffered source data is processed (i.e. `queuedSize` updates)
+     */
+    ondrain?: AsyncFlateDrainHandler;
+    /**
+     * The number of uncompressed bytes buffered in the stream
+     */
+    queuedSize: number;
+    /**
+     * Creates an asynchronous DEFLATE stream
+     * @param opts The compression options
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(opts: DeflateOptions, cb?: AsyncFlateStreamHandler);
+    /**
+     * Creates an asynchronous DEFLATE stream
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * deflated output for small inputs.
+     */
+    flush(): void;
+    /**
+     * A method to terminate the stream's internal worker. Subsequent calls to
+     * push() will silently fail.
+     */
+    terminate: AsyncTerminable;
+}
+/**
+ * Asynchronously compresses data with DEFLATE without any wrapper
+ * @param data The data to compress
+ * @param opts The compression options
+ * @param cb The function to be called upon compression completion
+ * @returns A function that can be used to immediately terminate the compression
+ */
+export declare function deflate(data: Uint8Array, opts: AsyncDeflateOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchronously compresses data with DEFLATE without any wrapper
+ * @param data The data to compress
+ * @param cb The function to be called upon compression completion
+ */
+export declare function deflate(data: Uint8Array, cb: FlateCallback): AsyncTerminable;
+/**
+ * Compresses data with DEFLATE without any wrapper
+ * @param data The data to compress
+ * @param opts The compression options
+ * @returns The deflated version of the data
+ */
+export declare function deflateSync(data: Uint8Array, opts?: DeflateOptions): Uint8Array;
+/**
+ * Streaming DEFLATE decompression
+ */
+export declare class Inflate {
+    private s;
+    private o;
+    private p;
+    private d;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+    /**
+     * Creates a DEFLATE decompression stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(opts: InflateStreamOptions, cb?: FlateStreamHandler);
+    /**
+     * Creates a DEFLATE decompression stream
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(cb?: FlateStreamHandler);
+    private e;
+    private c;
+    /**
+     * Pushes a chunk to be inflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the final chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * Asynchronous streaming DEFLATE decompression
+ */
+export declare class AsyncInflate {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The handler to call whenever buffered source data is processed (i.e. `queuedSize` updates)
+     */
+    ondrain?: AsyncFlateDrainHandler;
+    /**
+     * The number of compressed bytes buffered in the stream
+     */
+    queuedSize: number;
+    /**
+     * Creates an asynchronous DEFLATE decompression stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(opts: InflateStreamOptions, cb?: AsyncFlateStreamHandler);
+    /**
+     * Creates an asynchronous DEFLATE decompression stream
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    /**
+     * Pushes a chunk to be inflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * A method to terminate the stream's internal worker. Subsequent calls to
+     * push() will silently fail.
+     */
+    terminate: AsyncTerminable;
+}
+/**
+ * Asynchronously expands DEFLATE data with no wrapper
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function inflate(data: Uint8Array, opts: AsyncInflateOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchronously expands DEFLATE data with no wrapper
+ * @param data The data to decompress
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function inflate(data: Uint8Array, cb: FlateCallback): AsyncTerminable;
+/**
+ * Expands DEFLATE data with no wrapper
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+export declare function inflateSync(data: Uint8Array, opts?: InflateOptions): Uint8Array;
+/**
+ * Streaming GZIP compression
+ */
+export declare class Gzip {
+    private c;
+    private l;
+    private v;
+    private o;
+    private s;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+    /**
+     * Creates a GZIP stream
+     * @param opts The compression options
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(opts: GzipOptions, cb?: FlateStreamHandler);
+    /**
+     * Creates a GZIP stream
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(cb?: FlateStreamHandler);
+    /**
+     * Pushes a chunk to be GZIPped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    private p;
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * GZIPped output for small inputs.
+     */
+    flush(): void;
+}
+/**
+ * Asynchronous streaming GZIP compression
+ */
+export declare class AsyncGzip {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The handler to call whenever buffered source data is processed (i.e. `queuedSize` updates)
+     */
+    ondrain?: AsyncFlateDrainHandler;
+    /**
+     * The number of uncompressed bytes buffered in the stream
+     */
+    queuedSize: number;
+    /**
+     * Creates an asynchronous GZIP stream
+     * @param opts The compression options
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(opts: GzipOptions, cb?: AsyncFlateStreamHandler);
+    /**
+     * Creates an asynchronous GZIP stream
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    /**
+     * Pushes a chunk to be GZIPped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * GZIPped output for small inputs.
+     */
+    flush(): void;
+    /**
+     * A method to terminate the stream's internal worker. Subsequent calls to
+     * push() will silently fail.
+     */
+    terminate: AsyncTerminable;
+}
+/**
+ * Asynchronously compresses data with GZIP
+ * @param data The data to compress
+ * @param opts The compression options
+ * @param cb The function to be called upon compression completion
+ * @returns A function that can be used to immediately terminate the compression
+ */
+export declare function gzip(data: Uint8Array, opts: AsyncGzipOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchronously compresses data with GZIP
+ * @param data The data to compress
+ * @param cb The function to be called upon compression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function gzip(data: Uint8Array, cb: FlateCallback): AsyncTerminable;
+/**
+ * Compresses data with GZIP
+ * @param data The data to compress
+ * @param opts The compression options
+ * @returns The gzipped version of the data
+ */
+export declare function gzipSync(data: Uint8Array, opts?: GzipOptions): Uint8Array;
+/**
+ * Handler for new GZIP members in concatenated GZIP streams. Useful for building indices used to perform random-access reads on compressed files.
+ * @param offset The offset of the new member relative to the start of the stream
+ */
+export type GunzipMemberHandler = (offset: number) => void;
+/**
+ * Streaming single or multi-member GZIP decompression
+ */
+export declare class Gunzip {
+    private v;
+    private r;
+    private o;
+    private p;
+    private s;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+    /**
+     * The handler to call whenever a new GZIP member is found
+     */
+    onmember?: GunzipMemberHandler;
+    /**
+     * Creates a GUNZIP stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(opts: GunzipStreamOptions, cb?: FlateStreamHandler);
+    /**
+     * Creates a GUNZIP stream
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(cb?: FlateStreamHandler);
+    /**
+     * Pushes a chunk to be GUNZIPped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * Asynchronous streaming single or multi-member GZIP decompression
+ */
+export declare class AsyncGunzip {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The handler to call whenever buffered source data is processed (i.e. `queuedSize` updates)
+     */
+    ondrain?: AsyncFlateDrainHandler;
+    /**
+     * The number of compressed bytes buffered in the stream
+     */
+    queuedSize: number;
+    /**
+     * The handler to call whenever a new GZIP member is found
+     */
+    onmember?: GunzipMemberHandler;
+    /**
+     * Creates an asynchronous GUNZIP stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(opts: GunzipStreamOptions, cb?: AsyncFlateStreamHandler);
+    /**
+     * Creates an asynchronous GUNZIP stream
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    /**
+     * Pushes a chunk to be GUNZIPped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * A method to terminate the stream's internal worker. Subsequent calls to
+     * push() will silently fail.
+     */
+    terminate: AsyncTerminable;
+}
+/**
+ * Asynchronously expands GZIP data
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function gunzip(data: Uint8Array, opts: AsyncGunzipOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchronously expands GZIP data
+ * @param data The data to decompress
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function gunzip(data: Uint8Array, cb: FlateCallback): AsyncTerminable;
+/**
+ * Expands GZIP data
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+export declare function gunzipSync(data: Uint8Array, opts?: GunzipOptions): Uint8Array;
+/**
+ * Streaming Zlib compression
+ */
+export declare class Zlib {
+    private c;
+    private v;
+    private o;
+    private s;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+    /**
+     * Creates a Zlib stream
+     * @param opts The compression options
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(opts: ZlibOptions, cb?: FlateStreamHandler);
+    /**
+     * Creates a Zlib stream
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(cb?: FlateStreamHandler);
+    /**
+     * Pushes a chunk to be zlibbed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    private p;
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * zlibbed output for small inputs.
+     */
+    flush(): void;
+}
+/**
+ * Asynchronous streaming Zlib compression
+ */
+export declare class AsyncZlib {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The handler to call whenever buffered source data is processed (i.e. `queuedSize` updates)
+     */
+    ondrain?: AsyncFlateDrainHandler;
+    /**
+     * The number of uncompressed bytes buffered in the stream
+     */
+    queuedSize: number;
+    /**
+     * Creates an asynchronous Zlib stream
+     * @param opts The compression options
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(opts: ZlibOptions, cb?: AsyncFlateStreamHandler);
+    /**
+     * Creates an asynchronous Zlib stream
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * zlibbed output for small inputs.
+     */
+    flush(): void;
+    /**
+     * A method to terminate the stream's internal worker. Subsequent calls to
+     * push() will silently fail.
+     */
+    terminate: AsyncTerminable;
+}
+/**
+ * Asynchronously compresses data with Zlib
+ * @param data The data to compress
+ * @param opts The compression options
+ * @param cb The function to be called upon compression completion
+ */
+export declare function zlib(data: Uint8Array, opts: AsyncZlibOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchronously compresses data with Zlib
+ * @param data The data to compress
+ * @param cb The function to be called upon compression completion
+ * @returns A function that can be used to immediately terminate the compression
+ */
+export declare function zlib(data: Uint8Array, cb: FlateCallback): AsyncTerminable;
+/**
+ * Compress data with Zlib
+ * @param data The data to compress
+ * @param opts The compression options
+ * @returns The zlib-compressed version of the data
+ */
+export declare function zlibSync(data: Uint8Array, opts?: ZlibOptions): Uint8Array;
+/**
+ * Streaming Zlib decompression
+ */
+export declare class Unzlib {
+    private v;
+    private p;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+    /**
+     * Creates a Zlib decompression stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(opts: UnzlibStreamOptions, cb?: FlateStreamHandler);
+    /**
+     * Creates a Zlib decompression stream
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(cb?: FlateStreamHandler);
+    /**
+     * Pushes a chunk to be unzlibbed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * Asynchronous streaming Zlib decompression
+ */
+export declare class AsyncUnzlib {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The handler to call whenever buffered source data is processed (i.e. `queuedSize` updates)
+     */
+    ondrain?: AsyncFlateDrainHandler;
+    /**
+     * The number of compressed bytes buffered in the stream
+     */
+    queuedSize: number;
+    /**
+     * Creates an asynchronous Zlib decompression stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(opts: UnzlibStreamOptions, cb?: AsyncFlateStreamHandler);
+    /**
+     * Creates an asynchronous Zlib decompression stream
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    /**
+     * Pushes a chunk to be decompressed from Zlib
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * A method to terminate the stream's internal worker. Subsequent calls to
+     * push() will silently fail.
+     */
+    terminate: AsyncTerminable;
+}
+/**
+ * Asynchronously expands Zlib data
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function unzlib(data: Uint8Array, opts: AsyncUnzlibOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchronously expands Zlib data
+ * @param data The data to decompress
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function unzlib(data: Uint8Array, cb: FlateCallback): AsyncTerminable;
+/**
+ * Expands Zlib data
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+export declare function unzlibSync(data: Uint8Array, opts?: UnzlibOptions): Uint8Array;
+export { gzip as compress, AsyncGzip as AsyncCompress };
+export { gzipSync as compressSync, Gzip as Compress };
+/**
+ * Streaming GZIP, Zlib, or raw DEFLATE decompression
+ */
+export declare class Decompress {
+    private G;
+    private I;
+    private Z;
+    private o;
+    private s;
+    private p;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+    /**
+     * Creates a decompression stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is decompressed
+     */
+    constructor(opts: InflateStreamOptions, cb?: FlateStreamHandler);
+    /**
+     * Creates a decompression stream
+     * @param cb The callback to call whenever data is decompressed
+     */
+    constructor(cb?: FlateStreamHandler);
+    private i;
+    /**
+     * Pushes a chunk to be decompressed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression
+ */
+export declare class AsyncDecompress {
+    private G;
+    private I;
+    private Z;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The handler to call whenever buffered source data is processed (i.e. `queuedSize` updates)
+     */
+    ondrain?: AsyncFlateDrainHandler;
+    /**
+     * The number of compressed bytes buffered in the stream
+     */
+    queuedSize: number;
+    /**
+     * Creates an asynchronous decompression stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is decompressed
+     */
+    constructor(opts: InflateStreamOptions, cb?: AsyncFlateStreamHandler);
+    /**
+     * Creates an asynchronous decompression stream
+     * @param cb The callback to call whenever data is decompressed
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    private i;
+    /**
+     * Pushes a chunk to be decompressed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * Asynchrononously expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function decompress(data: Uint8Array, opts: AsyncInflateOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchrononously expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format
+ * @param data The data to decompress
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function decompress(data: Uint8Array, cb: FlateCallback): AsyncTerminable;
+/**
+ * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+export declare function decompressSync(data: Uint8Array, opts?: InflateOptions): Uint8Array;
+/**
+ * Attributes for files added to a ZIP archive object
+ */
+export interface ZipAttributes {
+    /**
+     * The operating system of origin for this file. The value is defined
+     * by PKZIP's APPNOTE.txt, section 4.4.2.2. For example, 0 (the default)
+     * is MS/DOS, 3 is Unix, 19 is macOS.
+     */
+    os?: number;
+    /**
+     * The file's attributes. These are traditionally somewhat complicated
+     * and platform-dependent, so using them is scarcely necessary. However,
+     * here is a representation of what this is, bit by bit:
+     *
+     * `TTTTugtrwxrwxrwx0000000000ADVSHR`
+     *
+     * TTTT = file type (rarely useful)
+     *
+     * u = setuid, g = setgid, t = sticky
+     *
+     * rwx = user permissions, rwx = group permissions, rwx = other permissions
+     *
+     * 0000000000 = unused
+     *
+     * A = archive, D = directory, V = volume label, S = system file, H = hidden, R = read-only
+     *
+     * If you want to set the Unix permissions, for instance, just bit shift by 16, e.g. 0o644 << 16.
+     * Note that attributes usually only work in conjunction with the `os` setting: you must use
+     * `os` = 3 (Unix) if you want to set Unix permissions
+     */
+    attrs?: number;
+    /**
+     * Extra metadata to add to the file. This field is defined by PKZIP's APPNOTE.txt,
+     * section 4.4.28. At most 65,535 bytes may be used in each ID. The ID must be an
+     * integer between 0 and 65,535, inclusive.
+     *
+     * This field is incredibly rare and almost never needed except for compliance with
+     * proprietary standards and software.
+     */
+    extra?: Record<number, Uint8Array>;
+    /**
+     * The comment to attach to the file. This field is defined by PKZIP's APPNOTE.txt,
+     * section 4.4.26. The comment must be at most 65,535 bytes long UTF-8 encoded. This
+     * field is not read by consumer software.
+     */
+    comment?: string;
+    /**
+     * When the file was last modified. Defaults to the current time.
+     */
+    mtime?: GzipOptions['mtime'];
+}
+/**
+ * Options for creating a ZIP archive
+ */
+export interface ZipOptions extends DeflateOptions, ZipAttributes {
+}
+/**
+ * Options for expanding a ZIP archive
+ */
+export interface UnzipOptions {
+    /**
+     * A filter function to extract only certain files from a ZIP archive
+     */
+    filter?: UnzipFileFilter;
+}
+/**
+ * Options for asynchronously creating a ZIP archive
+ */
+export interface AsyncZipOptions extends AsyncDeflateOptions, ZipAttributes {
+}
+/**
+ * Options for asynchronously expanding a ZIP archive
+ */
+export interface AsyncUnzipOptions extends UnzipOptions {
+}
+/**
+ * A file that can be used to create a ZIP archive
+ */
+export type ZippableFile = Uint8Array | Zippable | [Uint8Array | Zippable, ZipOptions];
+/**
+ * A file that can be used to asynchronously create a ZIP archive
+ */
+export type AsyncZippableFile = Uint8Array | AsyncZippable | [Uint8Array | AsyncZippable, AsyncZipOptions];
+/**
+ * The complete directory structure of a ZIPpable archive
+ */
+export interface Zippable {
+    [path: string]: ZippableFile;
+}
+/**
+ * The complete directory structure of an asynchronously ZIPpable archive
+ */
+export interface AsyncZippable {
+    [path: string]: AsyncZippableFile;
+}
+/**
+ * An unzipped archive. The full path of each file is used as the key,
+ * and the file is the value
+ */
+export interface Unzipped {
+    [path: string]: Uint8Array;
+}
+/**
+ * Handler for string generation streams
+ * @param data The string output from the stream processor
+ * @param final Whether this is the final block
+ */
+export type StringStreamHandler = (data: string, final: boolean) => void;
+/**
+ * Callback for asynchronous ZIP decompression
+ * @param err Any error that occurred
+ * @param data The decompressed ZIP archive
+ */
+export type UnzipCallback = (err: FlateError | null, data: Unzipped) => void;
+/**
+ * Handler for streaming ZIP decompression
+ * @param file The file that was found in the archive
+ */
+export type UnzipFileHandler = (file: UnzipFile) => void;
+/**
+ * Streaming UTF-8 decoding
+ */
+export declare class DecodeUTF8 {
+    private p;
+    private t;
+    /**
+     * Creates a UTF-8 decoding stream
+     * @param cb The callback to call whenever data is decoded
+     */
+    constructor(cb?: StringStreamHandler);
+    /**
+     * Pushes a chunk to be decoded from UTF-8 binary
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: StringStreamHandler;
+}
+/**
+ * Streaming UTF-8 encoding
+ */
+export declare class EncodeUTF8 {
+    private d;
+    /**
+     * Creates a UTF-8 decoding stream
+     * @param cb The callback to call whenever data is encoded
+     */
+    constructor(cb?: FlateStreamHandler);
+    /**
+     * Pushes a chunk to be encoded to UTF-8
+     * @param chunk The string data to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: string, final?: boolean): void;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+}
+/**
+ * Converts a string into a Uint8Array for use with compression/decompression methods
+ * @param str The string to encode
+ * @param latin1 Whether or not to interpret the data as Latin-1. This should
+ *               not need to be true unless decoding a binary string.
+ * @returns The string encoded in UTF-8/Latin-1 binary
+ */
+export declare function strToU8(str: string, latin1?: boolean): Uint8Array;
+/**
+ * Converts a Uint8Array to a string
+ * @param dat The data to decode to string
+ * @param latin1 Whether or not to interpret the data as Latin-1. This should
+ *               not need to be true unless encoding to binary string.
+ * @returns The original UTF-8/Latin-1 string
+ */
+export declare function strFromU8(dat: Uint8Array, latin1?: boolean): string;
+/**
+ * A stream that can be used to create a file in a ZIP archive
+ */
+export interface ZipInputFile extends ZipAttributes {
+    /**
+     * The filename to associate with the data provided to this stream. If you
+     * want a file in a subdirectory, use forward slashes as a separator (e.g.
+     * `directory/filename.ext`). This will still work on Windows.
+     */
+    filename: string;
+    /**
+     * The size of the file in bytes. This attribute may be invalid after
+     * the file is added to the ZIP archive; it must be correct only before the
+     * stream completes.
+     *
+     * If you don't want to have to compute this yourself, consider extending the
+     * ZipPassThrough class and overriding its process() method, or using one of
+     * ZipDeflate or AsyncZipDeflate.
+     */
+    size: number;
+    /**
+     * A CRC of the original file contents. This attribute may be invalid after
+     * the file is added to the ZIP archive; it must be correct only before the
+     * stream completes.
+     *
+     * If you don't want to have to generate this yourself, consider extending the
+     * ZipPassThrough class and overriding its process() method, or using one of
+     * ZipDeflate or AsyncZipDeflate.
+     */
+    crc: number;
+    /**
+     * The compression format for the data stream. This number is determined by
+     * the spec in PKZIP's APPNOTE.txt, section 4.4.5. For example, 0 = no
+     * compression, 8 = deflate, 14 = LZMA
+     */
+    compression: number;
+    /**
+     * Bits 1 and 2 of the general purpose bit flag, specified in PKZIP's
+     * APPNOTE.txt, section 4.4.4. Should be between 0 and 3. This is unlikely
+     * to be necessary.
+     */
+    flag?: number;
+    /**
+     * The handler to be called when data is added. After passing this stream to
+     * the ZIP file object, this handler will always be defined. To call it:
+     *
+     * `stream.ondata(error, chunk, final)`
+     *
+     * error = any error that occurred (null if there was no error)
+     *
+     * chunk = a Uint8Array of the data that was added (null if there was an
+     * error)
+     *
+     * final = boolean, whether this is the final chunk in the stream
+     */
+    ondata?: AsyncFlateStreamHandler;
+    /**
+     * A method called when the stream is no longer needed, for clean-up
+     * purposes. This will not always be called after the stream completes,
+     * so you may wish to call this.terminate() after the final chunk is
+     * processed if you have clean-up logic.
+     */
+    terminate?: AsyncTerminable;
+}
+/**
+ * A pass-through stream to keep data uncompressed in a ZIP archive.
+ */
+export declare class ZipPassThrough implements ZipInputFile {
+    filename: string;
+    crc: number;
+    size: number;
+    compression: number;
+    os?: number;
+    attrs?: number;
+    comment?: string;
+    extra?: Record<number, Uint8Array>;
+    mtime?: GzipOptions['mtime'];
+    ondata: AsyncFlateStreamHandler;
+    private c;
+    /**
+     * Creates a pass-through stream that can be added to ZIP archives
+     * @param filename The filename to associate with this data stream
+     */
+    constructor(filename: string);
+    /**
+     * Processes a chunk and pushes to the output stream. You can override this
+     * method in a subclass for custom behavior, but by default this passes
+     * the data through. You must call this.ondata(err, chunk, final) at some
+     * point in this method.
+     * @param chunk The chunk to process
+     * @param final Whether this is the last chunk
+     */
+    protected process(chunk: Uint8Array, final: boolean): void;
+    /**
+     * Pushes a chunk to be added. If you are subclassing this with a custom
+     * compression algorithm, note that you must push data from the source
+     * file only, pre-compression.
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate
+ * for better performance
+ */
+export declare class ZipDeflate implements ZipInputFile {
+    filename: string;
+    crc: number;
+    size: number;
+    compression: number;
+    flag: 0 | 1 | 2 | 3;
+    os?: number;
+    attrs?: number;
+    comment?: string;
+    extra?: Record<number, Uint8Array>;
+    mtime?: GzipOptions['mtime'];
+    ondata: AsyncFlateStreamHandler;
+    private d;
+    /**
+     * Creates a DEFLATE stream that can be added to ZIP archives
+     * @param filename The filename to associate with this data stream
+     * @param opts The compression options
+     */
+    constructor(filename: string, opts?: DeflateOptions);
+    process(chunk: Uint8Array, final: boolean): void;
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * Asynchronous streaming DEFLATE compression for ZIP archives
+ */
+export declare class AsyncZipDeflate implements ZipInputFile {
+    filename: string;
+    crc: number;
+    size: number;
+    compression: number;
+    flag: 0 | 1 | 2 | 3;
+    os?: number;
+    attrs?: number;
+    comment?: string;
+    extra?: Record<number, Uint8Array>;
+    mtime?: GzipOptions['mtime'];
+    ondata: AsyncFlateStreamHandler;
+    private d;
+    terminate: AsyncTerminable;
+    /**
+     * Creates an asynchronous DEFLATE stream that can be added to ZIP archives
+     * @param filename The filename to associate with this data stream
+     * @param opts The compression options
+     */
+    constructor(filename: string, opts?: DeflateOptions);
+    process(chunk: Uint8Array, final: boolean): void;
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * A zippable archive to which files can incrementally be added
+ */
+export declare class Zip {
+    private u;
+    private d;
+    /**
+     * Creates an empty ZIP archive to which files can be added
+     * @param cb The callback to call whenever data for the generated ZIP archive
+     *           is available
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    /**
+     * Adds a file to the ZIP archive
+     * @param file The file stream to add
+     */
+    add(file: ZipInputFile): void;
+    /**
+     * Ends the process of adding files and prepares to emit the final chunks.
+     * This *must* be called after adding all desired files for the resulting
+     * ZIP file to work properly.
+     */
+    end(): void;
+    private e;
+    /**
+     * A method to terminate any internal workers used by the stream. Subsequent
+     * calls to add() will fail.
+     */
+    terminate(): void;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+}
+/**
+ * Asynchronously creates a ZIP file
+ * @param data The directory structure for the ZIP archive
+ * @param opts The main options, merged with per-file options
+ * @param cb The callback to call with the generated ZIP archive
+ * @returns A function that can be used to immediately terminate the compression
+ */
+export declare function zip(data: AsyncZippable, opts: AsyncZipOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchronously creates a ZIP file
+ * @param data The directory structure for the ZIP archive
+ * @param cb The callback to call with the generated ZIP archive
+ * @returns A function that can be used to immediately terminate the compression
+ */
+export declare function zip(data: AsyncZippable, cb: FlateCallback): AsyncTerminable;
+/**
+ * Synchronously creates a ZIP file. Prefer using `zip` for better performance
+ * with more than one file.
+ * @param data The directory structure for the ZIP archive
+ * @param opts The main options, merged with per-file options
+ * @returns The generated ZIP archive
+ */
+export declare function zipSync(data: Zippable, opts?: ZipOptions): Uint8Array;
+/**
+ * A decoder for files in ZIP streams
+ */
+export interface UnzipDecoder {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * Pushes a chunk to be decompressed
+     * @param data The data in this chunk. Do not consume (detach) this data.
+     * @param final Whether this is the last chunk in the data stream
+     */
+    push(data: Uint8Array, final: boolean): void;
+    /**
+     * A method to terminate any internal workers used by the stream. Subsequent
+     * calls to push() should silently fail.
+     */
+    terminate?: AsyncTerminable;
+}
+/**
+ * A constructor for a decoder for unzip streams
+ */
+export interface UnzipDecoderConstructor {
+    /**
+     * Creates an instance of the decoder
+     * @param filename The name of the file
+     * @param size The compressed size of the file
+     * @param originalSize The original size of the file
+     */
+    new (filename: string, size?: number, originalSize?: number): UnzipDecoder;
+    /**
+     * The compression format for the data stream. This number is determined by
+     * the spec in PKZIP's APPNOTE.txt, section 4.4.5. For example, 0 = no
+     * compression, 8 = deflate, 14 = LZMA
+     */
+    compression: number;
+}
+/**
+ * Information about a file to be extracted from a ZIP archive
+ */
+export interface UnzipFileInfo {
+    /**
+     * The name of the file
+     */
+    name: string;
+    /**
+     * The compressed size of the file
+     */
+    size: number;
+    /**
+     * The original size of the file
+     */
+    originalSize: number;
+    /**
+     * The compression format for the data stream. This number is determined by
+     * the spec in PKZIP's APPNOTE.txt, section 4.4.5. For example, 0 = no
+     * compression, 8 = deflate, 14 = LZMA. If the filter function returns true
+     * but this value is not 8, the unzip function will throw.
+     */
+    compression: number;
+}
+/**
+ * A filter for files to be extracted during the unzipping process
+ * @param file The info for the current file being processed
+ * @returns Whether or not to extract the current file
+ */
+export type UnzipFileFilter = (file: UnzipFileInfo) => boolean;
+/**
+ * Streaming file extraction from ZIP archives
+ */
+export interface UnzipFile {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The name of the file
+     */
+    name: string;
+    /**
+     * The compression format for the data stream. This number is determined by
+     * the spec in PKZIP's APPNOTE.txt, section 4.4.5. For example, 0 = no
+     * compression, 8 = deflate, 14 = LZMA. If start() is called but there is no
+     * decompression stream available for this method, start() will throw.
+     */
+    compression: number;
+    /**
+     * The compressed size of the file. Will not be present for archives created
+     * in a streaming fashion.
+     */
+    size?: number;
+    /**
+     * The original size of the file. Will not be present for archives created
+     * in a streaming fashion.
+     */
+    originalSize?: number;
+    /**
+     * Starts reading from the stream. Calling this function will always enable
+     * this stream, but ocassionally the stream will be enabled even without
+     * this being called.
+     */
+    start(): void;
+    /**
+     * A method to terminate any internal workers used by the stream. ondata
+     * will not be called any further.
+     */
+    terminate: AsyncTerminable;
+}
+/**
+ * Streaming pass-through decompression for ZIP archives
+ */
+export declare class UnzipPassThrough implements UnzipDecoder {
+    static compression: number;
+    ondata: AsyncFlateStreamHandler;
+    push(data: Uint8Array, final: boolean): void;
+}
+/**
+ * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for
+ * better performance.
+ */
+export declare class UnzipInflate implements UnzipDecoder {
+    static compression: number;
+    private i;
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * Creates a DEFLATE decompression that can be used in ZIP archives
+     */
+    constructor();
+    push(data: Uint8Array, final: boolean): void;
+}
+/**
+ * Asynchronous streaming DEFLATE decompression for ZIP archives
+ */
+export declare class AsyncUnzipInflate implements UnzipDecoder {
+    static compression: number;
+    private i;
+    ondata: AsyncFlateStreamHandler;
+    terminate: AsyncTerminable;
+    /**
+     * Creates a DEFLATE decompression that can be used in ZIP archives
+     */
+    constructor(_: string, sz?: number);
+    push(data: Uint8Array, final: boolean): void;
+}
+/**
+ * A ZIP archive decompression stream that emits files as they are discovered
+ */
+export declare class Unzip {
+    private d;
+    private c;
+    private p;
+    private k;
+    private o;
+    /**
+     * Creates a ZIP decompression stream
+     * @param cb The callback to call whenever a file in the ZIP archive is found
+     */
+    constructor(cb?: UnzipFileHandler);
+    /**
+     * Pushes a chunk to be unzipped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): any;
+    /**
+     * Registers a decoder with the stream, allowing for files compressed with
+     * the compression type provided to be expanded correctly
+     * @param decoder The decoder constructor
+     */
+    register(decoder: UnzipDecoderConstructor): void;
+    /**
+     * The handler to call whenever a file is discovered
+     */
+    onfile: UnzipFileHandler;
+}
+/**
+ * Asynchronously decompresses a ZIP archive
+ * @param data The raw compressed ZIP file
+ * @param opts The ZIP extraction options
+ * @param cb The callback to call with the decompressed files
+ * @returns A function that can be used to immediately terminate the unzipping
+ */
+export declare function unzip(data: Uint8Array, opts: AsyncUnzipOptions, cb: UnzipCallback): AsyncTerminable;
+/**
+ * Asynchronously decompresses a ZIP archive
+ * @param data The raw compressed ZIP file
+ * @param cb The callback to call with the decompressed files
+ * @returns A function that can be used to immediately terminate the unzipping
+ */
+export declare function unzip(data: Uint8Array, cb: UnzipCallback): AsyncTerminable;
+/**
+ * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better
+ * performance with more than one file.
+ * @param data The raw compressed ZIP file
+ * @param opts The ZIP extraction options
+ * @returns The decompressed files
+ */
+export declare function unzipSync(data: Uint8Array, opts?: UnzipOptions): Unzipped;
diff --git a/node_modules/fflate/lib/node-worker.cjs b/node_modules/fflate/lib/node-worker.cjs
new file mode 100644
index 0000000..6fe64e3
--- /dev/null
+++ b/node_modules/fflate/lib/node-worker.cjs
@@ -0,0 +1,32 @@
+"use strict";
+// Mediocre shim
+var Worker;
+var workerAdd = ";var __w=require('worker_threads');__w.parentPort.on('message',function(m){onmessage({data:m})}),postMessage=function(m,t){__w.parentPort.postMessage(m,t)},close=process.exit;self=global";
+try {
+    Worker = require('worker_threads').Worker;
+}
+catch (e) {
+}
+exports.default = Worker ? function (c, _, msg, transfer, cb) {
+    var done = false;
+    var w = new Worker(c + workerAdd, { eval: true })
+        .on('error', function (e) { return cb(e, null); })
+        .on('message', function (m) { return cb(null, m); })
+        .on('exit', function (c) {
+        if (c && !done)
+            cb(new Error('exited with code ' + c), null);
+    });
+    w.postMessage(msg, transfer);
+    w.terminate = function () {
+        done = true;
+        return Worker.prototype.terminate.call(w);
+    };
+    return w;
+} : function (_, __, ___, ____, cb) {
+    setImmediate(function () { return cb(new Error('async operations unsupported - update to Node 12+ (or Node 10-11 with the --experimental-worker CLI flag)'), null); });
+    var NOP = function () { };
+    return {
+        terminate: NOP,
+        postMessage: NOP
+    };
+};
diff --git a/node_modules/fflate/lib/node.cjs b/node_modules/fflate/lib/node.cjs
new file mode 100644
index 0000000..3ff05cd
--- /dev/null
+++ b/node_modules/fflate/lib/node.cjs
@@ -0,0 +1,2700 @@
+"use strict";
+// DEFLATE is a complex format; to read this code, you should probably check the RFC first:
+// https://tools.ietf.org/html/rfc1951
+// You may also wish to take a look at the guide I made about this program:
+// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad
+// Some of the following code is similar to that of UZIP.js:
+// https://github.com/photopea/UZIP.js
+// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.
+// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint
+// is better for memory in most engines (I *think*).
+// Mediocre shim
+var Worker;
+var workerAdd = ";var __w=require('worker_threads');__w.parentPort.on('message',function(m){onmessage({data:m})}),postMessage=function(m,t){__w.parentPort.postMessage(m,t)},close=process.exit;self=global";
+try {
+    Worker = require('worker_threads').Worker;
+}
+catch (e) {
+}
+var node_worker_1 = {};
+node_worker_1["default"] = Worker ? function (c, _, msg, transfer, cb) {
+    var done = false;
+    var w = new Worker(c + workerAdd, { eval: true })
+        .on('error', function (e) { return cb(e, null); })
+        .on('message', function (m) { return cb(null, m); })
+        .on('exit', function (c) {
+        if (c && !done)
+            cb(new Error('exited with code ' + c), null);
+    });
+    w.postMessage(msg, transfer);
+    w.terminate = function () {
+        done = true;
+        return Worker.prototype.terminate.call(w);
+    };
+    return w;
+} : function (_, __, ___, ____, cb) {
+    setImmediate(function () { return cb(new Error('async operations unsupported - update to Node 12+ (or Node 10-11 with the --experimental-worker CLI flag)'), null); });
+    var NOP = function () { };
+    return {
+        terminate: NOP,
+        postMessage: NOP
+    };
+};
+
+// aliases for shorter compressed code (most minifers don't do this)
+var u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;
+// fixed length extra bits
+var fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);
+// fixed distance extra bits
+var fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);
+// code length index map
+var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);
+// get base, reverse index map from extra bits
+var freb = function (eb, start) {
+    var b = new u16(31);
+    for (var i = 0; i < 31; ++i) {
+        b[i] = start += 1 << eb[i - 1];
+    }
+    // numbers here are at max 18 bits
+    var r = new i32(b[30]);
+    for (var i = 1; i < 30; ++i) {
+        for (var j = b[i]; j < b[i + 1]; ++j) {
+            r[j] = ((j - b[i]) << 5) | i;
+        }
+    }
+    return { b: b, r: r };
+};
+var _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;
+// we can ignore the fact that the other numbers are wrong; they never happen anyway
+fl[28] = 258, revfl[258] = 28;
+var _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;
+// map of value to reverse (assuming 16 bits)
+var rev = new u16(32768);
+for (var i = 0; i < 32768; ++i) {
+    // reverse table algorithm from SO
+    var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);
+    x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);
+    x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);
+    rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;
+}
+// create huffman tree from u8 "map": index -> code length for code index
+// mb (max bits) must be at most 15
+// TODO: optimize/split up?
+var hMap = (function (cd, mb, r) {
+    var s = cd.length;
+    // index
+    var i = 0;
+    // u16 "map": index -> # of codes with bit length = index
+    var l = new u16(mb);
+    // length of cd must be 288 (total # of codes)
+    for (; i < s; ++i) {
+        if (cd[i])
+            ++l[cd[i] - 1];
+    }
+    // u16 "map": index -> minimum code for bit length = index
+    var le = new u16(mb);
+    for (i = 1; i < mb; ++i) {
+        le[i] = (le[i - 1] + l[i - 1]) << 1;
+    }
+    var co;
+    if (r) {
+        // u16 "map": index -> number of actual bits, symbol for code
+        co = new u16(1 << mb);
+        // bits to remove for reverser
+        var rvb = 15 - mb;
+        for (i = 0; i < s; ++i) {
+            // ignore 0 lengths
+            if (cd[i]) {
+                // num encoding both symbol and bits read
+                var sv = (i << 4) | cd[i];
+                // free bits
+                var r_1 = mb - cd[i];
+                // start value
+                var v = le[cd[i] - 1]++ << r_1;
+                // m is end value
+                for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {
+                    // every 16 bit value starting with the code yields the same result
+                    co[rev[v] >> rvb] = sv;
+                }
+            }
+        }
+    }
+    else {
+        co = new u16(s);
+        for (i = 0; i < s; ++i) {
+            if (cd[i]) {
+                co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);
+            }
+        }
+    }
+    return co;
+});
+// fixed length tree
+var flt = new u8(288);
+for (var i = 0; i < 144; ++i)
+    flt[i] = 8;
+for (var i = 144; i < 256; ++i)
+    flt[i] = 9;
+for (var i = 256; i < 280; ++i)
+    flt[i] = 7;
+for (var i = 280; i < 288; ++i)
+    flt[i] = 8;
+// fixed distance tree
+var fdt = new u8(32);
+for (var i = 0; i < 32; ++i)
+    fdt[i] = 5;
+// fixed length map
+var flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);
+// fixed distance map
+var fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);
+// find max of array
+var max = function (a) {
+    var m = a[0];
+    for (var i = 1; i < a.length; ++i) {
+        if (a[i] > m)
+            m = a[i];
+    }
+    return m;
+};
+// read d, starting at bit p and mask with m
+var bits = function (d, p, m) {
+    var o = (p / 8) | 0;
+    return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;
+};
+// read d, starting at bit p continuing for at least 16 bits
+var bits16 = function (d, p) {
+    var o = (p / 8) | 0;
+    return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));
+};
+// get end of byte
+var shft = function (p) { return ((p + 7) / 8) | 0; };
+// typed array slice - allows garbage collector to free original reference,
+// while being more compatible than .slice
+var slc = function (v, s, e) {
+    if (s == null || s < 0)
+        s = 0;
+    if (e == null || e > v.length)
+        e = v.length;
+    // can't use .constructor in case user-supplied
+    return new u8(v.subarray(s, e));
+};
+/**
+ * Codes for errors generated within this library
+ */
+exports.FlateErrorCode = {
+    UnexpectedEOF: 0,
+    InvalidBlockType: 1,
+    InvalidLengthLiteral: 2,
+    InvalidDistance: 3,
+    StreamFinished: 4,
+    NoStreamHandler: 5,
+    InvalidHeader: 6,
+    NoCallback: 7,
+    InvalidUTF8: 8,
+    ExtraFieldTooLong: 9,
+    InvalidDate: 10,
+    FilenameTooLong: 11,
+    StreamFinishing: 12,
+    InvalidZipData: 13,
+    UnknownCompressionMethod: 14
+};
+// error codes
+var ec = [
+    'unexpected EOF',
+    'invalid block type',
+    'invalid length/literal',
+    'invalid distance',
+    'stream finished',
+    'no stream handler',
+    ,
+    'no callback',
+    'invalid UTF-8 data',
+    'extra field too long',
+    'date not in range 1980-2099',
+    'filename too long',
+    'stream finishing',
+    'invalid zip data'
+    // determined by unknown compression method
+];
+;
+var err = function (ind, msg, nt) {
+    var e = new Error(msg || ec[ind]);
+    e.code = ind;
+    if (Error.captureStackTrace)
+        Error.captureStackTrace(e, err);
+    if (!nt)
+        throw e;
+    return e;
+};
+// expands raw DEFLATE data
+var inflt = function (dat, st, buf, dict) {
+    // source length       dict length
+    var sl = dat.length, dl = dict ? dict.length : 0;
+    if (!sl || st.f && !st.l)
+        return buf || new u8(0);
+    var noBuf = !buf;
+    // have to estimate size
+    var resize = noBuf || st.i != 2;
+    // no state
+    var noSt = st.i;
+    // Assumes roughly 33% compression ratio average
+    if (noBuf)
+        buf = new u8(sl * 3);
+    // ensure buffer can fit at least l elements
+    var cbuf = function (l) {
+        var bl = buf.length;
+        // need to increase size to fit
+        if (l > bl) {
+            // Double or set to necessary, whichever is greater
+            var nbuf = new u8(Math.max(bl * 2, l));
+            nbuf.set(buf);
+            buf = nbuf;
+        }
+    };
+    //  last chunk         bitpos           bytes
+    var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;
+    // total bits
+    var tbts = sl * 8;
+    do {
+        if (!lm) {
+            // BFINAL - this is only 1 when last chunk is next
+            final = bits(dat, pos, 1);
+            // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman
+            var type = bits(dat, pos + 1, 3);
+            pos += 3;
+            if (!type) {
+                // go to end of byte boundary
+                var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;
+                if (t > sl) {
+                    if (noSt)
+                        err(0);
+                    break;
+                }
+                // ensure size
+                if (resize)
+                    cbuf(bt + l);
+                // Copy over uncompressed data
+                buf.set(dat.subarray(s, t), bt);
+                // Get new bitpos, update byte count
+                st.b = bt += l, st.p = pos = t * 8, st.f = final;
+                continue;
+            }
+            else if (type == 1)
+                lm = flrm, dm = fdrm, lbt = 9, dbt = 5;
+            else if (type == 2) {
+                //  literal                            lengths
+                var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;
+                var tl = hLit + bits(dat, pos + 5, 31) + 1;
+                pos += 14;
+                // length+distance tree
+                var ldt = new u8(tl);
+                // code length tree
+                var clt = new u8(19);
+                for (var i = 0; i < hcLen; ++i) {
+                    // use index map to get real code
+                    clt[clim[i]] = bits(dat, pos + i * 3, 7);
+                }
+                pos += hcLen * 3;
+                // code lengths bits
+                var clb = max(clt), clbmsk = (1 << clb) - 1;
+                // code lengths map
+                var clm = hMap(clt, clb, 1);
+                for (var i = 0; i < tl;) {
+                    var r = clm[bits(dat, pos, clbmsk)];
+                    // bits read
+                    pos += r & 15;
+                    // symbol
+                    var s = r >> 4;
+                    // code length to copy
+                    if (s < 16) {
+                        ldt[i++] = s;
+                    }
+                    else {
+                        //  copy   count
+                        var c = 0, n = 0;
+                        if (s == 16)
+                            n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];
+                        else if (s == 17)
+                            n = 3 + bits(dat, pos, 7), pos += 3;
+                        else if (s == 18)
+                            n = 11 + bits(dat, pos, 127), pos += 7;
+                        while (n--)
+                            ldt[i++] = c;
+                    }
+                }
+                //    length tree                 distance tree
+                var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);
+                // max length bits
+                lbt = max(lt);
+                // max dist bits
+                dbt = max(dt);
+                lm = hMap(lt, lbt, 1);
+                dm = hMap(dt, dbt, 1);
+            }
+            else
+                err(1);
+            if (pos > tbts) {
+                if (noSt)
+                    err(0);
+                break;
+            }
+        }
+        // Make sure the buffer can hold this + the largest possible addition
+        // Maximum chunk size (practically, theoretically infinite) is 2^17
+        if (resize)
+            cbuf(bt + 131072);
+        var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;
+        var lpos = pos;
+        for (;; lpos = pos) {
+            // bits read, code
+            var c = lm[bits16(dat, pos) & lms], sym = c >> 4;
+            pos += c & 15;
+            if (pos > tbts) {
+                if (noSt)
+                    err(0);
+                break;
+            }
+            if (!c)
+                err(2);
+            if (sym < 256)
+                buf[bt++] = sym;
+            else if (sym == 256) {
+                lpos = pos, lm = null;
+                break;
+            }
+            else {
+                var add = sym - 254;
+                // no extra bits needed if less
+                if (sym > 264) {
+                    // index
+                    var i = sym - 257, b = fleb[i];
+                    add = bits(dat, pos, (1 << b) - 1) + fl[i];
+                    pos += b;
+                }
+                // dist
+                var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;
+                if (!d)
+                    err(3);
+                pos += d & 15;
+                var dt = fd[dsym];
+                if (dsym > 3) {
+                    var b = fdeb[dsym];
+                    dt += bits16(dat, pos) & (1 << b) - 1, pos += b;
+                }
+                if (pos > tbts) {
+                    if (noSt)
+                        err(0);
+                    break;
+                }
+                if (resize)
+                    cbuf(bt + 131072);
+                var end = bt + add;
+                if (bt < dt) {
+                    var shift = dl - dt, dend = Math.min(dt, end);
+                    if (shift + bt < 0)
+                        err(3);
+                    for (; bt < dend; ++bt)
+                        buf[bt] = dict[shift + bt];
+                }
+                for (; bt < end; ++bt)
+                    buf[bt] = buf[bt - dt];
+            }
+        }
+        st.l = lm, st.p = lpos, st.b = bt, st.f = final;
+        if (lm)
+            final = 1, st.m = lbt, st.d = dm, st.n = dbt;
+    } while (!final);
+    // don't reallocate for streams or user buffers
+    return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);
+};
+// starting at p, write the minimum number of bits that can hold v to d
+var wbits = function (d, p, v) {
+    v <<= p & 7;
+    var o = (p / 8) | 0;
+    d[o] |= v;
+    d[o + 1] |= v >> 8;
+};
+// starting at p, write the minimum number of bits (>8) that can hold v to d
+var wbits16 = function (d, p, v) {
+    v <<= p & 7;
+    var o = (p / 8) | 0;
+    d[o] |= v;
+    d[o + 1] |= v >> 8;
+    d[o + 2] |= v >> 16;
+};
+// creates code lengths from a frequency table
+var hTree = function (d, mb) {
+    // Need extra info to make a tree
+    var t = [];
+    for (var i = 0; i < d.length; ++i) {
+        if (d[i])
+            t.push({ s: i, f: d[i] });
+    }
+    var s = t.length;
+    var t2 = t.slice();
+    if (!s)
+        return { t: et, l: 0 };
+    if (s == 1) {
+        var v = new u8(t[0].s + 1);
+        v[t[0].s] = 1;
+        return { t: v, l: 1 };
+    }
+    t.sort(function (a, b) { return a.f - b.f; });
+    // after i2 reaches last ind, will be stopped
+    // freq must be greater than largest possible number of symbols
+    t.push({ s: -1, f: 25001 });
+    var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;
+    t[0] = { s: -1, f: l.f + r.f, l: l, r: r };
+    // efficient algorithm from UZIP.js
+    // i0 is lookbehind, i2 is lookahead - after processing two low-freq
+    // symbols that combined have high freq, will start processing i2 (high-freq,
+    // non-composite) symbols instead
+    // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/
+    while (i1 != s - 1) {
+        l = t[t[i0].f < t[i2].f ? i0++ : i2++];
+        r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];
+        t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };
+    }
+    var maxSym = t2[0].s;
+    for (var i = 1; i < s; ++i) {
+        if (t2[i].s > maxSym)
+            maxSym = t2[i].s;
+    }
+    // code lengths
+    var tr = new u16(maxSym + 1);
+    // max bits in tree
+    var mbt = ln(t[i1 - 1], tr, 0);
+    if (mbt > mb) {
+        // more algorithms from UZIP.js
+        // TODO: find out how this code works (debt)
+        //  ind    debt
+        var i = 0, dt = 0;
+        //    left            cost
+        var lft = mbt - mb, cst = 1 << lft;
+        t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });
+        for (; i < s; ++i) {
+            var i2_1 = t2[i].s;
+            if (tr[i2_1] > mb) {
+                dt += cst - (1 << (mbt - tr[i2_1]));
+                tr[i2_1] = mb;
+            }
+            else
+                break;
+        }
+        dt >>= lft;
+        while (dt > 0) {
+            var i2_2 = t2[i].s;
+            if (tr[i2_2] < mb)
+                dt -= 1 << (mb - tr[i2_2]++ - 1);
+            else
+                ++i;
+        }
+        for (; i >= 0 && dt; --i) {
+            var i2_3 = t2[i].s;
+            if (tr[i2_3] == mb) {
+                --tr[i2_3];
+                ++dt;
+            }
+        }
+        mbt = mb;
+    }
+    return { t: new u8(tr), l: mbt };
+};
+// get the max length and assign length codes
+var ln = function (n, l, d) {
+    return n.s == -1
+        ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))
+        : (l[n.s] = d);
+};
+// length codes generation
+var lc = function (c) {
+    var s = c.length;
+    // Note that the semicolon was intentional
+    while (s && !c[--s])
+        ;
+    var cl = new u16(++s);
+    //  ind      num         streak
+    var cli = 0, cln = c[0], cls = 1;
+    var w = function (v) { cl[cli++] = v; };
+    for (var i = 1; i <= s; ++i) {
+        if (c[i] == cln && i != s)
+            ++cls;
+        else {
+            if (!cln && cls > 2) {
+                for (; cls > 138; cls -= 138)
+                    w(32754);
+                if (cls > 2) {
+                    w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);
+                    cls = 0;
+                }
+            }
+            else if (cls > 3) {
+                w(cln), --cls;
+                for (; cls > 6; cls -= 6)
+                    w(8304);
+                if (cls > 2)
+                    w(((cls - 3) << 5) | 8208), cls = 0;
+            }
+            while (cls--)
+                w(cln);
+            cls = 1;
+            cln = c[i];
+        }
+    }
+    return { c: cl.subarray(0, cli), n: s };
+};
+// calculate the length of output from tree, code lengths
+var clen = function (cf, cl) {
+    var l = 0;
+    for (var i = 0; i < cl.length; ++i)
+        l += cf[i] * cl[i];
+    return l;
+};
+// writes a fixed block
+// returns the new bit pos
+var wfblk = function (out, pos, dat) {
+    // no need to write 00 as type: TypedArray defaults to 0
+    var s = dat.length;
+    var o = shft(pos + 2);
+    out[o] = s & 255;
+    out[o + 1] = s >> 8;
+    out[o + 2] = out[o] ^ 255;
+    out[o + 3] = out[o + 1] ^ 255;
+    for (var i = 0; i < s; ++i)
+        out[o + i + 4] = dat[i];
+    return (o + 4 + s) * 8;
+};
+// writes a block
+var wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {
+    wbits(out, p++, final);
+    ++lf[256];
+    var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;
+    var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;
+    var _c = lc(dlt), lclt = _c.c, nlc = _c.n;
+    var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;
+    var lcfreq = new u16(19);
+    for (var i = 0; i < lclt.length; ++i)
+        ++lcfreq[lclt[i] & 31];
+    for (var i = 0; i < lcdt.length; ++i)
+        ++lcfreq[lcdt[i] & 31];
+    var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;
+    var nlcc = 19;
+    for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)
+        ;
+    var flen = (bl + 5) << 3;
+    var ftlen = clen(lf, flt) + clen(df, fdt) + eb;
+    var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];
+    if (bs >= 0 && flen <= ftlen && flen <= dtlen)
+        return wfblk(out, p, dat.subarray(bs, bs + bl));
+    var lm, ll, dm, dl;
+    wbits(out, p, 1 + (dtlen < ftlen)), p += 2;
+    if (dtlen < ftlen) {
+        lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;
+        var llm = hMap(lct, mlcb, 0);
+        wbits(out, p, nlc - 257);
+        wbits(out, p + 5, ndc - 1);
+        wbits(out, p + 10, nlcc - 4);
+        p += 14;
+        for (var i = 0; i < nlcc; ++i)
+            wbits(out, p + 3 * i, lct[clim[i]]);
+        p += 3 * nlcc;
+        var lcts = [lclt, lcdt];
+        for (var it = 0; it < 2; ++it) {
+            var clct = lcts[it];
+            for (var i = 0; i < clct.length; ++i) {
+                var len = clct[i] & 31;
+                wbits(out, p, llm[len]), p += lct[len];
+                if (len > 15)
+                    wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;
+            }
+        }
+    }
+    else {
+        lm = flm, ll = flt, dm = fdm, dl = fdt;
+    }
+    for (var i = 0; i < li; ++i) {
+        var sym = syms[i];
+        if (sym > 255) {
+            var len = (sym >> 18) & 31;
+            wbits16(out, p, lm[len + 257]), p += ll[len + 257];
+            if (len > 7)
+                wbits(out, p, (sym >> 23) & 31), p += fleb[len];
+            var dst = sym & 31;
+            wbits16(out, p, dm[dst]), p += dl[dst];
+            if (dst > 3)
+                wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];
+        }
+        else {
+            wbits16(out, p, lm[sym]), p += ll[sym];
+        }
+    }
+    wbits16(out, p, lm[256]);
+    return p + ll[256];
+};
+// deflate options (nice << 13) | chain
+var deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);
+// empty
+var et = /*#__PURE__*/ new u8(0);
+// compresses data into a raw DEFLATE buffer
+var dflt = function (dat, lvl, plvl, pre, post, st) {
+    var s = st.z || dat.length;
+    var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);
+    // writing to this writes to the output buffer
+    var w = o.subarray(pre, o.length - post);
+    var lst = st.l;
+    var pos = (st.r || 0) & 7;
+    if (lvl) {
+        if (pos)
+            w[0] = st.r >> 3;
+        var opt = deo[lvl - 1];
+        var n = opt >> 13, c = opt & 8191;
+        var msk_1 = (1 << plvl) - 1;
+        //    prev 2-byte val map    curr 2-byte val map
+        var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);
+        var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;
+        var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };
+        // 24576 is an arbitrary number of maximum symbols per block
+        // 424 buffer for last block
+        var syms = new i32(25000);
+        // length/literal freq   distance freq
+        var lf = new u16(288), df = new u16(32);
+        //  l/lcnt  exbits  index          l/lind  waitdx          blkpos
+        var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;
+        for (; i + 2 < s; ++i) {
+            // hash value
+            var hv = hsh(i);
+            // index mod 32768    previous index mod
+            var imod = i & 32767, pimod = head[hv];
+            prev[imod] = pimod;
+            head[hv] = imod;
+            // We always should modify head and prev, but only add symbols if
+            // this data is not yet processed ("wait" for wait index)
+            if (wi <= i) {
+                // bytes remaining
+                var rem = s - i;
+                if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {
+                    pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);
+                    li = lc_1 = eb = 0, bs = i;
+                    for (var j = 0; j < 286; ++j)
+                        lf[j] = 0;
+                    for (var j = 0; j < 30; ++j)
+                        df[j] = 0;
+                }
+                //  len    dist   chain
+                var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;
+                if (rem > 2 && hv == hsh(i - dif)) {
+                    var maxn = Math.min(n, rem) - 1;
+                    var maxd = Math.min(32767, i);
+                    // max possible length
+                    // not capped at dif because decompressors implement "rolling" index population
+                    var ml = Math.min(258, rem);
+                    while (dif <= maxd && --ch_1 && imod != pimod) {
+                        if (dat[i + l] == dat[i + l - dif]) {
+                            var nl = 0;
+                            for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)
+                                ;
+                            if (nl > l) {
+                                l = nl, d = dif;
+                                // break out early when we reach "nice" (we are satisfied enough)
+                                if (nl > maxn)
+                                    break;
+                                // now, find the rarest 2-byte sequence within this
+                                // length of literals and search for that instead.
+                                // Much faster than just using the start
+                                var mmd = Math.min(dif, nl - 2);
+                                var md = 0;
+                                for (var j = 0; j < mmd; ++j) {
+                                    var ti = i - dif + j & 32767;
+                                    var pti = prev[ti];
+                                    var cd = ti - pti & 32767;
+                                    if (cd > md)
+                                        md = cd, pimod = ti;
+                                }
+                            }
+                        }
+                        // check the previous match
+                        imod = pimod, pimod = prev[imod];
+                        dif += imod - pimod & 32767;
+                    }
+                }
+                // d will be nonzero only when a match was found
+                if (d) {
+                    // store both dist and len data in one int32
+                    // Make sure this is recognized as a len/dist with 28th bit (2^28)
+                    syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];
+                    var lin = revfl[l] & 31, din = revfd[d] & 31;
+                    eb += fleb[lin] + fdeb[din];
+                    ++lf[257 + lin];
+                    ++df[din];
+                    wi = i + l;
+                    ++lc_1;
+                }
+                else {
+                    syms[li++] = dat[i];
+                    ++lf[dat[i]];
+                }
+            }
+        }
+        for (i = Math.max(i, wi); i < s; ++i) {
+            syms[li++] = dat[i];
+            ++lf[dat[i]];
+        }
+        pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);
+        if (!lst) {
+            st.r = (pos & 7) | w[(pos / 8) | 0] << 3;
+            // shft(pos) now 1 less if pos & 7 != 0
+            pos -= 7;
+            st.h = head, st.p = prev, st.i = i, st.w = wi;
+        }
+    }
+    else {
+        for (var i = st.w || 0; i < s + lst; i += 65535) {
+            // end
+            var e = i + 65535;
+            if (e >= s) {
+                // write final block
+                w[(pos / 8) | 0] = lst;
+                e = s;
+            }
+            pos = wfblk(w, pos + 1, dat.subarray(i, e));
+        }
+        st.i = s;
+    }
+    return slc(o, 0, pre + shft(pos) + post);
+};
+// CRC32 table
+var crct = /*#__PURE__*/ (function () {
+    var t = new Int32Array(256);
+    for (var i = 0; i < 256; ++i) {
+        var c = i, k = 9;
+        while (--k)
+            c = ((c & 1) && -306674912) ^ (c >>> 1);
+        t[i] = c;
+    }
+    return t;
+})();
+// CRC32
+var crc = function () {
+    var c = -1;
+    return {
+        p: function (d) {
+            // closures have awful performance
+            var cr = c;
+            for (var i = 0; i < d.length; ++i)
+                cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);
+            c = cr;
+        },
+        d: function () { return ~c; }
+    };
+};
+// Adler32
+var adler = function () {
+    var a = 1, b = 0;
+    return {
+        p: function (d) {
+            // closures have awful performance
+            var n = a, m = b;
+            var l = d.length | 0;
+            for (var i = 0; i != l;) {
+                var e = Math.min(i + 2655, l);
+                for (; i < e; ++i)
+                    m += n += d[i];
+                n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);
+            }
+            a = n, b = m;
+        },
+        d: function () {
+            a %= 65521, b %= 65521;
+            return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);
+        }
+    };
+};
+;
+// deflate with opts
+var dopt = function (dat, opt, pre, post, st) {
+    if (!st) {
+        st = { l: 1 };
+        if (opt.dictionary) {
+            var dict = opt.dictionary.subarray(-32768);
+            var newDat = new u8(dict.length + dat.length);
+            newDat.set(dict);
+            newDat.set(dat, dict.length);
+            dat = newDat;
+            st.w = dict.length;
+        }
+    }
+    return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? (st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20) : (12 + opt.mem), pre, post, st);
+};
+// Walmart object spread
+var mrg = function (a, b) {
+    var o = {};
+    for (var k in a)
+        o[k] = a[k];
+    for (var k in b)
+        o[k] = b[k];
+    return o;
+};
+// worker clone
+// This is possibly the craziest part of the entire codebase, despite how simple it may seem.
+// The only parameter to this function is a closure that returns an array of variables outside of the function scope.
+// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.
+// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).
+// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.
+// This took me three weeks to figure out how to do.
+var wcln = function (fn, fnStr, td) {
+    var dt = fn();
+    var st = fn.toString();
+    var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\s+/g, '').split(',');
+    for (var i = 0; i < dt.length; ++i) {
+        var v = dt[i], k = ks[i];
+        if (typeof v == 'function') {
+            fnStr += ';' + k + '=';
+            var st_1 = v.toString();
+            if (v.prototype) {
+                // for global objects
+                if (st_1.indexOf('[native code]') != -1) {
+                    var spInd = st_1.indexOf(' ', 8) + 1;
+                    fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));
+                }
+                else {
+                    fnStr += st_1;
+                    for (var t in v.prototype)
+                        fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();
+                }
+            }
+            else
+                fnStr += st_1;
+        }
+        else
+            td[k] = v;
+    }
+    return fnStr;
+};
+var ch = [];
+// clone bufs
+var cbfs = function (v) {
+    var tl = [];
+    for (var k in v) {
+        if (v[k].buffer) {
+            tl.push((v[k] = new v[k].constructor(v[k])).buffer);
+        }
+    }
+    return tl;
+};
+// use a worker to execute code
+var wrkr = function (fns, init, id, cb) {
+    if (!ch[id]) {
+        var fnStr = '', td_1 = {}, m = fns.length - 1;
+        for (var i = 0; i < m; ++i)
+            fnStr = wcln(fns[i], fnStr, td_1);
+        ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };
+    }
+    var td = mrg({}, ch[id].e);
+    return (0, node_worker_1.default)(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);
+};
+// base async inflate fn
+var bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };
+var bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };
+// gzip extra
+var gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };
+// gunzip extra
+var guze = function () { return [gzs, gzl]; };
+// zlib extra
+var zle = function () { return [zlh, wbytes, adler]; };
+// unzlib extra
+var zule = function () { return [zls]; };
+// post buf
+var pbf = function (msg) { return postMessage(msg, [msg.buffer]); };
+// get opts
+var gopt = function (o) { return o && {
+    out: o.size && new u8(o.size),
+    dictionary: o.dictionary
+}; };
+// async helper
+var cbify = function (dat, opts, fns, init, id, cb) {
+    var w = wrkr(fns, init, id, function (err, dat) {
+        w.terminate();
+        cb(err, dat);
+    });
+    w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);
+    return function () { w.terminate(); };
+};
+// auto stream
+var astrm = function (strm) {
+    strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };
+    return function (ev) {
+        if (ev.data.length) {
+            strm.push(ev.data[0], ev.data[1]);
+            postMessage([ev.data[0].length]);
+        }
+        else
+            strm.flush();
+    };
+};
+// async stream attach
+var astrmify = function (fns, strm, opts, init, id, flush, ext) {
+    var t;
+    var w = wrkr(fns, init, id, function (err, dat) {
+        if (err)
+            w.terminate(), strm.ondata.call(strm, err);
+        else if (!Array.isArray(dat))
+            ext(dat);
+        else if (dat.length == 1) {
+            strm.queuedSize -= dat[0];
+            if (strm.ondrain)
+                strm.ondrain(dat[0]);
+        }
+        else {
+            if (dat[1])
+                w.terminate();
+            strm.ondata.call(strm, err, dat[0], dat[1]);
+        }
+    });
+    w.postMessage(opts);
+    strm.queuedSize = 0;
+    strm.push = function (d, f) {
+        if (!strm.ondata)
+            err(5);
+        if (t)
+            strm.ondata(err(4, 0, 1), null, !!f);
+        strm.queuedSize += d.length;
+        w.postMessage([d, t = f], [d.buffer]);
+    };
+    strm.terminate = function () { w.terminate(); };
+    if (flush) {
+        strm.flush = function () { w.postMessage([]); };
+    }
+};
+// read 2 bytes
+var b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };
+// read 4 bytes
+var b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };
+var b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };
+// write bytes
+var wbytes = function (d, b, v) {
+    for (; v; ++b)
+        d[b] = v, v >>>= 8;
+};
+// gzip header
+var gzh = function (c, o) {
+    var fn = o.filename;
+    c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix
+    if (o.mtime != 0)
+        wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));
+    if (fn) {
+        c[3] = 8;
+        for (var i = 0; i <= fn.length; ++i)
+            c[i + 10] = fn.charCodeAt(i);
+    }
+};
+// gzip footer: -8 to -4 = CRC, -4 to -0 is length
+// gzip start
+var gzs = function (d) {
+    if (d[0] != 31 || d[1] != 139 || d[2] != 8)
+        err(6, 'invalid gzip data');
+    var flg = d[3];
+    var st = 10;
+    if (flg & 4)
+        st += (d[10] | d[11] << 8) + 2;
+    for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])
+        ;
+    return st + (flg & 2);
+};
+// gzip length
+var gzl = function (d) {
+    var l = d.length;
+    return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;
+};
+// gzip header length
+var gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };
+// zlib header
+var zlh = function (c, o) {
+    var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;
+    c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);
+    c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;
+    if (o.dictionary) {
+        var h = adler();
+        h.p(o.dictionary);
+        wbytes(c, 2, h.d());
+    }
+};
+// zlib start
+var zls = function (d, dict) {
+    if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))
+        err(6, 'invalid zlib data');
+    if ((d[1] >> 5 & 1) == +!dict)
+        err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');
+    return (d[1] >> 3 & 4) + 2;
+};
+function StrmOpt(opts, cb) {
+    if (typeof opts == 'function')
+        cb = opts, opts = {};
+    this.ondata = cb;
+    return opts;
+}
+/**
+ * Streaming DEFLATE compression
+ */
+var Deflate = /*#__PURE__*/ (function () {
+    function Deflate(opts, cb) {
+        if (typeof opts == 'function')
+            cb = opts, opts = {};
+        this.ondata = cb;
+        this.o = opts || {};
+        this.s = { l: 0, i: 32768, w: 32768, z: 32768 };
+        // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev
+        // 98304 = 32768 (lookback) + 65536 (common chunk size)
+        this.b = new u8(98304);
+        if (this.o.dictionary) {
+            var dict = this.o.dictionary.subarray(-32768);
+            this.b.set(dict, 32768 - dict.length);
+            this.s.i = 32768 - dict.length;
+        }
+    }
+    Deflate.prototype.p = function (c, f) {
+        this.ondata(dopt(c, this.o, 0, 0, this.s), f);
+    };
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    Deflate.prototype.push = function (chunk, final) {
+        if (!this.ondata)
+            err(5);
+        if (this.s.l)
+            err(4);
+        var endLen = chunk.length + this.s.z;
+        if (endLen > this.b.length) {
+            if (endLen > 2 * this.b.length - 32768) {
+                var newBuf = new u8(endLen & -32768);
+                newBuf.set(this.b.subarray(0, this.s.z));
+                this.b = newBuf;
+            }
+            var split = this.b.length - this.s.z;
+            this.b.set(chunk.subarray(0, split), this.s.z);
+            this.s.z = this.b.length;
+            this.p(this.b, false);
+            this.b.set(this.b.subarray(-32768));
+            this.b.set(chunk.subarray(split), 32768);
+            this.s.z = chunk.length - split + 32768;
+            this.s.i = 32766, this.s.w = 32768;
+        }
+        else {
+            this.b.set(chunk, this.s.z);
+            this.s.z += chunk.length;
+        }
+        this.s.l = final & 1;
+        if (this.s.z > this.s.w + 8191 || final) {
+            this.p(this.b, final || false);
+            this.s.w = this.s.i, this.s.i -= 2;
+        }
+    };
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * deflated output for small inputs.
+     */
+    Deflate.prototype.flush = function () {
+        if (!this.ondata)
+            err(5);
+        if (this.s.l)
+            err(4);
+        this.p(this.b, false);
+        this.s.w = this.s.i, this.s.i -= 2;
+    };
+    return Deflate;
+}());
+exports.Deflate = Deflate;
+/**
+ * Asynchronous streaming DEFLATE compression
+ */
+var AsyncDeflate = /*#__PURE__*/ (function () {
+    function AsyncDeflate(opts, cb) {
+        astrmify([
+            bDflt,
+            function () { return [astrm, Deflate]; }
+        ], this, StrmOpt.call(this, opts, cb), function (ev) {
+            var strm = new Deflate(ev.data);
+            onmessage = astrm(strm);
+        }, 6, 1);
+    }
+    return AsyncDeflate;
+}());
+exports.AsyncDeflate = AsyncDeflate;
+function deflate(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    return cbify(data, opts, [
+        bDflt,
+    ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);
+}
+exports.deflate = deflate;
+/**
+ * Compresses data with DEFLATE without any wrapper
+ * @param data The data to compress
+ * @param opts The compression options
+ * @returns The deflated version of the data
+ */
+function deflateSync(data, opts) {
+    return dopt(data, opts || {}, 0, 0);
+}
+exports.deflateSync = deflateSync;
+/**
+ * Streaming DEFLATE decompression
+ */
+var Inflate = /*#__PURE__*/ (function () {
+    function Inflate(opts, cb) {
+        // no StrmOpt here to avoid adding to workerizer
+        if (typeof opts == 'function')
+            cb = opts, opts = {};
+        this.ondata = cb;
+        var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);
+        this.s = { i: 0, b: dict ? dict.length : 0 };
+        this.o = new u8(32768);
+        this.p = new u8(0);
+        if (dict)
+            this.o.set(dict);
+    }
+    Inflate.prototype.e = function (c) {
+        if (!this.ondata)
+            err(5);
+        if (this.d)
+            err(4);
+        if (!this.p.length)
+            this.p = c;
+        else if (c.length) {
+            var n = new u8(this.p.length + c.length);
+            n.set(this.p), n.set(c, this.p.length), this.p = n;
+        }
+    };
+    Inflate.prototype.c = function (final) {
+        this.s.i = +(this.d = final || false);
+        var bts = this.s.b;
+        var dt = inflt(this.p, this.s, this.o);
+        this.ondata(slc(dt, bts, this.s.b), this.d);
+        this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;
+        this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;
+    };
+    /**
+     * Pushes a chunk to be inflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the final chunk
+     */
+    Inflate.prototype.push = function (chunk, final) {
+        this.e(chunk), this.c(final);
+    };
+    return Inflate;
+}());
+exports.Inflate = Inflate;
+/**
+ * Asynchronous streaming DEFLATE decompression
+ */
+var AsyncInflate = /*#__PURE__*/ (function () {
+    function AsyncInflate(opts, cb) {
+        astrmify([
+            bInflt,
+            function () { return [astrm, Inflate]; }
+        ], this, StrmOpt.call(this, opts, cb), function (ev) {
+            var strm = new Inflate(ev.data);
+            onmessage = astrm(strm);
+        }, 7, 0);
+    }
+    return AsyncInflate;
+}());
+exports.AsyncInflate = AsyncInflate;
+function inflate(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    return cbify(data, opts, [
+        bInflt
+    ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);
+}
+exports.inflate = inflate;
+/**
+ * Expands DEFLATE data with no wrapper
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+function inflateSync(data, opts) {
+    return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);
+}
+exports.inflateSync = inflateSync;
+// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.
+/**
+ * Streaming GZIP compression
+ */
+var Gzip = /*#__PURE__*/ (function () {
+    function Gzip(opts, cb) {
+        this.c = crc();
+        this.l = 0;
+        this.v = 1;
+        Deflate.call(this, opts, cb);
+    }
+    /**
+     * Pushes a chunk to be GZIPped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    Gzip.prototype.push = function (chunk, final) {
+        this.c.p(chunk);
+        this.l += chunk.length;
+        Deflate.prototype.push.call(this, chunk, final);
+    };
+    Gzip.prototype.p = function (c, f) {
+        var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);
+        if (this.v)
+            gzh(raw, this.o), this.v = 0;
+        if (f)
+            wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);
+        this.ondata(raw, f);
+    };
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * GZIPped output for small inputs.
+     */
+    Gzip.prototype.flush = function () {
+        Deflate.prototype.flush.call(this);
+    };
+    return Gzip;
+}());
+exports.Gzip = Gzip;
+exports.Compress = Gzip;
+/**
+ * Asynchronous streaming GZIP compression
+ */
+var AsyncGzip = /*#__PURE__*/ (function () {
+    function AsyncGzip(opts, cb) {
+        astrmify([
+            bDflt,
+            gze,
+            function () { return [astrm, Deflate, Gzip]; }
+        ], this, StrmOpt.call(this, opts, cb), function (ev) {
+            var strm = new Gzip(ev.data);
+            onmessage = astrm(strm);
+        }, 8, 1);
+    }
+    return AsyncGzip;
+}());
+exports.AsyncGzip = AsyncGzip;
+exports.AsyncCompress = AsyncGzip;
+function gzip(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    return cbify(data, opts, [
+        bDflt,
+        gze,
+        function () { return [gzipSync]; }
+    ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);
+}
+exports.gzip = gzip;
+exports.compress = gzip;
+/**
+ * Compresses data with GZIP
+ * @param data The data to compress
+ * @param opts The compression options
+ * @returns The gzipped version of the data
+ */
+function gzipSync(data, opts) {
+    if (!opts)
+        opts = {};
+    var c = crc(), l = data.length;
+    c.p(data);
+    var d = dopt(data, opts, gzhl(opts), 8), s = d.length;
+    return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;
+}
+exports.gzipSync = gzipSync;
+exports.compressSync = gzipSync;
+/**
+ * Streaming single or multi-member GZIP decompression
+ */
+var Gunzip = /*#__PURE__*/ (function () {
+    function Gunzip(opts, cb) {
+        this.v = 1;
+        this.r = 0;
+        Inflate.call(this, opts, cb);
+    }
+    /**
+     * Pushes a chunk to be GUNZIPped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    Gunzip.prototype.push = function (chunk, final) {
+        Inflate.prototype.e.call(this, chunk);
+        this.r += chunk.length;
+        if (this.v) {
+            var p = this.p.subarray(this.v - 1);
+            var s = p.length > 3 ? gzs(p) : 4;
+            if (s > p.length) {
+                if (!final)
+                    return;
+            }
+            else if (this.v > 1 && this.onmember) {
+                this.onmember(this.r - p.length);
+            }
+            this.p = p.subarray(s), this.v = 0;
+        }
+        // necessary to prevent TS from using the closure value
+        // This allows for workerization to function correctly
+        Inflate.prototype.c.call(this, final);
+        // process concatenated GZIP
+        if (this.s.f && !this.s.l && !final) {
+            this.v = shft(this.s.p) + 9;
+            this.s = { i: 0 };
+            this.o = new u8(0);
+            this.push(new u8(0), final);
+        }
+    };
+    return Gunzip;
+}());
+exports.Gunzip = Gunzip;
+/**
+ * Asynchronous streaming single or multi-member GZIP decompression
+ */
+var AsyncGunzip = /*#__PURE__*/ (function () {
+    function AsyncGunzip(opts, cb) {
+        var _this = this;
+        astrmify([
+            bInflt,
+            guze,
+            function () { return [astrm, Inflate, Gunzip]; }
+        ], this, StrmOpt.call(this, opts, cb), function (ev) {
+            var strm = new Gunzip(ev.data);
+            strm.onmember = function (offset) { return postMessage(offset); };
+            onmessage = astrm(strm);
+        }, 9, 0, function (offset) { return _this.onmember && _this.onmember(offset); });
+    }
+    return AsyncGunzip;
+}());
+exports.AsyncGunzip = AsyncGunzip;
+function gunzip(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    return cbify(data, opts, [
+        bInflt,
+        guze,
+        function () { return [gunzipSync]; }
+    ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);
+}
+exports.gunzip = gunzip;
+/**
+ * Expands GZIP data
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+function gunzipSync(data, opts) {
+    var st = gzs(data);
+    if (st + 8 > data.length)
+        err(6, 'invalid gzip data');
+    return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);
+}
+exports.gunzipSync = gunzipSync;
+/**
+ * Streaming Zlib compression
+ */
+var Zlib = /*#__PURE__*/ (function () {
+    function Zlib(opts, cb) {
+        this.c = adler();
+        this.v = 1;
+        Deflate.call(this, opts, cb);
+    }
+    /**
+     * Pushes a chunk to be zlibbed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    Zlib.prototype.push = function (chunk, final) {
+        this.c.p(chunk);
+        Deflate.prototype.push.call(this, chunk, final);
+    };
+    Zlib.prototype.p = function (c, f) {
+        var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);
+        if (this.v)
+            zlh(raw, this.o), this.v = 0;
+        if (f)
+            wbytes(raw, raw.length - 4, this.c.d());
+        this.ondata(raw, f);
+    };
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * zlibbed output for small inputs.
+     */
+    Zlib.prototype.flush = function () {
+        Deflate.prototype.flush.call(this);
+    };
+    return Zlib;
+}());
+exports.Zlib = Zlib;
+/**
+ * Asynchronous streaming Zlib compression
+ */
+var AsyncZlib = /*#__PURE__*/ (function () {
+    function AsyncZlib(opts, cb) {
+        astrmify([
+            bDflt,
+            zle,
+            function () { return [astrm, Deflate, Zlib]; }
+        ], this, StrmOpt.call(this, opts, cb), function (ev) {
+            var strm = new Zlib(ev.data);
+            onmessage = astrm(strm);
+        }, 10, 1);
+    }
+    return AsyncZlib;
+}());
+exports.AsyncZlib = AsyncZlib;
+function zlib(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    return cbify(data, opts, [
+        bDflt,
+        zle,
+        function () { return [zlibSync]; }
+    ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);
+}
+exports.zlib = zlib;
+/**
+ * Compress data with Zlib
+ * @param data The data to compress
+ * @param opts The compression options
+ * @returns The zlib-compressed version of the data
+ */
+function zlibSync(data, opts) {
+    if (!opts)
+        opts = {};
+    var a = adler();
+    a.p(data);
+    var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);
+    return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;
+}
+exports.zlibSync = zlibSync;
+/**
+ * Streaming Zlib decompression
+ */
+var Unzlib = /*#__PURE__*/ (function () {
+    function Unzlib(opts, cb) {
+        Inflate.call(this, opts, cb);
+        this.v = opts && opts.dictionary ? 2 : 1;
+    }
+    /**
+     * Pushes a chunk to be unzlibbed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    Unzlib.prototype.push = function (chunk, final) {
+        Inflate.prototype.e.call(this, chunk);
+        if (this.v) {
+            if (this.p.length < 6 && !final)
+                return;
+            this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;
+        }
+        if (final) {
+            if (this.p.length < 4)
+                err(6, 'invalid zlib data');
+            this.p = this.p.subarray(0, -4);
+        }
+        // necessary to prevent TS from using the closure value
+        // This allows for workerization to function correctly
+        Inflate.prototype.c.call(this, final);
+    };
+    return Unzlib;
+}());
+exports.Unzlib = Unzlib;
+/**
+ * Asynchronous streaming Zlib decompression
+ */
+var AsyncUnzlib = /*#__PURE__*/ (function () {
+    function AsyncUnzlib(opts, cb) {
+        astrmify([
+            bInflt,
+            zule,
+            function () { return [astrm, Inflate, Unzlib]; }
+        ], this, StrmOpt.call(this, opts, cb), function (ev) {
+            var strm = new Unzlib(ev.data);
+            onmessage = astrm(strm);
+        }, 11, 0);
+    }
+    return AsyncUnzlib;
+}());
+exports.AsyncUnzlib = AsyncUnzlib;
+function unzlib(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    return cbify(data, opts, [
+        bInflt,
+        zule,
+        function () { return [unzlibSync]; }
+    ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);
+}
+exports.unzlib = unzlib;
+/**
+ * Expands Zlib data
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+function unzlibSync(data, opts) {
+    return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);
+}
+exports.unzlibSync = unzlibSync;
+/**
+ * Streaming GZIP, Zlib, or raw DEFLATE decompression
+ */
+var Decompress = /*#__PURE__*/ (function () {
+    function Decompress(opts, cb) {
+        this.o = StrmOpt.call(this, opts, cb) || {};
+        this.G = Gunzip;
+        this.I = Inflate;
+        this.Z = Unzlib;
+    }
+    // init substream
+    // overriden by AsyncDecompress
+    Decompress.prototype.i = function () {
+        var _this = this;
+        this.s.ondata = function (dat, final) {
+            _this.ondata(dat, final);
+        };
+    };
+    /**
+     * Pushes a chunk to be decompressed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    Decompress.prototype.push = function (chunk, final) {
+        if (!this.ondata)
+            err(5);
+        if (!this.s) {
+            if (this.p && this.p.length) {
+                var n = new u8(this.p.length + chunk.length);
+                n.set(this.p), n.set(chunk, this.p.length);
+            }
+            else
+                this.p = chunk;
+            if (this.p.length > 2) {
+                this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)
+                    ? new this.G(this.o)
+                    : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))
+                        ? new this.I(this.o)
+                        : new this.Z(this.o);
+                this.i();
+                this.s.push(this.p, final);
+                this.p = null;
+            }
+        }
+        else
+            this.s.push(chunk, final);
+    };
+    return Decompress;
+}());
+exports.Decompress = Decompress;
+/**
+ * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression
+ */
+var AsyncDecompress = /*#__PURE__*/ (function () {
+    function AsyncDecompress(opts, cb) {
+        Decompress.call(this, opts, cb);
+        this.queuedSize = 0;
+        this.G = AsyncGunzip;
+        this.I = AsyncInflate;
+        this.Z = AsyncUnzlib;
+    }
+    AsyncDecompress.prototype.i = function () {
+        var _this = this;
+        this.s.ondata = function (err, dat, final) {
+            _this.ondata(err, dat, final);
+        };
+        this.s.ondrain = function (size) {
+            _this.queuedSize -= size;
+            if (_this.ondrain)
+                _this.ondrain(size);
+        };
+    };
+    /**
+     * Pushes a chunk to be decompressed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    AsyncDecompress.prototype.push = function (chunk, final) {
+        this.queuedSize += chunk.length;
+        Decompress.prototype.push.call(this, chunk, final);
+    };
+    return AsyncDecompress;
+}());
+exports.AsyncDecompress = AsyncDecompress;
+function decompress(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    return (data[0] == 31 && data[1] == 139 && data[2] == 8)
+        ? gunzip(data, opts, cb)
+        : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))
+            ? inflate(data, opts, cb)
+            : unzlib(data, opts, cb);
+}
+exports.decompress = decompress;
+/**
+ * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+function decompressSync(data, opts) {
+    return (data[0] == 31 && data[1] == 139 && data[2] == 8)
+        ? gunzipSync(data, opts)
+        : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))
+            ? inflateSync(data, opts)
+            : unzlibSync(data, opts);
+}
+exports.decompressSync = decompressSync;
+// flatten a directory structure
+var fltn = function (d, p, t, o) {
+    for (var k in d) {
+        var val = d[k], n = p + k, op = o;
+        if (Array.isArray(val))
+            op = mrg(o, val[1]), val = val[0];
+        if (val instanceof u8)
+            t[n] = [val, op];
+        else {
+            t[n += '/'] = [new u8(0), op];
+            fltn(val, n, t, o);
+        }
+    }
+};
+// text encoder
+var te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();
+// text decoder
+var td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();
+// text decoder stream
+var tds = 0;
+try {
+    td.decode(et, { stream: true });
+    tds = 1;
+}
+catch (e) { }
+// decode UTF8
+var dutf8 = function (d) {
+    for (var r = '', i = 0;;) {
+        var c = d[i++];
+        var eb = (c > 127) + (c > 223) + (c > 239);
+        if (i + eb > d.length)
+            return { s: r, r: slc(d, i - 1) };
+        if (!eb)
+            r += String.fromCharCode(c);
+        else if (eb == 3) {
+            c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,
+                r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));
+        }
+        else if (eb & 1)
+            r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));
+        else
+            r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));
+    }
+};
+/**
+ * Streaming UTF-8 decoding
+ */
+var DecodeUTF8 = /*#__PURE__*/ (function () {
+    /**
+     * Creates a UTF-8 decoding stream
+     * @param cb The callback to call whenever data is decoded
+     */
+    function DecodeUTF8(cb) {
+        this.ondata = cb;
+        if (tds)
+            this.t = new TextDecoder();
+        else
+            this.p = et;
+    }
+    /**
+     * Pushes a chunk to be decoded from UTF-8 binary
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    DecodeUTF8.prototype.push = function (chunk, final) {
+        if (!this.ondata)
+            err(5);
+        final = !!final;
+        if (this.t) {
+            this.ondata(this.t.decode(chunk, { stream: true }), final);
+            if (final) {
+                if (this.t.decode().length)
+                    err(8);
+                this.t = null;
+            }
+            return;
+        }
+        if (!this.p)
+            err(4);
+        var dat = new u8(this.p.length + chunk.length);
+        dat.set(this.p);
+        dat.set(chunk, this.p.length);
+        var _a = dutf8(dat), s = _a.s, r = _a.r;
+        if (final) {
+            if (r.length)
+                err(8);
+            this.p = null;
+        }
+        else
+            this.p = r;
+        this.ondata(s, final);
+    };
+    return DecodeUTF8;
+}());
+exports.DecodeUTF8 = DecodeUTF8;
+/**
+ * Streaming UTF-8 encoding
+ */
+var EncodeUTF8 = /*#__PURE__*/ (function () {
+    /**
+     * Creates a UTF-8 decoding stream
+     * @param cb The callback to call whenever data is encoded
+     */
+    function EncodeUTF8(cb) {
+        this.ondata = cb;
+    }
+    /**
+     * Pushes a chunk to be encoded to UTF-8
+     * @param chunk The string data to push
+     * @param final Whether this is the last chunk
+     */
+    EncodeUTF8.prototype.push = function (chunk, final) {
+        if (!this.ondata)
+            err(5);
+        if (this.d)
+            err(4);
+        this.ondata(strToU8(chunk), this.d = final || false);
+    };
+    return EncodeUTF8;
+}());
+exports.EncodeUTF8 = EncodeUTF8;
+/**
+ * Converts a string into a Uint8Array for use with compression/decompression methods
+ * @param str The string to encode
+ * @param latin1 Whether or not to interpret the data as Latin-1. This should
+ *               not need to be true unless decoding a binary string.
+ * @returns The string encoded in UTF-8/Latin-1 binary
+ */
+function strToU8(str, latin1) {
+    if (latin1) {
+        var ar_1 = new u8(str.length);
+        for (var i = 0; i < str.length; ++i)
+            ar_1[i] = str.charCodeAt(i);
+        return ar_1;
+    }
+    if (te)
+        return te.encode(str);
+    var l = str.length;
+    var ar = new u8(str.length + (str.length >> 1));
+    var ai = 0;
+    var w = function (v) { ar[ai++] = v; };
+    for (var i = 0; i < l; ++i) {
+        if (ai + 5 > ar.length) {
+            var n = new u8(ai + 8 + ((l - i) << 1));
+            n.set(ar);
+            ar = n;
+        }
+        var c = str.charCodeAt(i);
+        if (c < 128 || latin1)
+            w(c);
+        else if (c < 2048)
+            w(192 | (c >> 6)), w(128 | (c & 63));
+        else if (c > 55295 && c < 57344)
+            c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),
+                w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));
+        else
+            w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));
+    }
+    return slc(ar, 0, ai);
+}
+exports.strToU8 = strToU8;
+/**
+ * Converts a Uint8Array to a string
+ * @param dat The data to decode to string
+ * @param latin1 Whether or not to interpret the data as Latin-1. This should
+ *               not need to be true unless encoding to binary string.
+ * @returns The original UTF-8/Latin-1 string
+ */
+function strFromU8(dat, latin1) {
+    if (latin1) {
+        var r = '';
+        for (var i = 0; i < dat.length; i += 16384)
+            r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));
+        return r;
+    }
+    else if (td) {
+        return td.decode(dat);
+    }
+    else {
+        var _a = dutf8(dat), s = _a.s, r = _a.r;
+        if (r.length)
+            err(8);
+        return s;
+    }
+}
+exports.strFromU8 = strFromU8;
+;
+// deflate bit flag
+var dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };
+// skip local zip header
+var slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };
+// read zip header
+var zh = function (d, b, z) {
+    var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);
+    var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];
+    return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];
+};
+// read zip64 extra field
+var z64e = function (d, b) {
+    for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))
+        ;
+    return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];
+};
+// extra field length
+var exfl = function (ex) {
+    var le = 0;
+    if (ex) {
+        for (var k in ex) {
+            var l = ex[k].length;
+            if (l > 65535)
+                err(9);
+            le += l + 4;
+        }
+    }
+    return le;
+};
+// write zip header
+var wzh = function (d, b, f, fn, u, c, ce, co) {
+    var fl = fn.length, ex = f.extra, col = co && co.length;
+    var exl = exfl(ex);
+    wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;
+    if (ce != null)
+        d[b++] = 20, d[b++] = f.os;
+    d[b] = 20, b += 2; // spec compliance? what's that?
+    d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;
+    d[b++] = f.compression & 255, d[b++] = f.compression >> 8;
+    var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;
+    if (y < 0 || y > 119)
+        err(10);
+    wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;
+    if (c != -1) {
+        wbytes(d, b, f.crc);
+        wbytes(d, b + 4, c < 0 ? -c - 2 : c);
+        wbytes(d, b + 8, f.size);
+    }
+    wbytes(d, b + 12, fl);
+    wbytes(d, b + 14, exl), b += 16;
+    if (ce != null) {
+        wbytes(d, b, col);
+        wbytes(d, b + 6, f.attrs);
+        wbytes(d, b + 10, ce), b += 14;
+    }
+    d.set(fn, b);
+    b += fl;
+    if (exl) {
+        for (var k in ex) {
+            var exf = ex[k], l = exf.length;
+            wbytes(d, b, +k);
+            wbytes(d, b + 2, l);
+            d.set(exf, b + 4), b += 4 + l;
+        }
+    }
+    if (col)
+        d.set(co, b), b += col;
+    return b;
+};
+// write zip footer (end of central directory)
+var wzf = function (o, b, c, d, e) {
+    wbytes(o, b, 0x6054B50); // skip disk
+    wbytes(o, b + 8, c);
+    wbytes(o, b + 10, c);
+    wbytes(o, b + 12, d);
+    wbytes(o, b + 16, e);
+};
+/**
+ * A pass-through stream to keep data uncompressed in a ZIP archive.
+ */
+var ZipPassThrough = /*#__PURE__*/ (function () {
+    /**
+     * Creates a pass-through stream that can be added to ZIP archives
+     * @param filename The filename to associate with this data stream
+     */
+    function ZipPassThrough(filename) {
+        this.filename = filename;
+        this.c = crc();
+        this.size = 0;
+        this.compression = 0;
+    }
+    /**
+     * Processes a chunk and pushes to the output stream. You can override this
+     * method in a subclass for custom behavior, but by default this passes
+     * the data through. You must call this.ondata(err, chunk, final) at some
+     * point in this method.
+     * @param chunk The chunk to process
+     * @param final Whether this is the last chunk
+     */
+    ZipPassThrough.prototype.process = function (chunk, final) {
+        this.ondata(null, chunk, final);
+    };
+    /**
+     * Pushes a chunk to be added. If you are subclassing this with a custom
+     * compression algorithm, note that you must push data from the source
+     * file only, pre-compression.
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    ZipPassThrough.prototype.push = function (chunk, final) {
+        if (!this.ondata)
+            err(5);
+        this.c.p(chunk);
+        this.size += chunk.length;
+        if (final)
+            this.crc = this.c.d();
+        this.process(chunk, final || false);
+    };
+    return ZipPassThrough;
+}());
+exports.ZipPassThrough = ZipPassThrough;
+// I don't extend because TypeScript extension adds 1kB of runtime bloat
+/**
+ * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate
+ * for better performance
+ */
+var ZipDeflate = /*#__PURE__*/ (function () {
+    /**
+     * Creates a DEFLATE stream that can be added to ZIP archives
+     * @param filename The filename to associate with this data stream
+     * @param opts The compression options
+     */
+    function ZipDeflate(filename, opts) {
+        var _this = this;
+        if (!opts)
+            opts = {};
+        ZipPassThrough.call(this, filename);
+        this.d = new Deflate(opts, function (dat, final) {
+            _this.ondata(null, dat, final);
+        });
+        this.compression = 8;
+        this.flag = dbf(opts.level);
+    }
+    ZipDeflate.prototype.process = function (chunk, final) {
+        try {
+            this.d.push(chunk, final);
+        }
+        catch (e) {
+            this.ondata(e, null, final);
+        }
+    };
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    ZipDeflate.prototype.push = function (chunk, final) {
+        ZipPassThrough.prototype.push.call(this, chunk, final);
+    };
+    return ZipDeflate;
+}());
+exports.ZipDeflate = ZipDeflate;
+/**
+ * Asynchronous streaming DEFLATE compression for ZIP archives
+ */
+var AsyncZipDeflate = /*#__PURE__*/ (function () {
+    /**
+     * Creates an asynchronous DEFLATE stream that can be added to ZIP archives
+     * @param filename The filename to associate with this data stream
+     * @param opts The compression options
+     */
+    function AsyncZipDeflate(filename, opts) {
+        var _this = this;
+        if (!opts)
+            opts = {};
+        ZipPassThrough.call(this, filename);
+        this.d = new AsyncDeflate(opts, function (err, dat, final) {
+            _this.ondata(err, dat, final);
+        });
+        this.compression = 8;
+        this.flag = dbf(opts.level);
+        this.terminate = this.d.terminate;
+    }
+    AsyncZipDeflate.prototype.process = function (chunk, final) {
+        this.d.push(chunk, final);
+    };
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    AsyncZipDeflate.prototype.push = function (chunk, final) {
+        ZipPassThrough.prototype.push.call(this, chunk, final);
+    };
+    return AsyncZipDeflate;
+}());
+exports.AsyncZipDeflate = AsyncZipDeflate;
+// TODO: Better tree shaking
+/**
+ * A zippable archive to which files can incrementally be added
+ */
+var Zip = /*#__PURE__*/ (function () {
+    /**
+     * Creates an empty ZIP archive to which files can be added
+     * @param cb The callback to call whenever data for the generated ZIP archive
+     *           is available
+     */
+    function Zip(cb) {
+        this.ondata = cb;
+        this.u = [];
+        this.d = 1;
+    }
+    /**
+     * Adds a file to the ZIP archive
+     * @param file The file stream to add
+     */
+    Zip.prototype.add = function (file) {
+        var _this = this;
+        if (!this.ondata)
+            err(5);
+        // finishing or finished
+        if (this.d & 2)
+            this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);
+        else {
+            var f = strToU8(file.filename), fl_1 = f.length;
+            var com = file.comment, o = com && strToU8(com);
+            var u = fl_1 != file.filename.length || (o && (com.length != o.length));
+            var hl_1 = fl_1 + exfl(file.extra) + 30;
+            if (fl_1 > 65535)
+                this.ondata(err(11, 0, 1), null, false);
+            var header = new u8(hl_1);
+            wzh(header, 0, file, f, u, -1);
+            var chks_1 = [header];
+            var pAll_1 = function () {
+                for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {
+                    var chk = chks_2[_i];
+                    _this.ondata(null, chk, false);
+                }
+                chks_1 = [];
+            };
+            var tr_1 = this.d;
+            this.d = 0;
+            var ind_1 = this.u.length;
+            var uf_1 = mrg(file, {
+                f: f,
+                u: u,
+                o: o,
+                t: function () {
+                    if (file.terminate)
+                        file.terminate();
+                },
+                r: function () {
+                    pAll_1();
+                    if (tr_1) {
+                        var nxt = _this.u[ind_1 + 1];
+                        if (nxt)
+                            nxt.r();
+                        else
+                            _this.d = 1;
+                    }
+                    tr_1 = 1;
+                }
+            });
+            var cl_1 = 0;
+            file.ondata = function (err, dat, final) {
+                if (err) {
+                    _this.ondata(err, dat, final);
+                    _this.terminate();
+                }
+                else {
+                    cl_1 += dat.length;
+                    chks_1.push(dat);
+                    if (final) {
+                        var dd = new u8(16);
+                        wbytes(dd, 0, 0x8074B50);
+                        wbytes(dd, 4, file.crc);
+                        wbytes(dd, 8, cl_1);
+                        wbytes(dd, 12, file.size);
+                        chks_1.push(dd);
+                        uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;
+                        if (tr_1)
+                            uf_1.r();
+                        tr_1 = 1;
+                    }
+                    else if (tr_1)
+                        pAll_1();
+                }
+            };
+            this.u.push(uf_1);
+        }
+    };
+    /**
+     * Ends the process of adding files and prepares to emit the final chunks.
+     * This *must* be called after adding all desired files for the resulting
+     * ZIP file to work properly.
+     */
+    Zip.prototype.end = function () {
+        var _this = this;
+        if (this.d & 2) {
+            this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);
+            return;
+        }
+        if (this.d)
+            this.e();
+        else
+            this.u.push({
+                r: function () {
+                    if (!(_this.d & 1))
+                        return;
+                    _this.u.splice(-1, 1);
+                    _this.e();
+                },
+                t: function () { }
+            });
+        this.d = 3;
+    };
+    Zip.prototype.e = function () {
+        var bt = 0, l = 0, tl = 0;
+        for (var _i = 0, _a = this.u; _i < _a.length; _i++) {
+            var f = _a[_i];
+            tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);
+        }
+        var out = new u8(tl + 22);
+        for (var _b = 0, _c = this.u; _b < _c.length; _b++) {
+            var f = _c[_b];
+            wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);
+            bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;
+        }
+        wzf(out, bt, this.u.length, tl, l);
+        this.ondata(null, out, true);
+        this.d = 2;
+    };
+    /**
+     * A method to terminate any internal workers used by the stream. Subsequent
+     * calls to add() will fail.
+     */
+    Zip.prototype.terminate = function () {
+        for (var _i = 0, _a = this.u; _i < _a.length; _i++) {
+            var f = _a[_i];
+            f.t();
+        }
+        this.d = 2;
+    };
+    return Zip;
+}());
+exports.Zip = Zip;
+function zip(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    var r = {};
+    fltn(data, '', r, opts);
+    var k = Object.keys(r);
+    var lft = k.length, o = 0, tot = 0;
+    var slft = lft, files = new Array(lft);
+    var term = [];
+    var tAll = function () {
+        for (var i = 0; i < term.length; ++i)
+            term[i]();
+    };
+    var cbd = function (a, b) {
+        mt(function () { cb(a, b); });
+    };
+    mt(function () { cbd = cb; });
+    var cbf = function () {
+        var out = new u8(tot + 22), oe = o, cdl = tot - o;
+        tot = 0;
+        for (var i = 0; i < slft; ++i) {
+            var f = files[i];
+            try {
+                var l = f.c.length;
+                wzh(out, tot, f, f.f, f.u, l);
+                var badd = 30 + f.f.length + exfl(f.extra);
+                var loc = tot + badd;
+                out.set(f.c, loc);
+                wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;
+            }
+            catch (e) {
+                return cbd(e, null);
+            }
+        }
+        wzf(out, o, files.length, cdl, oe);
+        cbd(null, out);
+    };
+    if (!lft)
+        cbf();
+    var _loop_1 = function (i) {
+        var fn = k[i];
+        var _a = r[fn], file = _a[0], p = _a[1];
+        var c = crc(), size = file.length;
+        c.p(file);
+        var f = strToU8(fn), s = f.length;
+        var com = p.comment, m = com && strToU8(com), ms = m && m.length;
+        var exl = exfl(p.extra);
+        var compression = p.level == 0 ? 0 : 8;
+        var cbl = function (e, d) {
+            if (e) {
+                tAll();
+                cbd(e, null);
+            }
+            else {
+                var l = d.length;
+                files[i] = mrg(p, {
+                    size: size,
+                    crc: c.d(),
+                    c: d,
+                    f: f,
+                    m: m,
+                    u: s != fn.length || (m && (com.length != ms)),
+                    compression: compression
+                });
+                o += 30 + s + exl + l;
+                tot += 76 + 2 * (s + exl) + (ms || 0) + l;
+                if (!--lft)
+                    cbf();
+            }
+        };
+        if (s > 65535)
+            cbl(err(11, 0, 1), null);
+        if (!compression)
+            cbl(null, file);
+        else if (size < 160000) {
+            try {
+                cbl(null, deflateSync(file, p));
+            }
+            catch (e) {
+                cbl(e, null);
+            }
+        }
+        else
+            term.push(deflate(file, p, cbl));
+    };
+    // Cannot use lft because it can decrease
+    for (var i = 0; i < slft; ++i) {
+        _loop_1(i);
+    }
+    return tAll;
+}
+exports.zip = zip;
+/**
+ * Synchronously creates a ZIP file. Prefer using `zip` for better performance
+ * with more than one file.
+ * @param data The directory structure for the ZIP archive
+ * @param opts The main options, merged with per-file options
+ * @returns The generated ZIP archive
+ */
+function zipSync(data, opts) {
+    if (!opts)
+        opts = {};
+    var r = {};
+    var files = [];
+    fltn(data, '', r, opts);
+    var o = 0;
+    var tot = 0;
+    for (var fn in r) {
+        var _a = r[fn], file = _a[0], p = _a[1];
+        var compression = p.level == 0 ? 0 : 8;
+        var f = strToU8(fn), s = f.length;
+        var com = p.comment, m = com && strToU8(com), ms = m && m.length;
+        var exl = exfl(p.extra);
+        if (s > 65535)
+            err(11);
+        var d = compression ? deflateSync(file, p) : file, l = d.length;
+        var c = crc();
+        c.p(file);
+        files.push(mrg(p, {
+            size: file.length,
+            crc: c.d(),
+            c: d,
+            f: f,
+            m: m,
+            u: s != fn.length || (m && (com.length != ms)),
+            o: o,
+            compression: compression
+        }));
+        o += 30 + s + exl + l;
+        tot += 76 + 2 * (s + exl) + (ms || 0) + l;
+    }
+    var out = new u8(tot + 22), oe = o, cdl = tot - o;
+    for (var i = 0; i < files.length; ++i) {
+        var f = files[i];
+        wzh(out, f.o, f, f.f, f.u, f.c.length);
+        var badd = 30 + f.f.length + exfl(f.extra);
+        out.set(f.c, f.o + badd);
+        wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);
+    }
+    wzf(out, o, files.length, cdl, oe);
+    return out;
+}
+exports.zipSync = zipSync;
+/**
+ * Streaming pass-through decompression for ZIP archives
+ */
+var UnzipPassThrough = /*#__PURE__*/ (function () {
+    function UnzipPassThrough() {
+    }
+    UnzipPassThrough.prototype.push = function (data, final) {
+        this.ondata(null, data, final);
+    };
+    UnzipPassThrough.compression = 0;
+    return UnzipPassThrough;
+}());
+exports.UnzipPassThrough = UnzipPassThrough;
+/**
+ * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for
+ * better performance.
+ */
+var UnzipInflate = /*#__PURE__*/ (function () {
+    /**
+     * Creates a DEFLATE decompression that can be used in ZIP archives
+     */
+    function UnzipInflate() {
+        var _this = this;
+        this.i = new Inflate(function (dat, final) {
+            _this.ondata(null, dat, final);
+        });
+    }
+    UnzipInflate.prototype.push = function (data, final) {
+        try {
+            this.i.push(data, final);
+        }
+        catch (e) {
+            this.ondata(e, null, final);
+        }
+    };
+    UnzipInflate.compression = 8;
+    return UnzipInflate;
+}());
+exports.UnzipInflate = UnzipInflate;
+/**
+ * Asynchronous streaming DEFLATE decompression for ZIP archives
+ */
+var AsyncUnzipInflate = /*#__PURE__*/ (function () {
+    /**
+     * Creates a DEFLATE decompression that can be used in ZIP archives
+     */
+    function AsyncUnzipInflate(_, sz) {
+        var _this = this;
+        if (sz < 320000) {
+            this.i = new Inflate(function (dat, final) {
+                _this.ondata(null, dat, final);
+            });
+        }
+        else {
+            this.i = new AsyncInflate(function (err, dat, final) {
+                _this.ondata(err, dat, final);
+            });
+            this.terminate = this.i.terminate;
+        }
+    }
+    AsyncUnzipInflate.prototype.push = function (data, final) {
+        if (this.i.terminate)
+            data = slc(data, 0);
+        this.i.push(data, final);
+    };
+    AsyncUnzipInflate.compression = 8;
+    return AsyncUnzipInflate;
+}());
+exports.AsyncUnzipInflate = AsyncUnzipInflate;
+/**
+ * A ZIP archive decompression stream that emits files as they are discovered
+ */
+var Unzip = /*#__PURE__*/ (function () {
+    /**
+     * Creates a ZIP decompression stream
+     * @param cb The callback to call whenever a file in the ZIP archive is found
+     */
+    function Unzip(cb) {
+        this.onfile = cb;
+        this.k = [];
+        this.o = {
+            0: UnzipPassThrough
+        };
+        this.p = et;
+    }
+    /**
+     * Pushes a chunk to be unzipped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    Unzip.prototype.push = function (chunk, final) {
+        var _this = this;
+        if (!this.onfile)
+            err(5);
+        if (!this.p)
+            err(4);
+        if (this.c > 0) {
+            var len = Math.min(this.c, chunk.length);
+            var toAdd = chunk.subarray(0, len);
+            this.c -= len;
+            if (this.d)
+                this.d.push(toAdd, !this.c);
+            else
+                this.k[0].push(toAdd);
+            chunk = chunk.subarray(len);
+            if (chunk.length)
+                return this.push(chunk, final);
+        }
+        else {
+            var f = 0, i = 0, is = void 0, buf = void 0;
+            if (!this.p.length)
+                buf = chunk;
+            else if (!chunk.length)
+                buf = this.p;
+            else {
+                buf = new u8(this.p.length + chunk.length);
+                buf.set(this.p), buf.set(chunk, this.p.length);
+            }
+            var l = buf.length, oc = this.c, add = oc && this.d;
+            var _loop_2 = function () {
+                var _a;
+                var sig = b4(buf, i);
+                if (sig == 0x4034B50) {
+                    f = 1, is = i;
+                    this_1.d = null;
+                    this_1.c = 0;
+                    var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);
+                    if (l > i + 30 + fnl + es) {
+                        var chks_3 = [];
+                        this_1.k.unshift(chks_3);
+                        f = 2;
+                        var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);
+                        var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);
+                        if (sc_1 == 4294967295) {
+                            _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];
+                        }
+                        else if (dd)
+                            sc_1 = -1;
+                        i += es;
+                        this_1.c = sc_1;
+                        var d_1;
+                        var file_1 = {
+                            name: fn_1,
+                            compression: cmp_1,
+                            start: function () {
+                                if (!file_1.ondata)
+                                    err(5);
+                                if (!sc_1)
+                                    file_1.ondata(null, et, true);
+                                else {
+                                    var ctr = _this.o[cmp_1];
+                                    if (!ctr)
+                                        file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);
+                                    d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);
+                                    d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };
+                                    for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {
+                                        var dat = chks_4[_i];
+                                        d_1.push(dat, false);
+                                    }
+                                    if (_this.k[0] == chks_3 && _this.c)
+                                        _this.d = d_1;
+                                    else
+                                        d_1.push(et, true);
+                                }
+                            },
+                            terminate: function () {
+                                if (d_1 && d_1.terminate)
+                                    d_1.terminate();
+                            }
+                        };
+                        if (sc_1 >= 0)
+                            file_1.size = sc_1, file_1.originalSize = su_1;
+                        this_1.onfile(file_1);
+                    }
+                    return "break";
+                }
+                else if (oc) {
+                    if (sig == 0x8074B50) {
+                        is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;
+                        return "break";
+                    }
+                    else if (sig == 0x2014B50) {
+                        is = i -= 4, f = 3, this_1.c = 0;
+                        return "break";
+                    }
+                }
+            };
+            var this_1 = this;
+            for (; i < l - 4; ++i) {
+                var state_1 = _loop_2();
+                if (state_1 === "break")
+                    break;
+            }
+            this.p = et;
+            if (oc < 0) {
+                var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);
+                if (add)
+                    add.push(dat, !!f);
+                else
+                    this.k[+(f == 2)].push(dat);
+            }
+            if (f & 2)
+                return this.push(buf.subarray(i), final);
+            this.p = buf.subarray(i);
+        }
+        if (final) {
+            if (this.c)
+                err(13);
+            this.p = null;
+        }
+    };
+    /**
+     * Registers a decoder with the stream, allowing for files compressed with
+     * the compression type provided to be expanded correctly
+     * @param decoder The decoder constructor
+     */
+    Unzip.prototype.register = function (decoder) {
+        this.o[decoder.compression] = decoder;
+    };
+    return Unzip;
+}());
+exports.Unzip = Unzip;
+var mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };
+function unzip(data, opts, cb) {
+    if (!cb)
+        cb = opts, opts = {};
+    if (typeof cb != 'function')
+        err(7);
+    var term = [];
+    var tAll = function () {
+        for (var i = 0; i < term.length; ++i)
+            term[i]();
+    };
+    var files = {};
+    var cbd = function (a, b) {
+        mt(function () { cb(a, b); });
+    };
+    mt(function () { cbd = cb; });
+    var e = data.length - 22;
+    for (; b4(data, e) != 0x6054B50; --e) {
+        if (!e || data.length - e > 65558) {
+            cbd(err(13, 0, 1), null);
+            return tAll;
+        }
+    }
+    ;
+    var lft = b2(data, e + 8);
+    if (lft) {
+        var c = lft;
+        var o = b4(data, e + 16);
+        var z = o == 4294967295 || c == 65535;
+        if (z) {
+            var ze = b4(data, e - 12);
+            z = b4(data, ze) == 0x6064B50;
+            if (z) {
+                c = lft = b4(data, ze + 32);
+                o = b4(data, ze + 48);
+            }
+        }
+        var fltr = opts && opts.filter;
+        var _loop_3 = function (i) {
+            var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);
+            o = no;
+            var cbl = function (e, d) {
+                if (e) {
+                    tAll();
+                    cbd(e, null);
+                }
+                else {
+                    if (d)
+                        files[fn] = d;
+                    if (!--lft)
+                        cbd(null, files);
+                }
+            };
+            if (!fltr || fltr({
+                name: fn,
+                size: sc,
+                originalSize: su,
+                compression: c_1
+            })) {
+                if (!c_1)
+                    cbl(null, slc(data, b, b + sc));
+                else if (c_1 == 8) {
+                    var infl = data.subarray(b, b + sc);
+                    // Synchronously decompress under 512KB, or barely-compressed data
+                    if (su < 524288 || sc > 0.8 * su) {
+                        try {
+                            cbl(null, inflateSync(infl, { out: new u8(su) }));
+                        }
+                        catch (e) {
+                            cbl(e, null);
+                        }
+                    }
+                    else
+                        term.push(inflate(infl, { size: su }, cbl));
+                }
+                else
+                    cbl(err(14, 'unknown compression type ' + c_1, 1), null);
+            }
+            else
+                cbl(null, null);
+        };
+        for (var i = 0; i < c; ++i) {
+            _loop_3(i);
+        }
+    }
+    else
+        cbd(null, {});
+    return tAll;
+}
+exports.unzip = unzip;
+/**
+ * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better
+ * performance with more than one file.
+ * @param data The raw compressed ZIP file
+ * @param opts The ZIP extraction options
+ * @returns The decompressed files
+ */
+function unzipSync(data, opts) {
+    var files = {};
+    var e = data.length - 22;
+    for (; b4(data, e) != 0x6054B50; --e) {
+        if (!e || data.length - e > 65558)
+            err(13);
+    }
+    ;
+    var c = b2(data, e + 8);
+    if (!c)
+        return {};
+    var o = b4(data, e + 16);
+    var z = o == 4294967295 || c == 65535;
+    if (z) {
+        var ze = b4(data, e - 12);
+        z = b4(data, ze) == 0x6064B50;
+        if (z) {
+            c = b4(data, ze + 32);
+            o = b4(data, ze + 48);
+        }
+    }
+    var fltr = opts && opts.filter;
+    for (var i = 0; i < c; ++i) {
+        var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);
+        o = no;
+        if (!fltr || fltr({
+            name: fn,
+            size: sc,
+            originalSize: su,
+            compression: c_2
+        })) {
+            if (!c_2)
+                files[fn] = slc(data, b, b + sc);
+            else if (c_2 == 8)
+                files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });
+            else
+                err(14, 'unknown compression type ' + c_2);
+        }
+    }
+    return files;
+}
+exports.unzipSync = unzipSync;
diff --git a/node_modules/fflate/lib/node.d.cts b/node_modules/fflate/lib/node.d.cts
new file mode 100644
index 0000000..a3b5b01
--- /dev/null
+++ b/node_modules/fflate/lib/node.d.cts
@@ -0,0 +1,1501 @@
+/**
+ * Codes for errors generated within this library
+ */
+export declare const FlateErrorCode: {
+    readonly UnexpectedEOF: 0;
+    readonly InvalidBlockType: 1;
+    readonly InvalidLengthLiteral: 2;
+    readonly InvalidDistance: 3;
+    readonly StreamFinished: 4;
+    readonly NoStreamHandler: 5;
+    readonly InvalidHeader: 6;
+    readonly NoCallback: 7;
+    readonly InvalidUTF8: 8;
+    readonly ExtraFieldTooLong: 9;
+    readonly InvalidDate: 10;
+    readonly FilenameTooLong: 11;
+    readonly StreamFinishing: 12;
+    readonly InvalidZipData: 13;
+    readonly UnknownCompressionMethod: 14;
+};
+/**
+ * An error generated within this library
+ */
+export interface FlateError extends Error {
+    /**
+     * The code associated with this error
+     */
+    code: number;
+}
+/**
+ * Options for decompressing a DEFLATE stream
+ */
+export interface InflateStreamOptions {
+    /**
+     * The dictionary used to compress the original data. If no dictionary was used during compression, this option has no effect.
+     *
+     * Supplying the wrong dictionary during decompression usually yields corrupt output or causes an invalid distance error.
+     */
+    dictionary?: Uint8Array;
+}
+/**
+ * Options for decompressing DEFLATE data
+ */
+export interface InflateOptions extends InflateStreamOptions {
+    /**
+     * The buffer into which to write the decompressed data. Saves memory if you know the decompressed size in advance.
+     *
+     * Note that if the decompression result is larger than the size of this buffer, it will be truncated to fit.
+     */
+    out?: Uint8Array;
+}
+/**
+ * Options for decompressing a GZIP stream
+ */
+export interface GunzipStreamOptions extends InflateStreamOptions {
+}
+/**
+ * Options for decompressing GZIP data
+ */
+export interface GunzipOptions extends InflateStreamOptions {
+    /**
+     * The buffer into which to write the decompressed data. GZIP already encodes the output size, so providing this doesn't save memory.
+     *
+     * Note that if the decompression result is larger than the size of this buffer, it will be truncated to fit.
+     */
+    out?: Uint8Array;
+}
+/**
+ * Options for decompressing a Zlib stream
+ */
+export interface UnzlibStreamOptions extends InflateStreamOptions {
+}
+/**
+ * Options for decompressing Zlib data
+ */
+export interface UnzlibOptions extends InflateOptions {
+}
+/**
+ * Options for compressing data into a DEFLATE format
+ */
+export interface DeflateOptions {
+    /**
+     * The level of compression to use, ranging from 0-9.
+     *
+     * 0 will store the data without compression.
+     * 1 is fastest but compresses the worst, 9 is slowest but compresses the best.
+     * The default level is 6.
+     *
+     * Typically, binary data benefits much more from higher values than text data.
+     * In both cases, higher values usually take disproportionately longer than the reduction in final size that results.
+     *
+     * For example, a 1 MB text file could:
+     * - become 1.01 MB with level 0 in 1ms
+     * - become 400 kB with level 1 in 10ms
+     * - become 320 kB with level 9 in 100ms
+     */
+    level?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
+    /**
+     * The memory level to use, ranging from 0-12. Increasing this increases speed and compression ratio at the cost of memory.
+     *
+     * Note that this is exponential: while level 0 uses 4 kB, level 4 uses 64 kB, level 8 uses 1 MB, and level 12 uses 16 MB.
+     * It is recommended not to lower the value below 4, since that tends to hurt performance.
+     * In addition, values above 8 tend to help very little on most data and can even hurt performance.
+     *
+     * The default value is automatically determined based on the size of the input data.
+     */
+    mem?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
+    /**
+     * A buffer containing common byte sequences in the input data that can be used to significantly improve compression ratios.
+     *
+     * Dictionaries should be 32kB or smaller and include strings or byte sequences likely to appear in the input.
+     * The decompressor must supply the same dictionary as the compressor to extract the original data.
+     *
+     * Dictionaries only improve aggregate compression ratio when reused across multiple small inputs. They should typically not be used otherwise.
+     *
+     * Avoid using dictionaries with GZIP and ZIP to maximize software compatibility.
+     */
+    dictionary?: Uint8Array;
+}
+/**
+ * Options for compressing data into a GZIP format
+ */
+export interface GzipOptions extends DeflateOptions {
+    /**
+     * When the file was last modified. Defaults to the current time.
+     * Set this to 0 to avoid revealing a modification date entirely.
+     */
+    mtime?: Date | string | number;
+    /**
+     * The filename of the data. If the `gunzip` command is used to decompress the data, it will output a file
+     * with this name instead of the name of the compressed file.
+     */
+    filename?: string;
+}
+/**
+ * Options for compressing data into a Zlib format
+ */
+export interface ZlibOptions extends DeflateOptions {
+}
+/**
+ * Handler for data (de)compression streams
+ * @param data The data output from the stream processor
+ * @param final Whether this is the final block
+ */
+export type FlateStreamHandler = (data: Uint8Array, final: boolean) => void;
+/**
+ * Handler for asynchronous data (de)compression streams
+ * @param err Any error that occurred
+ * @param data The data output from the stream processor
+ * @param final Whether this is the final block
+ */
+export type AsyncFlateStreamHandler = (err: FlateError | null, data: Uint8Array, final: boolean) => void;
+/**
+ * Handler for the asynchronous completion of (de)compression for a data chunk
+ * @param size The number of bytes that were processed. This is measured in terms of the input
+ * (i.e. compressed bytes for decompression, uncompressed bytes for compression.)
+ */
+export type AsyncFlateDrainHandler = (size: number) => void;
+/**
+ * Callback for asynchronous (de)compression methods
+ * @param err Any error that occurred
+ * @param data The resulting data. Only present if `err` is null
+ */
+export type FlateCallback = (err: FlateError | null, data: Uint8Array) => void;
+interface AsyncOptions {
+    /**
+     * Whether or not to "consume" the source data. This will make the typed array/buffer you pass in
+     * unusable but will increase performance and reduce memory usage.
+     */
+    consume?: boolean;
+}
+/**
+ * Options for compressing data asynchronously into a DEFLATE format
+ */
+export interface AsyncDeflateOptions extends DeflateOptions, AsyncOptions {
+}
+/**
+ * Options for decompressing DEFLATE data asynchronously
+ */
+export interface AsyncInflateOptions extends AsyncOptions, InflateStreamOptions {
+    /**
+     * The original size of the data. Currently, the asynchronous API disallows
+     * writing into a buffer you provide; the best you can do is provide the
+     * size in bytes and be given back a new typed array.
+     */
+    size?: number;
+}
+/**
+ * Options for compressing data asynchronously into a GZIP format
+ */
+export interface AsyncGzipOptions extends GzipOptions, AsyncOptions {
+}
+/**
+ * Options for decompressing GZIP data asynchronously
+ */
+export interface AsyncGunzipOptions extends AsyncOptions, InflateStreamOptions {
+}
+/**
+ * Options for compressing data asynchronously into a Zlib format
+ */
+export interface AsyncZlibOptions extends ZlibOptions, AsyncOptions {
+}
+/**
+ * Options for decompressing Zlib data asynchronously
+ */
+export interface AsyncUnzlibOptions extends AsyncInflateOptions {
+}
+/**
+ * A terminable compression/decompression process
+ */
+export interface AsyncTerminable {
+    /**
+     * Terminates the worker thread immediately. The callback will not be called.
+     */
+    (): void;
+}
+/**
+ * Streaming DEFLATE compression
+ */
+export declare class Deflate {
+    /**
+     * Creates a DEFLATE stream
+     * @param opts The compression options
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(opts: DeflateOptions, cb?: FlateStreamHandler);
+    /**
+     * Creates a DEFLATE stream
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(cb?: FlateStreamHandler);
+    private b;
+    private s;
+    private o;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+    private p;
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * deflated output for small inputs.
+     */
+    flush(): void;
+}
+/**
+ * Asynchronous streaming DEFLATE compression
+ */
+export declare class AsyncDeflate {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The handler to call whenever buffered source data is processed (i.e. `queuedSize` updates)
+     */
+    ondrain?: AsyncFlateDrainHandler;
+    /**
+     * The number of uncompressed bytes buffered in the stream
+     */
+    queuedSize: number;
+    /**
+     * Creates an asynchronous DEFLATE stream
+     * @param opts The compression options
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(opts: DeflateOptions, cb?: AsyncFlateStreamHandler);
+    /**
+     * Creates an asynchronous DEFLATE stream
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * deflated output for small inputs.
+     */
+    flush(): void;
+    /**
+     * A method to terminate the stream's internal worker. Subsequent calls to
+     * push() will silently fail.
+     */
+    terminate: AsyncTerminable;
+}
+/**
+ * Asynchronously compresses data with DEFLATE without any wrapper
+ * @param data The data to compress
+ * @param opts The compression options
+ * @param cb The function to be called upon compression completion
+ * @returns A function that can be used to immediately terminate the compression
+ */
+export declare function deflate(data: Uint8Array, opts: AsyncDeflateOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchronously compresses data with DEFLATE without any wrapper
+ * @param data The data to compress
+ * @param cb The function to be called upon compression completion
+ */
+export declare function deflate(data: Uint8Array, cb: FlateCallback): AsyncTerminable;
+/**
+ * Compresses data with DEFLATE without any wrapper
+ * @param data The data to compress
+ * @param opts The compression options
+ * @returns The deflated version of the data
+ */
+export declare function deflateSync(data: Uint8Array, opts?: DeflateOptions): Uint8Array;
+/**
+ * Streaming DEFLATE decompression
+ */
+export declare class Inflate {
+    private s;
+    private o;
+    private p;
+    private d;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+    /**
+     * Creates a DEFLATE decompression stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(opts: InflateStreamOptions, cb?: FlateStreamHandler);
+    /**
+     * Creates a DEFLATE decompression stream
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(cb?: FlateStreamHandler);
+    private e;
+    private c;
+    /**
+     * Pushes a chunk to be inflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the final chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * Asynchronous streaming DEFLATE decompression
+ */
+export declare class AsyncInflate {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The handler to call whenever buffered source data is processed (i.e. `queuedSize` updates)
+     */
+    ondrain?: AsyncFlateDrainHandler;
+    /**
+     * The number of compressed bytes buffered in the stream
+     */
+    queuedSize: number;
+    /**
+     * Creates an asynchronous DEFLATE decompression stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(opts: InflateStreamOptions, cb?: AsyncFlateStreamHandler);
+    /**
+     * Creates an asynchronous DEFLATE decompression stream
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    /**
+     * Pushes a chunk to be inflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * A method to terminate the stream's internal worker. Subsequent calls to
+     * push() will silently fail.
+     */
+    terminate: AsyncTerminable;
+}
+/**
+ * Asynchronously expands DEFLATE data with no wrapper
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function inflate(data: Uint8Array, opts: AsyncInflateOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchronously expands DEFLATE data with no wrapper
+ * @param data The data to decompress
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function inflate(data: Uint8Array, cb: FlateCallback): AsyncTerminable;
+/**
+ * Expands DEFLATE data with no wrapper
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+export declare function inflateSync(data: Uint8Array, opts?: InflateOptions): Uint8Array;
+/**
+ * Streaming GZIP compression
+ */
+export declare class Gzip {
+    private c;
+    private l;
+    private v;
+    private o;
+    private s;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+    /**
+     * Creates a GZIP stream
+     * @param opts The compression options
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(opts: GzipOptions, cb?: FlateStreamHandler);
+    /**
+     * Creates a GZIP stream
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(cb?: FlateStreamHandler);
+    /**
+     * Pushes a chunk to be GZIPped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    private p;
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * GZIPped output for small inputs.
+     */
+    flush(): void;
+}
+/**
+ * Asynchronous streaming GZIP compression
+ */
+export declare class AsyncGzip {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The handler to call whenever buffered source data is processed (i.e. `queuedSize` updates)
+     */
+    ondrain?: AsyncFlateDrainHandler;
+    /**
+     * The number of uncompressed bytes buffered in the stream
+     */
+    queuedSize: number;
+    /**
+     * Creates an asynchronous GZIP stream
+     * @param opts The compression options
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(opts: GzipOptions, cb?: AsyncFlateStreamHandler);
+    /**
+     * Creates an asynchronous GZIP stream
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    /**
+     * Pushes a chunk to be GZIPped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * GZIPped output for small inputs.
+     */
+    flush(): void;
+    /**
+     * A method to terminate the stream's internal worker. Subsequent calls to
+     * push() will silently fail.
+     */
+    terminate: AsyncTerminable;
+}
+/**
+ * Asynchronously compresses data with GZIP
+ * @param data The data to compress
+ * @param opts The compression options
+ * @param cb The function to be called upon compression completion
+ * @returns A function that can be used to immediately terminate the compression
+ */
+export declare function gzip(data: Uint8Array, opts: AsyncGzipOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchronously compresses data with GZIP
+ * @param data The data to compress
+ * @param cb The function to be called upon compression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function gzip(data: Uint8Array, cb: FlateCallback): AsyncTerminable;
+/**
+ * Compresses data with GZIP
+ * @param data The data to compress
+ * @param opts The compression options
+ * @returns The gzipped version of the data
+ */
+export declare function gzipSync(data: Uint8Array, opts?: GzipOptions): Uint8Array;
+/**
+ * Handler for new GZIP members in concatenated GZIP streams. Useful for building indices used to perform random-access reads on compressed files.
+ * @param offset The offset of the new member relative to the start of the stream
+ */
+export type GunzipMemberHandler = (offset: number) => void;
+/**
+ * Streaming single or multi-member GZIP decompression
+ */
+export declare class Gunzip {
+    private v;
+    private r;
+    private o;
+    private p;
+    private s;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+    /**
+     * The handler to call whenever a new GZIP member is found
+     */
+    onmember?: GunzipMemberHandler;
+    /**
+     * Creates a GUNZIP stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(opts: GunzipStreamOptions, cb?: FlateStreamHandler);
+    /**
+     * Creates a GUNZIP stream
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(cb?: FlateStreamHandler);
+    /**
+     * Pushes a chunk to be GUNZIPped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * Asynchronous streaming single or multi-member GZIP decompression
+ */
+export declare class AsyncGunzip {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The handler to call whenever buffered source data is processed (i.e. `queuedSize` updates)
+     */
+    ondrain?: AsyncFlateDrainHandler;
+    /**
+     * The number of compressed bytes buffered in the stream
+     */
+    queuedSize: number;
+    /**
+     * The handler to call whenever a new GZIP member is found
+     */
+    onmember?: GunzipMemberHandler;
+    /**
+     * Creates an asynchronous GUNZIP stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(opts: GunzipStreamOptions, cb?: AsyncFlateStreamHandler);
+    /**
+     * Creates an asynchronous GUNZIP stream
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    /**
+     * Pushes a chunk to be GUNZIPped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * A method to terminate the stream's internal worker. Subsequent calls to
+     * push() will silently fail.
+     */
+    terminate: AsyncTerminable;
+}
+/**
+ * Asynchronously expands GZIP data
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function gunzip(data: Uint8Array, opts: AsyncGunzipOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchronously expands GZIP data
+ * @param data The data to decompress
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function gunzip(data: Uint8Array, cb: FlateCallback): AsyncTerminable;
+/**
+ * Expands GZIP data
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+export declare function gunzipSync(data: Uint8Array, opts?: GunzipOptions): Uint8Array;
+/**
+ * Streaming Zlib compression
+ */
+export declare class Zlib {
+    private c;
+    private v;
+    private o;
+    private s;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+    /**
+     * Creates a Zlib stream
+     * @param opts The compression options
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(opts: ZlibOptions, cb?: FlateStreamHandler);
+    /**
+     * Creates a Zlib stream
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(cb?: FlateStreamHandler);
+    /**
+     * Pushes a chunk to be zlibbed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    private p;
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * zlibbed output for small inputs.
+     */
+    flush(): void;
+}
+/**
+ * Asynchronous streaming Zlib compression
+ */
+export declare class AsyncZlib {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The handler to call whenever buffered source data is processed (i.e. `queuedSize` updates)
+     */
+    ondrain?: AsyncFlateDrainHandler;
+    /**
+     * The number of uncompressed bytes buffered in the stream
+     */
+    queuedSize: number;
+    /**
+     * Creates an asynchronous Zlib stream
+     * @param opts The compression options
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(opts: ZlibOptions, cb?: AsyncFlateStreamHandler);
+    /**
+     * Creates an asynchronous Zlib stream
+     * @param cb The callback to call whenever data is deflated
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * Flushes buffered uncompressed data. Useful to immediately retrieve the
+     * zlibbed output for small inputs.
+     */
+    flush(): void;
+    /**
+     * A method to terminate the stream's internal worker. Subsequent calls to
+     * push() will silently fail.
+     */
+    terminate: AsyncTerminable;
+}
+/**
+ * Asynchronously compresses data with Zlib
+ * @param data The data to compress
+ * @param opts The compression options
+ * @param cb The function to be called upon compression completion
+ */
+export declare function zlib(data: Uint8Array, opts: AsyncZlibOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchronously compresses data with Zlib
+ * @param data The data to compress
+ * @param cb The function to be called upon compression completion
+ * @returns A function that can be used to immediately terminate the compression
+ */
+export declare function zlib(data: Uint8Array, cb: FlateCallback): AsyncTerminable;
+/**
+ * Compress data with Zlib
+ * @param data The data to compress
+ * @param opts The compression options
+ * @returns The zlib-compressed version of the data
+ */
+export declare function zlibSync(data: Uint8Array, opts?: ZlibOptions): Uint8Array;
+/**
+ * Streaming Zlib decompression
+ */
+export declare class Unzlib {
+    private v;
+    private p;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+    /**
+     * Creates a Zlib decompression stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(opts: UnzlibStreamOptions, cb?: FlateStreamHandler);
+    /**
+     * Creates a Zlib decompression stream
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(cb?: FlateStreamHandler);
+    /**
+     * Pushes a chunk to be unzlibbed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * Asynchronous streaming Zlib decompression
+ */
+export declare class AsyncUnzlib {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The handler to call whenever buffered source data is processed (i.e. `queuedSize` updates)
+     */
+    ondrain?: AsyncFlateDrainHandler;
+    /**
+     * The number of compressed bytes buffered in the stream
+     */
+    queuedSize: number;
+    /**
+     * Creates an asynchronous Zlib decompression stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(opts: UnzlibStreamOptions, cb?: AsyncFlateStreamHandler);
+    /**
+     * Creates an asynchronous Zlib decompression stream
+     * @param cb The callback to call whenever data is inflated
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    /**
+     * Pushes a chunk to be decompressed from Zlib
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * A method to terminate the stream's internal worker. Subsequent calls to
+     * push() will silently fail.
+     */
+    terminate: AsyncTerminable;
+}
+/**
+ * Asynchronously expands Zlib data
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function unzlib(data: Uint8Array, opts: AsyncUnzlibOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchronously expands Zlib data
+ * @param data The data to decompress
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function unzlib(data: Uint8Array, cb: FlateCallback): AsyncTerminable;
+/**
+ * Expands Zlib data
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+export declare function unzlibSync(data: Uint8Array, opts?: UnzlibOptions): Uint8Array;
+export { gzip as compress, AsyncGzip as AsyncCompress };
+export { gzipSync as compressSync, Gzip as Compress };
+/**
+ * Streaming GZIP, Zlib, or raw DEFLATE decompression
+ */
+export declare class Decompress {
+    private G;
+    private I;
+    private Z;
+    private o;
+    private s;
+    private p;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+    /**
+     * Creates a decompression stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is decompressed
+     */
+    constructor(opts: InflateStreamOptions, cb?: FlateStreamHandler);
+    /**
+     * Creates a decompression stream
+     * @param cb The callback to call whenever data is decompressed
+     */
+    constructor(cb?: FlateStreamHandler);
+    private i;
+    /**
+     * Pushes a chunk to be decompressed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression
+ */
+export declare class AsyncDecompress {
+    private G;
+    private I;
+    private Z;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The handler to call whenever buffered source data is processed (i.e. `queuedSize` updates)
+     */
+    ondrain?: AsyncFlateDrainHandler;
+    /**
+     * The number of compressed bytes buffered in the stream
+     */
+    queuedSize: number;
+    /**
+     * Creates an asynchronous decompression stream
+     * @param opts The decompression options
+     * @param cb The callback to call whenever data is decompressed
+     */
+    constructor(opts: InflateStreamOptions, cb?: AsyncFlateStreamHandler);
+    /**
+     * Creates an asynchronous decompression stream
+     * @param cb The callback to call whenever data is decompressed
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    private i;
+    /**
+     * Pushes a chunk to be decompressed
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * Asynchrononously expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function decompress(data: Uint8Array, opts: AsyncInflateOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchrononously expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format
+ * @param data The data to decompress
+ * @param cb The function to be called upon decompression completion
+ * @returns A function that can be used to immediately terminate the decompression
+ */
+export declare function decompress(data: Uint8Array, cb: FlateCallback): AsyncTerminable;
+/**
+ * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format
+ * @param data The data to decompress
+ * @param opts The decompression options
+ * @returns The decompressed version of the data
+ */
+export declare function decompressSync(data: Uint8Array, opts?: InflateOptions): Uint8Array;
+/**
+ * Attributes for files added to a ZIP archive object
+ */
+export interface ZipAttributes {
+    /**
+     * The operating system of origin for this file. The value is defined
+     * by PKZIP's APPNOTE.txt, section 4.4.2.2. For example, 0 (the default)
+     * is MS/DOS, 3 is Unix, 19 is macOS.
+     */
+    os?: number;
+    /**
+     * The file's attributes. These are traditionally somewhat complicated
+     * and platform-dependent, so using them is scarcely necessary. However,
+     * here is a representation of what this is, bit by bit:
+     *
+     * `TTTTugtrwxrwxrwx0000000000ADVSHR`
+     *
+     * TTTT = file type (rarely useful)
+     *
+     * u = setuid, g = setgid, t = sticky
+     *
+     * rwx = user permissions, rwx = group permissions, rwx = other permissions
+     *
+     * 0000000000 = unused
+     *
+     * A = archive, D = directory, V = volume label, S = system file, H = hidden, R = read-only
+     *
+     * If you want to set the Unix permissions, for instance, just bit shift by 16, e.g. 0o644 << 16.
+     * Note that attributes usually only work in conjunction with the `os` setting: you must use
+     * `os` = 3 (Unix) if you want to set Unix permissions
+     */
+    attrs?: number;
+    /**
+     * Extra metadata to add to the file. This field is defined by PKZIP's APPNOTE.txt,
+     * section 4.4.28. At most 65,535 bytes may be used in each ID. The ID must be an
+     * integer between 0 and 65,535, inclusive.
+     *
+     * This field is incredibly rare and almost never needed except for compliance with
+     * proprietary standards and software.
+     */
+    extra?: Record<number, Uint8Array>;
+    /**
+     * The comment to attach to the file. This field is defined by PKZIP's APPNOTE.txt,
+     * section 4.4.26. The comment must be at most 65,535 bytes long UTF-8 encoded. This
+     * field is not read by consumer software.
+     */
+    comment?: string;
+    /**
+     * When the file was last modified. Defaults to the current time.
+     */
+    mtime?: GzipOptions['mtime'];
+}
+/**
+ * Options for creating a ZIP archive
+ */
+export interface ZipOptions extends DeflateOptions, ZipAttributes {
+}
+/**
+ * Options for expanding a ZIP archive
+ */
+export interface UnzipOptions {
+    /**
+     * A filter function to extract only certain files from a ZIP archive
+     */
+    filter?: UnzipFileFilter;
+}
+/**
+ * Options for asynchronously creating a ZIP archive
+ */
+export interface AsyncZipOptions extends AsyncDeflateOptions, ZipAttributes {
+}
+/**
+ * Options for asynchronously expanding a ZIP archive
+ */
+export interface AsyncUnzipOptions extends UnzipOptions {
+}
+/**
+ * A file that can be used to create a ZIP archive
+ */
+export type ZippableFile = Uint8Array | Zippable | [Uint8Array | Zippable, ZipOptions];
+/**
+ * A file that can be used to asynchronously create a ZIP archive
+ */
+export type AsyncZippableFile = Uint8Array | AsyncZippable | [Uint8Array | AsyncZippable, AsyncZipOptions];
+/**
+ * The complete directory structure of a ZIPpable archive
+ */
+export interface Zippable {
+    [path: string]: ZippableFile;
+}
+/**
+ * The complete directory structure of an asynchronously ZIPpable archive
+ */
+export interface AsyncZippable {
+    [path: string]: AsyncZippableFile;
+}
+/**
+ * An unzipped archive. The full path of each file is used as the key,
+ * and the file is the value
+ */
+export interface Unzipped {
+    [path: string]: Uint8Array;
+}
+/**
+ * Handler for string generation streams
+ * @param data The string output from the stream processor
+ * @param final Whether this is the final block
+ */
+export type StringStreamHandler = (data: string, final: boolean) => void;
+/**
+ * Callback for asynchronous ZIP decompression
+ * @param err Any error that occurred
+ * @param data The decompressed ZIP archive
+ */
+export type UnzipCallback = (err: FlateError | null, data: Unzipped) => void;
+/**
+ * Handler for streaming ZIP decompression
+ * @param file The file that was found in the archive
+ */
+export type UnzipFileHandler = (file: UnzipFile) => void;
+/**
+ * Streaming UTF-8 decoding
+ */
+export declare class DecodeUTF8 {
+    private p;
+    private t;
+    /**
+     * Creates a UTF-8 decoding stream
+     * @param cb The callback to call whenever data is decoded
+     */
+    constructor(cb?: StringStreamHandler);
+    /**
+     * Pushes a chunk to be decoded from UTF-8 binary
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: StringStreamHandler;
+}
+/**
+ * Streaming UTF-8 encoding
+ */
+export declare class EncodeUTF8 {
+    private d;
+    /**
+     * Creates a UTF-8 decoding stream
+     * @param cb The callback to call whenever data is encoded
+     */
+    constructor(cb?: FlateStreamHandler);
+    /**
+     * Pushes a chunk to be encoded to UTF-8
+     * @param chunk The string data to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: string, final?: boolean): void;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: FlateStreamHandler;
+}
+/**
+ * Converts a string into a Uint8Array for use with compression/decompression methods
+ * @param str The string to encode
+ * @param latin1 Whether or not to interpret the data as Latin-1. This should
+ *               not need to be true unless decoding a binary string.
+ * @returns The string encoded in UTF-8/Latin-1 binary
+ */
+export declare function strToU8(str: string, latin1?: boolean): Uint8Array;
+/**
+ * Converts a Uint8Array to a string
+ * @param dat The data to decode to string
+ * @param latin1 Whether or not to interpret the data as Latin-1. This should
+ *               not need to be true unless encoding to binary string.
+ * @returns The original UTF-8/Latin-1 string
+ */
+export declare function strFromU8(dat: Uint8Array, latin1?: boolean): string;
+/**
+ * A stream that can be used to create a file in a ZIP archive
+ */
+export interface ZipInputFile extends ZipAttributes {
+    /**
+     * The filename to associate with the data provided to this stream. If you
+     * want a file in a subdirectory, use forward slashes as a separator (e.g.
+     * `directory/filename.ext`). This will still work on Windows.
+     */
+    filename: string;
+    /**
+     * The size of the file in bytes. This attribute may be invalid after
+     * the file is added to the ZIP archive; it must be correct only before the
+     * stream completes.
+     *
+     * If you don't want to have to compute this yourself, consider extending the
+     * ZipPassThrough class and overriding its process() method, or using one of
+     * ZipDeflate or AsyncZipDeflate.
+     */
+    size: number;
+    /**
+     * A CRC of the original file contents. This attribute may be invalid after
+     * the file is added to the ZIP archive; it must be correct only before the
+     * stream completes.
+     *
+     * If you don't want to have to generate this yourself, consider extending the
+     * ZipPassThrough class and overriding its process() method, or using one of
+     * ZipDeflate or AsyncZipDeflate.
+     */
+    crc: number;
+    /**
+     * The compression format for the data stream. This number is determined by
+     * the spec in PKZIP's APPNOTE.txt, section 4.4.5. For example, 0 = no
+     * compression, 8 = deflate, 14 = LZMA
+     */
+    compression: number;
+    /**
+     * Bits 1 and 2 of the general purpose bit flag, specified in PKZIP's
+     * APPNOTE.txt, section 4.4.4. Should be between 0 and 3. This is unlikely
+     * to be necessary.
+     */
+    flag?: number;
+    /**
+     * The handler to be called when data is added. After passing this stream to
+     * the ZIP file object, this handler will always be defined. To call it:
+     *
+     * `stream.ondata(error, chunk, final)`
+     *
+     * error = any error that occurred (null if there was no error)
+     *
+     * chunk = a Uint8Array of the data that was added (null if there was an
+     * error)
+     *
+     * final = boolean, whether this is the final chunk in the stream
+     */
+    ondata?: AsyncFlateStreamHandler;
+    /**
+     * A method called when the stream is no longer needed, for clean-up
+     * purposes. This will not always be called after the stream completes,
+     * so you may wish to call this.terminate() after the final chunk is
+     * processed if you have clean-up logic.
+     */
+    terminate?: AsyncTerminable;
+}
+/**
+ * A pass-through stream to keep data uncompressed in a ZIP archive.
+ */
+export declare class ZipPassThrough implements ZipInputFile {
+    filename: string;
+    crc: number;
+    size: number;
+    compression: number;
+    os?: number;
+    attrs?: number;
+    comment?: string;
+    extra?: Record<number, Uint8Array>;
+    mtime?: GzipOptions['mtime'];
+    ondata: AsyncFlateStreamHandler;
+    private c;
+    /**
+     * Creates a pass-through stream that can be added to ZIP archives
+     * @param filename The filename to associate with this data stream
+     */
+    constructor(filename: string);
+    /**
+     * Processes a chunk and pushes to the output stream. You can override this
+     * method in a subclass for custom behavior, but by default this passes
+     * the data through. You must call this.ondata(err, chunk, final) at some
+     * point in this method.
+     * @param chunk The chunk to process
+     * @param final Whether this is the last chunk
+     */
+    protected process(chunk: Uint8Array, final: boolean): void;
+    /**
+     * Pushes a chunk to be added. If you are subclassing this with a custom
+     * compression algorithm, note that you must push data from the source
+     * file only, pre-compression.
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate
+ * for better performance
+ */
+export declare class ZipDeflate implements ZipInputFile {
+    filename: string;
+    crc: number;
+    size: number;
+    compression: number;
+    flag: 0 | 1 | 2 | 3;
+    os?: number;
+    attrs?: number;
+    comment?: string;
+    extra?: Record<number, Uint8Array>;
+    mtime?: GzipOptions['mtime'];
+    ondata: AsyncFlateStreamHandler;
+    private d;
+    /**
+     * Creates a DEFLATE stream that can be added to ZIP archives
+     * @param filename The filename to associate with this data stream
+     * @param opts The compression options
+     */
+    constructor(filename: string, opts?: DeflateOptions);
+    process(chunk: Uint8Array, final: boolean): void;
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * Asynchronous streaming DEFLATE compression for ZIP archives
+ */
+export declare class AsyncZipDeflate implements ZipInputFile {
+    filename: string;
+    crc: number;
+    size: number;
+    compression: number;
+    flag: 0 | 1 | 2 | 3;
+    os?: number;
+    attrs?: number;
+    comment?: string;
+    extra?: Record<number, Uint8Array>;
+    mtime?: GzipOptions['mtime'];
+    ondata: AsyncFlateStreamHandler;
+    private d;
+    terminate: AsyncTerminable;
+    /**
+     * Creates an asynchronous DEFLATE stream that can be added to ZIP archives
+     * @param filename The filename to associate with this data stream
+     * @param opts The compression options
+     */
+    constructor(filename: string, opts?: DeflateOptions);
+    process(chunk: Uint8Array, final: boolean): void;
+    /**
+     * Pushes a chunk to be deflated
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): void;
+}
+/**
+ * A zippable archive to which files can incrementally be added
+ */
+export declare class Zip {
+    private u;
+    private d;
+    /**
+     * Creates an empty ZIP archive to which files can be added
+     * @param cb The callback to call whenever data for the generated ZIP archive
+     *           is available
+     */
+    constructor(cb?: AsyncFlateStreamHandler);
+    /**
+     * Adds a file to the ZIP archive
+     * @param file The file stream to add
+     */
+    add(file: ZipInputFile): void;
+    /**
+     * Ends the process of adding files and prepares to emit the final chunks.
+     * This *must* be called after adding all desired files for the resulting
+     * ZIP file to work properly.
+     */
+    end(): void;
+    private e;
+    /**
+     * A method to terminate any internal workers used by the stream. Subsequent
+     * calls to add() will fail.
+     */
+    terminate(): void;
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+}
+/**
+ * Asynchronously creates a ZIP file
+ * @param data The directory structure for the ZIP archive
+ * @param opts The main options, merged with per-file options
+ * @param cb The callback to call with the generated ZIP archive
+ * @returns A function that can be used to immediately terminate the compression
+ */
+export declare function zip(data: AsyncZippable, opts: AsyncZipOptions, cb: FlateCallback): AsyncTerminable;
+/**
+ * Asynchronously creates a ZIP file
+ * @param data The directory structure for the ZIP archive
+ * @param cb The callback to call with the generated ZIP archive
+ * @returns A function that can be used to immediately terminate the compression
+ */
+export declare function zip(data: AsyncZippable, cb: FlateCallback): AsyncTerminable;
+/**
+ * Synchronously creates a ZIP file. Prefer using `zip` for better performance
+ * with more than one file.
+ * @param data The directory structure for the ZIP archive
+ * @param opts The main options, merged with per-file options
+ * @returns The generated ZIP archive
+ */
+export declare function zipSync(data: Zippable, opts?: ZipOptions): Uint8Array;
+/**
+ * A decoder for files in ZIP streams
+ */
+export interface UnzipDecoder {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * Pushes a chunk to be decompressed
+     * @param data The data in this chunk. Do not consume (detach) this data.
+     * @param final Whether this is the last chunk in the data stream
+     */
+    push(data: Uint8Array, final: boolean): void;
+    /**
+     * A method to terminate any internal workers used by the stream. Subsequent
+     * calls to push() should silently fail.
+     */
+    terminate?: AsyncTerminable;
+}
+/**
+ * A constructor for a decoder for unzip streams
+ */
+export interface UnzipDecoderConstructor {
+    /**
+     * Creates an instance of the decoder
+     * @param filename The name of the file
+     * @param size The compressed size of the file
+     * @param originalSize The original size of the file
+     */
+    new (filename: string, size?: number, originalSize?: number): UnzipDecoder;
+    /**
+     * The compression format for the data stream. This number is determined by
+     * the spec in PKZIP's APPNOTE.txt, section 4.4.5. For example, 0 = no
+     * compression, 8 = deflate, 14 = LZMA
+     */
+    compression: number;
+}
+/**
+ * Information about a file to be extracted from a ZIP archive
+ */
+export interface UnzipFileInfo {
+    /**
+     * The name of the file
+     */
+    name: string;
+    /**
+     * The compressed size of the file
+     */
+    size: number;
+    /**
+     * The original size of the file
+     */
+    originalSize: number;
+    /**
+     * The compression format for the data stream. This number is determined by
+     * the spec in PKZIP's APPNOTE.txt, section 4.4.5. For example, 0 = no
+     * compression, 8 = deflate, 14 = LZMA. If the filter function returns true
+     * but this value is not 8, the unzip function will throw.
+     */
+    compression: number;
+}
+/**
+ * A filter for files to be extracted during the unzipping process
+ * @param file The info for the current file being processed
+ * @returns Whether or not to extract the current file
+ */
+export type UnzipFileFilter = (file: UnzipFileInfo) => boolean;
+/**
+ * Streaming file extraction from ZIP archives
+ */
+export interface UnzipFile {
+    /**
+     * The handler to call whenever data is available
+     */
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * The name of the file
+     */
+    name: string;
+    /**
+     * The compression format for the data stream. This number is determined by
+     * the spec in PKZIP's APPNOTE.txt, section 4.4.5. For example, 0 = no
+     * compression, 8 = deflate, 14 = LZMA. If start() is called but there is no
+     * decompression stream available for this method, start() will throw.
+     */
+    compression: number;
+    /**
+     * The compressed size of the file. Will not be present for archives created
+     * in a streaming fashion.
+     */
+    size?: number;
+    /**
+     * The original size of the file. Will not be present for archives created
+     * in a streaming fashion.
+     */
+    originalSize?: number;
+    /**
+     * Starts reading from the stream. Calling this function will always enable
+     * this stream, but ocassionally the stream will be enabled even without
+     * this being called.
+     */
+    start(): void;
+    /**
+     * A method to terminate any internal workers used by the stream. ondata
+     * will not be called any further.
+     */
+    terminate: AsyncTerminable;
+}
+/**
+ * Streaming pass-through decompression for ZIP archives
+ */
+export declare class UnzipPassThrough implements UnzipDecoder {
+    static compression: number;
+    ondata: AsyncFlateStreamHandler;
+    push(data: Uint8Array, final: boolean): void;
+}
+/**
+ * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for
+ * better performance.
+ */
+export declare class UnzipInflate implements UnzipDecoder {
+    static compression: number;
+    private i;
+    ondata: AsyncFlateStreamHandler;
+    /**
+     * Creates a DEFLATE decompression that can be used in ZIP archives
+     */
+    constructor();
+    push(data: Uint8Array, final: boolean): void;
+}
+/**
+ * Asynchronous streaming DEFLATE decompression for ZIP archives
+ */
+export declare class AsyncUnzipInflate implements UnzipDecoder {
+    static compression: number;
+    private i;
+    ondata: AsyncFlateStreamHandler;
+    terminate: AsyncTerminable;
+    /**
+     * Creates a DEFLATE decompression that can be used in ZIP archives
+     */
+    constructor(_: string, sz?: number);
+    push(data: Uint8Array, final: boolean): void;
+}
+/**
+ * A ZIP archive decompression stream that emits files as they are discovered
+ */
+export declare class Unzip {
+    private d;
+    private c;
+    private p;
+    private k;
+    private o;
+    /**
+     * Creates a ZIP decompression stream
+     * @param cb The callback to call whenever a file in the ZIP archive is found
+     */
+    constructor(cb?: UnzipFileHandler);
+    /**
+     * Pushes a chunk to be unzipped
+     * @param chunk The chunk to push
+     * @param final Whether this is the last chunk
+     */
+    push(chunk: Uint8Array, final?: boolean): any;
+    /**
+     * Registers a decoder with the stream, allowing for files compressed with
+     * the compression type provided to be expanded correctly
+     * @param decoder The decoder constructor
+     */
+    register(decoder: UnzipDecoderConstructor): void;
+    /**
+     * The handler to call whenever a file is discovered
+     */
+    onfile: UnzipFileHandler;
+}
+/**
+ * Asynchronously decompresses a ZIP archive
+ * @param data The raw compressed ZIP file
+ * @param opts The ZIP extraction options
+ * @param cb The callback to call with the decompressed files
+ * @returns A function that can be used to immediately terminate the unzipping
+ */
+export declare function unzip(data: Uint8Array, opts: AsyncUnzipOptions, cb: UnzipCallback): AsyncTerminable;
+/**
+ * Asynchronously decompresses a ZIP archive
+ * @param data The raw compressed ZIP file
+ * @param cb The callback to call with the decompressed files
+ * @returns A function that can be used to immediately terminate the unzipping
+ */
+export declare function unzip(data: Uint8Array, cb: UnzipCallback): AsyncTerminable;
+/**
+ * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better
+ * performance with more than one file.
+ * @param data The raw compressed ZIP file
+ * @param opts The ZIP extraction options
+ * @returns The decompressed files
+ */
+export declare function unzipSync(data: Uint8Array, opts?: UnzipOptions): Unzipped;
diff --git a/node_modules/fflate/lib/worker.cjs b/node_modules/fflate/lib/worker.cjs
new file mode 100644
index 0000000..9a283bd
--- /dev/null
+++ b/node_modules/fflate/lib/worker.cjs
@@ -0,0 +1,20 @@
+"use strict";
+var ch2 = {};
+exports.default = (function (c, id, msg, transfer, cb) {
+    var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([
+        c + ';addEventListener("error",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'
+    ], { type: 'text/javascript' }))));
+    w.onmessage = function (e) {
+        var d = e.data, ed = d.$e$;
+        if (ed) {
+            var err = new Error(ed[0]);
+            err['code'] = ed[1];
+            err.stack = ed[2];
+            cb(err, null);
+        }
+        else
+            cb(null, d);
+    };
+    w.postMessage(msg, transfer);
+    return w;
+});
diff --git a/node_modules/fflate/package.json b/node_modules/fflate/package.json
new file mode 100644
index 0000000..a1e415e
--- /dev/null
+++ b/node_modules/fflate/package.json
@@ -0,0 +1,127 @@
+{
+  "name": "fflate",
+  "version": "0.8.2",
+  "description": "High performance (de)compression in an 8kB package",
+  "main": "./lib/index.cjs",
+  "module": "./esm/browser.js",
+  "types": "./lib/index.d.ts",
+  "unpkg": "./umd/index.js",
+  "jsdelivr": "./umd/index.js",
+  "browser": {
+    "./lib/node-worker.cjs": "./lib/worker.cjs"
+  },
+  "exports": {
+    ".": {
+      "node": {
+        "import": {
+          "types": "./esm/index.d.mts",
+          "default": "./esm/index.mjs"
+        },
+        "require": {
+          "types": "./lib/node.d.cts",
+          "default": "./lib/node.cjs"
+        }
+      },
+      "import": {
+        "types": "./esm/browser.d.ts",
+        "default": "./esm/browser.js"
+      },
+      "require": {
+        "types": "./lib/browser.d.cts",
+        "default": "./lib/browser.cjs"
+      }
+    },
+    "./node": {
+      "import": {
+        "types": "./esm/index.d.mts",
+        "default": "./esm/index.mjs"
+      },
+      "require": {
+        "types": "./lib/node.d.cts",
+        "default": "./lib/node.cjs"
+      }
+    },
+    "./browser": {
+      "import": {
+        "types": "./esm/browser.d.ts",
+        "default": "./esm/browser.js"
+      },
+      "require": {
+        "types": "./lib/browser.d.cts",
+        "default": "./lib/browser.cjs"
+      }
+    }
+  },
+  "targets": {
+    "main": false,
+    "module": false,
+    "browser": false,
+    "types": false
+  },
+  "sideEffects": false,
+  "homepage": "https://101arrowz.github.io/fflate",
+  "repository": "https://github.com/101arrowz/fflate",
+  "bugs": {
+    "email": "arjunbarrett@gmail.com",
+    "url": "https://github.com/101arrowz/fflate/issues"
+  },
+  "author": "Arjun Barrett <arjunbarrett@gmail.com>",
+  "license": "MIT",
+  "keywords": [
+    "gzip",
+    "gunzip",
+    "deflate",
+    "inflate",
+    "compression",
+    "decompression",
+    "zlib",
+    "pako",
+    "jszip",
+    "browser",
+    "node.js",
+    "tiny",
+    "fast",
+    "zip",
+    "unzip",
+    "non-blocking"
+  ],
+  "scripts": {
+    "build": "npm run build:lib && npm run build:docs && npm run build:demo",
+    "script": "node -r ts-node/register scripts/$SC.ts",
+    "build:lib": "tsc && tsc --project tsconfig.esm.json && npm run build:rewrite && npm run build:umd",
+    "build:umd": "SC=buildUMD npm run script",
+    "build:rewrite": "SC=rewriteBuilds npm run script",
+    "build:demo": "tsc --project tsconfig.demo.json && parcel build demo/index.html --no-cache --public-url \"./\" && SC=cpGHPages npm run script",
+    "build:docs": "typedoc --plugin typedoc-plugin-markdown --hideBreadcrumbs --readme none --disableSources --excludePrivate --excludeProtected --githubPages false --out docs/ src/index.ts",
+    "test": "TS_NODE_PROJECT=test/tsconfig.json uvu -b -r ts-node/register test",
+    "prepack": "npm run build && npm run test"
+  },
+  "devDependencies": {
+    "@parcel/service-worker": "^2.9.3",
+    "@types/node": "^14.11.2",
+    "@types/pako": "*",
+    "@types/react": "^18.2.21",
+    "@types/react-dom": "^18.2.7",
+    "jszip": "^3.5.0",
+    "pako": "*",
+    "parcel": "^2.9.3",
+    "preact": "^10.17.1",
+    "react": "^18.2.0",
+    "react-dom": "^18.2.0",
+    "simple-git": "^3.19.1",
+    "terser": "^5.3.8",
+    "tiny-inflate": "*",
+    "ts-node": "^10.9.1",
+    "typedoc": "^0.25.0",
+    "typedoc-plugin-markdown": "^3.16.0",
+    "typescript": "^5.2.2",
+    "uvu": "^0.3.3",
+    "uzip": "*"
+  },
+  "alias": {
+    "react": "preact/compat",
+    "react-dom": "preact/compat",
+    "buffer": false,
+    "process": false
+  }
+}
diff --git a/node_modules/fflate/umd/index.js b/node_modules/fflate/umd/index.js
new file mode 100644
index 0000000..6b81793
--- /dev/null
+++ b/node_modules/fflate/umd/index.js
@@ -0,0 +1 @@
+!function(f){typeof module!='undefined'&&typeof exports=='object'?module.exports=f():typeof define!='undefined'&&define.amd?define(f):(typeof self!='undefined'?self:this).fflate=f()}(function(){var _e={};"use strict";var t=(typeof module!='undefined'&&typeof exports=='object'?function(_f){"use strict";var e,t=";var __w=require('worker_threads');__w.parentPort.on('message',function(m){onmessage({data:m})}),postMessage=function(m,t){__w.parentPort.postMessage(m,t)},close=process.exit;self=global";try{e=require("worker_threads").Worker}catch(e){}exports.default=e?function(r,n,o,a,s){var u=!1,i=new e(r+t,{eval:!0}).on("error",(function(e){return s(e,null)})).on("message",(function(e){return s(null,e)})).on("exit",(function(e){e&&!u&&s(Error("exited with code "+e),null)}));return i.postMessage(o,a),i.terminate=function(){return u=!0,e.prototype.terminate.call(i)},i}:function(e,t,r,n,o){setImmediate((function(){return o(Error("async operations unsupported - update to Node 12+ (or Node 10-11 with the --experimental-worker CLI flag)"),null)}));var a=function(){};return{terminate:a,postMessage:a}};return _f}:function(_f){"use strict";var e={};_f.default=function(r,t,s,a,n){var o=new Worker(e[t]||(e[t]=URL.createObjectURL(new Blob([r+';addEventListener("error",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'],{type:"text/javascript"}))));return o.onmessage=function(e){var r=e.data,t=r.$e$;if(t){var s=Error(t[0]);s.code=t[1],s.stack=t[2],n(s,null)}else n(null,r)},o.postMessage(s,a),o};return _f})({}),n=Uint8Array,r=Uint16Array,e=Int32Array,i=new n([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),o=new n([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),s=new n([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),a=function(t,n){for(var i=new r(31),o=0;o<31;++o)i[o]=n+=1<<t[o-1];var s=new e(i[30]);for(o=1;o<30;++o)for(var a=i[o];a<i[o+1];++a)s[a]=a-i[o]<<5|o;return{b:i,r:s}},u=a(i,2),h=u.b,f=u.r;h[28]=258,f[258]=28;for(var l=a(o,0),c=l.b,p=l.r,v=new r(32768),d=0;d<32768;++d){var g=(43690&d)>>1|(21845&d)<<1;v[d]=((65280&(g=(61680&(g=(52428&g)>>2|(13107&g)<<2))>>4|(3855&g)<<4))>>8|(255&g)<<8)>>1}var y=function(t,n,e){for(var i=t.length,o=0,s=new r(n);o<i;++o)t[o]&&++s[t[o]-1];var a,u=new r(n);for(o=1;o<n;++o)u[o]=u[o-1]+s[o-1]<<1;if(e){a=new r(1<<n);var h=15-n;for(o=0;o<i;++o)if(t[o])for(var f=o<<4|t[o],l=n-t[o],c=u[t[o]-1]++<<l,p=c|(1<<l)-1;c<=p;++c)a[v[c]>>h]=f}else for(a=new r(i),o=0;o<i;++o)t[o]&&(a[o]=v[u[t[o]-1]++]>>15-t[o]);return a},m=new n(288);for(d=0;d<144;++d)m[d]=8;for(d=144;d<256;++d)m[d]=9;for(d=256;d<280;++d)m[d]=7;for(d=280;d<288;++d)m[d]=8;var b=new n(32);for(d=0;d<32;++d)b[d]=5;var w=y(m,9,0),x=y(m,9,1),z=y(b,5,0),k=y(b,5,1),M=function(t){for(var n=t[0],r=1;r<t.length;++r)t[r]>n&&(n=t[r]);return n},S=function(t,n,r){var e=n/8|0;return(t[e]|t[e+1]<<8)>>(7&n)&r},A=function(t,n){var r=n/8|0;return(t[r]|t[r+1]<<8|t[r+2]<<16)>>(7&n)},T=function(t){return(t+7)/8|0},D=function(t,r,e){return(null==r||r<0)&&(r=0),(null==e||e>t.length)&&(e=t.length),new n(t.subarray(r,e))};_e.FlateErrorCode={UnexpectedEOF:0,InvalidBlockType:1,InvalidLengthLiteral:2,InvalidDistance:3,StreamFinished:4,NoStreamHandler:5,InvalidHeader:6,NoCallback:7,InvalidUTF8:8,ExtraFieldTooLong:9,InvalidDate:10,FilenameTooLong:11,StreamFinishing:12,InvalidZipData:13,UnknownCompressionMethod:14};var C=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],I=function(t,n,r){var e=Error(n||C[t]);if(e.code=t,Error.captureStackTrace&&Error.captureStackTrace(e,I),!r)throw e;return e},U=function(t,r,e,a){var u=t.length,f=a?a.length:0;if(!u||r.f&&!r.l)return e||new n(0);var l=!e,p=l||2!=r.i,v=r.i;l&&(e=new n(3*u));var d=function(t){var r=e.length;if(t>r){var i=new n(Math.max(2*r,t));i.set(e),e=i}},g=r.f||0,m=r.p||0,b=r.b||0,w=r.l,z=r.d,C=r.m,U=r.n,F=8*u;do{if(!w){g=S(t,m,1);var E=S(t,m+1,3);if(m+=3,!E){var Z=t[(J=T(m)+4)-4]|t[J-3]<<8,q=J+Z;if(q>u){v&&I(0);break}p&&d(b+Z),e.set(t.subarray(J,q),b),r.b=b+=Z,r.p=m=8*q,r.f=g;continue}if(1==E)w=x,z=k,C=9,U=5;else if(2==E){var O=S(t,m,31)+257,G=S(t,m+10,15)+4,L=O+S(t,m+5,31)+1;m+=14;for(var H=new n(L),j=new n(19),N=0;N<G;++N)j[s[N]]=S(t,m+3*N,7);m+=3*G;var P=M(j),B=(1<<P)-1,Y=y(j,P,1);for(N=0;N<L;){var J,K=Y[S(t,m,B)];if(m+=15&K,(J=K>>4)<16)H[N++]=J;else{var Q=0,R=0;for(16==J?(R=3+S(t,m,3),m+=2,Q=H[N-1]):17==J?(R=3+S(t,m,7),m+=3):18==J&&(R=11+S(t,m,127),m+=7);R--;)H[N++]=Q}}var V=H.subarray(0,O),W=H.subarray(O);C=M(V),U=M(W),w=y(V,C,1),z=y(W,U,1)}else I(1);if(m>F){v&&I(0);break}}p&&d(b+131072);for(var X=(1<<C)-1,$=(1<<U)-1,_=m;;_=m){var tt=(Q=w[A(t,m)&X])>>4;if((m+=15&Q)>F){v&&I(0);break}if(Q||I(2),tt<256)e[b++]=tt;else{if(256==tt){_=m,w=null;break}var nt=tt-254;tt>264&&(nt=S(t,m,(1<<(it=i[N=tt-257]))-1)+h[N],m+=it);var rt=z[A(t,m)&$],et=rt>>4;if(rt||I(3),m+=15&rt,W=c[et],et>3){var it=o[et];W+=A(t,m)&(1<<it)-1,m+=it}if(m>F){v&&I(0);break}p&&d(b+131072);var ot=b+nt;if(b<W){var st=f-W,at=Math.min(W,ot);for(st+b<0&&I(3);b<at;++b)e[b]=a[st+b]}for(;b<ot;++b)e[b]=e[b-W]}}r.l=w,r.p=_,r.b=b,r.f=g,w&&(g=1,r.m=C,r.d=z,r.n=U)}while(!g);return b!=e.length&&l?D(e,0,b):e.subarray(0,b)},F=function(t,n,r){var e=n/8|0;t[e]|=r<<=7&n,t[e+1]|=r>>8},E=function(t,n,r){var e=n/8|0;t[e]|=r<<=7&n,t[e+1]|=r>>8,t[e+2]|=r>>16},Z=function(t,e){for(var i=[],o=0;o<t.length;++o)t[o]&&i.push({s:o,f:t[o]});var s=i.length,a=i.slice();if(!s)return{t:N,l:0};if(1==s){var u=new n(i[0].s+1);return u[i[0].s]=1,{t:u,l:1}}i.sort((function(t,n){return t.f-n.f})),i.push({s:-1,f:25001});var h=i[0],f=i[1],l=0,c=1,p=2;for(i[0]={s:-1,f:h.f+f.f,l:h,r:f};c!=s-1;)h=i[i[l].f<i[p].f?l++:p++],f=i[l!=c&&i[l].f<i[p].f?l++:p++],i[c++]={s:-1,f:h.f+f.f,l:h,r:f};var v=a[0].s;for(o=1;o<s;++o)a[o].s>v&&(v=a[o].s);var d=new r(v+1),g=q(i[c-1],d,0);if(g>e){o=0;var y=0,m=g-e,b=1<<m;for(a.sort((function(t,n){return d[n.s]-d[t.s]||t.f-n.f}));o<s;++o){var w=a[o].s;if(!(d[w]>e))break;y+=b-(1<<g-d[w]),d[w]=e}for(y>>=m;y>0;){var x=a[o].s;d[x]<e?y-=1<<e-d[x]++-1:++o}for(;o>=0&&y;--o){var z=a[o].s;d[z]==e&&(--d[z],++y)}g=e}return{t:new n(d),l:g}},q=function(t,n,r){return-1==t.s?Math.max(q(t.l,n,r+1),q(t.r,n,r+1)):n[t.s]=r},O=function(t){for(var n=t.length;n&&!t[--n];);for(var e=new r(++n),i=0,o=t[0],s=1,a=function(t){e[i++]=t},u=1;u<=n;++u)if(t[u]==o&&u!=n)++s;else{if(!o&&s>2){for(;s>138;s-=138)a(32754);s>2&&(a(s>10?s-11<<5|28690:s-3<<5|12305),s=0)}else if(s>3){for(a(o),--s;s>6;s-=6)a(8304);s>2&&(a(s-3<<5|8208),s=0)}for(;s--;)a(o);s=1,o=t[u]}return{c:e.subarray(0,i),n:n}},G=function(t,n){for(var r=0,e=0;e<n.length;++e)r+=t[e]*n[e];return r},L=function(t,n,r){var e=r.length,i=T(n+2);t[i]=255&e,t[i+1]=e>>8,t[i+2]=255^t[i],t[i+3]=255^t[i+1];for(var o=0;o<e;++o)t[i+o+4]=r[o];return 8*(i+4+e)},H=function(t,n,e,a,u,h,f,l,c,p,v){F(n,v++,e),++u[256];for(var d=Z(u,15),g=d.t,x=d.l,k=Z(h,15),M=k.t,S=k.l,A=O(g),T=A.c,D=A.n,C=O(M),I=C.c,U=C.n,q=new r(19),H=0;H<T.length;++H)++q[31&T[H]];for(H=0;H<I.length;++H)++q[31&I[H]];for(var j=Z(q,7),N=j.t,P=j.l,B=19;B>4&&!N[s[B-1]];--B);var Y,J,K,Q,R=p+5<<3,V=G(u,m)+G(h,b)+f,W=G(u,g)+G(h,M)+f+14+3*B+G(q,N)+2*q[16]+3*q[17]+7*q[18];if(c>=0&&R<=V&&R<=W)return L(n,v,t.subarray(c,c+p));if(F(n,v,1+(W<V)),v+=2,W<V){Y=y(g,x,0),J=g,K=y(M,S,0),Q=M;var X=y(N,P,0);for(F(n,v,D-257),F(n,v+5,U-1),F(n,v+10,B-4),v+=14,H=0;H<B;++H)F(n,v+3*H,N[s[H]]);v+=3*B;for(var $=[T,I],_=0;_<2;++_){var tt=$[_];for(H=0;H<tt.length;++H)F(n,v,X[rt=31&tt[H]]),v+=N[rt],rt>15&&(F(n,v,tt[H]>>5&127),v+=tt[H]>>12)}}else Y=w,J=m,K=z,Q=b;for(H=0;H<l;++H){var nt=a[H];if(nt>255){var rt;E(n,v,Y[257+(rt=nt>>18&31)]),v+=J[rt+257],rt>7&&(F(n,v,nt>>23&31),v+=i[rt]);var et=31&nt;E(n,v,K[et]),v+=Q[et],et>3&&(E(n,v,nt>>5&8191),v+=o[et])}else E(n,v,Y[nt]),v+=J[nt]}return E(n,v,Y[256]),v+J[256]},j=new e([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),N=new n(0),P=function(t,s,a,u,h,l){var c=l.z||t.length,v=new n(u+c+5*(1+Math.ceil(c/7e3))+h),d=v.subarray(u,v.length-h),g=l.l,y=7&(l.r||0);if(s){y&&(d[0]=l.r>>3);for(var m=j[s-1],b=m>>13,w=8191&m,x=(1<<a)-1,z=l.p||new r(32768),k=l.h||new r(x+1),M=Math.ceil(a/3),S=2*M,A=function(n){return(t[n]^t[n+1]<<M^t[n+2]<<S)&x},C=new e(25e3),I=new r(288),U=new r(32),F=0,E=0,Z=l.i||0,q=0,O=l.w||0,G=0;Z+2<c;++Z){var N=A(Z),P=32767&Z,B=k[N];if(z[P]=B,k[N]=P,O<=Z){var Y=c-Z;if((F>7e3||q>24576)&&(Y>423||!g)){y=H(t,d,0,C,I,U,E,q,G,Z-G,y),q=F=E=0,G=Z;for(var J=0;J<286;++J)I[J]=0;for(J=0;J<30;++J)U[J]=0}var K=2,Q=0,R=w,V=P-B&32767;if(Y>2&&N==A(Z-V))for(var W=Math.min(b,Y)-1,X=Math.min(32767,Z),$=Math.min(258,Y);V<=X&&--R&&P!=B;){if(t[Z+K]==t[Z+K-V]){for(var _=0;_<$&&t[Z+_]==t[Z+_-V];++_);if(_>K){if(K=_,Q=V,_>W)break;var tt=Math.min(V,_-2),nt=0;for(J=0;J<tt;++J){var rt=Z-V+J&32767,et=rt-z[rt]&32767;et>nt&&(nt=et,B=rt)}}}V+=(P=B)-(B=z[P])&32767}if(Q){C[q++]=268435456|f[K]<<18|p[Q];var it=31&f[K],ot=31&p[Q];E+=i[it]+o[ot],++I[257+it],++U[ot],O=Z+K,++F}else C[q++]=t[Z],++I[t[Z]]}}for(Z=Math.max(Z,O);Z<c;++Z)C[q++]=t[Z],++I[t[Z]];y=H(t,d,g,C,I,U,E,q,G,Z-G,y),g||(l.r=7&y|d[y/8|0]<<3,y-=7,l.h=k,l.p=z,l.i=Z,l.w=O)}else{for(Z=l.w||0;Z<c+g;Z+=65535){var st=Z+65535;st>=c&&(d[y/8|0]=g,st=c),y=L(d,y+1,t.subarray(Z,st))}l.i=c}return D(v,0,u+T(y)+h)},B=function(){for(var t=new Int32Array(256),n=0;n<256;++n){for(var r=n,e=9;--e;)r=(1&r&&-306674912)^r>>>1;t[n]=r}return t}(),Y=function(){var t=-1;return{p:function(n){for(var r=t,e=0;e<n.length;++e)r=B[255&r^n[e]]^r>>>8;t=r},d:function(){return~t}}},J=function(){var t=1,n=0;return{p:function(r){for(var e=t,i=n,o=0|r.length,s=0;s!=o;){for(var a=Math.min(s+2655,o);s<a;++s)i+=e+=r[s];e=(65535&e)+15*(e>>16),i=(65535&i)+15*(i>>16)}t=e,n=i},d:function(){return(255&(t%=65521))<<24|(65280&t)<<8|(255&(n%=65521))<<8|n>>8}}},K=function(t,r,e,i,o){if(!o&&(o={l:1},r.dictionary)){var s=r.dictionary.subarray(-32768),a=new n(s.length+t.length);a.set(s),a.set(t,s.length),t=a,o.w=s.length}return P(t,null==r.level?6:r.level,null==r.mem?o.l?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(t.length)))):20:12+r.mem,e,i,o)},Q=function(t,n){var r={};for(var e in t)r[e]=t[e];for(var e in n)r[e]=n[e];return r},R=function(t,n,r){for(var e=t(),i=""+t,o=i.slice(i.indexOf("[")+1,i.lastIndexOf("]")).replace(/\s+/g,"").split(","),s=0;s<e.length;++s){var a=e[s],u=o[s];if("function"==typeof a){n+=";"+u+"=";var h=""+a;if(a.prototype)if(-1!=h.indexOf("[native code]")){var f=h.indexOf(" ",8)+1;n+=h.slice(f,h.indexOf("(",f))}else for(var l in n+=h,a.prototype)n+=";"+u+".prototype."+l+"="+a.prototype[l];else n+=h}else r[u]=a}return n},V=[],W=function(t){var n=[];for(var r in t)t[r].buffer&&n.push((t[r]=new t[r].constructor(t[r])).buffer);return n},X=function(n,r,e,i){if(!V[e]){for(var o="",s={},a=n.length-1,u=0;u<a;++u)o=R(n[u],o,s);V[e]={c:R(n[a],o,s),e:s}}var h=Q({},V[e].e);return(0,t.default)(V[e].c+";onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage="+r+"}",e,h,W(h),i)},$=function(){return[n,r,e,i,o,s,h,c,x,k,v,C,y,M,S,A,T,D,I,U,Tt,it,ot]},_=function(){return[n,r,e,i,o,s,f,p,w,m,z,b,v,j,N,y,F,E,Z,q,O,G,L,H,T,D,P,K,kt,it]},tt=function(){return[pt,gt,ct,Y,B]},nt=function(){return[vt,dt]},rt=function(){return[yt,ct,J]},et=function(){return[mt]},it=function(t){return postMessage(t,[t.buffer])},ot=function(t){return t&&{out:t.size&&new n(t.size),dictionary:t.dictionary}},st=function(t,n,r,e,i,o){var s=X(r,e,i,(function(t,n){s.terminate(),o(t,n)}));return s.postMessage([t,n],n.consume?[t.buffer]:[]),function(){s.terminate()}},at=function(t){return t.ondata=function(t,n){return postMessage([t,n],[t.buffer])},function(n){n.data.length?(t.push(n.data[0],n.data[1]),postMessage([n.data[0].length])):t.flush()}},ut=function(t,n,r,e,i,o,s){var a,u=X(t,e,i,(function(t,r){t?(u.terminate(),n.ondata.call(n,t)):Array.isArray(r)?1==r.length?(n.queuedSize-=r[0],n.ondrain&&n.ondrain(r[0])):(r[1]&&u.terminate(),n.ondata.call(n,t,r[0],r[1])):s(r)}));u.postMessage(r),n.queuedSize=0,n.push=function(t,r){n.ondata||I(5),a&&n.ondata(I(4,0,1),null,!!r),n.queuedSize+=t.length,u.postMessage([t,a=r],[t.buffer])},n.terminate=function(){u.terminate()},o&&(n.flush=function(){u.postMessage([])})},ht=function(t,n){return t[n]|t[n+1]<<8},ft=function(t,n){return(t[n]|t[n+1]<<8|t[n+2]<<16|t[n+3]<<24)>>>0},lt=function(t,n){return ft(t,n)+4294967296*ft(t,n+4)},ct=function(t,n,r){for(;r;++n)t[n]=r,r>>>=8},pt=function(t,n){var r=n.filename;if(t[0]=31,t[1]=139,t[2]=8,t[8]=n.level<2?4:9==n.level?2:0,t[9]=3,0!=n.mtime&&ct(t,4,Math.floor(new Date(n.mtime||Date.now())/1e3)),r){t[3]=8;for(var e=0;e<=r.length;++e)t[e+10]=r.charCodeAt(e)}},vt=function(t){31==t[0]&&139==t[1]&&8==t[2]||I(6,"invalid gzip data");var n=t[3],r=10;4&n&&(r+=2+(t[10]|t[11]<<8));for(var e=(n>>3&1)+(n>>4&1);e>0;e-=!t[r++]);return r+(2&n)},dt=function(t){var n=t.length;return(t[n-4]|t[n-3]<<8|t[n-2]<<16|t[n-1]<<24)>>>0},gt=function(t){return 10+(t.filename?t.filename.length+1:0)},yt=function(t,n){var r=n.level,e=0==r?0:r<6?1:9==r?3:2;if(t[0]=120,t[1]=e<<6|(n.dictionary&&32),t[1]|=31-(t[0]<<8|t[1])%31,n.dictionary){var i=J();i.p(n.dictionary),ct(t,2,i.d())}},mt=function(t,n){return(8!=(15&t[0])||t[0]>>4>7||(t[0]<<8|t[1])%31)&&I(6,"invalid zlib data"),(t[1]>>5&1)==+!n&&I(6,"invalid zlib data: "+(32&t[1]?"need":"unexpected")+" dictionary"),2+(t[1]>>3&4)};function bt(t,n){return"function"==typeof t&&(n=t,t={}),this.ondata=n,t}var wt=function(){function t(t,r){if("function"==typeof t&&(r=t,t={}),this.ondata=r,this.o=t||{},this.s={l:0,i:32768,w:32768,z:32768},this.b=new n(98304),this.o.dictionary){var e=this.o.dictionary.subarray(-32768);this.b.set(e,32768-e.length),this.s.i=32768-e.length}}return t.prototype.p=function(t,n){this.ondata(K(t,this.o,0,0,this.s),n)},t.prototype.push=function(t,r){this.ondata||I(5),this.s.l&&I(4);var e=t.length+this.s.z;if(e>this.b.length){if(e>2*this.b.length-32768){var i=new n(-32768&e);i.set(this.b.subarray(0,this.s.z)),this.b=i}var o=this.b.length-this.s.z;this.b.set(t.subarray(0,o),this.s.z),this.s.z=this.b.length,this.p(this.b,!1),this.b.set(this.b.subarray(-32768)),this.b.set(t.subarray(o),32768),this.s.z=t.length-o+32768,this.s.i=32766,this.s.w=32768}else this.b.set(t,this.s.z),this.s.z+=t.length;this.s.l=1&r,(this.s.z>this.s.w+8191||r)&&(this.p(this.b,r||!1),this.s.w=this.s.i,this.s.i-=2)},t.prototype.flush=function(){this.ondata||I(5),this.s.l&&I(4),this.p(this.b,!1),this.s.w=this.s.i,this.s.i-=2},t}();_e.Deflate=wt;var xt=function(){return function(t,n){ut([_,function(){return[at,wt]}],this,bt.call(this,t,n),(function(t){var n=new wt(t.data);onmessage=at(n)}),6,1)}}();function zt(t,n,r){return r||(r=n,n={}),"function"!=typeof r&&I(7),st(t,n,[_],(function(t){return it(kt(t.data[0],t.data[1]))}),0,r)}function kt(t,n){return K(t,n||{},0,0)}_e.AsyncDeflate=xt,_e.deflate=zt,_e.deflateSync=kt;var Mt=function(){function t(t,r){"function"==typeof t&&(r=t,t={}),this.ondata=r;var e=t&&t.dictionary&&t.dictionary.subarray(-32768);this.s={i:0,b:e?e.length:0},this.o=new n(32768),this.p=new n(0),e&&this.o.set(e)}return t.prototype.e=function(t){if(this.ondata||I(5),this.d&&I(4),this.p.length){if(t.length){var r=new n(this.p.length+t.length);r.set(this.p),r.set(t,this.p.length),this.p=r}}else this.p=t},t.prototype.c=function(t){this.s.i=+(this.d=t||!1);var n=this.s.b,r=U(this.p,this.s,this.o);this.ondata(D(r,n,this.s.b),this.d),this.o=D(r,this.s.b-32768),this.s.b=this.o.length,this.p=D(this.p,this.s.p/8|0),this.s.p&=7},t.prototype.push=function(t,n){this.e(t),this.c(n)},t}();_e.Inflate=Mt;var St=function(){return function(t,n){ut([$,function(){return[at,Mt]}],this,bt.call(this,t,n),(function(t){var n=new Mt(t.data);onmessage=at(n)}),7,0)}}();function At(t,n,r){return r||(r=n,n={}),"function"!=typeof r&&I(7),st(t,n,[$],(function(t){return it(Tt(t.data[0],ot(t.data[1])))}),1,r)}function Tt(t,n){return U(t,{i:2},n&&n.out,n&&n.dictionary)}_e.AsyncInflate=St,_e.inflate=At,_e.inflateSync=Tt;var Dt=function(){function t(t,n){this.c=Y(),this.l=0,this.v=1,wt.call(this,t,n)}return t.prototype.push=function(t,n){this.c.p(t),this.l+=t.length,wt.prototype.push.call(this,t,n)},t.prototype.p=function(t,n){var r=K(t,this.o,this.v&&gt(this.o),n&&8,this.s);this.v&&(pt(r,this.o),this.v=0),n&&(ct(r,r.length-8,this.c.d()),ct(r,r.length-4,this.l)),this.ondata(r,n)},t.prototype.flush=function(){wt.prototype.flush.call(this)},t}();_e.Gzip=Dt,_e.Compress=Dt;var Ct=function(){return function(t,n){ut([_,tt,function(){return[at,wt,Dt]}],this,bt.call(this,t,n),(function(t){var n=new Dt(t.data);onmessage=at(n)}),8,1)}}();function It(t,n,r){return r||(r=n,n={}),"function"!=typeof r&&I(7),st(t,n,[_,tt,function(){return[Ut]}],(function(t){return it(Ut(t.data[0],t.data[1]))}),2,r)}function Ut(t,n){n||(n={});var r=Y(),e=t.length;r.p(t);var i=K(t,n,gt(n),8),o=i.length;return pt(i,n),ct(i,o-8,r.d()),ct(i,o-4,e),i}_e.AsyncGzip=Ct,_e.AsyncCompress=Ct,_e.gzip=It,_e.compress=It,_e.gzipSync=Ut,_e.compressSync=Ut;var Ft=function(){function t(t,n){this.v=1,this.r=0,Mt.call(this,t,n)}return t.prototype.push=function(t,r){if(Mt.prototype.e.call(this,t),this.r+=t.length,this.v){var e=this.p.subarray(this.v-1),i=e.length>3?vt(e):4;if(i>e.length){if(!r)return}else this.v>1&&this.onmember&&this.onmember(this.r-e.length);this.p=e.subarray(i),this.v=0}Mt.prototype.c.call(this,r),!this.s.f||this.s.l||r||(this.v=T(this.s.p)+9,this.s={i:0},this.o=new n(0),this.push(new n(0),r))},t}();_e.Gunzip=Ft;var Et=function(){return function(t,n){var r=this;ut([$,nt,function(){return[at,Mt,Ft]}],this,bt.call(this,t,n),(function(t){var n=new Ft(t.data);n.onmember=function(t){return postMessage(t)},onmessage=at(n)}),9,0,(function(t){return r.onmember&&r.onmember(t)}))}}();function Zt(t,n,r){return r||(r=n,n={}),"function"!=typeof r&&I(7),st(t,n,[$,nt,function(){return[qt]}],(function(t){return it(qt(t.data[0],t.data[1]))}),3,r)}function qt(t,r){var e=vt(t);return e+8>t.length&&I(6,"invalid gzip data"),U(t.subarray(e,-8),{i:2},r&&r.out||new n(dt(t)),r&&r.dictionary)}_e.AsyncGunzip=Et,_e.gunzip=Zt,_e.gunzipSync=qt;var Ot=function(){function t(t,n){this.c=J(),this.v=1,wt.call(this,t,n)}return t.prototype.push=function(t,n){this.c.p(t),wt.prototype.push.call(this,t,n)},t.prototype.p=function(t,n){var r=K(t,this.o,this.v&&(this.o.dictionary?6:2),n&&4,this.s);this.v&&(yt(r,this.o),this.v=0),n&&ct(r,r.length-4,this.c.d()),this.ondata(r,n)},t.prototype.flush=function(){wt.prototype.flush.call(this)},t}();_e.Zlib=Ot;var Gt=function(){return function(t,n){ut([_,rt,function(){return[at,wt,Ot]}],this,bt.call(this,t,n),(function(t){var n=new Ot(t.data);onmessage=at(n)}),10,1)}}();function Lt(t,n,r){return r||(r=n,n={}),"function"!=typeof r&&I(7),st(t,n,[_,rt,function(){return[Ht]}],(function(t){return it(Ht(t.data[0],t.data[1]))}),4,r)}function Ht(t,n){n||(n={});var r=J();r.p(t);var e=K(t,n,n.dictionary?6:2,4);return yt(e,n),ct(e,e.length-4,r.d()),e}_e.AsyncZlib=Gt,_e.zlib=Lt,_e.zlibSync=Ht;var jt=function(){function t(t,n){Mt.call(this,t,n),this.v=t&&t.dictionary?2:1}return t.prototype.push=function(t,n){if(Mt.prototype.e.call(this,t),this.v){if(this.p.length<6&&!n)return;this.p=this.p.subarray(mt(this.p,this.v-1)),this.v=0}n&&(this.p.length<4&&I(6,"invalid zlib data"),this.p=this.p.subarray(0,-4)),Mt.prototype.c.call(this,n)},t}();_e.Unzlib=jt;var Nt=function(){return function(t,n){ut([$,et,function(){return[at,Mt,jt]}],this,bt.call(this,t,n),(function(t){var n=new jt(t.data);onmessage=at(n)}),11,0)}}();function Pt(t,n,r){return r||(r=n,n={}),"function"!=typeof r&&I(7),st(t,n,[$,et,function(){return[Bt]}],(function(t){return it(Bt(t.data[0],ot(t.data[1])))}),5,r)}function Bt(t,n){return U(t.subarray(mt(t,n&&n.dictionary),-4),{i:2},n&&n.out,n&&n.dictionary)}_e.AsyncUnzlib=Nt,_e.unzlib=Pt,_e.unzlibSync=Bt;var Yt=function(){function t(t,n){this.o=bt.call(this,t,n)||{},this.G=Ft,this.I=Mt,this.Z=jt}return t.prototype.i=function(){var t=this;this.s.ondata=function(n,r){t.ondata(n,r)}},t.prototype.push=function(t,r){if(this.ondata||I(5),this.s)this.s.push(t,r);else{if(this.p&&this.p.length){var e=new n(this.p.length+t.length);e.set(this.p),e.set(t,this.p.length)}else this.p=t;this.p.length>2&&(this.s=31==this.p[0]&&139==this.p[1]&&8==this.p[2]?new this.G(this.o):8!=(15&this.p[0])||this.p[0]>>4>7||(this.p[0]<<8|this.p[1])%31?new this.I(this.o):new this.Z(this.o),this.i(),this.s.push(this.p,r),this.p=null)}},t}();_e.Decompress=Yt;var Jt=function(){function t(t,n){Yt.call(this,t,n),this.queuedSize=0,this.G=Et,this.I=St,this.Z=Nt}return t.prototype.i=function(){var t=this;this.s.ondata=function(n,r,e){t.ondata(n,r,e)},this.s.ondrain=function(n){t.queuedSize-=n,t.ondrain&&t.ondrain(n)}},t.prototype.push=function(t,n){this.queuedSize+=t.length,Yt.prototype.push.call(this,t,n)},t}();function Kt(t,n,r){return r||(r=n,n={}),"function"!=typeof r&&I(7),31==t[0]&&139==t[1]&&8==t[2]?Zt(t,n,r):8!=(15&t[0])||t[0]>>4>7||(t[0]<<8|t[1])%31?At(t,n,r):Pt(t,n,r)}function Qt(t,n){return 31==t[0]&&139==t[1]&&8==t[2]?qt(t,n):8!=(15&t[0])||t[0]>>4>7||(t[0]<<8|t[1])%31?Tt(t,n):Bt(t,n)}_e.AsyncDecompress=Jt,_e.decompress=Kt,_e.decompressSync=Qt;var Rt=function(t,r,e,i){for(var o in t){var s=t[o],a=r+o,u=i;Array.isArray(s)&&(u=Q(i,s[1]),s=s[0]),s instanceof n?e[a]=[s,u]:(e[a+="/"]=[new n(0),u],Rt(s,a,e,i))}},Vt="undefined"!=typeof TextEncoder&&new TextEncoder,Wt="undefined"!=typeof TextDecoder&&new TextDecoder,Xt=0;try{Wt.decode(N,{stream:!0}),Xt=1}catch(t){}var $t=function(t){for(var n="",r=0;;){var e=t[r++],i=(e>127)+(e>223)+(e>239);if(r+i>t.length)return{s:n,r:D(t,r-1)};i?3==i?(e=((15&e)<<18|(63&t[r++])<<12|(63&t[r++])<<6|63&t[r++])-65536,n+=String.fromCharCode(55296|e>>10,56320|1023&e)):n+=String.fromCharCode(1&i?(31&e)<<6|63&t[r++]:(15&e)<<12|(63&t[r++])<<6|63&t[r++]):n+=String.fromCharCode(e)}},_t=function(){function t(t){this.ondata=t,Xt?this.t=new TextDecoder:this.p=N}return t.prototype.push=function(t,r){if(this.ondata||I(5),r=!!r,this.t)return this.ondata(this.t.decode(t,{stream:!0}),r),void(r&&(this.t.decode().length&&I(8),this.t=null));this.p||I(4);var e=new n(this.p.length+t.length);e.set(this.p),e.set(t,this.p.length);var i=$t(e),o=i.s,s=i.r;r?(s.length&&I(8),this.p=null):this.p=s,this.ondata(o,r)},t}();_e.DecodeUTF8=_t;var tn=function(){function t(t){this.ondata=t}return t.prototype.push=function(t,n){this.ondata||I(5),this.d&&I(4),this.ondata(nn(t),this.d=n||!1)},t}();function nn(t,r){if(r){for(var e=new n(t.length),i=0;i<t.length;++i)e[i]=t.charCodeAt(i);return e}if(Vt)return Vt.encode(t);var o=t.length,s=new n(t.length+(t.length>>1)),a=0,u=function(t){s[a++]=t};for(i=0;i<o;++i){if(a+5>s.length){var h=new n(a+8+(o-i<<1));h.set(s),s=h}var f=t.charCodeAt(i);f<128||r?u(f):f<2048?(u(192|f>>6),u(128|63&f)):f>55295&&f<57344?(u(240|(f=65536+(1047552&f)|1023&t.charCodeAt(++i))>>18),u(128|f>>12&63),u(128|f>>6&63),u(128|63&f)):(u(224|f>>12),u(128|f>>6&63),u(128|63&f))}return D(s,0,a)}function rn(t,n){if(n){for(var r="",e=0;e<t.length;e+=16384)r+=String.fromCharCode.apply(null,t.subarray(e,e+16384));return r}if(Wt)return Wt.decode(t);var i=$t(t),o=i.s;return(r=i.r).length&&I(8),o}_e.EncodeUTF8=tn,_e.strToU8=nn,_e.strFromU8=rn;var en=function(t){return 1==t?3:t<6?2:9==t?1:0},on=function(t,n){return n+30+ht(t,n+26)+ht(t,n+28)},sn=function(t,n,r){var e=ht(t,n+28),i=rn(t.subarray(n+46,n+46+e),!(2048&ht(t,n+8))),o=n+46+e,s=ft(t,n+20),a=r&&4294967295==s?an(t,o):[s,ft(t,n+24),ft(t,n+42)],u=a[0],h=a[1],f=a[2];return[ht(t,n+10),u,h,i,o+ht(t,n+30)+ht(t,n+32),f]},an=function(t,n){for(;1!=ht(t,n);n+=4+ht(t,n+2));return[lt(t,n+12),lt(t,n+4),lt(t,n+20)]},un=function(t){var n=0;if(t)for(var r in t){var e=t[r].length;e>65535&&I(9),n+=e+4}return n},hn=function(t,n,r,e,i,o,s,a){var u=e.length,h=r.extra,f=a&&a.length,l=un(h);ct(t,n,null!=s?33639248:67324752),n+=4,null!=s&&(t[n++]=20,t[n++]=r.os),t[n]=20,n+=2,t[n++]=r.flag<<1|(o<0&&8),t[n++]=i&&8,t[n++]=255&r.compression,t[n++]=r.compression>>8;var c=new Date(null==r.mtime?Date.now():r.mtime),p=c.getFullYear()-1980;if((p<0||p>119)&&I(10),ct(t,n,p<<25|c.getMonth()+1<<21|c.getDate()<<16|c.getHours()<<11|c.getMinutes()<<5|c.getSeconds()>>1),n+=4,-1!=o&&(ct(t,n,r.crc),ct(t,n+4,o<0?-o-2:o),ct(t,n+8,r.size)),ct(t,n+12,u),ct(t,n+14,l),n+=16,null!=s&&(ct(t,n,f),ct(t,n+6,r.attrs),ct(t,n+10,s),n+=14),t.set(e,n),n+=u,l)for(var v in h){var d=h[v],g=d.length;ct(t,n,+v),ct(t,n+2,g),t.set(d,n+4),n+=4+g}return f&&(t.set(a,n),n+=f),n},fn=function(t,n,r,e,i){ct(t,n,101010256),ct(t,n+8,r),ct(t,n+10,r),ct(t,n+12,e),ct(t,n+16,i)},ln=function(){function t(t){this.filename=t,this.c=Y(),this.size=0,this.compression=0}return t.prototype.process=function(t,n){this.ondata(null,t,n)},t.prototype.push=function(t,n){this.ondata||I(5),this.c.p(t),this.size+=t.length,n&&(this.crc=this.c.d()),this.process(t,n||!1)},t}();_e.ZipPassThrough=ln;var cn=function(){function t(t,n){var r=this;n||(n={}),ln.call(this,t),this.d=new wt(n,(function(t,n){r.ondata(null,t,n)})),this.compression=8,this.flag=en(n.level)}return t.prototype.process=function(t,n){try{this.d.push(t,n)}catch(t){this.ondata(t,null,n)}},t.prototype.push=function(t,n){ln.prototype.push.call(this,t,n)},t}();_e.ZipDeflate=cn;var pn=function(){function t(t,n){var r=this;n||(n={}),ln.call(this,t),this.d=new xt(n,(function(t,n,e){r.ondata(t,n,e)})),this.compression=8,this.flag=en(n.level),this.terminate=this.d.terminate}return t.prototype.process=function(t,n){this.d.push(t,n)},t.prototype.push=function(t,n){ln.prototype.push.call(this,t,n)},t}();_e.AsyncZipDeflate=pn;var vn=function(){function t(t){this.ondata=t,this.u=[],this.d=1}return t.prototype.add=function(t){var r=this;if(this.ondata||I(5),2&this.d)this.ondata(I(4+8*(1&this.d),0,1),null,!1);else{var e=nn(t.filename),i=e.length,o=t.comment,s=o&&nn(o),a=i!=t.filename.length||s&&o.length!=s.length,u=i+un(t.extra)+30;i>65535&&this.ondata(I(11,0,1),null,!1);var h=new n(u);hn(h,0,t,e,a,-1);var f=[h],l=function(){for(var t=0,n=f;t<n.length;t++)r.ondata(null,n[t],!1);f=[]},c=this.d;this.d=0;var p=this.u.length,v=Q(t,{f:e,u:a,o:s,t:function(){t.terminate&&t.terminate()},r:function(){if(l(),c){var t=r.u[p+1];t?t.r():r.d=1}c=1}}),d=0;t.ondata=function(e,i,o){if(e)r.ondata(e,i,o),r.terminate();else if(d+=i.length,f.push(i),o){var s=new n(16);ct(s,0,134695760),ct(s,4,t.crc),ct(s,8,d),ct(s,12,t.size),f.push(s),v.c=d,v.b=u+d+16,v.crc=t.crc,v.size=t.size,c&&v.r(),c=1}else c&&l()},this.u.push(v)}},t.prototype.end=function(){var t=this;2&this.d?this.ondata(I(4+8*(1&this.d),0,1),null,!0):(this.d?this.e():this.u.push({r:function(){1&t.d&&(t.u.splice(-1,1),t.e())},t:function(){}}),this.d=3)},t.prototype.e=function(){for(var t=0,r=0,e=0,i=0,o=this.u;i<o.length;i++)e+=46+(h=o[i]).f.length+un(h.extra)+(h.o?h.o.length:0);for(var s=new n(e+22),a=0,u=this.u;a<u.length;a++){var h;hn(s,t,h=u[a],h.f,h.u,-h.c-2,r,h.o),t+=46+h.f.length+un(h.extra)+(h.o?h.o.length:0),r+=h.b}fn(s,t,this.u.length,e,r),this.ondata(null,s,!0),this.d=2},t.prototype.terminate=function(){for(var t=0,n=this.u;t<n.length;t++)n[t].t();this.d=2},t}();function dn(t,r,e){e||(e=r,r={}),"function"!=typeof e&&I(7);var i={};Rt(t,"",i,r);var o=Object.keys(i),s=o.length,a=0,u=0,h=s,f=Array(s),l=[],c=function(){for(var t=0;t<l.length;++t)l[t]()},p=function(t,n){xn((function(){e(t,n)}))};xn((function(){p=e}));var v=function(){var t=new n(u+22),r=a,e=u-a;u=0;for(var i=0;i<h;++i){var o=f[i];try{var s=o.c.length;hn(t,u,o,o.f,o.u,s);var l=30+o.f.length+un(o.extra),c=u+l;t.set(o.c,c),hn(t,a,o,o.f,o.u,s,u,o.m),a+=16+l+(o.m?o.m.length:0),u=c+s}catch(t){return p(t,null)}}fn(t,a,f.length,e,r),p(null,t)};s||v();for(var d=function(t){var n=o[t],r=i[n],e=r[0],h=r[1],d=Y(),g=e.length;d.p(e);var y=nn(n),m=y.length,b=h.comment,w=b&&nn(b),x=w&&w.length,z=un(h.extra),k=0==h.level?0:8,M=function(r,e){if(r)c(),p(r,null);else{var i=e.length;f[t]=Q(h,{size:g,crc:d.d(),c:e,f:y,m:w,u:m!=n.length||w&&b.length!=x,compression:k}),a+=30+m+z+i,u+=76+2*(m+z)+(x||0)+i,--s||v()}};if(m>65535&&M(I(11,0,1),null),k)if(g<16e4)try{M(null,kt(e,h))}catch(t){M(t,null)}else l.push(zt(e,h,M));else M(null,e)},g=0;g<h;++g)d(g);return c}function gn(t,r){r||(r={});var e={},i=[];Rt(t,"",e,r);var o=0,s=0;for(var a in e){var u=e[a],h=u[0],f=u[1],l=0==f.level?0:8,c=(M=nn(a)).length,p=f.comment,v=p&&nn(p),d=v&&v.length,g=un(f.extra);c>65535&&I(11);var y=l?kt(h,f):h,m=y.length,b=Y();b.p(h),i.push(Q(f,{size:h.length,crc:b.d(),c:y,f:M,m:v,u:c!=a.length||v&&p.length!=d,o:o,compression:l})),o+=30+c+g+m,s+=76+2*(c+g)+(d||0)+m}for(var w=new n(s+22),x=o,z=s-o,k=0;k<i.length;++k){var M;hn(w,(M=i[k]).o,M,M.f,M.u,M.c.length);var S=30+M.f.length+un(M.extra);w.set(M.c,M.o+S),hn(w,o,M,M.f,M.u,M.c.length,M.o,M.m),o+=16+S+(M.m?M.m.length:0)}return fn(w,o,i.length,z,x),w}_e.Zip=vn,_e.zip=dn,_e.zipSync=gn;var yn=function(){function t(){}return t.prototype.push=function(t,n){this.ondata(null,t,n)},t.compression=0,t}();_e.UnzipPassThrough=yn;var mn=function(){function t(){var t=this;this.i=new Mt((function(n,r){t.ondata(null,n,r)}))}return t.prototype.push=function(t,n){try{this.i.push(t,n)}catch(t){this.ondata(t,null,n)}},t.compression=8,t}();_e.UnzipInflate=mn;var bn=function(){function t(t,n){var r=this;n<32e4?this.i=new Mt((function(t,n){r.ondata(null,t,n)})):(this.i=new St((function(t,n,e){r.ondata(t,n,e)})),this.terminate=this.i.terminate)}return t.prototype.push=function(t,n){this.i.terminate&&(t=D(t,0)),this.i.push(t,n)},t.compression=8,t}();_e.AsyncUnzipInflate=bn;var wn=function(){function t(t){this.onfile=t,this.k=[],this.o={0:yn},this.p=N}return t.prototype.push=function(t,r){var e=this;if(this.onfile||I(5),this.p||I(4),this.c>0){var i=Math.min(this.c,t.length),o=t.subarray(0,i);if(this.c-=i,this.d?this.d.push(o,!this.c):this.k[0].push(o),(t=t.subarray(i)).length)return this.push(t,r)}else{var s=0,a=0,u=void 0,h=void 0;this.p.length?t.length?((h=new n(this.p.length+t.length)).set(this.p),h.set(t,this.p.length)):h=this.p:h=t;for(var f=h.length,l=this.c,c=l&&this.d,p=function(){var t,n=ft(h,a);if(67324752==n){s=1,u=a,v.d=null,v.c=0;var r=ht(h,a+6),i=ht(h,a+8),o=2048&r,c=8&r,p=ht(h,a+26),d=ht(h,a+28);if(f>a+30+p+d){var g=[];v.k.unshift(g),s=2;var y,m=ft(h,a+18),b=ft(h,a+22),w=rn(h.subarray(a+30,a+=30+p),!o);4294967295==m?(t=c?[-2]:an(h,a),m=t[0],b=t[1]):c&&(m=-1),a+=d,v.c=m;var x={name:w,compression:i,start:function(){if(x.ondata||I(5),m){var t=e.o[i];t||x.ondata(I(14,"unknown compression type "+i,1),null,!1),(y=m<0?new t(w):new t(w,m,b)).ondata=function(t,n,r){x.ondata(t,n,r)};for(var n=0,r=g;n<r.length;n++)y.push(r[n],!1);e.k[0]==g&&e.c?e.d=y:y.push(N,!0)}else x.ondata(null,N,!0)},terminate:function(){y&&y.terminate&&y.terminate()}};m>=0&&(x.size=m,x.originalSize=b),v.onfile(x)}return"break"}if(l){if(134695760==n)return u=a+=12+(-2==l&&8),s=3,v.c=0,"break";if(33639248==n)return u=a-=4,s=3,v.c=0,"break"}},v=this;a<f-4&&"break"!==p();++a);if(this.p=N,l<0){var d=h.subarray(0,s?u-12-(-2==l&&8)-(134695760==ft(h,u-16)&&4):a);c?c.push(d,!!s):this.k[+(2==s)].push(d)}if(2&s)return this.push(h.subarray(a),r);this.p=h.subarray(a)}r&&(this.c&&I(13),this.p=null)},t.prototype.register=function(t){this.o[t.compression]=t},t}();_e.Unzip=wn;var xn="function"==typeof queueMicrotask?queueMicrotask:"function"==typeof setTimeout?setTimeout:function(t){t()};function zn(t,r,e){e||(e=r,r={}),"function"!=typeof e&&I(7);var i=[],o=function(){for(var t=0;t<i.length;++t)i[t]()},s={},a=function(t,n){xn((function(){e(t,n)}))};xn((function(){a=e}));for(var u=t.length-22;101010256!=ft(t,u);--u)if(!u||t.length-u>65558)return a(I(13,0,1),null),o;var h=ht(t,u+8);if(h){var f=h,l=ft(t,u+16),c=4294967295==l||65535==f;if(c){var p=ft(t,u-12);(c=101075792==ft(t,p))&&(f=h=ft(t,p+32),l=ft(t,p+48))}for(var v=r&&r.filter,d=function(r){var e=sn(t,l,c),u=e[0],f=e[1],p=e[2],d=e[3],g=e[4],y=on(t,e[5]);l=g;var m=function(t,n){t?(o(),a(t,null)):(n&&(s[d]=n),--h||a(null,s))};if(!v||v({name:d,size:f,originalSize:p,compression:u}))if(u)if(8==u){var b=t.subarray(y,y+f);if(p<524288||f>.8*p)try{m(null,Tt(b,{out:new n(p)}))}catch(t){m(t,null)}else i.push(At(b,{size:p},m))}else m(I(14,"unknown compression type "+u,1),null);else m(null,D(t,y,y+f));else m(null,null)},g=0;g<f;++g)d()}else a(null,{});return o}function kn(t,r){for(var e={},i=t.length-22;101010256!=ft(t,i);--i)(!i||t.length-i>65558)&&I(13);var o=ht(t,i+8);if(!o)return{};var s=ft(t,i+16),a=4294967295==s||65535==o;if(a){var u=ft(t,i-12);(a=101075792==ft(t,u))&&(o=ft(t,u+32),s=ft(t,u+48))}for(var h=r&&r.filter,f=0;f<o;++f){var l=sn(t,s,a),c=l[0],p=l[1],v=l[2],d=l[3],g=l[4],y=on(t,l[5]);s=g,h&&!h({name:d,size:p,originalSize:v,compression:c})||(c?8==c?e[d]=Tt(t.subarray(y,y+p),{out:new n(v)}):I(14,"unknown compression type "+c):e[d]=D(t,y,y+p))}return e}_e.unzip=zn,_e.unzipSync=kn;return _e});
\ No newline at end of file
diff --git a/node_modules/html2canvas/CHANGELOG.md b/node_modules/html2canvas/CHANGELOG.md
new file mode 100644
index 0000000..3e16e58
--- /dev/null
+++ b/node_modules/html2canvas/CHANGELOG.md
@@ -0,0 +1,566 @@
+# Changelog
+
+All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+
+## [1.4.1](https://github.com/niklasvh/html2canvas/compare/v1.4.0...v1.4.1) (2022-01-22)
+
+
+### deps
+
+* fix source maps (#2812) ([67c5e8d](https://github.com/niklasvh/html2canvas/commit/67c5e8dec4b2af9260a2b5b75b3399495fd1fee9)), closes [#2812](https://github.com/niklasvh/html2canvas/issues/2812)
+
+### feat
+
+* add support for <video> elements (#2788) ([181d1b1](https://github.com/niklasvh/html2canvas/commit/181d1b1103910d6e1b5277d5c007fc5e3006c6bf)), closes [#2788](https://github.com/niklasvh/html2canvas/issues/2788)
+
+### fix
+
+* Properties x and y of BoundingRect is undefined in old browser (#2797) ([e587a82](https://github.com/niklasvh/html2canvas/commit/e587a82dca01d9ada78cae34fd1bdb934e547f9b)), closes [#2797](https://github.com/niklasvh/html2canvas/issues/2797)
+* source maps (#2787) ([46db867](https://github.com/niklasvh/html2canvas/commit/46db86755f064828559a4b0b37310f3ae94f5494)), closes [#2787](https://github.com/niklasvh/html2canvas/issues/2787)
+
+
+
+# [1.4.0](https://github.com/niklasvh/html2canvas/compare/v1.3.4...v1.4.0) (2022-01-01)
+
+
+### feat
+
+* use native text segmenter where available (#2782) ([6521a48](https://github.com/niklasvh/html2canvas/commit/6521a487d78172f7179f7c973c1a3af40eb92009)), closes [#2782](https://github.com/niklasvh/html2canvas/issues/2782)
+
+### fix
+
+* adopted stylesheets (#2785) ([74696fa](https://github.com/niklasvh/html2canvas/commit/74696faf47c07b48b9c9587db0b999da1c08a8be)), closes [#2785](https://github.com/niklasvh/html2canvas/issues/2785)
+* ios text wrapping with 0 width rect (#2786) ([0476d06](https://github.com/niklasvh/html2canvas/commit/0476d065158c33d2020a9f602b3043e5e2f90c75)), closes [#2786](https://github.com/niklasvh/html2canvas/issues/2786)
+* reduce SLICE_STACK_SIZE to 50k (#2784) ([1cc853a](https://github.com/niklasvh/html2canvas/commit/1cc853a3186853eaca00af060f651697dc3497a9)), closes [#2784](https://github.com/niklasvh/html2canvas/issues/2784)
+
+
+
+## [1.3.4](https://github.com/niklasvh/html2canvas/compare/v1.3.3...v1.3.4) (2021-12-29)
+
+
+### ci
+
+* add ios 15.0 testing (#2780) ([d922207](https://github.com/niklasvh/html2canvas/commit/d9222075daaed08884491b0563fc899ee0ced731)), closes [#2780](https://github.com/niklasvh/html2canvas/issues/2780)
+
+### fix
+
+* ios 15 font rendering crash (#2645) ([ba2b1cd](https://github.com/niklasvh/html2canvas/commit/ba2b1cd8e9a9d7932675d7abffce1526a609e769)), closes [#2645](https://github.com/niklasvh/html2canvas/issues/2645)
+
+
+
+## [1.3.3](https://github.com/niklasvh/html2canvas/compare/v1.3.2...v1.3.3) (2021-11-23)
+
+
+### ci
+
+* fix macos action runners (#2757) ([ed57781](https://github.com/niklasvh/html2canvas/commit/ed577815949b6a565df54f2101cf6f0fb731c290)), closes [#2757](https://github.com/niklasvh/html2canvas/issues/2757)
+
+### fix
+
+* "offsets" text when font is big ([fd22a01](https://github.com/niklasvh/html2canvas/commit/fd22a01a3c9e39293f47caaed0c0e13d2dc8170c))
+* const enums (#2651) ([eeda86b](https://github.com/niklasvh/html2canvas/commit/eeda86bd5e81fb4e97675fe9bee3d4d15899997f)), closes [#2651](https://github.com/niklasvh/html2canvas/issues/2651)
+
+
+
+## [1.3.2](https://github.com/niklasvh/html2canvas/compare/v1.3.1...v1.3.2) (2021-08-15)
+
+
+### docs
+
+* add warning for webgl cloning with preserveDrawingBuffer=false (#2661) ([01ed879](https://github.com/niklasvh/html2canvas/commit/01ed87907ad9c7688880e2c5cb8ebc22ef73a4d8)), closes [#2661](https://github.com/niklasvh/html2canvas/issues/2661)
+* include src files on www (#2660) ([58ff000](https://github.com/niklasvh/html2canvas/commit/58ff0003f77d825ac027eeec95fa80c0123eaf8f)), closes [#2660](https://github.com/niklasvh/html2canvas/issues/2660)
+
+### feat
+
+* add support for data-html2canvas-debug property for debugging (#2658) ([cd0d725](https://github.com/niklasvh/html2canvas/commit/cd0d7258c3a93f2989d5d9ec0244ba2763ea2d23)), closes [#2658](https://github.com/niklasvh/html2canvas/issues/2658)
+
+### fix
+
+* disable transition properties (#2659) ([f143166](https://github.com/niklasvh/html2canvas/commit/f1431665513e0a4636fb167a241f4a0571ba728a)), closes [#2659](https://github.com/niklasvh/html2canvas/issues/2659)
+* overflows with absolutely positioned content (#2663) ([38c6829](https://github.com/niklasvh/html2canvas/commit/38c682955a9299ca7785af71d8f251df799405b0)), closes [#2663](https://github.com/niklasvh/html2canvas/issues/2663)
+
+
+
+## [1.3.1](https://github.com/niklasvh/html2canvas/compare/v1.3.0...v1.3.1) (2021-08-14)
+
+
+### fix
+
+* multi arg transition/animation duration (#2657) ([1b55ed5](https://github.com/niklasvh/html2canvas/commit/1b55ed5668dcbbe1c6d8d7e94736d8f2da2d31c5)), closes [#2657](https://github.com/niklasvh/html2canvas/issues/2657)
+
+
+
+# [1.3.0](https://github.com/niklasvh/html2canvas/compare/v1.2.2...v1.3.0) (2021-08-13)
+
+
+### feat
+
+* add rtl render support (#2653) ([6947982](https://github.com/niklasvh/html2canvas/commit/694798284838b16882e648914da0905818aa366c)), closes [#2653](https://github.com/niklasvh/html2canvas/issues/2653)
+* correctly break graphemes (#2652) ([437b367](https://github.com/niklasvh/html2canvas/commit/437b367d3ba9dfd7f9a4c8042ac8d00208c09770)), closes [#2652](https://github.com/niklasvh/html2canvas/issues/2652)
+
+### fix
+
+* correctly handle allowTaint canvas cloning (#2649) ([c378e22](https://github.com/niklasvh/html2canvas/commit/c378e220694c14cb7b3b4b8650a7757f8fc23c7a)), closes [#2649](https://github.com/niklasvh/html2canvas/issues/2649)
+* finish animation/transitions for elements (#2632) ([969638f](https://github.com/niklasvh/html2canvas/commit/969638fb94a0a14c64a667fa6e5689f79d9f1044)), closes [#2632](https://github.com/niklasvh/html2canvas/issues/2632)
+
+### test
+
+* add letter-spacing test for zwj emoji (#2650) ([f919204](https://github.com/niklasvh/html2canvas/commit/f919204efa06af219f155ca279f96124bb92862b)), closes [#2650](https://github.com/niklasvh/html2canvas/issues/2650)
+
+
+
+## [1.2.2](https://github.com/niklasvh/html2canvas/compare/v1.2.1...v1.2.2) (2021-08-10)
+
+
+### ci
+
+* add ios15 target (#2564) ([e429e04](https://github.com/niklasvh/html2canvas/commit/e429e0443adf5c7ca3041b97a8157b8911302206)), closes [#2564](https://github.com/niklasvh/html2canvas/issues/2564)
+
+### docs
+
+* update test previewer (#2637) ([7a06d0c](https://github.com/niklasvh/html2canvas/commit/7a06d0c2c2f3b8a1d1a8a85c540f8288b782e8c6)), closes [#2637](https://github.com/niklasvh/html2canvas/issues/2637)
+
+### fix
+
+* parsing counter content in pseudo element (#2640) ([1941b9e](https://github.com/niklasvh/html2canvas/commit/1941b9e0acfd9243da0beaf70e1643cab1b4a963)), closes [#2640](https://github.com/niklasvh/html2canvas/issues/2640)
+* radial gradient ry check (#2631) ([a0dd38a](https://github.com/niklasvh/html2canvas/commit/a0dd38a8be4e540ae1c1f4b4e41f6c386f3e454f)), closes [#2631](https://github.com/niklasvh/html2canvas/issues/2631)
+* test for ios range line break error (#2635) ([f43f942](https://github.com/niklasvh/html2canvas/commit/f43f942fcd793dde9cdc6c0438f379ec3c05c405)), closes [#2635](https://github.com/niklasvh/html2canvas/issues/2635)
+
+### test
+
+* large base64 encoded background (#2636) ([e36408a](https://github.com/niklasvh/html2canvas/commit/e36408ad030fe31acd9969a37fe24c1621c0bd04)), closes [#2636](https://github.com/niklasvh/html2canvas/issues/2636)
+
+
+
+## [1.2.1](https://github.com/niklasvh/html2canvas/compare/v1.2.0...v1.2.1) (2021-08-05)
+
+
+### fix
+
+* none image (#2627) ([6651fc6](https://github.com/niklasvh/html2canvas/commit/6651fc6789d5902d171dc53b4094887870433018)), closes [#2627](https://github.com/niklasvh/html2canvas/issues/2627)
+* type import that is only available ts 3.8 or higher (#2629) ([c5c6fa0](https://github.com/niklasvh/html2canvas/commit/c5c6fa00d71f36ef963ba5170ebc7b668d39c407)), closes [#2629](https://github.com/niklasvh/html2canvas/issues/2629)
+
+
+
+# [1.2.0](https://github.com/niklasvh/html2canvas/compare/v1.1.5...v1.2.0) (2021-08-04)
+
+
+### fix
+
+* element cropping & scrolling (#2625) ([878e37a](https://github.com/niklasvh/html2canvas/commit/878e37a24272d0412fe589975ef8eed931c56e0b)), closes [#2625](https://github.com/niklasvh/html2canvas/issues/2625)
+* overflow-wrap break-word (#2626) ([95a46b0](https://github.com/niklasvh/html2canvas/commit/95a46b00c53563722c035a0e45fdf5fb507275e4)), closes [#2626](https://github.com/niklasvh/html2canvas/issues/2626)
+
+### test
+
+* element with scrolled window (#2624) ([1338c7b](https://github.com/niklasvh/html2canvas/commit/1338c7b203535d53509416358d74014200a994eb)), closes [#2624](https://github.com/niklasvh/html2canvas/issues/2624)
+
+
+
+## [1.1.5](https://github.com/niklasvh/html2canvas/compare/v1.1.4...v1.1.5) (2021-08-02)
+
+
+### docs
+
+* update README to github discussion Q/A ([5dea36b](https://github.com/niklasvh/html2canvas/commit/5dea36bd6964164e8ba3f8780309e792f5d16255))
+
+### fix
+
+* emoji line breaking (fix #1813) (#2621) ([7d788c6](https://github.com/niklasvh/html2canvas/commit/7d788c6f3d221b87f6b59fcda8517731340b2d1f)), closes [#1813](https://github.com/niklasvh/html2canvas/issues/1813) [#2621](https://github.com/niklasvh/html2canvas/issues/2621) [#1813](https://github.com/niklasvh/html2canvas/issues/1813)
+* natural sizes for images with srcset (#2622) ([96e23d1](https://github.com/niklasvh/html2canvas/commit/96e23d185198b7131cf0cfa31c14c165790464e9)), closes [#2622](https://github.com/niklasvh/html2canvas/issues/2622)
+
+
+
+## [1.1.4](https://github.com/niklasvh/html2canvas/compare/v1.1.3...v1.1.4) (2021-07-15)
+
+
+### feat
+
+* add support for webkit-text-stroke and paint-order (#2591) ([522e5aa](https://github.com/niklasvh/html2canvas/commit/522e5aac5fdad090953d095b5d558053a5e2d43d)), closes [#2591](https://github.com/niklasvh/html2canvas/issues/2591)
+
+### fix
+
+* don't copy 'all' css property (#2586) ([fa60716](https://github.com/niklasvh/html2canvas/commit/fa60716d07ed590ec64543a586a7960cbc8557df)), closes [#2586](https://github.com/niklasvh/html2canvas/issues/2586)
+* svg d path getting truncated on copy (#2589) ([dd6d885](https://github.com/niklasvh/html2canvas/commit/dd6d8856eca820a13a0990c467b9e531433fd4a9)), closes [#2589](https://github.com/niklasvh/html2canvas/issues/2589)
+* text position for form elements and list markers (#2588) ([cd99f11](https://github.com/niklasvh/html2canvas/commit/cd99f11b1b9eb1260a548a63e2a370a0a5ddafa0)), closes [#2588](https://github.com/niklasvh/html2canvas/issues/2588)
+* this.canvas.ownerDocument is undefined (#2590) ([45efe54](https://github.com/niklasvh/html2canvas/commit/45efe54da8145f97b9ee0463e686103280e3c8b1)), closes [#2590](https://github.com/niklasvh/html2canvas/issues/2590)
+* word-break seperators (#2593) ([e9f7f48](https://github.com/niklasvh/html2canvas/commit/e9f7f48d571304be14610a181feedca3c3b42864)), closes [#2593](https://github.com/niklasvh/html2canvas/issues/2593)
+
+### test
+
+* refactor language tests (#2594) ([4c360fc](https://github.com/niklasvh/html2canvas/commit/4c360fc1f059f4dcab71a79f9dc8a5b2e25411ea)), closes [#2594](https://github.com/niklasvh/html2canvas/issues/2594)
+* update box-shadow with radius ([578bb77](https://github.com/niklasvh/html2canvas/commit/578bb771bfeb7e81362e9e355d6cc9ae910e3920))
+
+
+
+## [1.1.3](https://github.com/niklasvh/html2canvas/compare/v1.1.2...v1.1.3) (2021-07-14)
+
+
+### feat
+
+* allow access to reference element in onclone (#2584) ([58b4591](https://github.com/niklasvh/html2canvas/commit/58b45911741c0dbbccd462b2976560bb3999eaef)), closes [#2584](https://github.com/niklasvh/html2canvas/issues/2584)
+* support for custom and slot elements (#2581) ([acb4cd2](https://github.com/niklasvh/html2canvas/commit/acb4cd24b85527908c02a60794768949578678f0)), closes [#2581](https://github.com/niklasvh/html2canvas/issues/2581)
+
+### fix
+
+* iframe load to ensure images are loaded (#2577) ([eeb5a3e](https://github.com/niklasvh/html2canvas/commit/eeb5a3ea1d6c94e0f6dcfd40695eb88ebb3e0041)), closes [#2577](https://github.com/niklasvh/html2canvas/issues/2577)
+* image blob rendering ([1acdc82](https://github.com/niklasvh/html2canvas/commit/1acdc827a4e05933c2f7c9558405c66b7cd82f58))
+* responsive svg images (#2583) ([92fa448](https://github.com/niklasvh/html2canvas/commit/92fa448913192d5e4e82bfe14f6644b669d4e6ef)), closes [#2583](https://github.com/niklasvh/html2canvas/issues/2583)
+
+### test
+
+* add test cases for text-stroke and textarea from (#1540 and #2132) (#2585) ([1d00bfe](https://github.com/niklasvh/html2canvas/commit/1d00bfe175d51e663d0bae88b6dbd10a266a71f1)), closes [#1540](https://github.com/niklasvh/html2canvas/issues/1540) [#2132](https://github.com/niklasvh/html2canvas/issues/2132) [#2585](https://github.com/niklasvh/html2canvas/issues/2585)
+
+
+
+## [1.1.2](https://github.com/niklasvh/html2canvas/compare/v1.1.1...v1.1.2) (2021-07-13)
+
+
+### ci
+
+* implement screenshot diffing (#2571) ([e29af58](https://github.com/niklasvh/html2canvas/commit/e29af586618125bbad10ad6bee3d69fddbc5d22a)), closes [#2571](https://github.com/niklasvh/html2canvas/issues/2571)
+
+### fix
+
+* logger unique names (#2575) ([1715854](https://github.com/niklasvh/html2canvas/commit/171585491dd1bee4f30691328bd22e978f3ac79e)), closes [#2575](https://github.com/niklasvh/html2canvas/issues/2575)
+* text-shadow position with baseline (#2576) ([439e365](https://github.com/niklasvh/html2canvas/commit/439e365ea8c703b528778a268dcfc3bf9ccad6a9)), closes [#2576](https://github.com/niklasvh/html2canvas/issues/2576)
+
+
+
+## [1.1.1](https://github.com/niklasvh/html2canvas/compare/v1.1.0...v1.1.1) (2021-07-12)
+
+
+### fix
+
+* allow proxy url with parameters (#2100) ([a4a3ce8](https://github.com/niklasvh/html2canvas/commit/a4a3ce8a2eb6a4f43f1bc9a7935eb16f2b98a3cd)), closes [#2100](https://github.com/niklasvh/html2canvas/issues/2100)
+* crash on background-size with calc() (fix #2469) (#2569) ([084017a](https://github.com/niklasvh/html2canvas/commit/084017a67319a993d73c6bdf612dd8532f1b8dbe)), closes [#2469](https://github.com/niklasvh/html2canvas/issues/2469) [#2569](https://github.com/niklasvh/html2canvas/issues/2569)
+* handle unhandled promise rejections (#2568) ([4555940](https://github.com/niklasvh/html2canvas/commit/4555940d0bc17b7fd9327dd0164c382a3dbf1858)), closes [#2568](https://github.com/niklasvh/html2canvas/issues/2568)
+
+
+
+# [1.1.0](https://github.com/niklasvh/html2canvas/compare/v1.0.0...v1.1.0) (2021-07-11)
+
+
+### ci
+
+* fail build if no artifacts uploaded (#2566) ([e7a021a](https://github.com/niklasvh/html2canvas/commit/e7a021ab931f3c0de060b4643e88fad85345c3d3)), closes [#2566](https://github.com/niklasvh/html2canvas/issues/2566)
+
+### deps
+
+* update dependencies with lint fixes (#2565) ([b2902ec](https://github.com/niklasvh/html2canvas/commit/b2902ec31c2a414ea26f864f8e00aa8846890ffc)), closes [#2565](https://github.com/niklasvh/html2canvas/issues/2565)
+
+### docs
+
+* update border-style support ([cf35a28](https://github.com/niklasvh/html2canvas/commit/cf35a282b2c9d41b601c3148e8c08fe7ba61a5f9))
+
+### fix
+
+* Ensure resizeImage's canvas has at least 1px of width and height (#2409) ([bb92371](https://github.com/niklasvh/html2canvas/commit/bb9237155cf0ec090432ee6c5d9c555eb6ffa81f)), closes [#2409](https://github.com/niklasvh/html2canvas/issues/2409)
+* text-decoration-line fallback (#2088) (#2567) ([44296e5](https://github.com/niklasvh/html2canvas/commit/44296e529368140ec06a937383e05f3074b19ee2)), closes [#2088](https://github.com/niklasvh/html2canvas/issues/2088) [#2567](https://github.com/niklasvh/html2canvas/issues/2567)
+* use baseline for text positioning (#2109) ([85f79c1](https://github.com/niklasvh/html2canvas/commit/85f79c1a5e4c0b422ace552c430dd389c8477a44)), closes [#2109](https://github.com/niklasvh/html2canvas/issues/2109)
+
+
+
+# [1.0.0](https://github.com/niklasvh/html2canvas/compare/v1.0.0-rc.7...v1.0.0) (2021-07-04)
+
+
+### ci
+
+* update docs publish action (#2451) ([7222aba](https://github.com/niklasvh/html2canvas/commit/7222aba1b42138c3d466525172411b3d9869095f)), closes [#2451](https://github.com/niklasvh/html2canvas/issues/2451)
+
+### deps
+
+* update www deps (#2525) ([2a013e2](https://github.com/niklasvh/html2canvas/commit/2a013e20c814b7dbaea98f54f0bde8f553eb79a2)), closes [#2525](https://github.com/niklasvh/html2canvas/issues/2525)
+
+### feat
+
+* add support for border-style dashed, dotted, double (#2531) ([72cd528](https://github.com/niklasvh/html2canvas/commit/72cd5284296e4cdb3fe88f2982ec7528604b6618))
+
+### fix
+
+* opacity with overflow hidden (#2450) ([82b7da5](https://github.com/niklasvh/html2canvas/commit/82b7da558c342e7f53d298bb1d843a5db86c3b21)), closes [#2450](https://github.com/niklasvh/html2canvas/issues/2450)
+* top right border radius (#2522) ([ba17267](https://github.com/niklasvh/html2canvas/commit/ba172678f07f962e9f54b398df087e86217d7a13))
+
+### test
+
+* update karma runner (#2524) ([ff35c7d](https://github.com/niklasvh/html2canvas/commit/ff35c7dbd33f863f5b614d778baf8cb1e8dded60)), closes [#2524](https://github.com/niklasvh/html2canvas/issues/2524)
+
+
+
+# [1.0.0-rc.7](https://github.com/niklasvh/html2canvas/compare/v1.0.0-rc.6...v1.0.0-rc.7) (2020-08-09)
+
+
+### fix
+
+* concatenate contiguous font-family tokens (#2219) ([bacfadf](https://github.com/niklasvh/html2canvas/commit/bacfadff96d907d9e8ab4ef515ca6487de9e51fc)), closes [#2219](https://github.com/niklasvh/html2canvas/issues/2219)
+* external styles on svg elements (#2320) ([1514220](https://github.com/niklasvh/html2canvas/commit/1514220812cfb22d64d0974558d9c14fe90a41d3)), closes [#2320](https://github.com/niklasvh/html2canvas/issues/2320)
+
+
+
+# [1.0.0-rc.6](https://github.com/niklasvh/html2canvas/compare/v1.0.0-rc.5...v1.0.0-rc.6) (2020-08-08)
+
+
+### ci
+
+* Azure Pipelines: upgrade from macOS 10.13 -> 10.14 (#2204) ([c366e87](https://github.com/niklasvh/html2canvas/commit/c366e8790d346ea981b24b7425aef6bf6d7ebcec)), closes [#2204](https://github.com/niklasvh/html2canvas/issues/2204)
+* build docs (#2305) ([51de347](https://github.com/niklasvh/html2canvas/commit/51de34787ad8aba3f213800be45e878cddb064e9)), closes [#2305](https://github.com/niklasvh/html2canvas/issues/2305)
+
+### fix
+
+* #1868 Clone node, Setting className for SVG element raises error (#2079) ([f139b51](https://github.com/niklasvh/html2canvas/commit/f139b513c5cf9673dc727fd47124e0d779891e3a)), closes [#1868](https://github.com/niklasvh/html2canvas/issues/1868) [#2079](https://github.com/niklasvh/html2canvas/issues/2079) [#1868](https://github.com/niklasvh/html2canvas/issues/1868)
+* image loading="lazy" fix #2312 (#2314) ([f23e6f6](https://github.com/niklasvh/html2canvas/commit/f23e6f6f2690dc0dbd02621c3bb81025904e6647)), closes [#2312](https://github.com/niklasvh/html2canvas/issues/2312) [#2314](https://github.com/niklasvh/html2canvas/issues/2314)
+
+
+
+# [1.0.0-rc.5](https://github.com/niklasvh/html2canvas/compare/v1.0.0-rc.4...v1.0.0-rc.5) (2019-09-27)
+
+
+### fix
+
+* correctly respect logging option (#2013) ([34b06d6365603c3b16664ab7804efe94c7945946](https://github.com/niklasvh/html2canvas/commit/34b06d6365603c3b16664ab7804efe94c7945946)), closes [#2013](https://github.com/niklasvh/html2canvas/issues/2013)
+* safari pseudo element content parsing (#2018) ([3f599103fb139f218ffe917800e74af2c7cc7ad5](https://github.com/niklasvh/html2canvas/commit/3f599103fb139f218ffe917800e74af2c7cc7ad5)), closes [#2018](https://github.com/niklasvh/html2canvas/issues/2018)
+* using existing canvas option (#2017) ([076492042a73d67b30e4562f2964200e07d25f5e](https://github.com/niklasvh/html2canvas/commit/076492042a73d67b30e4562f2964200e07d25f5e)), closes [#2017](https://github.com/niklasvh/html2canvas/issues/2017)
+
+
+
+# [1.0.0-rc.4](https://github.com/niklasvh/html2canvas/compare/v1.0.0-rc.3...v1.0.0-rc.4) (2019-09-22)
+
+
+### docs
+
+* fix typo (#1864) ([9a63797aa7fb81454008745d2a1c069ca24339a4](https://github.com/niklasvh/html2canvas/commit/9a63797aa7fb81454008745d2a1c069ca24339a4)), closes [#1864](https://github.com/niklasvh/html2canvas/issues/1864)
+
+### feat
+
+* ignore unsupported image functions (#1873) ([61f4819e02102b112513d57b16ec7d37e989af20](https://github.com/niklasvh/html2canvas/commit/61f4819e02102b112513d57b16ec7d37e989af20)), closes [#1873](https://github.com/niklasvh/html2canvas/issues/1873)
+
+### fix
+
+* correctly render partial borders (fix #1920) (#2010) ([eedb81ef9e114366a7e286e975659360cf9d0983](https://github.com/niklasvh/html2canvas/commit/eedb81ef9e114366a7e286e975659360cf9d0983)), closes [#1920](https://github.com/niklasvh/html2canvas/issues/1920) [#2010](https://github.com/niklasvh/html2canvas/issues/2010)
+* nested z-index ordering (#2011) ([00555cf1efddfed5877811d8a03a326f9943ab06](https://github.com/niklasvh/html2canvas/commit/00555cf1efddfed5877811d8a03a326f9943ab06)), closes [#2011](https://github.com/niklasvh/html2canvas/issues/2011) [#1978](https://github.com/niklasvh/html2canvas/issues/1978)
+* null backgroundColor option as transparent (#2012) ([7d3456b78c37e7333db087601805b32ec7ca0253](https://github.com/niklasvh/html2canvas/commit/7d3456b78c37e7333db087601805b32ec7ca0253)), closes [#2012](https://github.com/niklasvh/html2canvas/issues/2012)
+* zero size iframe rendering (#1863) ([81dcf7b6be66920260a60908aa4b86e7530f6e17](https://github.com/niklasvh/html2canvas/commit/81dcf7b6be66920260a60908aa4b86e7530f6e17)), closes [#1863](https://github.com/niklasvh/html2canvas/issues/1863)
+
+
+
+# [1.0.0-rc.3](https://github.com/niklasvh/html2canvas/compare/v1.0.0-rc.2...v1.0.0-rc.3) (2019-05-30)
+
+
+### fix
+
+* stack exceeding for css tokenizer (#1862) ([cbaecdca28cfaf9bd854e1b0c005cc8058208b36](https://github.com/niklasvh/html2canvas/commit/cbaecdca28cfaf9bd854e1b0c005cc8058208b36)), closes [#1862](https://github.com/niklasvh/html2canvas/issues/1862)
+* typescript options type definition (#1861) ([cae44a6f0a6649bd8a7c4250a20792bb5c2e5b42](https://github.com/niklasvh/html2canvas/commit/cae44a6f0a6649bd8a7c4250a20792bb5c2e5b42)), closes [#1861](https://github.com/niklasvh/html2canvas/issues/1861)
+
+
+
+# [1.0.0-rc.2](https://github.com/niklasvh/html2canvas/compare/v1.0.0-rc.1...v1.0.0-rc.2) (2019-05-29)
+
+
+### ci
+
+* refactor browser tests (#1804) ([a7d881019bfe1fd6404c341ca1c6fa69e0274ef5](https://github.com/niklasvh/html2canvas/commit/a7d881019bfe1fd6404c341ca1c6fa69e0274ef5)), closes [#1804](https://github.com/niklasvh/html2canvas/issues/1804)
+
+### docs
+
+* fix README documentation ([20a797cbeb21baca4ce5b9a0642a5959cdf94a51](https://github.com/niklasvh/html2canvas/commit/20a797cbeb21baca4ce5b9a0642a5959cdf94a51))
+* remove dead donation link (fix #1802) ([43058241b420a5dabe94b0a4e4f6534d16a75ec0](https://github.com/niklasvh/html2canvas/commit/43058241b420a5dabe94b0a4e4f6534d16a75ec0)), closes [#1802](https://github.com/niklasvh/html2canvas/issues/1802)
+
+### fix
+
+* multi token overflow #1850 (#1851) ([409674fba6f8038eb174b9c89360ef8b342971e9](https://github.com/niklasvh/html2canvas/commit/409674fba6f8038eb174b9c89360ef8b342971e9)), closes [#1850](https://github.com/niklasvh/html2canvas/issues/1850) [#1851](https://github.com/niklasvh/html2canvas/issues/1851)
+
+### test
+
+* include reftests previewer with docs website (#1799) ([cdc4ca8296570bf842e937c6fb7cc32a1ce2bc09](https://github.com/niklasvh/html2canvas/commit/cdc4ca8296570bf842e937c6fb7cc32a1ce2bc09)), closes [#1799](https://github.com/niklasvh/html2canvas/issues/1799)
+
+
+
+# [1.0.0-rc.1](https://github.com/niklasvh/html2canvas/compare/v1.0.0-rc.0...v1.0.0-rc.1) (2019-04-10)
+
+
+### ci
+
+* add ios simulator tests (#1794) ([a63cb3c0f132b1af915d9ef55a4c174f6e5502ce](https://github.com/niklasvh/html2canvas/commit/a63cb3c0f132b1af915d9ef55a4c174f6e5502ce)), closes [#1794](https://github.com/niklasvh/html2canvas/issues/1794)
+
+### docs
+
+* fix release date in changelog ([238de790a9f223becbc8726633c0f2a2dabf2cb7](https://github.com/niklasvh/html2canvas/commit/238de790a9f223becbc8726633c0f2a2dabf2cb7))
+* remove invalid `async` option from docs (fix #1769) (#1796) ([7775d3c0d6f3efca00611bedd5fc9200689a9f7a](https://github.com/niklasvh/html2canvas/commit/7775d3c0d6f3efca00611bedd5fc9200689a9f7a)), closes [#1769](https://github.com/niklasvh/html2canvas/issues/1769) [#1796](https://github.com/niklasvh/html2canvas/issues/1796)
+
+### fix
+
+* context scale for high resolution displays with foreignobjectrendering  (#1782) ([7027900f4993dcd00745a4db045ed1c0e3255f8a](https://github.com/niklasvh/html2canvas/commit/7027900f4993dcd00745a4db045ed1c0e3255f8a)), closes [#1782](https://github.com/niklasvh/html2canvas/issues/1782)
+* don't apply text shadows on elements (#1795) ([397595afb59ee50f0d128abb5945b5b9ddc6650d](https://github.com/niklasvh/html2canvas/commit/397595afb59ee50f0d128abb5945b5b9ddc6650d)), closes [#1795](https://github.com/niklasvh/html2canvas/issues/1795)
+* safari data url taints (#1797) ([4e4a231683904dfdc1f82472ece5a160a158dbb8](https://github.com/niklasvh/html2canvas/commit/4e4a231683904dfdc1f82472ece5a160a158dbb8)), closes [#1797](https://github.com/niklasvh/html2canvas/issues/1797)
+
+### test
+
+* fix RefTestRenderer.js inclusion with karma ([49f87fb680dbfe1898b3aeb60f2f5c3a93bfbe6d](https://github.com/niklasvh/html2canvas/commit/49f87fb680dbfe1898b3aeb60f2f5c3a93bfbe6d))
+
+
+
+# [1.0.0-rc.0](https://github.com/niklasvh/html2canvas/compare/v1.0.0-alpha.12...v1.0.0-rc.0) (2019-04-07)
+
+
+### build
+
+* update webpack and babel (#1793) ([44f3d79f68836624c2673a86f9ad47c17ef843c3](https://github.com/niklasvh/html2canvas/commit/44f3d79f68836624c2673a86f9ad47c17ef843c3)), closes [#1793](https://github.com/niklasvh/html2canvas/issues/1793)
+
+### ci
+
+* automate changelog generation (#1792) ([7ebef72e927eaafd34a1792ece431d2a73109230](https://github.com/niklasvh/html2canvas/commit/7ebef72e927eaafd34a1792ece431d2a73109230)), closes [#1792](https://github.com/niklasvh/html2canvas/issues/1792)
+* Improve CI pipeline (#1790) ([c45ef099fe8f7142e174f4fce39448a370a987d5](https://github.com/niklasvh/html2canvas/commit/c45ef099fe8f7142e174f4fce39448a370a987d5)), closes [#1790](https://github.com/niklasvh/html2canvas/issues/1790)
+
+### docs
+
+* improve canvas size limit documentation (#1576) ([3212184146b33c3564c2f416e1bfda911737c38b](https://github.com/niklasvh/html2canvas/commit/3212184146b33c3564c2f416e1bfda911737c38b)), closes [#1576](https://github.com/niklasvh/html2canvas/issues/1576)
+
+### fix
+
+* enforce colorstop min 0 (#1743) ([349bbf137abd83464e074db3948fc79a541c2ef3](https://github.com/niklasvh/html2canvas/commit/349bbf137abd83464e074db3948fc79a541c2ef3)), closes [#1743](https://github.com/niklasvh/html2canvas/issues/1743)
+* prevent unhandled promise rejections for hidden frames (#1762) ([5cbe5db35155e3a9790a30de09feb17843053b7a](https://github.com/niklasvh/html2canvas/commit/5cbe5db35155e3a9790a30de09feb17843053b7a)), closes [#1762](https://github.com/niklasvh/html2canvas/issues/1762)
+* wrap .sheet.cssRules access in try...catch. (#1693) ([2c018d19875ced30caafdc40f84ca531de6e6f91](https://github.com/niklasvh/html2canvas/commit/2c018d19875ced30caafdc40f84ca531de6e6f91)), closes [#1693](https://github.com/niklasvh/html2canvas/issues/1693)
+
+
+
+# [1.0.0-alpha.12](https://github.com/niklasvh/html2canvas/compare/v1.0.0-alpha.12...v1.0.0-alpha.13) (2018-04-05)
+ * Fix white space appearing on element rendering (Fix #1438)
+ * Reset canvas transform on finish (Fix #1494)
+
+# v1.0.0-alpha.11 - 1.4.2018
+ * Fix IE11 member not found error
+ * Support blob image resources in non-foreignObjectRendering mode
+
+# v1.0.0-alpha.10 - 15.2.2018
+ * Re-introduce `onclone` option (Fix #1434)
+ * Add `ignoreElements` predicate function option
+ * Fix version console logging
+
+# v1.0.0-alpha.9 - 7.1.2018
+ * Fix dynamic style sheets
+ * Fix > 50% border-radius values
+
+# v1.0.0-alpha.8 - 2.1.2018
+ * Use correct doctype in cloned Document (Fix #1298)
+ * Fix individual border rendering (Fix #1349)
+
+# v1.0.0-alpha.7 - 31.12.2017
+ * Fix form input rendering (#1338)
+ * Improve word line breaking algorithm
+
+# v1.0.0-alpha.6 - 28.12.2017
+ * Fix list-style: none (#1340)
+ * Extend supported values for pseudo element content
+
+# v1.0.0-alpha.5 - 21.12.2017
+ * Fix underline positioning
+ * Fix canvas rendering on Chrome
+ * Fix overflow: auto
+ * Added support for rendering list-style
+
+ v1.0.0-alpha.4 - 12.12.2017
+ * Fix rendering with multiple fonts defined (Fix #796)
+ * Add support for radial-gradients
+ * Fix logging option (#1302)
+ * Add support for rendering webgl canvas content (#646)
+ * Fix external SVG loading with proxies (#802)
+
+# v1.0.0-alpha.3 - 9.12.2017
+ * Disable `foreignObjectRendering` by default (#1295)
+ * Fix background-size when using background-origin and background-size: cover/contain (#1299)
+ * Added support for background-origin: content-box (#1299)
+
+# v1.0.0-alpha.2 - 7.12.2017
+ * Fix scroll positions for CanvasRenderer (#1259)
+ * Fix `data-html2canvas-ignore` attribute (#1253)
+ * Fix decimal `letter-spacing` values (#1293)
+
+# v1.0.0-alpha.1 - 5.12.2017
+ * Complete rewrite of library
+ ##### Breaking Changes #####
+ * Remove deprecated onrendered callback, calling `html2canvas` returns a `Promise<HTMLCanvasElement>`
+ * Removed option `type`, same results can be achieved by assigning `x`, `y`, `scrollX`, `scrollY`, `width` and `height` properties.
+
+ ## New featues / fixes
+ * Add support for scaling canvas (defaults to device pixel ratio)
+ * Add support for multiple text-shadows
+ * Add support for multiple text-decorations
+ * Add support for text-decoration-color
+ * Add support for percentage values for border-radius
+ * Correctly handle px and percentage values in linear-gradients
+ * Correctly support all angle types for linear-gradients
+ * Add support for multiple values for background-repeat, background-position and background-size
+
+# v0.5.0-beta4 - 23.1.2016
+ * Fix logger requiring access to window object
+ * Derequire browserify build
+ * Fix rendering of specific elements when window is scrolled and `type` isn't set to `view`
+
+# v0.5.0-beta3 - 6.12.2015
+ * Handle color names in linear gradients
+
+# v0.5.0-beta2 - 20.10.2015
+ * Remove Promise polyfill (use native or provide it yourself)
+
+# v0.5.0-beta1 - 19.10.2015
+ * Fix bug with unmatched color stops in gradients
+ * Fix scrolling issues with iOS
+ * Correctly handle named colors in gradients
+ * Accept matrix3d transforms
+ * Fix transparent colors breaking gradients
+ * Preserve scrolling positions on render
+
+# v0.5.0-alpha2 - 3.2.2015
+ * Switch to using browserify for building
+ * Fix (#517) Chrome stretches background images with 'auto' or single attributes
+
+# v0.5.0-alpha - 19.1.2015
+ * Complete rewrite of library
+ * Switched interface to return Promise
+ * Uses hidden iframe window to perform rendering, allowing async rendering and doesn't force the viewport to be scrolled to the top anymore.
+ * Better support for unicode
+ * Checkbox/radio button rendering
+ * SVG rendering
+ * iframe rendering
+ * Changed format for proxy requests, permitting binary responses with CORS headers as well
+ * Fixed many layering issues (see z-index tests)
+
+# v0.4.1 - 7.9.2013
+ * Added support for bower
+ * Improved z-index ordering
+ * Basic implementation for CSS transformations
+ * Fixed inline text in top element
+ * Basic implementation for text-shadow
+
+# v0.4.0 - 30.1.2013
+ * Added rendering tests with <a href="https://github.com/niklasvh/webdriver.js">webdriver</a>
+ * Switched to using grunt for building
+ * Removed support for IE<9, including any FlashCanvas bits
+ * Support for border-radius
+ * Support for multiple background images, size, and clipping
+ * Support for :before and :after pseudo elements
+ * Support for placeholder rendering
+ * Reformatted all tests to small units to test specific features
+
+# v0.3.4 - 26.6.2012
+
+* Removed (last?) jQuery dependencies (<a href="https://github.com/niklasvh/html2canvas/commit/343b86705fe163766fcf735eb0217130e4bd5b17">niklasvh</a>)
+* SVG-powered rendering (<a href="https://github.com/niklasvh/html2canvas/commit/67d3e0d0f59a5a654caf71a2e3be6494ff146c75">niklasvh</a>)
+* Radial gradients (<a href="https://github.com/niklasvh/html2canvas/commit/4f22c18043a73c0c3bbf3b5e4d62714c56acd3c7">SunboX</a>)
+* Split renderers to their own objects (<a href="https://github.com/niklasvh/html2canvas/commit/94f2f799a457cd29a21cc56ef8c06f1697866739">niklasvh</a>)
+* Simplified API, cleaned up code (<a href="https://github.com/niklasvh/html2canvas/commit/c7d526c9eaa6a4abf4754d205fe1dee360c7660e">niklasvh</a>)
+
+# v0.3.3 - 2.3.2012
+
+* SVG taint fix, and additional taint testing options for rendering (<a href="https://github.com/niklasvh/html2canvas/commit/2dc8b9385e656696cb019d615bdfa1d98b17d5d4">niklasvh</a>)
+* Added support for CORS images and option to create canvas as tainted (<a href="https://github.com/niklasvh/html2canvas/commit/3ad49efa0032cde25c6ed32a39e35d1505d3b2ef">niklasvh</a>)
+* Improved minification saved ~1K! (<a href="https://github.com/cobexer/html2canvas/commit/b82be022b2b9240bd503e078ac980bde2b953e43">cobexer</a>)
+* Added integrated support for Flashcanvas (<a href="https://github.com/niklasvh/html2canvas/commit/e9257191519f67d74fd5e364d8dee3c0963ba5fc">niklasvh</a>)
+* Fixed a variety of legacy IE bugs (<a href="https://github.com/niklasvh/html2canvas/commit/b65357c55d0701017bafcd357bc654b54d458f8f">niklasvh</a>)
+
+# v0.3.2 - 20.2.2012
+
+* Added changelog!
+* Added bookmarklet (<a href="https://github.com/niklasvh/html2canvas/commit/b320dd306e1a2d32a3bc5a71b6ebf6d8c060cde5">cobexer</a>)
+* Option to select single element to render (<a href="https://github.com/niklasvh/html2canvas/commit/0cb252ada91c84ef411288b317c03e97da1f12ad">niklasvh</a>)
+* Fixed closure compiler warnings (<a href="https://github.com/niklasvh/html2canvas/commit/36ff1ec7aadcbdf66851a0b77f0b9e87e4a8e4a1">cobexer</a>)
+* Enable profiling in FF (<a href="https://github.com/niklasvh/html2canvas/commit/bbd75286a8406cf9e5aea01fdb7950d547edefb9">cobexer</a>)
diff --git a/node_modules/html2canvas/LICENSE b/node_modules/html2canvas/LICENSE
new file mode 100644
index 0000000..a73ffc9
--- /dev/null
+++ b/node_modules/html2canvas/LICENSE
@@ -0,0 +1,22 @@
+Copyright (c) 2012 Niklas von Hertzen
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/node_modules/html2canvas/README.md b/node_modules/html2canvas/README.md
new file mode 100644
index 0000000..3d20e8e
--- /dev/null
+++ b/node_modules/html2canvas/README.md
@@ -0,0 +1,73 @@
+html2canvas
+===========
+
+[Homepage](https://html2canvas.hertzen.com) | [Downloads](https://github.com/niklasvh/html2canvas/releases) | [Questions](https://github.com/niklasvh/html2canvas/discussions/categories/q-a)
+
+[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/niklasvh/html2canvas?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) 
+![CI](https://github.com/niklasvh/html2canvas/workflows/CI/badge.svg?branch=master)
+[![NPM Downloads](https://img.shields.io/npm/dm/html2canvas.svg)](https://www.npmjs.org/package/html2canvas)
+[![NPM Version](https://img.shields.io/npm/v/html2canvas.svg)](https://www.npmjs.org/package/html2canvas)
+
+#### JavaScript HTML renderer ####
+
+ The script allows you to take "screenshots" of webpages or parts of it, directly on the users browser. The screenshot is based on the DOM and as such may not be 100% accurate to the real representation as it does not make an actual screenshot, but builds the screenshot based on the information available on the page.
+
+
+### How does it work? ###
+The script renders the current page as a canvas image, by reading the DOM and the different styles applied to the elements.
+
+It does **not require any rendering from the server**, as the whole image is created on the **client's browser**. However, as it is heavily dependent on the browser, this library is *not suitable* to be used in nodejs.
+It doesn't magically circumvent any browser content policy restrictions either, so rendering cross-origin content will require a [proxy](https://github.com/niklasvh/html2canvas/wiki/Proxies) to get the content to the [same origin](http://en.wikipedia.org/wiki/Same_origin_policy).
+
+The script is still in a **very experimental state**, so I don't recommend using it in a production environment nor start building applications with it yet, as there will be still major changes made.
+
+### Browser compatibility ###
+
+The library should work fine on the following browsers (with `Promise` polyfill):
+
+* Firefox 3.5+
+* Google Chrome
+* Opera 12+
+* IE9+
+* Safari 6+
+
+As each CSS property needs to be manually built to be supported, there are a number of properties that are not yet supported.
+
+### Usage ###
+
+The html2canvas library utilizes `Promise`s and expects them to be available in the global context. If you wish to
+support [older browsers](http://caniuse.com/#search=promise) that do not natively support `Promise`s, please include a polyfill such as
+[es6-promise](https://github.com/jakearchibald/es6-promise) before including `html2canvas`.
+
+To render an `element` with html2canvas, simply call:
+` html2canvas(element[, options]);`
+
+The function returns a [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) containing the `<canvas>` element. Simply add a promise fulfillment handler to the promise using `then`:
+
+    html2canvas(document.body).then(function(canvas) {
+        document.body.appendChild(canvas);
+    });
+
+### Building ###
+
+You can download ready builds [here](https://github.com/niklasvh/html2canvas/releases).
+
+Clone git repository:
+
+    $ git clone git://github.com/niklasvh/html2canvas.git
+
+Install dependencies:
+
+    $ npm install
+
+Build browser bundle
+
+    $ npm run build
+
+### Examples ###
+
+For more information and examples, please visit the [homepage](https://html2canvas.hertzen.com) or try the [test console](https://html2canvas.hertzen.com/tests/).
+
+### Contributing ###
+
+If you wish to contribute to the project, please send the pull requests to the develop branch. Before submitting any changes, try and test that the changes work with all the support browsers. If some CSS property isn't supported or is incomplete, please create appropriate tests for it as well before submitting any code changes.
diff --git a/node_modules/html2canvas/package.json b/node_modules/html2canvas/package.json
new file mode 100644
index 0000000..cefd436
--- /dev/null
+++ b/node_modules/html2canvas/package.json
@@ -0,0 +1,124 @@
+{
+  "title": "html2canvas",
+  "name": "html2canvas",
+  "description": "Screenshots with JavaScript",
+  "main": "dist/html2canvas.js",
+  "module": "dist/html2canvas.esm.js",
+  "typings": "dist/types/index.d.ts",
+  "browser": "dist/html2canvas.js",
+  "version": "1.4.1",
+  "author": {
+    "name": "Niklas von Hertzen",
+    "email": "niklasvh@gmail.com",
+    "url": "https://hertzen.com"
+  },
+  "engines": {
+    "node": ">=8.0.0"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git@github.com:niklasvh/html2canvas.git"
+  },
+  "bugs": {
+    "url": "https://github.com/niklasvh/html2canvas/issues"
+  },
+  "devDependencies": {
+    "@babel/cli": "^7.4.3",
+    "@babel/core": "^7.4.3",
+    "@babel/preset-env": "^7.4.3",
+    "@babel/preset-flow": "^7.0.0",
+    "@rollup/plugin-commonjs": "^19.0.0",
+    "@rollup/plugin-json": "^4.1.0",
+    "@rollup/plugin-node-resolve": "^13.0.0",
+    "@rollup/plugin-typescript": "^8.2.1",
+    "@types/chai": "^4.1.7",
+    "@types/express": "^4.17.13",
+    "@types/glob": "^7.1.1",
+    "@types/jest": "^26.0.24",
+    "@types/jest-image-snapshot": "^4.3.1",
+    "@types/karma": "^6.3.0",
+    "@types/mocha": "^8.2.3",
+    "@types/node": "^16.3.1",
+    "@types/platform": "^1.3.4",
+    "@types/promise-polyfill": "^6.0.3",
+    "@typescript-eslint/eslint-plugin": "^4.28.2",
+    "@typescript-eslint/parser": "^4.28.2",
+    "appium-ios-simulator": "^3.10.0",
+    "babel-eslint": "^10.0.1",
+    "babel-loader": "^8.0.5",
+    "babel-plugin-add-module-exports": "^1.0.2",
+    "babel-plugin-dev-expression": "^0.2.1",
+    "base64-arraybuffer": "1.0.1",
+    "body-parser": "^1.19.0",
+    "chai": "4.1.1",
+    "chromeless": "^1.5.2",
+    "cors": "^2.8.5",
+    "es6-promise": "^4.2.8",
+    "eslint": "^7.30.0",
+    "eslint-config-prettier": "^8.3.0",
+    "eslint-plugin-prettier": "3.4.0",
+    "express": "^4.17.1",
+    "filenamify-url": "1.0.0",
+    "glob": "7.1.3",
+    "html2canvas-proxy": "1.0.1",
+    "jest": "^27.0.6",
+    "jest-image-snapshot": "^4.5.1",
+    "jquery": "^3.5.1",
+    "js-polyfills": "^0.1.42",
+    "karma": "^6.3.2",
+    "karma-chrome-launcher": "^3.1.0",
+    "karma-edge-launcher": "^0.4.2",
+    "karma-firefox-launcher": "^2.1.0",
+    "karma-ie-launcher": "^1.0.0",
+    "karma-junit-reporter": "^2.0.1",
+    "karma-mocha": "^2.0.1",
+    "karma-safarinative-launcher": "^1.1.0",
+    "karma-sauce-launcher": "^2.0.2",
+    "mocha": "^9.0.2",
+    "node-simctl": "^5.3.0",
+    "platform": "^1.3.6",
+    "prettier": "^2.3.2",
+    "replace-in-file": "^3.0.0",
+    "rimraf": "^3.0.2",
+    "rollup": "^2.53.1",
+    "rollup-plugin-sourcemaps": "^0.6.3",
+    "serve-index": "^1.9.1",
+    "slash": "1.0.0",
+    "standard-version": "^8.0.2",
+    "ts-jest": "^27.0.3",
+    "ts-loader": "^8.3.0",
+    "ts-node": "^10.1.0",
+    "tslib": "^2.3.0",
+    "typescript": "^4.3.5",
+    "uglify-js": "^3.13.10",
+    "uglifyjs-webpack-plugin": "^2.2.0",
+    "webpack": "^4.46.0",
+    "webpack-cli": "^3.3.12",
+    "yargs": "^17.0.1"
+  },
+  "scripts": {
+    "prebuild": "rimraf dist/ && rimraf build/ && mkdirp dist && mkdirp build",
+    "build": "tsc --module commonjs && rollup -c rollup.config.ts && npm run build:create-reftest-list && npm run build:testrunner && npm run build:minify",
+    "build:testrunner": "rollup -c tests/rollup.config.ts",
+    "build:minify": "uglifyjs --compress --comments /^!/ -o dist/html2canvas.min.js --mangle -- dist/html2canvas.js",
+    "build:reftest-result-list": "ts-node scripts/create-reftest-result-list.ts",
+    "build:create-reftest-list": "ts-node scripts/create-reftest-list.ts tests/reftests/ignore.txt build/reftests.ts",
+    "build:reftest-preview": "webpack --config www/webpack.config.js",
+    "release": "standard-version",
+    "format": "prettier --write \"{src,www/src,tests,scripts}/**/*.ts\"",
+    "lint": "eslint src/**/*.ts --max-warnings 0",
+    "test": "npm run lint && npm run unittest && npm run karma",
+    "unittest": "jest",
+    "reftests-diff": "mkdirp tmp/snapshots && jest --roots=tests --testMatch=**/reftest-diff.ts",
+    "karma": "ts-node tests/karma",
+    "watch": "rollup -c rollup.config.ts -w",
+    "watch:unittest": "mocha --require ts-node/register --watch-extensions ts -w src/**/__tests__/*.ts",
+    "start": "ts-node tests/server --port=8080 --cors=8081"
+  },
+  "homepage": "https://html2canvas.hertzen.com",
+  "license": "MIT",
+  "dependencies": {
+    "css-line-break": "^2.1.0",
+    "text-segmentation": "^1.0.3"
+  }
+}
diff --git a/node_modules/html2canvas/tsconfig.json b/node_modules/html2canvas/tsconfig.json
new file mode 100644
index 0000000..82e2959
--- /dev/null
+++ b/node_modules/html2canvas/tsconfig.json
@@ -0,0 +1,21 @@
+{
+    "compilerOptions": {
+        "noImplicitAny": true,
+        "noImplicitThis": true,
+        "noUnusedLocals": true,
+        "noUnusedParameters": true,
+        "strictNullChecks": true,
+        "strictPropertyInitialization": true,
+        "types": ["node", "jest"],
+        "target": "es5",
+        "lib": ["es2015", "dom"],
+        "sourceMap": true,
+        "outDir": "dist/lib",
+        "declaration": true,
+        "declarationDir": "dist/types",
+        "resolveJsonModule": true
+    },
+    "include": [
+        "src"
+    ]
+}
diff --git a/node_modules/jspdf/LICENSE b/node_modules/jspdf/LICENSE
new file mode 100644
index 0000000..4c0e111
--- /dev/null
+++ b/node_modules/jspdf/LICENSE
@@ -0,0 +1,22 @@
+Copyright
+(c) 2010-2021 James Hall, https://github.com/MrRio/jsPDF
+(c) 2015-2021 yWorks GmbH, https://www.yworks.com/
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/jspdf/README.md b/node_modules/jspdf/README.md
new file mode 100644
index 0000000..d188678
--- /dev/null
+++ b/node_modules/jspdf/README.md
@@ -0,0 +1,286 @@
+# ![jsPDF](https://parall.ax/parallax-2016/img/svg/jspdf-logo.svg)
+
+[![Continous Integration](https://github.com/MrRio/jsPDF/actions/workflows/continuous-integration.yml/badge.svg)](https://github.com/MrRio/jsPDF/actions/workflows/continuous-integration.yml?query=branch%3Amaster)
+[![Code Climate](https://codeclimate.com/repos/57f943855cdc43705e00592f/badges/2665cddeba042dc5191f/gpa.svg)](https://codeclimate.com/repos/57f943855cdc43705e00592f/feed)
+[![Test Coverage](https://codeclimate.com/repos/57f943855cdc43705e00592f/badges/2665cddeba042dc5191f/coverage.svg)](https://codeclimate.com/repos/57f943855cdc43705e00592f/coverage)
+[![GitHub license](https://img.shields.io/github/license/MrRio/jsPDF.svg)](https://github.com/MrRio/jsPDF/blob/master/LICENSE)
+[![Total alerts](https://img.shields.io/lgtm/alerts/g/MrRio/jsPDF.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/MrRio/jsPDF/alerts/)
+[![Language grade: JavaScript](https://img.shields.io/lgtm/grade/javascript/g/MrRio/jsPDF.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/MrRio/jsPDF/context:javascript)
+[![Gitpod ready-to-code](https://img.shields.io/badge/Gitpod-ready--to--code-blue?logo=gitpod)](https://gitpod.io/from-referrer/)
+
+**A library to generate PDFs in JavaScript.**
+
+You can [catch me on twitter](http://twitter.com/MrRio): [@MrRio](http://twitter.com/MrRio) or head over to [my company's website](http://parall.ax) for consultancy.
+
+jsPDF is now co-maintained by [yWorks - the diagramming experts](https://www.yworks.com/).
+
+## [Live Demo](http://raw.githack.com/MrRio/jsPDF/master/) | [Documentation](http://raw.githack.com/MrRio/jsPDF/master/docs/)
+
+## Install
+
+Recommended: get jsPDF from npm:
+
+```sh
+npm install jspdf --save
+# or
+yarn add jspdf
+```
+
+Alternatively, load it from a CDN:
+
+```html
+<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/3.0.0/jspdf.umd.min.js"></script>
+```
+
+Or always get latest version via [unpkg](https://unpkg.com/browse/jspdf/)
+
+```html
+<script src="https://unpkg.com/jspdf@latest/dist/jspdf.umd.min.js"></script>
+```
+
+The `dist` folder of this package contains different kinds of files:
+
+- **jspdf.es.\*.js**: Modern ES2015 module format.
+- **jspdf.node.\*.js**: For running in Node. Uses file operations for loading/saving files instead of browser APIs.
+- **jspdf.umd.\*.js**: UMD module format. For AMD or script-tag loading.
+- **polyfills\*.js**: Required polyfills for older browsers like Internet Explorer. The es variant simply imports all
+  required polyfills from `core-js`, the umd variant is self-contained.
+
+Usually it is not necessary to specify the exact file in the import statement. Build tools or Node automatically figure
+out the right file, so importing "jspdf" is enough.
+
+## Usage
+
+Then you're ready to start making your document:
+
+```javascript
+import { jsPDF } from "jspdf";
+
+// Default export is a4 paper, portrait, using millimeters for units
+const doc = new jsPDF();
+
+doc.text("Hello world!", 10, 10);
+doc.save("a4.pdf");
+```
+
+If you want to change the paper size, orientation, or units, you can do:
+
+```javascript
+// Landscape export, 2×4 inches
+const doc = new jsPDF({
+  orientation: "landscape",
+  unit: "in",
+  format: [4, 2]
+});
+
+doc.text("Hello world!", 1, 1);
+doc.save("two-by-four.pdf");
+```
+
+### Running in Node.js
+
+```javascript
+const { jsPDF } = require("jspdf"); // will automatically load the node version
+
+const doc = new jsPDF();
+doc.text("Hello world!", 10, 10);
+doc.save("a4.pdf"); // will save the file in the current working directory
+```
+
+### Other Module Formats
+
+<details>
+  <summary>
+    <b>AMD</b>
+  </summary>
+
+```js
+require(["jspdf"], ({ jsPDF }) => {
+  const doc = new jsPDF();
+  doc.text("Hello world!", 10, 10);
+  doc.save("a4.pdf");
+});
+```
+
+</details>
+
+<details>
+  <summary>
+    <b>Globals</b>
+  </summary>
+
+```js
+const { jsPDF } = window.jspdf;
+
+const doc = new jsPDF();
+doc.text("Hello world!", 10, 10);
+doc.save("a4.pdf");
+```
+
+</details>
+
+### Optional dependencies
+
+Some functions of jsPDF require optional dependencies. E.g. the `html` method, which depends on `html2canvas` and,
+when supplied with a string HTML document, `dompurify`. JsPDF loads them dynamically when required
+(using the respective module format, e.g. dynamic imports). Build tools like Webpack will automatically create separate
+chunks for each of the optional dependencies. If your application does not use any of the optional dependencies, you
+can prevent Webpack from generating the chunks by defining them as external dependencies:
+
+```js
+// webpack.config.js
+module.exports = {
+  // ...
+  externals: {
+    // only define the dependencies you are NOT using as externals!
+    canvg: "canvg",
+    html2canvas: "html2canvas",
+    dompurify: "dompurify"
+  }
+};
+```
+
+In **Vue CLI** projects, externals can be defined via the [configureWebpack](https://cli.vuejs.org/config/#configurewebpack)
+or [chainWebpack](https://cli.vuejs.org/config/#chainwebpack) properties of the `vue.config.js` file
+(needs to be created, first, in fresh projects).
+
+In **Angular** projects, externals can be defined using
+[custom webpack builders](https://github.com/just-jeb/angular-builders/tree/master/packages/custom-webpack).
+
+In **React** (`create-react-app`) projects, externals can be defined by either using
+[react-app-rewired](https://github.com/timarney/react-app-rewired) or ejecting.
+
+### TypeScript/Angular/Webpack/React/etc. Configuration:
+
+jsPDF can be imported just like any other 3rd party library. This works with all major toolkits and frameworks. jsPDF
+also offers a typings file for TypeScript projects.
+
+```js
+import { jsPDF } from "jspdf";
+```
+
+You can add jsPDF to your meteor-project as follows:
+
+```
+meteor add jspdf:core
+```
+
+### Polyfills
+
+jsPDF requires modern browser APIs in order to function. To use jsPDF in older browsers like Internet Explorer,
+polyfills are required. You can load all required polyfills as follows:
+
+```js
+import "jspdf/dist/polyfills.es.js";
+```
+
+Alternatively, you can load the prebundled polyfill file. This is not recommended, since you might end up
+loading polyfills multiple times. Might still be nifty for small applications or quick POCs.
+
+```html
+<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/3.0.0/polyfills.umd.js"></script>
+```
+
+## Use of Unicode Characters / UTF-8:
+
+The 14 standard fonts in PDF are limited to the ASCII-codepage. If you want to use UTF-8 you have to integrate a
+custom font, which provides the needed glyphs. jsPDF supports .ttf-files. So if you want to have for example
+Chinese text in your pdf, your font has to have the necessary Chinese glyphs. So, check if your font supports
+the wanted glyphs or else it will show garbled characters instead of the right text.
+
+To add the font to jsPDF use our fontconverter in
+[/fontconverter/fontconverter.html](https://rawgit.com/MrRio/jsPDF/master/fontconverter/fontconverter.html).
+The fontconverter will create a js-file with the content of the provided ttf-file as base64 encoded string
+and additional code for jsPDF. You just have to add this generated js-File to your project.
+You are then ready to go to use setFont-method in your code and write your UTF-8 encoded text.
+
+Alternatively you can just load the content of the \*.ttf file as a binary string using `fetch` or `XMLHttpRequest` and
+add the font to the PDF file:
+
+```js
+const doc = new jsPDF();
+
+const myFont = ... // load the *.ttf font file as binary string
+
+// add the font to jsPDF
+doc.addFileToVFS("MyFont.ttf", myFont);
+doc.addFont("MyFont.ttf", "MyFont", "normal");
+doc.setFont("MyFont");
+```
+
+## Advanced Functionality
+
+Since the merge with the [yWorks fork](https://github.com/yWorks/jsPDF) there are a lot of new features. However, some
+of them are API breaking, which is why there is an API-switch between two API modes:
+
+- In "compat" API mode, jsPDF has the same API as MrRio's original version, which means full compatibility with plugins.
+  However, some advanced features like transformation matrices and patterns won't work. This is the default mode.
+- In "advanced" API mode, jsPDF has the API you're used from the yWorks-fork version. This means the availability of
+  all advanced features like patterns, FormObjects, and transformation matrices.
+
+You can switch between the two modes by calling
+
+```javascript
+doc.advancedAPI(doc => {
+  // your code
+});
+// or
+doc.compatAPI(doc => {
+  // your code
+});
+```
+
+JsPDF will automatically switch back to the original API mode after the callback has run.
+
+## Support
+
+Please check if your question is already handled at Stackoverflow <https://stackoverflow.com/questions/tagged/jspdf>.
+Feel free to ask a question there with the tag `jspdf`.
+
+Feature requests, bug reports, etc. are very welcome as issues. Note that bug reports should follow these guidelines:
+
+- A bug should be reported as an [mcve](https://stackoverflow.com/help/mcve)
+- Make sure code is properly indented and [formatted](https://help.github.com/articles/basic-writing-and-formatting-syntax/#quoting-code) (Use ``` around code blocks)
+- Provide a runnable example.
+- Try to make sure and show in your issue that the issue is actually related to jspdf and not your framework of choice.
+
+## Contributing
+
+jsPDF cannot live without help from the community! If you think a feature is missing or you found a bug, please consider
+if you can spare one or two hours and prepare a pull request. If you're simply interested in this project and want to
+help, have a look at the open issues, especially those labeled with "bug".
+
+You can find information about building and testing jsPDF in the
+[contribution guide](https://github.com/MrRio/jsPDF/blob/master/CONTRIBUTING.md#pull-requests)
+
+## Credits
+
+- Big thanks to Daniel Dotsenko from [Willow Systems Corporation](https://github.com/willowsystems) for making huge contributions to the codebase.
+- Thanks to Ajaxian.com for [featuring us back in 2009](http://web.archive.org/web/20111011192314/http://ajaxian.com/archives/dynamically-generic-pdfs-with-javascript). (Internet Archive Wayback Machine reference)
+- Our special thanks to GH Lee ([sphilee](https://github.com/sphilee)) for programming the ttf-file-support and providing a large and long sought after feature
+- Everyone else that's contributed patches or bug reports. You rock.
+
+## License (MIT)
+
+Copyright
+(c) 2010-2021 James Hall, https://github.com/MrRio/jsPDF
+(c) 2015-2021 yWorks GmbH, https://www.yworks.com/
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/jspdf/package.json b/node_modules/jspdf/package.json
new file mode 100644
index 0000000..f3844e9
--- /dev/null
+++ b/node_modules/jspdf/package.json
@@ -0,0 +1,115 @@
+{
+  "name": "jspdf",
+  "version": "3.0.0",
+  "homepage": "https://github.com/mrrio/jspdf",
+  "description": "PDF Document creation from JavaScript",
+  "main": "dist/jspdf.node.min.js",
+  "module": "dist/jspdf.es.min.js",
+  "browser": "dist/jspdf.es.min.js",
+  "files": [
+    "dist",
+    "types/index.d.ts",
+    "README.md",
+    "LICENSE"
+  ],
+  "typings": "types/index.d.ts",
+  "types": "types/index.d.ts",
+  "keywords": [
+    "pdf"
+  ],
+  "license": "MIT",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/MrRio/jsPDF.git"
+  },
+  "dependencies": {
+    "@babel/runtime": "^7.26.0",
+    "atob": "^2.1.2",
+    "btoa": "^1.2.1",
+    "fflate": "^0.8.1"
+  },
+  "optionalDependencies": {
+    "canvg": "^3.0.6",
+    "core-js": "^3.6.0",
+    "dompurify": "^3.2.4",
+    "html2canvas": "^1.0.0-rc.5"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.10.4",
+    "@babel/plugin-transform-runtime": "^7.14.5",
+    "@babel/preset-env": "^7.10.4",
+    "@rollup/plugin-babel": "^5.3.0",
+    "@rollup/plugin-replace": "^2.3.3",
+    "@rollup/plugin-typescript": "^8.0.0",
+    "@types/jasmine": "^3.5.11",
+    "@types/node": "^20.16.5",
+    "@typescript-eslint/eslint-plugin": "^3.6.0",
+    "@typescript-eslint/parser": "^3.6.0",
+    "chalk": "^4.1.0",
+    "codeclimate-test-reporter": "^0.5.1",
+    "core-js": "^3.33.0",
+    "diff": "^4.0.2",
+    "docdash": "^1.2.0",
+    "eslint": "^7.4.0",
+    "eslint-plugin-jasmine": "^4.1.1",
+    "folder-delete": "^1.0.4",
+    "inquirer": "^6.5.2",
+    "jasmine": "3.5.0",
+    "jasmine-core": "3.5.0",
+    "jasmine-expect": "4.0.3",
+    "jsdoc": "^3.6.3",
+    "karma": "5.1.0",
+    "karma-babel-preprocessor": "8.0.1",
+    "karma-chrome-launcher": "3.1.0",
+    "karma-coverage": "2.0.2",
+    "karma-firefox-launcher": "1.3.0",
+    "karma-ie-launcher": "1.0.0",
+    "karma-jasmine": "3.3.1",
+    "karma-jasmine-matchers": "4.0.2",
+    "karma-mocha-reporter": "2.2.5",
+    "karma-rollup-preprocessor": "^7.0.7",
+    "karma-sauce-launcher": "4.1.5",
+    "karma-typescript": "^5.5.4",
+    "karma-verbose-reporter": "0.0.6",
+    "local-web-server": "^4.2.1",
+    "log-utils": "^1.0.0",
+    "markdown": "0.5.0",
+    "preprocess": "^3.2.0",
+    "prettier": "^1.19.1",
+    "regenerator-runtime": "^0.13.5",
+    "requirejs": "^2.3.6",
+    "rollup": "^2.18.2",
+    "rollup-plugin-commonjs": "^10.1.0",
+    "rollup-plugin-license": "^2.1.0",
+    "rollup-plugin-node-resolve": "5.2.0",
+    "rollup-plugin-preprocess": "0.0.4",
+    "rollup-plugin-terser": "^6.1.0",
+    "typescript": "^5.6.2",
+    "yarpm": "^0.2.1"
+  },
+  "scripts": {
+    "start": "ws",
+    "build": "rollup --config rollup.config.js",
+    "version": "yarpm run build && yarpm run generate-docs && git add -A dist docs",
+    "pretest": "yarpm run build",
+    "test": "yarpm run test-node && yarpm run test-saucelabs",
+    "test-saucelabs": "karma start test/saucelabs/karma.conf.js --single-run --verbose && for a in coverage/*; do codeclimate-test-reporter < \\\"$a/lcov.info\\\"; break; done",
+    "test-local": "yarpm run test-unit && yarpm run test-node && yarpm run test-amd && yarpm run test-esm && yarpm run test-globals && yarpm run test-typescript && yarpm run test-webworker",
+    "test-unit": "karma start test/unit/karma.conf.js --single-run",
+    "test-amd": "karma start test/deployment/amd/karma.conf.js --single-run",
+    "test-esm": "karma start test/deployment/esm/karma.conf.js --single-run",
+    "test-globals": "karma start test/deployment/globals/karma.conf.js --single-run",
+    "test-typescript": "karma start test/deployment/typescript/karma.conf.js --single-run",
+    "test-webworker": "karma start test/deployment/webworker/karma.conf.js --single-run",
+    "test-node": "jasmine --config=test/deployment/node/jasmine.json",
+    "test-training": "node test/utils/reference-server.js",
+    "test-typings": "tsc -p types/tsconfig.json && tsc -p types/tsconfig-node.json",
+    "prettier": "prettier --write \"*.{js,ts,md,css,json}\" \"{spec,examples,src,types}/**/*.{js,ts,md,css,json}\"",
+    "lint": "prettier --check \"*.{js,ts,md,css,json}\" \"{spec,examples,src,types}/**/*.{js,ts,md,css,json}\"",
+    "pregenerate-docs": "node deletedocs.js",
+    "generate-docs": "jsdoc -c jsdoc.json --readme README.md"
+  },
+  "browserslist": [
+    "last 2 versions"
+  ]
+}
diff --git a/node_modules/jspdf/types/index.d.ts b/node_modules/jspdf/types/index.d.ts
new file mode 100644
index 0000000..8a95530
--- /dev/null
+++ b/node_modules/jspdf/types/index.d.ts
@@ -0,0 +1,1461 @@
+/** @license
+ *
+ * jsPDF - PDF Document creation from JavaScript
+ *
+ * Copyright (c) 2010-2021 James Hall <james@parall.ax>, https://github.com/MrRio/jsPDF
+ *               2015-2021 yWorks GmbH, http://www.yworks.com
+ *               2015-2021 Lukas Holländer <lukas.hollaender@yworks.com>, https://github.com/HackbrettXXX
+ *               2016-2018 Aras Abbasi <aras.abbasi@gmail.com>
+ *               2018 Amber Schühmacher <https://github.com/amberjs>
+ *               2018 Kevin Gonnord <https://github.com/lleios>
+ *               2018 Jackie Weng <https://github.com/jemerald>
+ *               2010 Aaron Spike, https://github.com/acspike
+ *               2012 Willow Systems Corporation, https://github.com/willowsystems
+ *               2012 Pablo Hess, https://github.com/pablohess
+ *               2012 Florian Jenett, https://github.com/fjenett
+ *               2013 Warren Weckesser, https://github.com/warrenweckesser
+ *               2013 Youssef Beddad, https://github.com/lifof
+ *               2013 Lee Driscoll, https://github.com/lsdriscoll
+ *               2013 Stefan Slonevskiy, https://github.com/stefslon
+ *               2013 Jeremy Morel, https://github.com/jmorel
+ *               2013 Christoph Hartmann, https://github.com/chris-rock
+ *               2014 Juan Pablo Gaviria, https://github.com/juanpgaviria
+ *               2014 James Makes, https://github.com/dollaruw
+ *               2014 Diego Casorran, https://github.com/diegocr
+ *               2014 Steven Spungin, https://github.com/Flamenco
+ *               2014 Kenneth Glassey, https://github.com/Gavvers
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Contributor(s):
+ *    siefkenj, ahwolf, rickygu, Midnith, saintclair, eaparango,
+ *    kim3er, mfo, alnorth, Flamenco
+ */
+
+declare module "jspdf" {
+  export interface Annotation {
+    type: "text" | "freetext" | "link";
+    title?: string;
+    bounds: {
+      x: number;
+      y: number;
+      w: number;
+      h: number;
+    };
+    contents: string;
+    open?: boolean;
+    color?: string;
+    name?: string;
+    top?: number;
+    pageNumber?: number;
+  }
+
+  export interface TextWithLinkOptions {
+    pageNumber?: number;
+    magFactor?: "Fit" | "FitH" | "FitV" | "XYZ";
+    zoom?: number;
+  }
+
+  //jsPDF plugin:AutoPrint
+
+  export interface AutoPrintInput {
+    variant: "non-conform" | "javascript";
+  }
+
+  //jsPDF plugn: HTML
+  export interface Html2CanvasOptions {
+    /** Whether to parse and render the element asynchronously */
+    async?: boolean;
+
+    /** Whether to allow cross-origin images to taint the canvas */
+    allowTaint?: boolean;
+
+    /** Canvas background color, if none is specified in DOM. Set null for transparent */
+    backgroundColor?: string | null;
+
+    /** Existing canvas element to use as a base for drawing on */
+    canvas?: any;
+
+    /** Whether to use ForeignObject rendering if the browser supports it */
+    foreignObjectRendering?: boolean;
+
+    /** Predicate function which removes the matching elements from the render. */
+    ignoreElements?: (element: HTMLElement) => boolean;
+
+    /** Timeout for loading images, in milliseconds. Setting it to 0 will result in no timeout. */
+    imageTimeout?: number;
+
+    /** Whether to render each letter seperately. Necessary if letter-spacing is used. */
+    letterRendering?: boolean;
+
+    /** Whether to log events in the console. */
+    logging?: boolean;
+
+    /** Callback function which is called when the Document has been cloned for rendering, can be used to modify the contents that will be rendered without affecting the original source document. */
+    onclone?: { (doc: HTMLDocument): void };
+
+    /** Url to the proxy which is to be used for loading cross-origin images. If left empty, cross-origin images won't be loaded. */
+    proxy?: string;
+
+    /** Whether to cleanup the cloned DOM elements html2canvas creates temporarily */
+    removeContainer?: boolean;
+
+    /** The scale to use for rendering. Defaults to the browsers device pixel ratio. */
+    scale?: number;
+
+    /** Use svg powered rendering where available (FF11+). */
+    svgRendering?: boolean;
+
+    /** Whether to test each image if it taints the canvas before drawing them */
+    taintTest?: boolean;
+
+    /** Whether to attempt to load cross-origin images as CORS served, before reverting back to proxy. */
+    useCORS?: boolean;
+
+    /** Define the width of the canvas in pixels. If null, renders with full width of the window. */
+    width?: number;
+
+    /** Define the heigt of the canvas in pixels. If null, renders with full height of the window. */
+    height?: number;
+
+    /** Crop canvas x-coordinate */
+    x?: number;
+
+    /** Crop canvas y-coordinate */
+    y?: number;
+
+    /** The x-scroll position to used when rendering element, (for example if the Element uses position: fixed ) */
+    scrollX?: number;
+
+    /** The y-scroll position to used when rendering element, (for example if the Element uses position: fixed ) */
+    scrollY?: number;
+
+    /** Window width to use when rendering Element, which may affect things like Media queries */
+    windowWidth?: number;
+
+    /** Window height to use when rendering Element, which may affect things like Media queries */
+    windowHeight?: number;
+  }
+
+  export interface HTMLWorkerProgress extends Promise<any> {
+    val: number;
+    n: number;
+    ratio: number;
+    state: any;
+    stack: Function[];
+  }
+
+  export interface HTMLWorker extends Promise<any> {
+    from(
+      src: HTMLElement | string,
+      type: "container" | "canvas" | "img" | "pdf" | "context2d"
+    ): HTMLWorker;
+    progress: HTMLWorkerProgress;
+    error(msg: string): void;
+    save(filename: string): Promise<void>;
+    set(opt: HTMLOptions): HTMLWorker;
+    get(key: "string"): HTMLWorker;
+    get(key: "string", cbk: (value: string) => void): string;
+    doCallback(): Promise<void>;
+    outputImg(
+      type: "img" | "datauristring" | "dataurlstring" | "datauri" | "dataurl"
+    ): Promise<string>;
+    outputPdf: jsPDF["output"];
+  }
+
+  export interface HTMLOptionImage {
+    type: "jpeg" | "png" | "webp";
+    quality: number;
+  }
+
+  export interface HTMLFontFace {
+    family: string;
+    style?: "italic" | "oblique" | "normal";
+    stretch?:
+      | "ultra-condensed"
+      | "extra-condensed"
+      | "condensed"
+      | "semi-condensed"
+      | "normal"
+      | "semi-expanded"
+      | "expanded"
+      | "extra-expanded"
+      | "ultra-expanded";
+    weight?:
+      | "normal"
+      | "bold"
+      | 100
+      | 200
+      | 300
+      | 400
+      | 500
+      | 600
+      | 700
+      | 800
+      | 900
+      | "100"
+      | "200"
+      | "300"
+      | "400"
+      | "500"
+      | "600"
+      | "700"
+      | "800"
+      | "900";
+    src: Array<{
+      url: string;
+      format: "truetype";
+    }>;
+  }
+
+  export interface HTMLOptions {
+    callback?: (doc: jsPDF) => void;
+    margin?: number | number[];
+    autoPaging?: boolean | "slice" | "text";
+    filename?: string;
+    image?: HTMLOptionImage;
+    html2canvas?: Html2CanvasOptions;
+    jsPDF?: jsPDF;
+    x?: number;
+    y?: number;
+    width?: number;
+    windowWidth?: number;
+    fontFaces?: HTMLFontFace[];
+  }
+
+  //jsPDF plugin: viewerPreferences
+
+  export interface ViewerPreferencesInput {
+    HideToolbar?: boolean;
+    HideMenubar?: boolean;
+    HideWindowUI?: boolean;
+    FitWindow?: boolean;
+    CenterWindow?: boolean;
+    DisplayDocTitle?: boolean;
+    NonFullScreenPageMode?: "UseNone" | "UseOutlines" | "UseThumbs" | "UseOC";
+    Direction?: "L2R" | "R2L";
+    ViewArea?: "MediaBox" | "CropBox" | "TrimBox" | "BleedBox" | "ArtBox";
+    ViewClip?: "MediaBox" | "CropBox" | "TrimBox" | "BleedBox" | "ArtBox";
+    PrintArea?: "MediaBox" | "CropBox" | "TrimBox" | "BleedBox" | "ArtBox";
+    PrintClip?: "MediaBox" | "CropBox" | "TrimBox" | "BleedBox" | "ArtBox";
+    PrintScaling?: "AppDefault" | "None";
+    Duplex?: "Simplex" | "DuplexFlipShortEdge" | "DuplexFlipLongEdge" | "none";
+    PickTrayByPDFSize?: boolean;
+    PrintPageRange?: number[][];
+    NumCopies?: number;
+  }
+
+  //jsPDF plugin: Outline
+
+  export interface Outline {
+    add(parent: any, title: string, options: OutlineOptions): OutlineItem;
+  }
+  export interface OutlineItem {
+    title: string;
+    options: any;
+    children: any[];
+  }
+  export interface OutlineOptions {
+    pageNumber: number;
+  }
+  // jsPDF plugin: AcroForm
+  export abstract class AcroFormField {}
+  export interface AcroFormField {
+    constructor(): AcroFormField;
+    showWhenPrinted: boolean;
+    x: number;
+    y: number;
+    width: number;
+    height: number;
+    fieldName: string;
+    fontName: string;
+    fontStyle: string;
+    fontSize: number;
+    maxFontSize: number;
+    color: string;
+    defaultValue: string;
+    value: string;
+    hasAnnotation: boolean;
+    readOnly: boolean;
+    required: boolean;
+    noExport: boolean;
+    textAlign: "left" | "center" | "right";
+  }
+
+  export class AcroFormChoiceField {}
+  export interface AcroFormChoiceField extends AcroFormField {
+    topIndex: number;
+    getOptions(): string[];
+    setOptions(value: string[]): void;
+    addOption(value: string): void;
+    removeOption(value: string, allEntries: boolean): void;
+    combo: boolean;
+    edit: boolean;
+    sort: boolean;
+    multiSelect: boolean;
+    doNotSpellCheck: boolean;
+    commitOnSelChange: boolean;
+  }
+
+  export class AcroFormListBox {}
+  export interface AcroFormListBox extends AcroFormChoiceField {}
+
+  export class AcroFormComboBox {}
+  export interface AcroFormComboBox extends AcroFormListBox {}
+
+  export class AcroFormEditBox {}
+  export interface AcroFormEditBox extends AcroFormComboBox {}
+
+  export class AcroFormButton {}
+  export interface AcroFormButton extends AcroFormField {
+    noToggleToOff: boolean;
+    radio: boolean;
+    pushButton: boolean;
+    radioIsUnison: boolean;
+    caption: string;
+    appearanceState: any;
+  }
+
+  export class AcroFormPushButton {}
+  export interface AcroFormPushButton extends AcroFormButton {}
+
+  export class AcroFormChildClass {}
+  export interface AcroFormChildClass extends AcroFormField {
+    Parent: any;
+    optionName: string;
+    caption: string;
+    appearanceState: "On" | "Off";
+  }
+
+  export class AcroFormRadioButton {}
+  export interface AcroFormRadioButton extends AcroFormButton {
+    setAppearance(appearance: string): void;
+    createOption(name: string): AcroFormChildClass;
+  }
+
+  export class AcroFormCheckBox {}
+  export interface AcroFormCheckBox extends AcroFormButton {
+    appearanceState: "On" | "Off";
+  }
+
+  export class AcroFormTextField {}
+  export interface AcroFormTextField extends AcroFormField {
+    multiline: boolean;
+    fileSelect: boolean;
+    doNotSpellCheck: boolean;
+    doNotScroll: boolean;
+    comb: boolean;
+    richText: boolean;
+    maxLength: number;
+    hasAppearanceStream: boolean;
+  }
+
+  export class AcroFormPasswordField {}
+  export interface AcroFormPasswordField extends AcroFormTextField {}
+  // jsPDF plugin: Context2D
+
+  export interface Gradient {
+    addColorStop(position: number, color: string): void;
+    getColor(): string;
+  }
+
+  export interface Context2d {
+    autoPaging: boolean;
+    margin: number[];
+    fillStyle: string | Gradient;
+    filter: string;
+    font: string;
+    globalAlpha: number;
+    globalCompositeOperation: "source-over";
+    imageSmoothingEnabled: boolean;
+    imageSmoothingQuality: "low" | "high";
+    ignoreClearRect: boolean;
+    lastBreak: number;
+    lineCap: "butt" | "round" | "square";
+    lineDashOffset: number;
+    lineJoin: "bevel" | "round" | "miter";
+    lineWidth: number;
+    miterLimit: number;
+    pageBreaks: number[];
+    pageWrapXEnabled: boolean;
+    pageWrapYEnabled: boolean;
+    posX: number;
+    posY: number;
+    shadowBlur: number;
+    shadowColor: string;
+    shadowOffsetX: number;
+    shadowOffsetY: number;
+    strokeStyle: string | Gradient;
+    textAlign: "right" | "end" | "center" | "left" | "start";
+    textBaseline:
+      | "alphabetic"
+      | "bottom"
+      | "top"
+      | "hanging"
+      | "middle"
+      | "ideographic";
+    arc(
+      x: number,
+      y: number,
+      radius: number,
+      startAngle: number,
+      endAngle: number,
+      counterclockwise: boolean
+    ): void;
+    arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void;
+    beginPath(): void;
+    bezierCurveTo(
+      cp1x: number,
+      cp1y: number,
+      cp2x: number,
+      cp2y: number,
+      x: number,
+      y: number
+    ): void;
+    clearRect(x: number, y: number, w: number, h: number): void;
+    clip(): jsPDF;
+    clipEvenOdd(): jsPDF;
+    closePath(): void;
+    createLinearGradient(
+      x0: number,
+      y0: number,
+      x1: number,
+      y1: number
+    ): Gradient;
+    createPattern(): Gradient;
+    createRadialGradient(): Gradient;
+    drawImage(
+      img: string,
+      x: number,
+      y: number,
+      width: number,
+      height: number
+    ): void;
+    drawImage(
+      img: string,
+      sx: number,
+      sy: number,
+      swidth: number,
+      sheight: number,
+      x: number,
+      y: number,
+      width: number,
+      height: number
+    ): void;
+    fill(): void;
+    fillRect(x: number, y: number, w: number, h: number): void;
+    fillText(text: string, x: number, y: number, maxWidth?: number): void;
+    lineTo(x: number, y: number): void;
+    measureText(text: string): number;
+    moveTo(x: number, y: number): void;
+    quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void;
+    rect(x: number, y: number, w: number, h: number): void;
+    restore(): void;
+    rotate(angle: number): void;
+    save(): void;
+    scale(scalewidth: number, scaleheight: number): void;
+    setTransform(
+      a: number,
+      b: number,
+      c: number,
+      d: number,
+      e: number,
+      f: number
+    ): void;
+    stroke(): void;
+    strokeRect(x: number, y: number, w: number, h: number): void;
+    strokeText(text: string, x: number, y: number, maxWidth?: number): void;
+    transform(
+      a: number,
+      b: number,
+      c: number,
+      d: number,
+      e: number,
+      f: number
+    ): void;
+    translate(x: number, y: number): void;
+  }
+
+  export type ImageCompression = "NONE" | "FAST" | "MEDIUM" | "SLOW";
+  export type ColorSpace =
+    | "DeviceRGB"
+    | "DeviceGray"
+    | "DeviceCMYK"
+    | "CalGray"
+    | "CalRGB"
+    | "Lab"
+    | "ICCBased"
+    | "Indexed"
+    | "Pattern"
+    | "Separation"
+    | "DeviceN";
+
+  export type ImageFormat =
+    | "RGBA"
+    | "UNKNOWN"
+    | "PNG"
+    | "TIFF"
+    | "JPG"
+    | "JPEG"
+    | "JPEG2000"
+    | "GIF87a"
+    | "GIF89a"
+    | "WEBP"
+    | "BMP";
+
+  export interface ImageOptions {
+    imageData:
+      | string
+      | HTMLImageElement
+      | HTMLCanvasElement
+      | Uint8Array
+      | RGBAData;
+    x: number;
+    y: number;
+    width: number;
+    height: number;
+    alias?: string;
+    compression?: ImageCompression;
+    rotation?: number;
+    format?: ImageFormat;
+  }
+  export interface ImageProperties {
+    alias: number;
+    width: number;
+    height: number;
+    colorSpace: ColorSpace;
+    bitsPerComponent: number;
+    filter: string;
+    decodeParameters?: string;
+    transparency?: any;
+    palette?: any;
+    sMask?: any;
+    predictor?: number;
+    index: number;
+    data: string;
+    fileType: ImageFormat;
+  }
+
+  export interface TextOptionsLight {
+    align?: "left" | "center" | "right" | "justify";
+    angle?: number | Matrix;
+    baseline?:
+      | "alphabetic"
+      | "ideographic"
+      | "bottom"
+      | "top"
+      | "middle"
+      | "hanging";
+    flags?: {
+      noBOM: boolean;
+      autoencode: boolean;
+    };
+    rotationDirection?: 0 | 1;
+    charSpace?: number;
+    horizontalScale?: number;
+    lineHeightFactor?: number;
+    maxWidth?: number;
+    renderingMode?:
+      | "fill"
+      | "stroke"
+      | "fillThenStroke"
+      | "invisible"
+      | "fillAndAddForClipping"
+      | "strokeAndAddPathForClipping"
+      | "fillThenStrokeAndAddToPathForClipping"
+      | "addToPathForClipping";
+    isInputVisual?: boolean;
+    isOutputVisual?: boolean;
+    isInputRtl?: boolean;
+    isOutputRtl?: boolean;
+    isSymmetricSwapping?: boolean;
+  }
+  export interface TextOptions extends TextOptionsLight {
+    text: string | string[];
+    x: number;
+    y: number;
+  }
+
+  export interface TableRowData {
+    row?: number;
+    data?: any[];
+  }
+
+  export interface TableCellData {
+    row?: number;
+    col?: number;
+    data?: any;
+  }
+
+  export interface TableConfig {
+    printHeaders?: boolean;
+    autoSize?: boolean;
+    margins?: number;
+    fontSize?: number;
+    padding?: number;
+    headerBackgroundColor?: string;
+    headerTextColor?: string;
+    rowStart?: (e: TableRowData, doc: jsPDF) => void;
+    cellStart?: (e: TableCellData, doc: jsPDF) => void;
+    css?: {
+      "font-size": number;
+    };
+  }
+
+  export interface CellConfig {
+    name: string;
+    prompt: string;
+    align: "left" | "center" | "right";
+    padding: number;
+    width: number;
+  }
+
+  export interface EncryptionOptions {
+    userPassword?: string;
+    ownerPassword?: string;
+    userPermissions?: ("print" | "modify" | "copy" | "annot-forms")[];
+  }
+
+  export interface jsPDFOptions {
+    orientation?: "p" | "portrait" | "l" | "landscape";
+    unit?: "pt" | "px" | "in" | "mm" | "cm" | "ex" | "em" | "pc";
+    format?: string | number[];
+    compress?: boolean;
+    precision?: number;
+    filters?: string[];
+    userUnit?: number;
+    encryption?: EncryptionOptions;
+    putOnlyUsedFonts?: boolean;
+    hotfixes?: string[];
+    floatPrecision?: number | "smart";
+  }
+
+  export interface Point {
+    x: number;
+    y: number;
+  }
+
+  export interface Rectangle extends Point {
+    w: number;
+    h: number;
+  }
+
+  export interface PageInfo {
+    objId: number;
+    pageNumber: number;
+    pageContext: any;
+  }
+
+  export interface Font {
+    id: number;
+    encoding: string;
+    fontName: string;
+    fontStyle: string;
+    isStandardFont: boolean;
+    metadata: any;
+    objectNumber: number;
+    postScriptName: string;
+  }
+
+  export interface DocumentProperties {
+    title?: string;
+    subject?: string;
+    author?: string;
+    keywords?: string;
+    creator?: string;
+  }
+
+  export interface PatternData {
+    key: string;
+    matrix?: Matrix;
+    boundingBox?: number[];
+    xStep?: number;
+    yStep?: number;
+  }
+
+  // Single dimensional array of RGBA values. For example from canvas getImageData.
+  export interface RGBAData {
+    data: Uint8ClampedArray;
+    width: number;
+    height: number;
+  }
+
+  export interface PubSub {
+    subscribe(
+      topic: string,
+      callback: (...args: any[]) => void,
+      once?: boolean
+    ): string;
+    unsubscribe(token: string): boolean;
+    publish(topic: string, ...args: any[]): void;
+    getTopics(): Record<
+      string,
+      Record<string, [(...args: any[]) => void, boolean]>
+    >;
+  }
+
+  export class jsPDF {
+    constructor(options?: jsPDFOptions);
+    constructor(
+      orientation?: "p" | "portrait" | "l" | "landscape",
+      unit?: "pt" | "px" | "in" | "mm" | "cm" | "ex" | "em" | "pc",
+      format?: string | number[],
+      compressPdf?: boolean
+    );
+
+    CapJoinStyles: any;
+    version: string;
+
+    compatAPI(body?: (pdf: jsPDF) => void): void;
+    advancedAPI(body?: (pdf: jsPDF) => void): void;
+    isAdvancedAPI(): boolean;
+
+    addFont(
+      postScriptName: string,
+      id: string,
+      fontStyle: string,
+      fontWeight?: string | number,
+      encoding?:
+        | "StandardEncoding"
+        | "MacRomanEncoding"
+        | "Identity-H"
+        | "WinAnsiEncoding",
+      isStandardFont?: boolean
+    ): string;
+    addFont(
+      url: URL,
+      id: string,
+      fontStyle: string,
+      fontWeight?: string | number,
+      encoding?:
+        | "StandardEncoding"
+        | "MacRomanEncoding"
+        | "Identity-H"
+        | "WinAnsiEncoding"
+    ): string;
+    addGState(key: string, gState: GState): jsPDF;
+    addPage(
+      format?: string | number[],
+      orientation?: "p" | "portrait" | "l" | "landscape"
+    ): jsPDF;
+    beginFormObject(
+      x: number,
+      y: number,
+      width: number,
+      height: number,
+      matrix: any
+    ): jsPDF;
+    circle(x: number, y: number, r: number, style?: string | null): jsPDF;
+    clip(rule?: "evenodd"): jsPDF;
+    discardPath(): jsPDF;
+    deletePage(targetPage: number): jsPDF;
+    doFormObject(key: any, matrix: any): jsPDF;
+    ellipse(
+      x: number,
+      y: number,
+      rx: number,
+      ry: number,
+      style?: string | null
+    ): jsPDF;
+    endFormObject(key: any): jsPDF;
+    f2(number: number): string;
+    f3(number: number): string;
+    getCharSpace(): number;
+    getCreationDate(type: string): Date;
+    getCurrentPageInfo(): PageInfo;
+    getDrawColor(): string;
+    getFileId(): string;
+    getFillColor(): string;
+    getFont(): Font;
+    getFontList(): { [key: string]: string[] };
+    getFontSize(): number;
+    getFormObject(key: any): any;
+    getLineHeight(): number;
+    getLineHeightFactor(): number;
+    getLineWidth(): number;
+    getNumberOfPages(): number;
+    getPageInfo(pageNumberOneBased: number): PageInfo;
+    getR2L(): boolean;
+    getStyle(style: string): string;
+    getTextColor(): string;
+    insertPage(beforePage: number): jsPDF;
+    line(
+      x1: number,
+      y1: number,
+      x2: number,
+      y2: number,
+      style?: string | null
+    ): jsPDF;
+    lines(
+      lines: any[],
+      x: any,
+      y: any,
+      scale?: any,
+      style?: string | null,
+      closed?: boolean
+    ): jsPDF;
+    clipEvenOdd(): jsPDF;
+    close(): jsPDF;
+    stroke(): jsPDF;
+    fill(pattern?: PatternData): jsPDF;
+    fillEvenOdd(pattern?: PatternData): jsPDF;
+    fillStroke(pattern?: PatternData): jsPDF;
+    fillStrokeEvenOdd(pattern?: PatternData): jsPDF;
+    moveTo(x: number, y: number): jsPDF;
+    lineTo(x: number, y: number): jsPDF;
+    curveTo(
+      x1: number,
+      y1: number,
+      x2: number,
+      y2: number,
+      x3: number,
+      y3: number
+    ): jsPDF;
+    movePage(targetPage: number, beforePage: number): jsPDF;
+    output(): string;
+    output(type: "arraybuffer"): ArrayBuffer;
+    output(type: "blob"): Blob;
+    output(type: "bloburi" | "bloburl"): URL;
+    output(
+      type: "datauristring" | "dataurlstring",
+      options?: { filename?: string }
+    ): string;
+    output(
+      type: "pdfobjectnewwindow" | "pdfjsnewwindow" | "dataurlnewwindow",
+      options?: { filename?: string }
+    ): Window;
+    output(
+      type: "dataurl" | "datauri",
+      options?: { filename?: string }
+    ): boolean;
+    pdfEscape(text: string, flags: any): string;
+    path(lines?: any[], style?: string): jsPDF;
+    rect(
+      x: number,
+      y: number,
+      w: number,
+      h: number,
+      style?: string | null
+    ): jsPDF;
+    restoreGraphicsState(): jsPDF;
+    roundedRect(
+      x: number,
+      y: number,
+      w: number,
+      h: number,
+      rx: number,
+      ry: number,
+      style?: string | null
+    ): jsPDF;
+    save(filename: string, options: { returnPromise: true }): Promise<void>;
+    save(filename?: string): jsPDF;
+    saveGraphicsState(): jsPDF;
+    setCharSpace(charSpace: number): jsPDF;
+    setCreationDate(date?: Date | string): jsPDF;
+    setCurrentTransformationMatrix(matrix: Matrix): jsPDF;
+    setDisplayMode(
+      zoom:
+        | undefined
+        | null
+        | number
+        | "fullheight"
+        | "fullwidth"
+        | "fullpage"
+        | "original"
+        | string,
+      layout?:
+        | undefined
+        | null
+        | "continuous"
+        | "single"
+        | "twoleft"
+        | "tworight"
+        | "two",
+      pmode?: undefined | null | "UseOutlines" | "UseThumbs" | "FullScreen"
+    ): jsPDF;
+    setDocumentProperties(properties: DocumentProperties): jsPDF;
+    setProperties(properties: DocumentProperties): jsPDF;
+    setDrawColor(ch1: string): jsPDF;
+    setDrawColor(ch1: number): jsPDF;
+    setDrawColor(ch1: number, ch2: number, ch3: number, ch4?: number): jsPDF;
+    setFileId(value: string): jsPDF;
+    setFillColor(ch1: string): jsPDF;
+    setFillColor(ch1: number, ch2: number, ch3: number, ch4?: number): jsPDF;
+    setFont(
+      fontName: string,
+      fontStyle?: string,
+      fontWeight?: string | number
+    ): jsPDF;
+    setFontSize(size: number): jsPDF;
+    setGState(gState: any): jsPDF;
+    setLineCap(style: string | number): jsPDF;
+    setLineDashPattern(dashArray: number[], dashPhase: number): jsPDF;
+    setLineHeightFactor(value: number): jsPDF;
+    setLineJoin(style: string | number): jsPDF;
+    setLineMiterLimit(length: number): jsPDF;
+    setLineWidth(width: number): jsPDF;
+    setPage(pageNumber: number): jsPDF;
+    setR2L(value: boolean): jsPDF;
+    setTextColor(ch1: string): jsPDF;
+    setTextColor(ch1: number): jsPDF;
+    setTextColor(ch1: number, ch2: number, ch3: number, ch4?: number): jsPDF;
+    text(
+      text: string | string[],
+      x: number,
+      y: number,
+      options?: TextOptionsLight,
+      transform?: number | any
+    ): jsPDF;
+    triangle(
+      x1: number,
+      y1: number,
+      x2: number,
+      y2: number,
+      x3: number,
+      y3: number,
+      style?: string | null
+    ): jsPDF;
+    getHorizontalCoordinateString(value: number): number;
+    getVerticalCoordinateString(value: number): number;
+
+    internal: {
+      events: PubSub;
+      scaleFactor: number;
+      pageSize: {
+        width: number;
+        getWidth: () => number;
+        height: number;
+        getHeight: () => number;
+      };
+      pages: number[];
+      getEncryptor(objectId: number): (data: string) => string;
+    };
+
+    /**
+     * jsPDF plugins below:
+     *
+     *  - AcroForm
+     *  - AddImage
+     *  - Annotations
+     *  - AutoPrint
+     *  - Canvas
+     *  - Cell
+     *  - Context2D
+     *  - fileloading
+     *  - html
+     *  - JavaScript
+     *  - split_text_to_size
+     *  - SVG
+     *  - total_pages
+     *  - utf8
+     *  - vfs
+     *  - xmp_metadata
+     */
+
+    // jsPDF plugin: addImage
+    addImage(
+      imageData:
+        | string
+        | HTMLImageElement
+        | HTMLCanvasElement
+        | Uint8Array
+        | RGBAData,
+      format: string,
+      x: number,
+      y: number,
+      w: number,
+      h: number,
+      alias?: string,
+      compression?: ImageCompression,
+      rotation?: number
+    ): jsPDF;
+    addImage(
+      imageData:
+        | string
+        | HTMLImageElement
+        | HTMLCanvasElement
+        | Uint8Array
+        | RGBAData,
+      x: number,
+      y: number,
+      w: number,
+      h: number,
+      alias?: string,
+      compression?: ImageCompression,
+      rotation?: number
+    ): jsPDF;
+    addImage(options: ImageOptions): jsPDF;
+    getImageProperties(
+      imageData: string | HTMLImageElement | HTMLCanvasElement | Uint8Array
+    ): ImageProperties;
+
+    // jsPDF plugin: arabic
+    processArabic(text: string): string;
+
+    // jsPDF plugin: Annotations
+    createAnnotation(options: Annotation): void;
+    link(x: number, y: number, w: number, h: number, options: any): void;
+    textWithLink(text: string, x: number, y: number, options: any): number;
+    getTextWidth(text: string): number;
+
+    // jsPDF plugin: AutoPrint
+    autoPrint(options?: AutoPrintInput): jsPDF;
+
+    // jsPDF plugin: AcroForm
+    addField(field: AcroFormField): jsPDF;
+
+    AcroForm: {
+      ChoiceField(): AcroFormChoiceField;
+      ListBox(): AcroFormListBox;
+      ComboBox(): AcroFormComboBox;
+      EditBox(): AcroFormEditBox;
+      Button(): AcroFormButton;
+      PushButton(): AcroFormPushButton;
+      RadioButton(): AcroFormRadioButton;
+      CheckBox(): AcroFormCheckBox;
+      TextField(): AcroFormTextField;
+      PasswordField(): AcroFormPasswordField;
+      Appearance(): any;
+    };
+
+    // jsPDF plugin: Canvas
+    canvas: {
+      pdf: jsPDF;
+      width: number;
+      height: number;
+      getContext(type?: string): Context2d;
+      style: any;
+    };
+
+    // jsPDF plugin: Cell
+    setHeaderFunction(
+      func: (jsPDFInstance: jsPDF, pages: number) => number[]
+    ): jsPDF;
+    getTextDimensions(
+      text: string,
+      options?: {
+        font?: string;
+        fontSize?: number;
+        maxWidth?: number;
+        scaleFactor?: number;
+      }
+    ): { w: number; h: number };
+
+    cellAddPage(): jsPDF;
+    cell(
+      x: number,
+      y: number,
+      w: number,
+      h: number,
+      txt: string,
+      ln: number,
+      align: string
+    ): jsPDF;
+    table(
+      x: number,
+      y: number,
+      data: { [key: string]: string }[],
+      headers: string[] | CellConfig[],
+      config: TableConfig
+    ): jsPDF;
+    calculateLineHeight(
+      headerNames: string[],
+      columnWidths: number[],
+      model: any[]
+    ): number;
+    setTableHeaderRow(config: CellConfig[]): void;
+    printHeaderRow(lineNumber: number, new_page?: boolean): void;
+
+    context2d: Context2d;
+
+    //jsPDF plugin: Outline
+    outline: Outline;
+    // jsPDF plugin: fileloading
+    loadFile(url: string, sync?: true): string;
+    loadFile(
+      url: string,
+      sync: false,
+      callback: (data: string) => string
+    ): void;
+
+    // jsPDF plugin: html
+    html(src: string | HTMLElement, options?: HTMLOptions): HTMLWorker;
+
+    // jsPDF plugin: JavaScript
+    addJS(javascript: string): jsPDF;
+
+    // jsPDF plugin: split_text_to_size
+    getCharWidthsArray(text: string, options?: any): any[];
+    getStringUnitWidth(text: string, options?: any): number;
+    splitTextToSize(text: string, maxlen: number, options?: any): any;
+
+    // jsPDF plugin: SVG
+    addSvgAsImage(
+      svg: string,
+      x: number,
+      y: number,
+      w: number,
+      h: number,
+      alias?: string,
+      compression?: boolean,
+      rotation?: number
+    ): jsPDF;
+    // jsPDF plugin: setlanguage
+    setLanguage(
+      langCode:
+        | "af"
+        | "sq"
+        | "ar"
+        | "ar-DZ"
+        | "ar-BH"
+        | "ar-EG"
+        | "ar-IQ"
+        | "ar-JO"
+        | "ar-KW"
+        | "ar-LB"
+        | "ar-LY"
+        | "ar-MA"
+        | "ar-OM"
+        | "ar-QA"
+        | "ar-SA"
+        | "ar-SY"
+        | "ar-TN"
+        | "ar-AE"
+        | "ar-YE"
+        | "an"
+        | "hy"
+        | "as"
+        | "ast"
+        | "az"
+        | "eu"
+        | "be"
+        | "bn"
+        | "bs"
+        | "br"
+        | "bg"
+        | "my"
+        | "ca"
+        | "ch"
+        | "ce"
+        | "zh"
+        | "zh-HK"
+        | "zh-CN"
+        | "zh-SG"
+        | "zh-TW"
+        | "cv"
+        | "co"
+        | "cr"
+        | "hr"
+        | "cs"
+        | "da"
+        | "nl"
+        | "nl-BE"
+        | "en"
+        | "en-AU"
+        | "en-BZ"
+        | "en-CA"
+        | "en-IE"
+        | "en-JM"
+        | "en-NZ"
+        | "en-PH"
+        | "en-ZA"
+        | "en-TT"
+        | "en-GB"
+        | "en-US"
+        | "en-ZW"
+        | "eo"
+        | "et"
+        | "fo"
+        | "fj"
+        | "fi"
+        | "fr"
+        | "fr-BE"
+        | "fr-CA"
+        | "fr-FR"
+        | "fr-LU"
+        | "fr-MC"
+        | "fr-CH"
+        | "fy"
+        | "fur"
+        | "gd"
+        | "gd-IE"
+        | "gl"
+        | "ka"
+        | "de"
+        | "de-AT"
+        | "de-DE"
+        | "de-LI"
+        | "de-LU"
+        | "de-CH"
+        | "el"
+        | "gu"
+        | "ht"
+        | "he"
+        | "hi"
+        | "hu"
+        | "is"
+        | "id"
+        | "iu"
+        | "ga"
+        | "it"
+        | "it-CH"
+        | "ja"
+        | "kn"
+        | "ks"
+        | "kk"
+        | "km"
+        | "ky"
+        | "tlh"
+        | "ko"
+        | "ko-KP"
+        | "ko-KR"
+        | "la"
+        | "lv"
+        | "lt"
+        | "lb"
+        | "mk"
+        | "ms"
+        | "ml"
+        | "mt"
+        | "mi"
+        | "mr"
+        | "mo"
+        | "nv"
+        | "ng"
+        | "ne"
+        | "no"
+        | "nb"
+        | "nn"
+        | "oc"
+        | "or"
+        | "om"
+        | "fa"
+        | "fa-IR"
+        | "pl"
+        | "pt"
+        | "pt-BR"
+        | "pa"
+        | "pa-IN"
+        | "pa-PK"
+        | "qu"
+        | "rm"
+        | "ro"
+        | "ro-MO"
+        | "ru"
+        | "ru-MO"
+        | "sz"
+        | "sg"
+        | "sa"
+        | "sc"
+        | "sd"
+        | "si"
+        | "sr"
+        | "sk"
+        | "sl"
+        | "so"
+        | "sb"
+        | "es"
+        | "es-AR"
+        | "es-BO"
+        | "es-CL"
+        | "es-CO"
+        | "es-CR"
+        | "es-DO"
+        | "es-EC"
+        | "es-SV"
+        | "es-GT"
+        | "es-HN"
+        | "es-MX"
+        | "es-NI"
+        | "es-PA"
+        | "es-PY"
+        | "es-PE"
+        | "es-PR"
+        | "es-ES"
+        | "es-UY"
+        | "es-VE"
+        | "sx"
+        | "sw"
+        | "sv"
+        | "sv-FI"
+        | "sv-SV"
+        | "ta"
+        | "tt"
+        | "te"
+        | "th"
+        | "tig"
+        | "ts"
+        | "tn"
+        | "tr"
+        | "tk"
+        | "uk"
+        | "hsb"
+        | "ur"
+        | "ve"
+        | "vi"
+        | "vo"
+        | "wa"
+        | "cy"
+        | "xh"
+        | "ji"
+        | "zu"
+    ): jsPDF;
+
+    // jsPDF plugin: total_pages
+    putTotalPages(pageExpression: string): jsPDF;
+
+    // jsPDF plugin: viewerpreferences
+    viewerPreferences(
+      options: ViewerPreferencesInput,
+      doReset?: boolean
+    ): jsPDF;
+    viewerPreferences(arg: "reset"): jsPDF;
+
+    // jsPDF plugin: vfs
+    existsFileInVFS(filename: string): boolean;
+    addFileToVFS(filename: string, filecontent: string): jsPDF;
+    getFileFromVFS(filename: string): string;
+
+    // jsPDF plugin: xmp_metadata
+    addMetadata(metadata: string, namespaceuri?: string): jsPDF;
+
+    Matrix(
+      a: number,
+      b: number,
+      c: number,
+      d: number,
+      e: number,
+      f: number
+    ): Matrix;
+    matrixMult(m1: Matrix, m2: Matrix): Matrix;
+    unitMatrix: Matrix;
+
+    GState(parameters: GState): GState;
+
+    ShadingPattern(
+      type: ShadingPatternType,
+      coords: number[],
+      colors: ShadingPatterStop[],
+      gState?: GState,
+      matrix?: Matrix
+    ): ShadingPattern;
+    TilingPattern(
+      boundingBox: number[],
+      xStep: number,
+      yStep: number,
+      gState?: GState,
+      matrix?: Matrix
+    ): TilingPattern;
+
+    addShadingPattern(key: string, pattern: ShadingPattern): jsPDF;
+    beginTilingPattern(pattern: TilingPattern): void;
+    endTilingPattern(key: string, pattern: TilingPattern): void;
+
+    static API: jsPDFAPI;
+    static version: string;
+  }
+
+  export class GState {
+    constructor(parameters: GState);
+  }
+
+  export interface GState {
+    opacity?: number;
+    "stroke-opacity"?: number;
+  }
+
+  export interface Matrix {
+    a: number;
+    b: number;
+    c: number;
+    d: number;
+    e: number;
+    f: number;
+
+    sx: number;
+    shy: number;
+    shx: number;
+    sy: number;
+    tx: number;
+    ty: number;
+
+    join(separator?: string): string;
+    multiply(matrix: Matrix): Matrix;
+    decompose(): {
+      scale: Matrix;
+      translate: Matrix;
+      rotate: Matrix;
+      skew: Matrix;
+    };
+    toString(): string;
+    inversed(): Matrix;
+    applyToPoint(point: Point): Point;
+    applyToRectangle(rect: Rectangle): Rectangle;
+    clone(): Matrix;
+  }
+
+  export interface Pattern {
+    gState?: GState;
+    matrix?: Matrix;
+  }
+
+  export interface ShadingPatterStop {
+    offset: number;
+    color: number[];
+  }
+
+  export type ShadingPatternType = "axial" | "radial";
+
+  export class ShadingPattern {
+    constructor(
+      type: ShadingPatternType,
+      coords: number[],
+      colors: ShadingPatterStop[],
+      gState?: GState,
+      matrix?: Matrix
+    );
+  }
+  export interface ShadingPattern extends Pattern {
+    coords: number[];
+    colors: ShadingPatterStop[];
+  }
+
+  export class TilingPattern {
+    constructor(
+      boundingBox: number[],
+      xStep: number,
+      yStep: number,
+      gState?: GState,
+      matrix?: Matrix
+    );
+  }
+
+  export interface TilingPattern extends Pattern {
+    boundingBox: number[];
+    xStep: number;
+    yStep: number;
+  }
+
+  export interface jsPDFAPI {
+    events: any[];
+  }
+
+  export default jsPDF;
+}
diff --git a/node_modules/performance-now/.npmignore b/node_modules/performance-now/.npmignore
new file mode 100644
index 0000000..496ee2c
--- /dev/null
+++ b/node_modules/performance-now/.npmignore
@@ -0,0 +1 @@
+.DS_Store
\ No newline at end of file
diff --git a/node_modules/performance-now/.tm_properties b/node_modules/performance-now/.tm_properties
new file mode 100644
index 0000000..4b8eb3f
--- /dev/null
+++ b/node_modules/performance-now/.tm_properties
@@ -0,0 +1,7 @@
+excludeDirectories = "{.git,node_modules}"
+excludeInFolderSearch = "{excludeDirectories,lib}"
+
+includeFiles = "{.gitignore,.npmignore,.travis.yml}"
+
+[ attr.untitled ]
+fileType = 'source.coffee'
\ No newline at end of file
diff --git a/node_modules/performance-now/.travis.yml b/node_modules/performance-now/.travis.yml
new file mode 100644
index 0000000..1543c19
--- /dev/null
+++ b/node_modules/performance-now/.travis.yml
@@ -0,0 +1,6 @@
+language: node_js
+node_js:
+  - "node"
+  - "6"
+  - "4"
+  - "0.12"
diff --git a/node_modules/performance-now/README.md b/node_modules/performance-now/README.md
new file mode 100644
index 0000000..28080f8
--- /dev/null
+++ b/node_modules/performance-now/README.md
@@ -0,0 +1,30 @@
+# performance-now [![Build Status](https://travis-ci.org/braveg1rl/performance-now.png?branch=master)](https://travis-ci.org/braveg1rl/performance-now) [![Dependency Status](https://david-dm.org/braveg1rl/performance-now.png)](https://david-dm.org/braveg1rl/performance-now)
+
+Implements a function similar to `performance.now` (based on `process.hrtime`).
+
+Modern browsers have a `window.performance` object with - among others - a `now` method which gives time in milliseconds, but with sub-millisecond precision. This module offers the same function based on the Node.js native `process.hrtime` function.
+
+Using `process.hrtime` means that the reported time will be monotonically increasing, and not subject to clock-drift.
+
+According to the [High Resolution Time specification](http://www.w3.org/TR/hr-time/), the number of milliseconds reported by `performance.now` should be relative to the value of `performance.timing.navigationStart`.
+
+In the current version of the module (2.0) the reported time is relative to the time the current Node process has started (inferred from `process.uptime()`).
+
+Version 1.0 reported a different time. The reported time was relative to the time the module was loaded (i.e. the time it was first `require`d). If you need this functionality, version 1.0 is still available on NPM.
+
+## Example usage
+
+```javascript
+var now = require("performance-now")
+var start = now()
+var end = now()
+console.log(start.toFixed(3)) // the number of milliseconds the current node process is running
+console.log((start-end).toFixed(3)) // ~ 0.002 on my system
+```
+
+Running the now function two times right after each other yields a time difference of a few microseconds. Given this overhead, I think it's best to assume that the precision of intervals computed with this method is not higher than 10 microseconds, if you don't know the exact overhead on your own system.
+
+## License
+
+performance-now is released under the [MIT License](http://opensource.org/licenses/MIT).
+Copyright (c) 2017 Braveg1rl
diff --git a/node_modules/performance-now/lib/performance-now.js b/node_modules/performance-now/lib/performance-now.js
new file mode 100644
index 0000000..37f569d
--- /dev/null
+++ b/node_modules/performance-now/lib/performance-now.js
@@ -0,0 +1,36 @@
+// Generated by CoffeeScript 1.12.2
+(function() {
+  var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;
+
+  if ((typeof performance !== "undefined" && performance !== null) && performance.now) {
+    module.exports = function() {
+      return performance.now();
+    };
+  } else if ((typeof process !== "undefined" && process !== null) && process.hrtime) {
+    module.exports = function() {
+      return (getNanoSeconds() - nodeLoadTime) / 1e6;
+    };
+    hrtime = process.hrtime;
+    getNanoSeconds = function() {
+      var hr;
+      hr = hrtime();
+      return hr[0] * 1e9 + hr[1];
+    };
+    moduleLoadTime = getNanoSeconds();
+    upTime = process.uptime() * 1e9;
+    nodeLoadTime = moduleLoadTime - upTime;
+  } else if (Date.now) {
+    module.exports = function() {
+      return Date.now() - loadTime;
+    };
+    loadTime = Date.now();
+  } else {
+    module.exports = function() {
+      return new Date().getTime() - loadTime;
+    };
+    loadTime = new Date().getTime();
+  }
+
+}).call(this);
+
+//# sourceMappingURL=performance-now.js.map
diff --git a/node_modules/performance-now/lib/performance-now.js.map b/node_modules/performance-now/lib/performance-now.js.map
new file mode 100644
index 0000000..bef8362
--- /dev/null
+++ b/node_modules/performance-now/lib/performance-now.js.map
@@ -0,0 +1,10 @@
+{
+  "version": 3,
+  "file": "performance-now.js",
+  "sourceRoot": "..",
+  "sources": [
+    "src/performance-now.coffee"
+  ],
+  "names": [],
+  "mappings": ";AAAA;AAAA,MAAA;;EAAA,IAAG,4DAAA,IAAiB,WAAW,CAAC,GAAhC;IACE,MAAM,CAAC,OAAP,GAAiB,SAAA;aAAG,WAAW,CAAC,GAAZ,CAAA;IAAH,EADnB;GAAA,MAEK,IAAG,oDAAA,IAAa,OAAO,CAAC,MAAxB;IACH,MAAM,CAAC,OAAP,GAAiB,SAAA;aAAG,CAAC,cAAA,CAAA,CAAA,GAAmB,YAApB,CAAA,GAAoC;IAAvC;IACjB,MAAA,GAAS,OAAO,CAAC;IACjB,cAAA,GAAiB,SAAA;AACf,UAAA;MAAA,EAAA,GAAK,MAAA,CAAA;aACL,EAAG,CAAA,CAAA,CAAH,GAAQ,GAAR,GAAc,EAAG,CAAA,CAAA;IAFF;IAGjB,cAAA,GAAiB,cAAA,CAAA;IACjB,MAAA,GAAS,OAAO,CAAC,MAAR,CAAA,CAAA,GAAmB;IAC5B,YAAA,GAAe,cAAA,GAAiB,OAR7B;GAAA,MASA,IAAG,IAAI,CAAC,GAAR;IACH,MAAM,CAAC,OAAP,GAAiB,SAAA;aAAG,IAAI,CAAC,GAAL,CAAA,CAAA,GAAa;IAAhB;IACjB,QAAA,GAAW,IAAI,CAAC,GAAL,CAAA,EAFR;GAAA,MAAA;IAIH,MAAM,CAAC,OAAP,GAAiB,SAAA;aAAO,IAAA,IAAA,CAAA,CAAM,CAAC,OAAP,CAAA,CAAJ,GAAuB;IAA1B;IACjB,QAAA,GAAe,IAAA,IAAA,CAAA,CAAM,CAAC,OAAP,CAAA,EALZ;;AAXL"
+}
\ No newline at end of file
diff --git a/node_modules/performance-now/license.txt b/node_modules/performance-now/license.txt
new file mode 100644
index 0000000..0bf51b4
--- /dev/null
+++ b/node_modules/performance-now/license.txt
@@ -0,0 +1,7 @@
+Copyright (c) 2013 Braveg1rl
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/node_modules/performance-now/package.json b/node_modules/performance-now/package.json
new file mode 100644
index 0000000..962bfc8
--- /dev/null
+++ b/node_modules/performance-now/package.json
@@ -0,0 +1,35 @@
+{
+  "name": "performance-now",
+  "description": "Implements performance.now (based on process.hrtime).",
+  "keywords": [],
+  "version": "2.1.0",
+  "author": "Braveg1rl <braveg1rl@outlook.com>",
+  "license": "MIT",
+  "homepage": "https://github.com/braveg1rl/performance-now",
+  "bugs": "https://github.com/braveg1rl/performance-now/issues",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/braveg1rl/performance-now.git"
+  },
+  "private": false,
+  "dependencies": {},
+  "devDependencies": {
+    "bluebird": "^3.4.7",
+    "call-delayed": "^1.0.0",
+    "chai": "^3.5.0",
+    "chai-increasing": "^1.2.0",
+    "coffee-script": "~1.12.2",
+    "mocha": "~3.2.0",
+    "pre-commit": "^1.2.2"
+  },
+  "optionalDependencies": {},
+  "main": "lib/performance-now.js",
+  "scripts": {
+    "build": "mkdir -p lib && rm -rf lib/* && node_modules/.bin/coffee --compile -m --output lib/ src/",
+    "prepublish": "npm test",
+    "pretest": "npm run build",
+    "test": "node_modules/.bin/mocha",
+    "watch": "node_modules/.bin/coffee --watch --compile --output lib/ src/"
+  },
+  "typings": "src/index.d.ts"
+}
diff --git a/node_modules/performance-now/src/index.d.ts b/node_modules/performance-now/src/index.d.ts
new file mode 100644
index 0000000..68dca8e
--- /dev/null
+++ b/node_modules/performance-now/src/index.d.ts
@@ -0,0 +1,8 @@
+// This file describes the package to typescript.
+
+/**
+ * Returns the number of milliseconds since the page was loaded (if browser)
+ * or the node process was started.
+ */
+declare function now(): number;
+export = now;
diff --git a/node_modules/performance-now/src/performance-now.coffee b/node_modules/performance-now/src/performance-now.coffee
new file mode 100644
index 0000000..a8e075a
--- /dev/null
+++ b/node_modules/performance-now/src/performance-now.coffee
@@ -0,0 +1,17 @@
+if performance? and performance.now
+  module.exports = -> performance.now()
+else if process? and process.hrtime
+  module.exports = -> (getNanoSeconds() - nodeLoadTime) / 1e6
+  hrtime = process.hrtime
+  getNanoSeconds = ->
+    hr = hrtime()
+    hr[0] * 1e9 + hr[1]
+  moduleLoadTime = getNanoSeconds()
+  upTime = process.uptime() * 1e9
+  nodeLoadTime = moduleLoadTime - upTime
+else if Date.now
+  module.exports = -> Date.now() - loadTime
+  loadTime = Date.now()
+else
+  module.exports = -> new Date().getTime() - loadTime
+  loadTime = new Date().getTime()
diff --git a/node_modules/performance-now/test/mocha.opts b/node_modules/performance-now/test/mocha.opts
new file mode 100644
index 0000000..55d8492
--- /dev/null
+++ b/node_modules/performance-now/test/mocha.opts
@@ -0,0 +1,3 @@
+--require coffee-script/register
+--compilers coffee:coffee-script/register
+--reporter spec
\ No newline at end of file
diff --git a/node_modules/performance-now/test/performance-now.coffee b/node_modules/performance-now/test/performance-now.coffee
new file mode 100644
index 0000000..c99e95c
--- /dev/null
+++ b/node_modules/performance-now/test/performance-now.coffee
@@ -0,0 +1,43 @@
+chai = require "chai"
+chai.use(require "chai-increasing")
+{assert,expect} = chai
+Bluebird = require "bluebird"
+
+now = require "../"
+
+getUptime = -> process.uptime() * 1e3
+
+describe "now", ->
+  it "reported time differs at most 1ms from a freshly reported uptime", ->
+    assert.isAtMost Math.abs(now()-getUptime()), 1
+
+  it "two subsequent calls return an increasing number", ->
+    assert.isBelow now(), now()
+
+  it "has less than 10 microseconds overhead", ->
+    assert.isBelow Math.abs(now() - now()), 0.010
+
+  it "can be called 1 million times in under 1 second (averaging under 1 microsecond per call)", ->
+    @timeout 1000
+    now() for [0...1e6]
+    undefined
+
+  it "for 10,000 numbers, number n is never bigger than number n-1", ->
+    stamps = (now() for [1...10000])
+    expect(stamps).to.be.increasing
+
+  it "shows that at least 0.2 ms has passed after a timeout of 1 ms", ->
+    earlier = now()
+    Bluebird.resolve().delay(1).then -> assert.isAbove (now()-earlier), 0.2
+
+  it "shows that at most 3 ms has passed after a timeout of 1 ms", ->
+    earlier = now()
+    Bluebird.resolve().delay(1).then -> assert.isBelow (now()-earlier), 3
+
+  it "shows that at least 190ms ms has passed after a timeout of 200ms", ->
+    earlier = now()
+    Bluebird.resolve().delay(200).then -> assert.isAbove (now()-earlier), 190
+
+  it "shows that at most 220 ms has passed after a timeout of 200ms", ->
+    earlier = now()
+    Bluebird.resolve().delay(200).then -> assert.isBelow (now()-earlier), 220
diff --git a/node_modules/performance-now/test/scripts.coffee b/node_modules/performance-now/test/scripts.coffee
new file mode 100644
index 0000000..16312f1
--- /dev/null
+++ b/node_modules/performance-now/test/scripts.coffee
@@ -0,0 +1,27 @@
+Bluebird = require "bluebird"
+exec = require("child_process").execSync
+{assert} = require "chai"
+
+describe "scripts/initital-value.coffee (module.uptime(), expressed in milliseconds)", ->
+  result = exec("./test/scripts/initial-value.coffee").toString().trim()
+  it "printed #{result}", ->
+  it "printed a value above 100", -> assert.isAbove result, 100
+  it "printed a value below 350", -> assert.isBelow result, 350
+
+describe "scripts/delayed-require.coffee (sum of uptime and 250 ms delay`)", ->
+  result = exec("./test/scripts/delayed-require.coffee").toString().trim()
+  it "printed #{result}", ->
+  it "printed a value above 350", -> assert.isAbove result, 350
+  it "printed a value below 600", -> assert.isBelow result, 600
+
+describe "scripts/delayed-call.coffee (sum of uptime and 250 ms delay`)", ->
+  result = exec("./test/scripts/delayed-call.coffee").toString().trim()
+  it "printed #{result}", ->
+  it "printed a value above 350", -> assert.isAbove result, 350
+  it "printed a value below 600", -> assert.isBelow result, 600
+
+describe "scripts/difference.coffee", ->
+  result = exec("./test/scripts/difference.coffee").toString().trim()
+  it "printed #{result}", ->
+  it "printed a value above 0.005", -> assert.isAbove result, 0.005
+  it "printed a value below 0.07", -> assert.isBelow result, 0.07
diff --git a/node_modules/performance-now/test/scripts/delayed-call.coffee b/node_modules/performance-now/test/scripts/delayed-call.coffee
new file mode 100644
index 0000000..0c3bab5
--- /dev/null
+++ b/node_modules/performance-now/test/scripts/delayed-call.coffee
@@ -0,0 +1,11 @@
+#!/usr/bin/env ./node_modules/.bin/coffee
+
+###
+Expected output is a number above 350 and below 600.
+The time reported is relative to the time the node.js process was started
+this is approximately at `(Date.now() process.uptime() * 1000)`
+###
+
+delay = require "call-delayed"
+now = require "../../lib/performance-now"
+delay 250, -> console.log now().toFixed 3
diff --git a/node_modules/performance-now/test/scripts/delayed-require.coffee b/node_modules/performance-now/test/scripts/delayed-require.coffee
new file mode 100644
index 0000000..3ddee95
--- /dev/null
+++ b/node_modules/performance-now/test/scripts/delayed-require.coffee
@@ -0,0 +1,12 @@
+#!/usr/bin/env ./node_modules/.bin/coffee
+
+###
+Expected output is a number above 350 and below 600.
+The time reported is relative to the time the node.js process was started
+this is approximately at `(Date.now() process.uptime() * 1000)`
+###
+
+delay = require "call-delayed"
+delay 250, ->
+  now = require "../../lib/performance-now"
+  console.log now().toFixed 3
diff --git a/node_modules/performance-now/test/scripts/difference.coffee b/node_modules/performance-now/test/scripts/difference.coffee
new file mode 100644
index 0000000..0b5edf6
--- /dev/null
+++ b/node_modules/performance-now/test/scripts/difference.coffee
@@ -0,0 +1,6 @@
+#!/usr/bin/env ./node_modules/.bin/coffee
+
+# Expected output is above 0.005 and below 0.07.
+
+now = require('../../lib/performance-now')
+console.log -(now() - now()).toFixed 3
diff --git a/node_modules/performance-now/test/scripts/initial-value.coffee b/node_modules/performance-now/test/scripts/initial-value.coffee
new file mode 100644
index 0000000..19ef4e0
--- /dev/null
+++ b/node_modules/performance-now/test/scripts/initial-value.coffee
@@ -0,0 +1,10 @@
+#!/usr/bin/env ./node_modules/.bin/coffee
+
+###
+Expected output is a number above 100 and below 350.
+The time reported is relative to the time the node.js process was started
+this is approximately at `(Date.now() process.uptime() * 1000)`
+###
+
+now = require '../../lib/performance-now'
+console.log now().toFixed 3
diff --git a/node_modules/raf/LICENSE b/node_modules/raf/LICENSE
new file mode 100644
index 0000000..d597ade
--- /dev/null
+++ b/node_modules/raf/LICENSE
@@ -0,0 +1,7 @@
+Copyright 2013 Chris Dickinson <chris@neversaw.us>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/raf/README.md b/node_modules/raf/README.md
new file mode 100644
index 0000000..8152a89
--- /dev/null
+++ b/node_modules/raf/README.md
@@ -0,0 +1,83 @@
+# raf
+
+[![Browser Support](http://ci.testling.com/chrisdickinson/raf.png)](http://ci.testling.com/chrisdickinson/raf)
+
+requestAnimationFrame polyfill for node and the browser.
+
+```js
+var raf = require('raf')
+
+raf(function tick() {
+  // Animation logic
+  raf(tick)
+})
+```
+
+**Note:** The stream/event emitter logic found in versions prior to 1.0.0 can be found in [raf-stream](https://www.npmjs.org/package/raf-stream).
+
+## Getting started
+
+### CommonJS (Node, Browserify, Webpack, etc.)
+
+Install `raf` from npm:
+
+```bash
+npm install --save raf
+```
+
+Require it like you would any other module:
+
+```js
+const raf = require('raf')
+```
+
+### AMD (require.js, etc)
+
+Download the UMD-bundle from [wzrd.in](https://wzrd.in/standalone/raf@latest) (remember to include the current version number in the filename).
+
+Add it to your AMD module loader config and require it like you would any other module:
+
+```html
+define(['raf'], raf => {...})
+```
+
+### `<script>`
+
+Download the UMD-bundle from [wzrd.in](https://wzrd.in/standalone/raf@latest) (remember to include the current version number in the filename).
+
+Then include it via a script tag:
+
+```html
+<script src="raf-x.x.x.js"></script>
+```
+
+The API will be available on `window.raf`.
+
+## API
+
+[Documentation at Mozilla Developer Network](https://developer.mozilla.org/en-US/docs/Web/API/window.requestAnimationFrame), [W3 Specification](http://www.w3.org/TR/animation-timing/#requestAnimationFrame)
+
+### var handle = raf(callback)
+
+`callback` is the function to invoke in the next frame. `handle` is a long integer value that uniquely identifies the entry in the callback list. This is a non-zero value, but you may not make any other assumptions about its value.
+
+### raf.cancel(handle)
+
+`handle` is the entry identifier returned by `raf()`. Removes the queued animation frame callback (other queued callbacks will still be invoked unless cancelled).
+
+### raf.polyfill([object])
+
+Shorthand to polyfill `window.requestAnimationFrame` and `window.cancelAnimationFrame` if necessary (Polyfills `global` in node).
+
+Alternatively you can require `raf/polyfill` which will act the same as `require('raf').polyfill()`.
+
+If you provide `object` the polyfills are attached to that given object, instead of the inferred global.
+Useful if you have an instance of a fake `window` object, and want to add `raf` and `caf` to it.
+
+## Acknowledgments
+
+Based on work by Erik Möller, Paul Irish, and Tino Zijdel (https://gist.github.com/paulirish/1579671)
+
+## License
+
+MIT
diff --git a/node_modules/raf/index.js b/node_modules/raf/index.js
new file mode 100644
index 0000000..14ddddb
--- /dev/null
+++ b/node_modules/raf/index.js
@@ -0,0 +1,75 @@
+var now = require('performance-now')
+  , root = typeof window === 'undefined' ? global : window
+  , vendors = ['moz', 'webkit']
+  , suffix = 'AnimationFrame'
+  , raf = root['request' + suffix]
+  , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]
+
+for(var i = 0; !raf && i < vendors.length; i++) {
+  raf = root[vendors[i] + 'Request' + suffix]
+  caf = root[vendors[i] + 'Cancel' + suffix]
+      || root[vendors[i] + 'CancelRequest' + suffix]
+}
+
+// Some versions of FF have rAF but not cAF
+if(!raf || !caf) {
+  var last = 0
+    , id = 0
+    , queue = []
+    , frameDuration = 1000 / 60
+
+  raf = function(callback) {
+    if(queue.length === 0) {
+      var _now = now()
+        , next = Math.max(0, frameDuration - (_now - last))
+      last = next + _now
+      setTimeout(function() {
+        var cp = queue.slice(0)
+        // Clear queue here to prevent
+        // callbacks from appending listeners
+        // to the current frame's queue
+        queue.length = 0
+        for(var i = 0; i < cp.length; i++) {
+          if(!cp[i].cancelled) {
+            try{
+              cp[i].callback(last)
+            } catch(e) {
+              setTimeout(function() { throw e }, 0)
+            }
+          }
+        }
+      }, Math.round(next))
+    }
+    queue.push({
+      handle: ++id,
+      callback: callback,
+      cancelled: false
+    })
+    return id
+  }
+
+  caf = function(handle) {
+    for(var i = 0; i < queue.length; i++) {
+      if(queue[i].handle === handle) {
+        queue[i].cancelled = true
+      }
+    }
+  }
+}
+
+module.exports = function(fn) {
+  // Wrap in a new function to prevent
+  // `cancel` potentially being assigned
+  // to the native rAF function
+  return raf.call(root, fn)
+}
+module.exports.cancel = function() {
+  caf.apply(root, arguments)
+}
+module.exports.polyfill = function(object) {
+  if (!object) {
+    object = root;
+  }
+  object.requestAnimationFrame = raf
+  object.cancelAnimationFrame = caf
+}
diff --git a/node_modules/raf/package.json b/node_modules/raf/package.json
new file mode 100644
index 0000000..2fc3093
--- /dev/null
+++ b/node_modules/raf/package.json
@@ -0,0 +1,48 @@
+{
+  "name": "raf",
+  "version": "3.4.1",
+  "description": "requestAnimationFrame polyfill for node and the browser",
+  "main": "index.js",
+  "scripts": {
+    "testling": "browserify test.js | testling",
+    "test": "node test.js"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/chrisdickinson/raf.git"
+  },
+  "keywords": [
+    "requestAnimationFrame",
+    "polyfill"
+  ],
+  "author": "Chris Dickinson <chris@neversaw.us>",
+  "contributors": [
+    "Christian Maughan Tegnér <christian.tegner@gmail.com>"
+  ],
+  "license": "MIT",
+  "devDependencies": {
+    "testling": "~1.6.1",
+    "browserify": "~4.1.2",
+    "tape": "^4.0.0"
+  },
+  "dependencies": {
+    "performance-now": "^2.1.0"
+  },
+  "testling": {
+    "files": "test.js",
+    "browsers": [
+      "iexplore/6.0..latest",
+      "firefox/3.0..6.0",
+      "firefox/15.0..latest",
+      "firefox/nightly",
+      "chrome/4.0..10.0",
+      "chrome/20.0..latest",
+      "chrome/canary",
+      "opera/10.0..latest",
+      "opera/next",
+      "safari/4.0..latest",
+      "ipad/6.0..latest",
+      "iphone/6.0..latest"
+    ]
+  }
+}
diff --git a/node_modules/raf/polyfill.js b/node_modules/raf/polyfill.js
new file mode 100644
index 0000000..c4c789c
--- /dev/null
+++ b/node_modules/raf/polyfill.js
@@ -0,0 +1 @@
+require('./').polyfill()
diff --git a/node_modules/raf/test.js b/node_modules/raf/test.js
new file mode 100644
index 0000000..bcaa1e0
--- /dev/null
+++ b/node_modules/raf/test.js
@@ -0,0 +1,62 @@
+var test = require('tape')
+  , raf = require('./index.js')
+
+test('continues to emit events', function(t) {
+  t.plan(11)
+
+  var start = new Date().getTime()
+    , times = 0
+
+  raf(function tick(dt) {
+    t.ok(dt >= 0, 'time has passed: ' + dt)
+    if(++times == 10) {
+      var elapsed = (new Date().getTime() - start)
+      t.ok(elapsed >= 150, 'should take at least 9 frames worth of wall time: ' + elapsed)
+      t.end()
+    } else {
+      raf(tick)
+    }
+  })
+})
+
+test('cancel removes callbacks from queue', function(t) {
+  t.plan(6)
+
+  function cb1() { cb1.called = true }
+  function cb2() { cb2.called = true }
+  function cb3() { cb3.called = true }
+
+  var handle1 = raf(cb1)
+  t.ok(handle1, 'returns a handle')
+  var handle2 = raf(cb2)
+  t.ok(handle2, 'returns a handle')
+  var handle3 = raf(cb3)
+  t.ok(handle3, 'returns a handle')
+
+  raf.cancel(handle2)
+
+  raf(function() {
+    t.ok(cb1.called, 'callback was invoked')
+    t.notOk(cb2.called, 'callback was cancelled')
+    t.ok(cb3.called, 'callback was invoked')
+    t.end()
+  })
+})
+
+test('raf should throw on errors', function(t) {
+  t.plan(1)
+
+  var onError = function() {
+    t.pass('error bubbled up to event loop')
+  }
+
+  if(typeof window !== 'undefined') {
+    window.onerror = onError
+  } else if(typeof process !== 'undefined') {
+    process.on('uncaughtException', onError)
+  }
+
+  raf(function() {
+    throw new Error('foo')
+  })
+})
diff --git a/node_modules/raf/window.js b/node_modules/raf/window.js
new file mode 100644
index 0000000..bdf2daa
--- /dev/null
+++ b/node_modules/raf/window.js
@@ -0,0 +1,5 @@
+try {
+  module.exports = window
+} catch(e) {
+  module.exports = {}
+}
diff --git a/node_modules/regenerator-runtime/LICENSE b/node_modules/regenerator-runtime/LICENSE
new file mode 100644
index 0000000..cde61b6
--- /dev/null
+++ b/node_modules/regenerator-runtime/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2014-present, Facebook, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/regenerator-runtime/README.md b/node_modules/regenerator-runtime/README.md
new file mode 100644
index 0000000..e8702ba
--- /dev/null
+++ b/node_modules/regenerator-runtime/README.md
@@ -0,0 +1,31 @@
+# regenerator-runtime
+
+Standalone runtime for
+[Regenerator](https://github.com/facebook/regenerator)-compiled generator
+and `async` functions.
+
+To import the runtime as a module (recommended), either of the following
+import styles will work:
+```js
+// CommonJS
+const regeneratorRuntime = require("regenerator-runtime");
+
+// ECMAScript 2015
+import regeneratorRuntime from "regenerator-runtime";
+```
+
+To ensure that `regeneratorRuntime` is defined globally, either of the
+following styles will work:
+```js
+// CommonJS
+require("regenerator-runtime/runtime");
+
+// ECMAScript 2015
+import "regenerator-runtime/runtime.js";
+```
+
+To get the absolute file system path of `runtime.js`, evaluate the
+following expression:
+```js
+require("regenerator-runtime/path").path
+```
diff --git a/node_modules/regenerator-runtime/package.json b/node_modules/regenerator-runtime/package.json
new file mode 100644
index 0000000..503086f
--- /dev/null
+++ b/node_modules/regenerator-runtime/package.json
@@ -0,0 +1,19 @@
+{
+  "name": "regenerator-runtime",
+  "author": "Ben Newman <bn@cs.stanford.edu>",
+  "description": "Runtime for Regenerator-compiled generator and async functions.",
+  "version": "0.14.1",
+  "main": "runtime.js",
+  "keywords": [
+    "regenerator",
+    "runtime",
+    "generator",
+    "async"
+  ],
+  "sideEffects": true,
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/facebook/regenerator/tree/main/packages/runtime"
+  },
+  "license": "MIT"
+}
diff --git a/node_modules/regenerator-runtime/path.js b/node_modules/regenerator-runtime/path.js
new file mode 100644
index 0000000..ced878b
--- /dev/null
+++ b/node_modules/regenerator-runtime/path.js
@@ -0,0 +1,11 @@
+/**
+ * Copyright (c) 2014-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+exports.path = require("path").join(
+  __dirname,
+  "runtime.js"
+);
diff --git a/node_modules/regenerator-runtime/runtime.js b/node_modules/regenerator-runtime/runtime.js
new file mode 100644
index 0000000..5593ca5
--- /dev/null
+++ b/node_modules/regenerator-runtime/runtime.js
@@ -0,0 +1,761 @@
+/**
+ * Copyright (c) 2014-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+var runtime = (function (exports) {
+  "use strict";
+
+  var Op = Object.prototype;
+  var hasOwn = Op.hasOwnProperty;
+  var defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; };
+  var undefined; // More compressible than void 0.
+  var $Symbol = typeof Symbol === "function" ? Symbol : {};
+  var iteratorSymbol = $Symbol.iterator || "@@iterator";
+  var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
+  var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
+
+  function define(obj, key, value) {
+    Object.defineProperty(obj, key, {
+      value: value,
+      enumerable: true,
+      configurable: true,
+      writable: true
+    });
+    return obj[key];
+  }
+  try {
+    // IE 8 has a broken Object.defineProperty that only works on DOM objects.
+    define({}, "");
+  } catch (err) {
+    define = function(obj, key, value) {
+      return obj[key] = value;
+    };
+  }
+
+  function wrap(innerFn, outerFn, self, tryLocsList) {
+    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.
+    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
+    var generator = Object.create(protoGenerator.prototype);
+    var context = new Context(tryLocsList || []);
+
+    // The ._invoke method unifies the implementations of the .next,
+    // .throw, and .return methods.
+    defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) });
+
+    return generator;
+  }
+  exports.wrap = wrap;
+
+  // Try/catch helper to minimize deoptimizations. Returns a completion
+  // record like context.tryEntries[i].completion. This interface could
+  // have been (and was previously) designed to take a closure to be
+  // invoked without arguments, but in all the cases we care about we
+  // already have an existing method we want to call, so there's no need
+  // to create a new function object. We can even get away with assuming
+  // the method takes exactly one argument, since that happens to be true
+  // in every case, so we don't have to touch the arguments object. The
+  // only additional allocation required is the completion record, which
+  // has a stable shape and so hopefully should be cheap to allocate.
+  function tryCatch(fn, obj, arg) {
+    try {
+      return { type: "normal", arg: fn.call(obj, arg) };
+    } catch (err) {
+      return { type: "throw", arg: err };
+    }
+  }
+
+  var GenStateSuspendedStart = "suspendedStart";
+  var GenStateSuspendedYield = "suspendedYield";
+  var GenStateExecuting = "executing";
+  var GenStateCompleted = "completed";
+
+  // Returning this object from the innerFn has the same effect as
+  // breaking out of the dispatch switch statement.
+  var ContinueSentinel = {};
+
+  // Dummy constructor functions that we use as the .constructor and
+  // .constructor.prototype properties for functions that return Generator
+  // objects. For full spec compliance, you may wish to configure your
+  // minifier not to mangle the names of these two functions.
+  function Generator() {}
+  function GeneratorFunction() {}
+  function GeneratorFunctionPrototype() {}
+
+  // This is a polyfill for %IteratorPrototype% for environments that
+  // don't natively support it.
+  var IteratorPrototype = {};
+  define(IteratorPrototype, iteratorSymbol, function () {
+    return this;
+  });
+
+  var getProto = Object.getPrototypeOf;
+  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
+  if (NativeIteratorPrototype &&
+      NativeIteratorPrototype !== Op &&
+      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
+    // This environment has a native %IteratorPrototype%; use it instead
+    // of the polyfill.
+    IteratorPrototype = NativeIteratorPrototype;
+  }
+
+  var Gp = GeneratorFunctionPrototype.prototype =
+    Generator.prototype = Object.create(IteratorPrototype);
+  GeneratorFunction.prototype = GeneratorFunctionPrototype;
+  defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: true });
+  defineProperty(
+    GeneratorFunctionPrototype,
+    "constructor",
+    { value: GeneratorFunction, configurable: true }
+  );
+  GeneratorFunction.displayName = define(
+    GeneratorFunctionPrototype,
+    toStringTagSymbol,
+    "GeneratorFunction"
+  );
+
+  // Helper for defining the .next, .throw, and .return methods of the
+  // Iterator interface in terms of a single ._invoke method.
+  function defineIteratorMethods(prototype) {
+    ["next", "throw", "return"].forEach(function(method) {
+      define(prototype, method, function(arg) {
+        return this._invoke(method, arg);
+      });
+    });
+  }
+
+  exports.isGeneratorFunction = function(genFun) {
+    var ctor = typeof genFun === "function" && genFun.constructor;
+    return ctor
+      ? ctor === GeneratorFunction ||
+        // For the native GeneratorFunction constructor, the best we can
+        // do is to check its .name property.
+        (ctor.displayName || ctor.name) === "GeneratorFunction"
+      : false;
+  };
+
+  exports.mark = function(genFun) {
+    if (Object.setPrototypeOf) {
+      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
+    } else {
+      genFun.__proto__ = GeneratorFunctionPrototype;
+      define(genFun, toStringTagSymbol, "GeneratorFunction");
+    }
+    genFun.prototype = Object.create(Gp);
+    return genFun;
+  };
+
+  // Within the body of any async function, `await x` is transformed to
+  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test
+  // `hasOwn.call(value, "__await")` to determine if the yielded value is
+  // meant to be awaited.
+  exports.awrap = function(arg) {
+    return { __await: arg };
+  };
+
+  function AsyncIterator(generator, PromiseImpl) {
+    function invoke(method, arg, resolve, reject) {
+      var record = tryCatch(generator[method], generator, arg);
+      if (record.type === "throw") {
+        reject(record.arg);
+      } else {
+        var result = record.arg;
+        var value = result.value;
+        if (value &&
+            typeof value === "object" &&
+            hasOwn.call(value, "__await")) {
+          return PromiseImpl.resolve(value.__await).then(function(value) {
+            invoke("next", value, resolve, reject);
+          }, function(err) {
+            invoke("throw", err, resolve, reject);
+          });
+        }
+
+        return PromiseImpl.resolve(value).then(function(unwrapped) {
+          // When a yielded Promise is resolved, its final value becomes
+          // the .value of the Promise<{value,done}> result for the
+          // current iteration.
+          result.value = unwrapped;
+          resolve(result);
+        }, function(error) {
+          // If a rejected Promise was yielded, throw the rejection back
+          // into the async generator function so it can be handled there.
+          return invoke("throw", error, resolve, reject);
+        });
+      }
+    }
+
+    var previousPromise;
+
+    function enqueue(method, arg) {
+      function callInvokeWithMethodAndArg() {
+        return new PromiseImpl(function(resolve, reject) {
+          invoke(method, arg, resolve, reject);
+        });
+      }
+
+      return previousPromise =
+        // If enqueue has been called before, then we want to wait until
+        // all previous Promises have been resolved before calling invoke,
+        // so that results are always delivered in the correct order. If
+        // enqueue has not been called before, then it is important to
+        // call invoke immediately, without waiting on a callback to fire,
+        // so that the async generator function has the opportunity to do
+        // any necessary setup in a predictable way. This predictability
+        // is why the Promise constructor synchronously invokes its
+        // executor callback, and why async functions synchronously
+        // execute code before the first await. Since we implement simple
+        // async functions in terms of async generators, it is especially
+        // important to get this right, even though it requires care.
+        previousPromise ? previousPromise.then(
+          callInvokeWithMethodAndArg,
+          // Avoid propagating failures to Promises returned by later
+          // invocations of the iterator.
+          callInvokeWithMethodAndArg
+        ) : callInvokeWithMethodAndArg();
+    }
+
+    // Define the unified helper method that is used to implement .next,
+    // .throw, and .return (see defineIteratorMethods).
+    defineProperty(this, "_invoke", { value: enqueue });
+  }
+
+  defineIteratorMethods(AsyncIterator.prototype);
+  define(AsyncIterator.prototype, asyncIteratorSymbol, function () {
+    return this;
+  });
+  exports.AsyncIterator = AsyncIterator;
+
+  // Note that simple async functions are implemented on top of
+  // AsyncIterator objects; they just return a Promise for the value of
+  // the final result produced by the iterator.
+  exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {
+    if (PromiseImpl === void 0) PromiseImpl = Promise;
+
+    var iter = new AsyncIterator(
+      wrap(innerFn, outerFn, self, tryLocsList),
+      PromiseImpl
+    );
+
+    return exports.isGeneratorFunction(outerFn)
+      ? iter // If outerFn is a generator, return the full iterator.
+      : iter.next().then(function(result) {
+          return result.done ? result.value : iter.next();
+        });
+  };
+
+  function makeInvokeMethod(innerFn, self, context) {
+    var state = GenStateSuspendedStart;
+
+    return function invoke(method, arg) {
+      if (state === GenStateExecuting) {
+        throw new Error("Generator is already running");
+      }
+
+      if (state === GenStateCompleted) {
+        if (method === "throw") {
+          throw arg;
+        }
+
+        // Be forgiving, per GeneratorResume behavior specified since ES2015:
+        // ES2015 spec, step 3: https://262.ecma-international.org/6.0/#sec-generatorresume
+        // Latest spec, step 2: https://tc39.es/ecma262/#sec-generatorresume
+        return doneResult();
+      }
+
+      context.method = method;
+      context.arg = arg;
+
+      while (true) {
+        var delegate = context.delegate;
+        if (delegate) {
+          var delegateResult = maybeInvokeDelegate(delegate, context);
+          if (delegateResult) {
+            if (delegateResult === ContinueSentinel) continue;
+            return delegateResult;
+          }
+        }
+
+        if (context.method === "next") {
+          // Setting context._sent for legacy support of Babel's
+          // function.sent implementation.
+          context.sent = context._sent = context.arg;
+
+        } else if (context.method === "throw") {
+          if (state === GenStateSuspendedStart) {
+            state = GenStateCompleted;
+            throw context.arg;
+          }
+
+          context.dispatchException(context.arg);
+
+        } else if (context.method === "return") {
+          context.abrupt("return", context.arg);
+        }
+
+        state = GenStateExecuting;
+
+        var record = tryCatch(innerFn, self, context);
+        if (record.type === "normal") {
+          // If an exception is thrown from innerFn, we leave state ===
+          // GenStateExecuting and loop back for another invocation.
+          state = context.done
+            ? GenStateCompleted
+            : GenStateSuspendedYield;
+
+          if (record.arg === ContinueSentinel) {
+            continue;
+          }
+
+          return {
+            value: record.arg,
+            done: context.done
+          };
+
+        } else if (record.type === "throw") {
+          state = GenStateCompleted;
+          // Dispatch the exception by looping back around to the
+          // context.dispatchException(context.arg) call above.
+          context.method = "throw";
+          context.arg = record.arg;
+        }
+      }
+    };
+  }
+
+  // Call delegate.iterator[context.method](context.arg) and handle the
+  // result, either by returning a { value, done } result from the
+  // delegate iterator, or by modifying context.method and context.arg,
+  // setting context.delegate to null, and returning the ContinueSentinel.
+  function maybeInvokeDelegate(delegate, context) {
+    var methodName = context.method;
+    var method = delegate.iterator[methodName];
+    if (method === undefined) {
+      // A .throw or .return when the delegate iterator has no .throw
+      // method, or a missing .next method, always terminate the
+      // yield* loop.
+      context.delegate = null;
+
+      // Note: ["return"] must be used for ES3 parsing compatibility.
+      if (methodName === "throw" && delegate.iterator["return"]) {
+        // If the delegate iterator has a return method, give it a
+        // chance to clean up.
+        context.method = "return";
+        context.arg = undefined;
+        maybeInvokeDelegate(delegate, context);
+
+        if (context.method === "throw") {
+          // If maybeInvokeDelegate(context) changed context.method from
+          // "return" to "throw", let that override the TypeError below.
+          return ContinueSentinel;
+        }
+      }
+      if (methodName !== "return") {
+        context.method = "throw";
+        context.arg = new TypeError(
+          "The iterator does not provide a '" + methodName + "' method");
+      }
+
+      return ContinueSentinel;
+    }
+
+    var record = tryCatch(method, delegate.iterator, context.arg);
+
+    if (record.type === "throw") {
+      context.method = "throw";
+      context.arg = record.arg;
+      context.delegate = null;
+      return ContinueSentinel;
+    }
+
+    var info = record.arg;
+
+    if (! info) {
+      context.method = "throw";
+      context.arg = new TypeError("iterator result is not an object");
+      context.delegate = null;
+      return ContinueSentinel;
+    }
+
+    if (info.done) {
+      // Assign the result of the finished delegate to the temporary
+      // variable specified by delegate.resultName (see delegateYield).
+      context[delegate.resultName] = info.value;
+
+      // Resume execution at the desired location (see delegateYield).
+      context.next = delegate.nextLoc;
+
+      // If context.method was "throw" but the delegate handled the
+      // exception, let the outer generator proceed normally. If
+      // context.method was "next", forget context.arg since it has been
+      // "consumed" by the delegate iterator. If context.method was
+      // "return", allow the original .return call to continue in the
+      // outer generator.
+      if (context.method !== "return") {
+        context.method = "next";
+        context.arg = undefined;
+      }
+
+    } else {
+      // Re-yield the result returned by the delegate method.
+      return info;
+    }
+
+    // The delegate iterator is finished, so forget it and continue with
+    // the outer generator.
+    context.delegate = null;
+    return ContinueSentinel;
+  }
+
+  // Define Generator.prototype.{next,throw,return} in terms of the
+  // unified ._invoke helper method.
+  defineIteratorMethods(Gp);
+
+  define(Gp, toStringTagSymbol, "Generator");
+
+  // A Generator should always return itself as the iterator object when the
+  // @@iterator function is called on it. Some browsers' implementations of the
+  // iterator prototype chain incorrectly implement this, causing the Generator
+  // object to not be returned from this call. This ensures that doesn't happen.
+  // See https://github.com/facebook/regenerator/issues/274 for more details.
+  define(Gp, iteratorSymbol, function() {
+    return this;
+  });
+
+  define(Gp, "toString", function() {
+    return "[object Generator]";
+  });
+
+  function pushTryEntry(locs) {
+    var entry = { tryLoc: locs[0] };
+
+    if (1 in locs) {
+      entry.catchLoc = locs[1];
+    }
+
+    if (2 in locs) {
+      entry.finallyLoc = locs[2];
+      entry.afterLoc = locs[3];
+    }
+
+    this.tryEntries.push(entry);
+  }
+
+  function resetTryEntry(entry) {
+    var record = entry.completion || {};
+    record.type = "normal";
+    delete record.arg;
+    entry.completion = record;
+  }
+
+  function Context(tryLocsList) {
+    // The root entry object (effectively a try statement without a catch
+    // or a finally block) gives us a place to store values thrown from
+    // locations where there is no enclosing try statement.
+    this.tryEntries = [{ tryLoc: "root" }];
+    tryLocsList.forEach(pushTryEntry, this);
+    this.reset(true);
+  }
+
+  exports.keys = function(val) {
+    var object = Object(val);
+    var keys = [];
+    for (var key in object) {
+      keys.push(key);
+    }
+    keys.reverse();
+
+    // Rather than returning an object with a next method, we keep
+    // things simple and return the next function itself.
+    return function next() {
+      while (keys.length) {
+        var key = keys.pop();
+        if (key in object) {
+          next.value = key;
+          next.done = false;
+          return next;
+        }
+      }
+
+      // To avoid creating an additional object, we just hang the .value
+      // and .done properties off the next function object itself. This
+      // also ensures that the minifier will not anonymize the function.
+      next.done = true;
+      return next;
+    };
+  };
+
+  function values(iterable) {
+    if (iterable != null) {
+      var iteratorMethod = iterable[iteratorSymbol];
+      if (iteratorMethod) {
+        return iteratorMethod.call(iterable);
+      }
+
+      if (typeof iterable.next === "function") {
+        return iterable;
+      }
+
+      if (!isNaN(iterable.length)) {
+        var i = -1, next = function next() {
+          while (++i < iterable.length) {
+            if (hasOwn.call(iterable, i)) {
+              next.value = iterable[i];
+              next.done = false;
+              return next;
+            }
+          }
+
+          next.value = undefined;
+          next.done = true;
+
+          return next;
+        };
+
+        return next.next = next;
+      }
+    }
+
+    throw new TypeError(typeof iterable + " is not iterable");
+  }
+  exports.values = values;
+
+  function doneResult() {
+    return { value: undefined, done: true };
+  }
+
+  Context.prototype = {
+    constructor: Context,
+
+    reset: function(skipTempReset) {
+      this.prev = 0;
+      this.next = 0;
+      // Resetting context._sent for legacy support of Babel's
+      // function.sent implementation.
+      this.sent = this._sent = undefined;
+      this.done = false;
+      this.delegate = null;
+
+      this.method = "next";
+      this.arg = undefined;
+
+      this.tryEntries.forEach(resetTryEntry);
+
+      if (!skipTempReset) {
+        for (var name in this) {
+          // Not sure about the optimal order of these conditions:
+          if (name.charAt(0) === "t" &&
+              hasOwn.call(this, name) &&
+              !isNaN(+name.slice(1))) {
+            this[name] = undefined;
+          }
+        }
+      }
+    },
+
+    stop: function() {
+      this.done = true;
+
+      var rootEntry = this.tryEntries[0];
+      var rootRecord = rootEntry.completion;
+      if (rootRecord.type === "throw") {
+        throw rootRecord.arg;
+      }
+
+      return this.rval;
+    },
+
+    dispatchException: function(exception) {
+      if (this.done) {
+        throw exception;
+      }
+
+      var context = this;
+      function handle(loc, caught) {
+        record.type = "throw";
+        record.arg = exception;
+        context.next = loc;
+
+        if (caught) {
+          // If the dispatched exception was caught by a catch block,
+          // then let that catch block handle the exception normally.
+          context.method = "next";
+          context.arg = undefined;
+        }
+
+        return !! caught;
+      }
+
+      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+        var entry = this.tryEntries[i];
+        var record = entry.completion;
+
+        if (entry.tryLoc === "root") {
+          // Exception thrown outside of any try block that could handle
+          // it, so set the completion value of the entire function to
+          // throw the exception.
+          return handle("end");
+        }
+
+        if (entry.tryLoc <= this.prev) {
+          var hasCatch = hasOwn.call(entry, "catchLoc");
+          var hasFinally = hasOwn.call(entry, "finallyLoc");
+
+          if (hasCatch && hasFinally) {
+            if (this.prev < entry.catchLoc) {
+              return handle(entry.catchLoc, true);
+            } else if (this.prev < entry.finallyLoc) {
+              return handle(entry.finallyLoc);
+            }
+
+          } else if (hasCatch) {
+            if (this.prev < entry.catchLoc) {
+              return handle(entry.catchLoc, true);
+            }
+
+          } else if (hasFinally) {
+            if (this.prev < entry.finallyLoc) {
+              return handle(entry.finallyLoc);
+            }
+
+          } else {
+            throw new Error("try statement without catch or finally");
+          }
+        }
+      }
+    },
+
+    abrupt: function(type, arg) {
+      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+        var entry = this.tryEntries[i];
+        if (entry.tryLoc <= this.prev &&
+            hasOwn.call(entry, "finallyLoc") &&
+            this.prev < entry.finallyLoc) {
+          var finallyEntry = entry;
+          break;
+        }
+      }
+
+      if (finallyEntry &&
+          (type === "break" ||
+           type === "continue") &&
+          finallyEntry.tryLoc <= arg &&
+          arg <= finallyEntry.finallyLoc) {
+        // Ignore the finally entry if control is not jumping to a
+        // location outside the try/catch block.
+        finallyEntry = null;
+      }
+
+      var record = finallyEntry ? finallyEntry.completion : {};
+      record.type = type;
+      record.arg = arg;
+
+      if (finallyEntry) {
+        this.method = "next";
+        this.next = finallyEntry.finallyLoc;
+        return ContinueSentinel;
+      }
+
+      return this.complete(record);
+    },
+
+    complete: function(record, afterLoc) {
+      if (record.type === "throw") {
+        throw record.arg;
+      }
+
+      if (record.type === "break" ||
+          record.type === "continue") {
+        this.next = record.arg;
+      } else if (record.type === "return") {
+        this.rval = this.arg = record.arg;
+        this.method = "return";
+        this.next = "end";
+      } else if (record.type === "normal" && afterLoc) {
+        this.next = afterLoc;
+      }
+
+      return ContinueSentinel;
+    },
+
+    finish: function(finallyLoc) {
+      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+        var entry = this.tryEntries[i];
+        if (entry.finallyLoc === finallyLoc) {
+          this.complete(entry.completion, entry.afterLoc);
+          resetTryEntry(entry);
+          return ContinueSentinel;
+        }
+      }
+    },
+
+    "catch": function(tryLoc) {
+      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+        var entry = this.tryEntries[i];
+        if (entry.tryLoc === tryLoc) {
+          var record = entry.completion;
+          if (record.type === "throw") {
+            var thrown = record.arg;
+            resetTryEntry(entry);
+          }
+          return thrown;
+        }
+      }
+
+      // The context.catch method must only be called with a location
+      // argument that corresponds to a known catch block.
+      throw new Error("illegal catch attempt");
+    },
+
+    delegateYield: function(iterable, resultName, nextLoc) {
+      this.delegate = {
+        iterator: values(iterable),
+        resultName: resultName,
+        nextLoc: nextLoc
+      };
+
+      if (this.method === "next") {
+        // Deliberately forget the last sent value so that we don't
+        // accidentally pass it on to the delegate.
+        this.arg = undefined;
+      }
+
+      return ContinueSentinel;
+    }
+  };
+
+  // Regardless of whether this script is executing as a CommonJS module
+  // or not, return the runtime object so that we can declare the variable
+  // regeneratorRuntime in the outer scope, which allows this module to be
+  // injected easily by `bin/regenerator --include-runtime script.js`.
+  return exports;
+
+}(
+  // If this script is executing as a CommonJS module, use module.exports
+  // as the regeneratorRuntime namespace. Otherwise create a new empty
+  // object. Either way, the resulting object will be used to initialize
+  // the regeneratorRuntime variable at the top of this file.
+  typeof module === "object" ? module.exports : {}
+));
+
+try {
+  regeneratorRuntime = runtime;
+} catch (accidentalStrictMode) {
+  // This module should not be running in strict mode, so the above
+  // assignment should always work unless something is misconfigured. Just
+  // in case runtime.js accidentally runs in strict mode, in modern engines
+  // we can explicitly access globalThis. In older engines we can escape
+  // strict mode using a global Function call. This could conceivably fail
+  // if a Content Security Policy forbids using Function, but in that case
+  // the proper solution is to fix the accidental strict mode problem. If
+  // you've misconfigured your bundler to force strict mode and applied a
+  // CSP to forbid Function, and you're not willing to fix either of those
+  // problems, please detail your unique predicament in a GitHub issue.
+  if (typeof globalThis === "object") {
+    globalThis.regeneratorRuntime = runtime;
+  } else {
+    Function("r", "regeneratorRuntime = r")(runtime);
+  }
+}
diff --git a/node_modules/rgbcolor/FEEL-FREE.md b/node_modules/rgbcolor/FEEL-FREE.md
new file mode 100644
index 0000000..78deb85
--- /dev/null
+++ b/node_modules/rgbcolor/FEEL-FREE.md
@@ -0,0 +1,5 @@
+http://www.phpied.com/rgb-color-parser-in-javascript/
+
+Feel free to use the code for your own color picker tool or whatever you feel
+like. If you let me know how you use it, that would be even greater. Meanwhile
+any other comments are highly appreciated. 
diff --git a/node_modules/rgbcolor/LICENSE.md b/node_modules/rgbcolor/LICENSE.md
new file mode 100644
index 0000000..3281a18
--- /dev/null
+++ b/node_modules/rgbcolor/LICENSE.md
@@ -0,0 +1,26 @@
+Copyright (c) 2016 Stoyan Stefanov, http://phpied.com/
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+Exemptions
+==========
+
+Please either apply this, the MIT license, or the license in './FEEL-FREE.md'
diff --git a/node_modules/rgbcolor/README.md b/node_modules/rgbcolor/README.md
new file mode 100644
index 0000000..7512567
--- /dev/null
+++ b/node_modules/rgbcolor/README.md
@@ -0,0 +1,20 @@
+# node-rgbcolor
+
+A nodejs module to parse color values
+Based on rgbcolor.js by Stoyan Stefanov <sstoo@gmail.com>
+http://www.phpied.com/rgb-color-parser-in-javascript/
+
+## Usage
+```` js
+var RGBColor = require('rgbcolor');
+
+var color = new RGBColor('darkblue');
+
+if (color.ok) { // 'ok' is true when the parsing was a success
+    // log channels
+    console.log(color.r + ', ' + color.g + ', ' + color.b);
+    // log HEX and RGB
+    console.log(color.toHex());
+    console.log(color.toRGB());
+}
+````
diff --git a/node_modules/rgbcolor/index.js b/node_modules/rgbcolor/index.js
new file mode 100644
index 0000000..042473b
--- /dev/null
+++ b/node_modules/rgbcolor/index.js
@@ -0,0 +1,302 @@
+/*
+	Based on rgbcolor.js by Stoyan Stefanov <sstoo@gmail.com>
+	http://www.phpied.com/rgb-color-parser-in-javascript/
+*/
+
+module.exports = function(color_string) {
+    this.ok = false;
+    this.alpha = 1.0;
+
+    // strip any leading #
+    if (color_string.charAt(0) == '#') { // remove # if any
+        color_string = color_string.substr(1,6);
+    }
+
+    color_string = color_string.replace(/ /g,'');
+    color_string = color_string.toLowerCase();
+
+    // before getting into regexps, try simple matches
+    // and overwrite the input
+    var simple_colors = {
+        aliceblue: 'f0f8ff',
+        antiquewhite: 'faebd7',
+        aqua: '00ffff',
+        aquamarine: '7fffd4',
+        azure: 'f0ffff',
+        beige: 'f5f5dc',
+        bisque: 'ffe4c4',
+        black: '000000',
+        blanchedalmond: 'ffebcd',
+        blue: '0000ff',
+        blueviolet: '8a2be2',
+        brown: 'a52a2a',
+        burlywood: 'deb887',
+        cadetblue: '5f9ea0',
+        chartreuse: '7fff00',
+        chocolate: 'd2691e',
+        coral: 'ff7f50',
+        cornflowerblue: '6495ed',
+        cornsilk: 'fff8dc',
+        crimson: 'dc143c',
+        cyan: '00ffff',
+        darkblue: '00008b',
+        darkcyan: '008b8b',
+        darkgoldenrod: 'b8860b',
+        darkgray: 'a9a9a9',
+        darkgreen: '006400',
+        darkkhaki: 'bdb76b',
+        darkmagenta: '8b008b',
+        darkolivegreen: '556b2f',
+        darkorange: 'ff8c00',
+        darkorchid: '9932cc',
+        darkred: '8b0000',
+        darksalmon: 'e9967a',
+        darkseagreen: '8fbc8f',
+        darkslateblue: '483d8b',
+        darkslategray: '2f4f4f',
+        darkturquoise: '00ced1',
+        darkviolet: '9400d3',
+        deeppink: 'ff1493',
+        deepskyblue: '00bfff',
+        dimgray: '696969',
+        dodgerblue: '1e90ff',
+        feldspar: 'd19275',
+        firebrick: 'b22222',
+        floralwhite: 'fffaf0',
+        forestgreen: '228b22',
+        fuchsia: 'ff00ff',
+        gainsboro: 'dcdcdc',
+        ghostwhite: 'f8f8ff',
+        gold: 'ffd700',
+        goldenrod: 'daa520',
+        gray: '808080',
+        green: '008000',
+        greenyellow: 'adff2f',
+        honeydew: 'f0fff0',
+        hotpink: 'ff69b4',
+        indianred : 'cd5c5c',
+        indigo : '4b0082',
+        ivory: 'fffff0',
+        khaki: 'f0e68c',
+        lavender: 'e6e6fa',
+        lavenderblush: 'fff0f5',
+        lawngreen: '7cfc00',
+        lemonchiffon: 'fffacd',
+        lightblue: 'add8e6',
+        lightcoral: 'f08080',
+        lightcyan: 'e0ffff',
+        lightgoldenrodyellow: 'fafad2',
+        lightgrey: 'd3d3d3',
+        lightgreen: '90ee90',
+        lightpink: 'ffb6c1',
+        lightsalmon: 'ffa07a',
+        lightseagreen: '20b2aa',
+        lightskyblue: '87cefa',
+        lightslateblue: '8470ff',
+        lightslategray: '778899',
+        lightsteelblue: 'b0c4de',
+        lightyellow: 'ffffe0',
+        lime: '00ff00',
+        limegreen: '32cd32',
+        linen: 'faf0e6',
+        magenta: 'ff00ff',
+        maroon: '800000',
+        mediumaquamarine: '66cdaa',
+        mediumblue: '0000cd',
+        mediumorchid: 'ba55d3',
+        mediumpurple: '9370d8',
+        mediumseagreen: '3cb371',
+        mediumslateblue: '7b68ee',
+        mediumspringgreen: '00fa9a',
+        mediumturquoise: '48d1cc',
+        mediumvioletred: 'c71585',
+        midnightblue: '191970',
+        mintcream: 'f5fffa',
+        mistyrose: 'ffe4e1',
+        moccasin: 'ffe4b5',
+        navajowhite: 'ffdead',
+        navy: '000080',
+        oldlace: 'fdf5e6',
+        olive: '808000',
+        olivedrab: '6b8e23',
+        orange: 'ffa500',
+        orangered: 'ff4500',
+        orchid: 'da70d6',
+        palegoldenrod: 'eee8aa',
+        palegreen: '98fb98',
+        paleturquoise: 'afeeee',
+        palevioletred: 'd87093',
+        papayawhip: 'ffefd5',
+        peachpuff: 'ffdab9',
+        peru: 'cd853f',
+        pink: 'ffc0cb',
+        plum: 'dda0dd',
+        powderblue: 'b0e0e6',
+        purple: '800080',
+        rebeccapurple: '663399',
+        red: 'ff0000',
+        rosybrown: 'bc8f8f',
+        royalblue: '4169e1',
+        saddlebrown: '8b4513',
+        salmon: 'fa8072',
+        sandybrown: 'f4a460',
+        seagreen: '2e8b57',
+        seashell: 'fff5ee',
+        sienna: 'a0522d',
+        silver: 'c0c0c0',
+        skyblue: '87ceeb',
+        slateblue: '6a5acd',
+        slategray: '708090',
+        snow: 'fffafa',
+        springgreen: '00ff7f',
+        steelblue: '4682b4',
+        tan: 'd2b48c',
+        teal: '008080',
+        thistle: 'd8bfd8',
+        tomato: 'ff6347',
+        turquoise: '40e0d0',
+        violet: 'ee82ee',
+        violetred: 'd02090',
+        wheat: 'f5deb3',
+        white: 'ffffff',
+        whitesmoke: 'f5f5f5',
+        yellow: 'ffff00',
+        yellowgreen: '9acd32'
+    };
+    color_string = simple_colors[color_string] || color_string;
+    // emd of simple type-in colors
+
+    // array of color definition objects
+    var color_defs = [
+        {
+            re: /^rgba\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3}),\s*((?:\d?\.)?\d)\)$/,
+            example: ['rgba(123, 234, 45, 0.8)', 'rgba(255,234,245,1.0)'],
+            process: function (bits){
+                return [
+                    parseInt(bits[1]),
+                    parseInt(bits[2]),
+                    parseInt(bits[3]),
+                    parseFloat(bits[4])
+                ];
+            }
+        },
+        {
+            re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,
+            example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'],
+            process: function (bits){
+                return [
+                    parseInt(bits[1]),
+                    parseInt(bits[2]),
+                    parseInt(bits[3])
+                ];
+            }
+        },
+        {
+            re: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,
+            example: ['#00ff00', '336699'],
+            process: function (bits){
+                return [
+                    parseInt(bits[1], 16),
+                    parseInt(bits[2], 16),
+                    parseInt(bits[3], 16)
+                ];
+            }
+        },
+        {
+            re: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
+            example: ['#fb0', 'f0f'],
+            process: function (bits){
+                return [
+                    parseInt(bits[1] + bits[1], 16),
+                    parseInt(bits[2] + bits[2], 16),
+                    parseInt(bits[3] + bits[3], 16)
+                ];
+            }
+        }
+    ];
+
+    // search through the definitions to find a match
+    for (var i = 0; i < color_defs.length; i++) {
+        var re = color_defs[i].re;
+        var processor = color_defs[i].process;
+        var bits = re.exec(color_string);
+        if (bits) {
+            var channels = processor(bits);
+            this.r = channels[0];
+            this.g = channels[1];
+            this.b = channels[2];
+            if (channels.length > 3) {
+                this.alpha = channels[3];
+            }
+            this.ok = true;
+        }
+
+    }
+
+    // validate/cleanup values
+    this.r = (this.r < 0 || isNaN(this.r)) ? 0 : ((this.r > 255) ? 255 : this.r);
+    this.g = (this.g < 0 || isNaN(this.g)) ? 0 : ((this.g > 255) ? 255 : this.g);
+    this.b = (this.b < 0 || isNaN(this.b)) ? 0 : ((this.b > 255) ? 255 : this.b);
+    this.alpha = (this.alpha < 0) ? 0 : ((this.alpha > 1.0 || isNaN(this.alpha)) ? 1.0 : this.alpha);
+
+    // some getters
+    this.toRGB = function () {
+        return 'rgb(' + this.r + ', ' + this.g + ', ' + this.b + ')';
+    }
+    this.toRGBA = function () {
+        return 'rgba(' + this.r + ', ' + this.g + ', ' + this.b + ', ' + this.alpha + ')';
+    }
+    this.toHex = function () {
+        var r = this.r.toString(16);
+        var g = this.g.toString(16);
+        var b = this.b.toString(16);
+        if (r.length == 1) r = '0' + r;
+        if (g.length == 1) g = '0' + g;
+        if (b.length == 1) b = '0' + b;
+        return '#' + r + g + b;
+    }
+
+    // help
+    this.getHelpXML = function () {
+
+        var examples = new Array();
+        // add regexps
+        for (var i = 0; i < color_defs.length; i++) {
+            var example = color_defs[i].example;
+            for (var j = 0; j < example.length; j++) {
+                examples[examples.length] = example[j];
+            }
+        }
+        // add type-in colors
+        for (var sc in simple_colors) {
+            examples[examples.length] = sc;
+        }
+
+        var xml = document.createElement('ul');
+        xml.setAttribute('id', 'rgbcolor-examples');
+        for (var i = 0; i < examples.length; i++) {
+            try {
+                var list_item = document.createElement('li');
+                var list_color = new RGBColor(examples[i]);
+                var example_div = document.createElement('div');
+                example_div.style.cssText =
+                        'margin: 3px; '
+                        + 'border: 1px solid black; '
+                        + 'background:' + list_color.toHex() + '; '
+                        + 'color:' + list_color.toHex()
+                ;
+                example_div.appendChild(document.createTextNode('test'));
+                var list_item_value = document.createTextNode(
+                    ' ' + examples[i] + ' -> ' + list_color.toRGB() + ' -> ' + list_color.toHex()
+                );
+                list_item.appendChild(example_div);
+                list_item.appendChild(list_item_value);
+                xml.appendChild(list_item);
+
+            } catch(e){}
+        }
+        return xml;
+
+    }
+
+}
diff --git a/node_modules/rgbcolor/package.json b/node_modules/rgbcolor/package.json
new file mode 100644
index 0000000..065c1eb
--- /dev/null
+++ b/node_modules/rgbcolor/package.json
@@ -0,0 +1,14 @@
+{
+	"name": "rgbcolor",
+	"description": "A module to parse color values",
+	"version": "1.0.1",
+	"author": "Sebastian Vollnhals <sebastian@vollnhals.info>",
+	"main": "./index.js",
+	"repository": {
+		"type": "git",
+		"url": "https://github.com/yetzt/node-rgbcolor.git"
+	},
+	"keywords": ["rgb", "color", "rgbcolor"],
+	"license": "MIT OR SEE LICENSE IN FEEL-FREE.md",
+	"engines": { "node": ">= 0.8.15" }
+}
diff --git a/node_modules/stackblur-canvas/.editorconfig b/node_modules/stackblur-canvas/.editorconfig
new file mode 100644
index 0000000..c6812c1
--- /dev/null
+++ b/node_modules/stackblur-canvas/.editorconfig
@@ -0,0 +1,12 @@
+; EditorConfig file: https://EditorConfig.org
+; Install the "EditorConfig" plugin into your editor to use
+
+root = true
+
+[*]
+charset = utf-8
+end_of_line = lf
+insert_final_newline = true
+indent_style = space
+indent_size = 2
+trim_trailing_whitespace = true
diff --git a/node_modules/stackblur-canvas/.eslintignore b/node_modules/stackblur-canvas/.eslintignore
new file mode 100644
index 0000000..b3829bb
--- /dev/null
+++ b/node_modules/stackblur-canvas/.eslintignore
@@ -0,0 +1,5 @@
+node_modules
+
+dist
+docs/jsdoc
+!*.js
diff --git a/node_modules/stackblur-canvas/.eslintrc.js b/node_modules/stackblur-canvas/.eslintrc.js
new file mode 100644
index 0000000..dd76e20
--- /dev/null
+++ b/node_modules/stackblur-canvas/.eslintrc.js
@@ -0,0 +1,69 @@
+'use strict';
+
+module.exports = {
+  extends: ['ash-nazg/sauron-node'],
+  parserOptions: {
+    sourceType: 'module'
+  },
+  env: {
+    node: true,
+    browser: true
+  },
+  overrides: [
+    {
+      files: '*.md',
+      processor: 'markdown/markdown'
+    },
+    {
+      files: '**/*.md/*.js',
+      globals: {
+        require: true,
+        StackBlur: true,
+        width: true,
+        height: true,
+        top_x: true,
+        top_y: true,
+        radius: true,
+        imageData: true,
+        sourceImage: true,
+        targetCanvas: true,
+        blurAlphaChannel: true
+      },
+      rules: {
+        'import/unambiguous': 0,
+        'import/no-commonjs': 0,
+        'node/no-missing-import': 0,
+        'import/no-unresolved': ['error', {
+          ignore: ['stackblur-canvas']
+        }],
+        'node/no-missing-require': ['error', {
+          allowModules: ['stackblur-canvas']
+        }],
+        'no-shadow': 0,
+        'no-unused-vars': ['error', {varsIgnorePattern: 'StackBlur'}]
+      }
+    }, {
+      files: 'rollup.config.js',
+      env: {
+        node: true
+      }
+    }, {
+      files: '.*.js',
+      extends: ['plugin:node/recommended-script'],
+      rules: {
+        'import/unambiguous': 0,
+        'import/no-commonjs': 0
+      }
+    }
+  ],
+  rules: {
+    'jsdoc/require-returns': ['error', {exemptedBy: ['see']}],
+    // Handled by Babel
+    'node/no-unsupported-features/es-syntax': 0,
+
+    // Would be good, but as not supported in older Node and browsers,
+    //   would need polyfill for `Number.isNaN`
+    'unicorn/prefer-number-properties': 0,
+    'unicorn/prefer-math-trunc': 0
+  }
+};
diff --git a/node_modules/stackblur-canvas/CHANGES.md b/node_modules/stackblur-canvas/CHANGES.md
new file mode 100644
index 0000000..4ff6f84
--- /dev/null
+++ b/node_modules/stackblur-canvas/CHANGES.md
@@ -0,0 +1,112 @@
+# StackBlur CHANGES
+
+## 2.7.0
+
+- fix: use unsigned right shift to fix blur radius larger than 180 #59 (@kayahr)
+- chore: update build files (@kayahr)
+
+## 2.6.0
+
+- feat: ImageBitmap support (@Jason11Q)
+
+## 2.5.0
+
+- Enhancement: boolean arg to skip setting canvas styles (@LukeeeeBennett)
+- Build: As per latest devDeps.
+- Docs: Update API docs as per latest
+
+**Dev-facing:**
+
+- Linting: As per ash-nazg
+- npm: Switch to server without reported vulnerabilities
+- npm: Switch to pnpm lock
+- npm: Update devDeps (and switch to new ash-nazg peerDeps)
+
+## 2.4.0
+
+- Enhancement (image): add useOffsetWidth option for scaled images
+- Refactoring: Move `let` to closer/deeper scope
+- Linting: As per latest ash-nazg (add or avoid need for disable comments)
+- npm: Update devDeps.
+
+## 2.3.0
+
+- Build: Update build files per latest devDeps
+- Linting (ESLint): Switch to ash-nazg/sauron-node
+- Linting (ESLint): Lint MD, HTML, hidden files
+- Linting (ESLint): Switch to 2 sp. indent, fix max-len
+- Linting (ESLint): Prefer `document.querySelector` in demo
+- Linting (ESLint): Add a recommended extension (js) to eslintrc
+- Maintenance: Add `.editorconfig`
+- Mainenance: Use `.json` extension on `.babelrc`
+- npm: Remove `package-lock.json` in favor of `yarn.lock`
+- npm: Avoid bundling `rollup.config.js`
+- npm: Move from deprecated `opn-cli` to `open-cli`
+- npm: Add valid `engines` (pointing to minimum Node version until may confirm)
+- npm: Update devDeps (except jsdoc which seems to still have a problem
+    with ESM exports: <https://github.com/jsdoc/jsdoc/issues/1644>)
+
+## 2.2.0
+
+- Build fix: Target 100% coverage
+- Refactoring (minor): `x + x` -> `2 * x`
+- npm Add prepublishOnly script for yarn
+- npm: Update devDeps (no impact on build)
+
+## 2.1.0
+
+- Enhancement: Throw descriptive `TypeError` rather than silently returning
+    upon `processCanvasRGB`/`processCanvasRGBA` methods not supplying proper
+    canvas (dependent methods will throw anyways, so shouldn't be a
+    breaking change)
+- Enhancement: Update TypeScript definition (@Jose Peleteiro)
+
+## 2.0.0
+
+- Breaking change: Remove now deprecated Bower
+- Fix: Duck type with image or canvas in place of `instanceof` check
+    (and a broken one)
+- Enhancement: Add JSDoc comments
+- Linting (ESLint): Add ESLint with "standard" base
+- Linting (Markdown): Add `.remarkrc`
+- Linting (package.json): Add recommended properties
+- Linting (HTML): Add empty favicon to suppress console
+- License: Change MIT license file name to reflect license type (MIT)
+- Docs: Move changelog to own file: `CHANGES.md`
+- Demo: Move demo to own directory (with static server to avoid Chrome
+    security problems reaching out of folder)
+- Demo: Move JS and CSS to separate files for easier linting/examination
+- Build: Move from Grunt to Rollup, supporting ES6 Modules distribution
+    as well as UMD
+- Build: Add npm-recommended `package-lock.json`
+- npm: Add start, eslint, rollup, open-docs, docs scripts
+- npm: Add `module` for ES6 module discovery and switch `main` to point
+    to `dist`
+
+## 1.4.1
+
+- Moves `grunt-cli` to `devDependencies` (#23)
+
+## 1.4.0
+
+- Allows the lib to be used with node-canvas
+
+## 1.3.0
+
+- TypeScript typings added
+
+## 1.2.1
+
+- Includes built files in the NPM packgage
+
+## 1.2.0
+
+- Remove alerts and obsolete `netscape.security.PrivilegeManager`
+
+## 1.1.0
+
+- Allow blur to be applied to `ImageData` directly (thanks @WebSeed)
+
+## 1.0.0
+
+- First Release
diff --git a/node_modules/stackblur-canvas/LICENSE-MIT.txt b/node_modules/stackblur-canvas/LICENSE-MIT.txt
new file mode 100644
index 0000000..5ecb7df
--- /dev/null
+++ b/node_modules/stackblur-canvas/LICENSE-MIT.txt
@@ -0,0 +1,22 @@
+Copyright (c) 2010 Mario Klingemann
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/stackblur-canvas/README.md b/node_modules/stackblur-canvas/README.md
new file mode 100644
index 0000000..9b7c1cc
--- /dev/null
+++ b/node_modules/stackblur-canvas/README.md
@@ -0,0 +1,147 @@
+# StackBlur.js
+
+[![NPM Version](https://img.shields.io/npm/v/stackblur-canvas.svg)][pkg-npm]
+[![License](https://img.shields.io/npm/l/stackblur-canvas.svg)](https://github.com/flozz/StackBlur/blob/master/COPYING)
+
+StackBlur.js is a fast, almost Gaussian blur created by Mario Klingemann.
+
+  * **More informations:** <http://incubator.quasimondo.com/processing/fast_blur_deluxe.php>
+  * **Algorithm:** <https://medium.com/better-programming/blurring-image-algorithm-example-in-android-cec81911cd5e>
+  * **Demo:** <http://www.quasimondo.com/StackBlurForCanvas/StackBlurDemo.html>
+
+Original source:
+
+  * <http://www.quasimondo.com/StackBlurForCanvas/StackBlur.js>
+
+## Getting Started
+
+### Standalone version
+
+To use the standalone version,
+
+download the [latest zip][dl-zip-master] from Github or clone the repository
+
+```
+git clone git@github.com:flozz/StackBlur.git
+```
+
+and include the `dist/stackblur.js` or `dist/stackblur.min.js` file in your HTML page:
+
+```html
+<script src="StackBlur/dist/stackblur.js"></script>
+```
+
+### Node
+
+To use the [NPM package][pkg-npm],
+
+install the package:
+
+```
+npm install --save stackblur-canvas
+```
+
+and require it where needed
+
+```js
+const StackBlur = require('stackblur-canvas');
+```
+
+### Browsers
+
+If you are only supporting modern browsers, you may use ES6 Modules directly:
+
+```js
+import * as StackBlur from
+  './node_modules/stackblur-canvas/dist/stackblur-es.min.js';
+```
+
+Or, if you are using Rollup in your own project, use the [node-resolve](https://github.com/rollup/rollup-plugin-node-resolve) plugin,
+and import by just referencing the module:
+
+```js
+import * as StackBlur from 'stackblur-canvas';
+```
+
+## API
+
+See also the docs in [docs/jsdoc](./docs/jsdoc/index.html).
+
+**Image as source:**
+
+```js
+StackBlur.image(sourceImage, targetCanvas, radius, blurAlphaChannel);
+```
+
+  * `sourceImage`: the `HTMLImageElement` or its `id`.
+  * `targetCanvas`: the `HTMLCanvasElement` or its `id`.
+  * `radius`: the radius of the blur.
+  * `blurAlphaChannel`: Set it to `true` if you want to blur a RGBA image (optional, default = `false`)
+
+**RGBA Canvas as source:**
+
+```js
+StackBlur.canvasRGBA(targetCanvas, top_x, top_y, width, height, radius);
+```
+
+  * `targetCanvas`: the `HTMLCanvasElement`.
+  * `top_x`: the horizontal coordinate of the top-left corner of the rectangle to blur.
+  * `top_y`: the vertical coordinate of the top-left corner of the rectangle to blur.
+  * `width`: the width of the rectangle to blur.
+  * `height`: the height of the rectangle to blur.
+  * `radius`: the radius of the blur.
+
+**RGB Canvas as source:**
+
+```js
+StackBlur.canvasRGB(targetCanvas, top_x, top_y, width, height, radius);
+```
+
+  * `targetCanvas`: the `HTMLCanvasElement`.
+  * `top_x`: the horizontal coordinate of the top-left corner of the rectangle to blur.
+  * `top_y`: the vertical coordinate of the top-left corner of the rectangle to blur.
+  * `width`: the width of the rectangle to blur.
+  * `height`: the height of the rectangle to blur.
+  * `radius`: the radius of the blur.
+
+**RGBA ImageData as source:**
+
+```js
+StackBlur.imageDataRGBA(imageData, top_x, top_y, width, height, radius);
+```
+
+  * `imageData`: the canvas' `ImageData`.
+  * `top_x`: the horizontal coordinate of the top-left corner of the rectangle to blur.
+  * `top_y`: the vertical coordinate of the top-left corner of the rectangle to blur.
+  * `width`: the width of the rectangle to blur.
+  * `height`: the height of the rectangle to blur.
+  * `radius`: the radius of the blur.
+
+**RGB ImageData as source:**
+
+```js
+StackBlur.imageDataRGB(imageData, top_x, top_y, width, height, radius);
+```
+
+  * `imageData`: the canvas' `ImageData`.
+  * `top_x`: the horizontal coordinate of the top-left corner of the rectangle to blur.
+  * `top_y`: the vertical coordinate of the top-left corner of the rectangle to blur.
+  * `width`: the width of the rectangle to blur.
+  * `height`: the height of the rectangle to blur.
+  * `radius`: the radius of the blur.
+
+
+## Hacking
+
+### Building
+
+This library is built using [Rollup](https://rollupjs.org/guide/en).
+If you change something in the `src/` folder, use the following command
+to re-build the files in the `dist/` folder:
+
+`npm run rollup`
+
+
+[dl-zip-master]: https://github.com/flozz/StackBlur/archive/master.zip
+[pkg-npm]: https://www.npmjs.com/package/stackblur-canvas
+[grunt]: http://gruntjs.com/
diff --git a/node_modules/stackblur-canvas/index.d.ts b/node_modules/stackblur-canvas/index.d.ts
new file mode 100644
index 0000000..ea4c363
--- /dev/null
+++ b/node_modules/stackblur-canvas/index.d.ts
@@ -0,0 +1,52 @@
+export class BlurStack {
+  r: number;
+  g: number;
+  b: number;
+  a: number;
+  next: BlurStack;
+}
+
+export function image(
+  img: HTMLImageElement | string,
+  canvas: HTMLCanvasElement | string,
+  radius: number,
+  blurAlphaChannel?: boolean,
+  useOffset?: boolean,
+  skipStyles?: boolean,
+): void;
+
+export function canvasRGBA(
+  canvas: HTMLCanvasElement,
+  topX: number,
+  topY: number,
+  width: number,
+  height: number,
+  radius: number
+): void;
+
+export function canvasRGB(
+  canvas: HTMLCanvasElement,
+  topX: number,
+  topY: number,
+  width: number,
+  height: number,
+  radius: number
+): void;
+
+export function imageDataRGBA(
+  data: ImageData,
+  topX: number,
+  topY: number,
+  width: number,
+  height: number,
+  radius: number
+): ImageData;
+
+export function imageDataRGB(
+  data: ImageData,
+  topX: number,
+  topY: number,
+  width: number,
+  height: number,
+  radius: number
+): ImageData;
diff --git a/node_modules/stackblur-canvas/package.json b/node_modules/stackblur-canvas/package.json
new file mode 100644
index 0000000..a551f9c
--- /dev/null
+++ b/node_modules/stackblur-canvas/package.json
@@ -0,0 +1,71 @@
+{
+  "name": "stackblur-canvas",
+  "version": "2.7.0",
+  "description": "Fast and almost Gaussian blur by Mario Klingemann",
+  "main": "dist/stackblur.js",
+  "module": "dist/stackblur-es.js",
+  "browserslist": {
+    "target": "cover 100%"
+  },
+  "scripts": {
+    "prepublishOnly": "pnpm i",
+    "start": "open-cli http://localhost:8081/demo/ && http-server -p 8081",
+    "eslint": "eslint --ext=js,md,html .",
+    "rollup": "rollup -c",
+    "docs": "rm -rf docs/jsdoc/*;jsdoc --pedantic -c docs/jsdoc-config.json src",
+    "open-docs": "npm run docs && open-cli http://localhost:8081/docs/jsdoc/ && http-server -p 8081",
+    "test": "npm run eslint && npm run rollup && echo \"Error: no test specified\" && exit 1"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/flozz/StackBlur.git"
+  },
+  "keywords": [
+    "stackblur",
+    "blur",
+    "canvas",
+    "gaussian"
+  ],
+  "author": "Mario Klingemann",
+  "homepage": "http://www.quasimondo.com/StackBlurForCanvas/StackBlurDemo.html",
+  "contributors": [
+    "Brett Zamir"
+  ],
+  "license": "MIT",
+  "bugs": {
+    "url": "https://github.com/flozz/StackBlur/issues"
+  },
+  "engines": {
+    "node": ">=0.1.14"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.12.16",
+    "@babel/preset-env": "^7.12.16",
+    "@brettz9/eslint-plugin": "^1.0.3",
+    "@rollup/plugin-babel": "^5.3.0",
+    "eslint": "^7.20.0",
+    "eslint-config-ash-nazg": "29.0.0",
+    "eslint-config-standard": "^16.0.2",
+    "eslint-plugin-array-func": "^3.1.7",
+    "eslint-plugin-compat": "^3.9.0",
+    "eslint-plugin-eslint-comments": "^3.2.0",
+    "eslint-plugin-html": "^6.1.1",
+    "eslint-plugin-import": "^2.22.1",
+    "eslint-plugin-jsdoc": "^32.0.1",
+    "eslint-plugin-markdown": "^2.0.0",
+    "eslint-plugin-no-unsanitized": "^3.1.4",
+    "eslint-plugin-no-use-extend-native": "^0.5.0",
+    "eslint-plugin-node": "^11.1.0",
+    "eslint-plugin-promise": "^4.3.1",
+    "eslint-plugin-radar": "^0.2.1",
+    "eslint-plugin-standard": "^4.1.0",
+    "eslint-plugin-unicorn": "^28.0.1",
+    "http-server": "^0.12.3",
+    "jsdoc": "^3.6.5",
+    "open-cli": "^6.0.1",
+    "rollup": "2.39.0",
+    "rollup-plugin-re": "^1.0.7",
+    "rollup-plugin-terser": "^7.0.2"
+  },
+  "dependencies": {}
+}
diff --git a/node_modules/stackblur-canvas/src/stackblur.js b/node_modules/stackblur-canvas/src/stackblur.js
new file mode 100644
index 0000000..50e59a4
--- /dev/null
+++ b/node_modules/stackblur-canvas/src/stackblur.js
@@ -0,0 +1,710 @@
+/* eslint-disable no-bitwise -- used for calculations */
+/* eslint-disable unicorn/prefer-query-selector -- aiming at
+  backward-compatibility */
+/**
+* StackBlur - a fast almost Gaussian Blur For Canvas
+*
+* In case you find this class useful - especially in commercial projects -
+* I am not totally unhappy for a small donation to my PayPal account
+* mario@quasimondo.de
+*
+* Or support me on flattr:
+* {@link https://flattr.com/thing/72791/StackBlur-a-fast-almost-Gaussian-Blur-Effect-for-CanvasJavascript}.
+*
+* @module StackBlur
+* @author Mario Klingemann
+* Contact: mario@quasimondo.com
+* Website: {@link http://www.quasimondo.com/StackBlurForCanvas/StackBlurDemo.html}
+* Twitter: @quasimondo
+*
+* @copyright (c) 2010 Mario Klingemann
+*
+* Permission is hereby granted, free of charge, to any person
+* obtaining a copy of this software and associated documentation
+* files (the "Software"), to deal in the Software without
+* restriction, including without limitation the rights to use,
+* copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to permit persons to whom the
+* Software is furnished to do so, subject to the following
+* conditions:
+*
+* The above copyright notice and this permission notice shall be
+* included in all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+* OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+const mulTable = [
+  512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292,
+  512, 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292,
+  273, 512, 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259,
+  496, 475, 456, 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292,
+  282, 273, 265, 512, 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373,
+  364, 354, 345, 337, 328, 320, 312, 305, 298, 291, 284, 278, 271, 265, 259,
+  507, 496, 485, 475, 465, 456, 446, 437, 428, 420, 412, 404, 396, 388, 381,
+  374, 367, 360, 354, 347, 341, 335, 329, 323, 318, 312, 307, 302, 297, 292,
+  287, 282, 278, 273, 269, 265, 261, 512, 505, 497, 489, 482, 475, 468, 461,
+  454, 447, 441, 435, 428, 422, 417, 411, 405, 399, 394, 389, 383, 378, 373,
+  368, 364, 359, 354, 350, 345, 341, 337, 332, 328, 324, 320, 316, 312, 309,
+  305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271, 268, 265, 262, 259,
+  257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456, 451, 446, 442,
+  437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388, 385, 381,
+  377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335, 332,
+  329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292,
+  289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259
+];
+
+const shgTable = [
+  9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17,
+  17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19,
+  19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20,
+  20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21,
+  21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+  21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22,
+  22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+  22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23,
+  23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+  23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+  23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+  23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24
+];
+
+/**
+ * @param {string|HTMLImageElement} img
+ * @param {string|HTMLCanvasElement} canvas
+ * @param {Float} radius
+ * @param {boolean} blurAlphaChannel
+ * @param {boolean} useOffset
+ * @param {boolean} skipStyles
+ * @returns {undefined}
+ */
+function processImage (
+  img, canvas, radius, blurAlphaChannel, useOffset, skipStyles
+) {
+  if (typeof img === 'string') {
+    img = document.getElementById(img);
+  }
+
+  if (
+    !img ||
+    (Object.prototype.toString.call(img).slice(8, -1) ===
+      'HTMLImageElement' && !('naturalWidth' in img))
+  ) {
+    return;
+  }
+
+  const dimensionType = useOffset ? 'offset' : 'natural';
+  let w = img[dimensionType + 'Width'];
+  let h = img[dimensionType + 'Height'];
+
+  // add ImageBitmap support,can blur texture source
+  if (Object.prototype.toString.call(img).slice(8, -1) === 'ImageBitmap') {
+    w = img.width;
+    h = img.height;
+  }
+
+  if (typeof canvas === 'string') {
+    canvas = document.getElementById(canvas);
+  }
+  if (!canvas || !('getContext' in canvas)) {
+    return;
+  }
+
+  if (!skipStyles) {
+    canvas.style.width = w + 'px';
+    canvas.style.height = h + 'px';
+  }
+  canvas.width = w;
+  canvas.height = h;
+
+  const context = canvas.getContext('2d');
+  context.clearRect(0, 0, w, h);
+  context.drawImage(img, 0, 0, img.naturalWidth, img.naturalHeight, 0, 0, w, h);
+
+  if (isNaN(radius) || radius < 1) { return; }
+
+  if (blurAlphaChannel) {
+    processCanvasRGBA(canvas, 0, 0, w, h, radius);
+  } else {
+    processCanvasRGB(canvas, 0, 0, w, h, radius);
+  }
+}
+
+/**
+ * @param {string|HTMLCanvasElement} canvas
+ * @param {Integer} topX
+ * @param {Integer} topY
+ * @param {Integer} width
+ * @param {Integer} height
+ * @throws {Error|TypeError}
+ * @returns {ImageData} See {@link https://html.spec.whatwg.org/multipage/canvas.html#imagedata}
+ */
+function getImageDataFromCanvas (canvas, topX, topY, width, height) {
+  if (typeof canvas === 'string') {
+    canvas = document.getElementById(canvas);
+  }
+  if (!canvas || typeof canvas !== 'object' || !('getContext' in canvas)) {
+    throw new TypeError(
+      'Expecting canvas with `getContext` method ' +
+            'in processCanvasRGB(A) calls!'
+    );
+  }
+
+  const context = canvas.getContext('2d');
+
+  try {
+    return context.getImageData(topX, topY, width, height);
+  } catch (e) {
+    throw new Error('unable to access image data: ' + e);
+  }
+}
+
+/**
+ * @param {HTMLCanvasElement} canvas
+ * @param {Integer} topX
+ * @param {Integer} topY
+ * @param {Integer} width
+ * @param {Integer} height
+ * @param {Float} radius
+ * @returns {undefined}
+ */
+function processCanvasRGBA (canvas, topX, topY, width, height, radius) {
+  if (isNaN(radius) || radius < 1) { return; }
+  radius |= 0;
+
+  let imageData = getImageDataFromCanvas(canvas, topX, topY, width, height);
+
+  imageData = processImageDataRGBA(
+    imageData, topX, topY, width, height, radius
+  );
+
+  canvas.getContext('2d').putImageData(imageData, topX, topY);
+}
+
+/**
+ * @param {ImageData} imageData
+ * @param {Integer} topX
+ * @param {Integer} topY
+ * @param {Integer} width
+ * @param {Integer} height
+ * @param {Float} radius
+ * @returns {ImageData}
+ */
+function processImageDataRGBA (imageData, topX, topY, width, height, radius) {
+  const pixels = imageData.data;
+
+  const div = 2 * radius + 1;
+  // const w4 = width << 2;
+  const widthMinus1 = width - 1;
+  const heightMinus1 = height - 1;
+  const radiusPlus1 = radius + 1;
+  const sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;
+
+  const stackStart = new BlurStack();
+  let stack = stackStart;
+  let stackEnd;
+  for (let i = 1; i < div; i++) {
+    stack = stack.next = new BlurStack();
+    if (i === radiusPlus1) {
+      stackEnd = stack;
+    }
+  }
+  stack.next = stackStart;
+
+  let stackIn = null,
+    stackOut = null,
+    yw = 0,
+    yi = 0;
+
+  const mulSum = mulTable[radius];
+  const shgSum = shgTable[radius];
+
+  for (let y = 0; y < height; y++) {
+    stack = stackStart;
+
+    const pr = pixels[yi],
+      pg = pixels[yi + 1],
+      pb = pixels[yi + 2],
+      pa = pixels[yi + 3];
+
+    for (let i = 0; i < radiusPlus1; i++) {
+      stack.r = pr;
+      stack.g = pg;
+      stack.b = pb;
+      stack.a = pa;
+      stack = stack.next;
+    }
+
+    let rInSum = 0, gInSum = 0, bInSum = 0, aInSum = 0,
+      rOutSum = radiusPlus1 * pr,
+      gOutSum = radiusPlus1 * pg,
+      bOutSum = radiusPlus1 * pb,
+      aOutSum = radiusPlus1 * pa,
+      rSum = sumFactor * pr,
+      gSum = sumFactor * pg,
+      bSum = sumFactor * pb,
+      aSum = sumFactor * pa;
+
+    for (let i = 1; i < radiusPlus1; i++) {
+      const p = yi + ((widthMinus1 < i ? widthMinus1 : i) << 2);
+
+      const r = pixels[p],
+        g = pixels[p + 1],
+        b = pixels[p + 2],
+        a = pixels[p + 3];
+
+      const rbs = radiusPlus1 - i;
+      rSum += (stack.r = r) * rbs;
+      gSum += (stack.g = g) * rbs;
+      bSum += (stack.b = b) * rbs;
+      aSum += (stack.a = a) * rbs;
+
+      rInSum += r;
+      gInSum += g;
+      bInSum += b;
+      aInSum += a;
+
+      stack = stack.next;
+    }
+
+    stackIn = stackStart;
+    stackOut = stackEnd;
+    for (let x = 0; x < width; x++) {
+      const paInitial = (aSum * mulSum) >>> shgSum;
+      pixels[yi + 3] = paInitial;
+      if (paInitial !== 0) {
+        const a = 255 / paInitial;
+        pixels[yi] = ((rSum * mulSum) >>> shgSum) * a;
+        pixels[yi + 1] = ((gSum * mulSum) >>> shgSum) * a;
+        pixels[yi + 2] = ((bSum * mulSum) >>> shgSum) * a;
+      } else {
+        pixels[yi] = pixels[yi + 1] = pixels[yi + 2] = 0;
+      }
+
+      rSum -= rOutSum;
+      gSum -= gOutSum;
+      bSum -= bOutSum;
+      aSum -= aOutSum;
+
+      rOutSum -= stackIn.r;
+      gOutSum -= stackIn.g;
+      bOutSum -= stackIn.b;
+      aOutSum -= stackIn.a;
+
+      let p = x + radius + 1;
+      p = (yw + (p < widthMinus1
+        ? p
+        : widthMinus1)) << 2;
+
+      rInSum += (stackIn.r = pixels[p]);
+      gInSum += (stackIn.g = pixels[p + 1]);
+      bInSum += (stackIn.b = pixels[p + 2]);
+      aInSum += (stackIn.a = pixels[p + 3]);
+
+      rSum += rInSum;
+      gSum += gInSum;
+      bSum += bInSum;
+      aSum += aInSum;
+
+      stackIn = stackIn.next;
+
+      const {r, g, b, a} = stackOut;
+
+      rOutSum += r;
+      gOutSum += g;
+      bOutSum += b;
+      aOutSum += a;
+
+      rInSum -= r;
+      gInSum -= g;
+      bInSum -= b;
+      aInSum -= a;
+
+      stackOut = stackOut.next;
+
+      yi += 4;
+    }
+    yw += width;
+  }
+
+  for (let x = 0; x < width; x++) {
+    yi = x << 2;
+
+    let pr = pixels[yi],
+      pg = pixels[yi + 1],
+      pb = pixels[yi + 2],
+      pa = pixels[yi + 3],
+      rOutSum = radiusPlus1 * pr,
+      gOutSum = radiusPlus1 * pg,
+      bOutSum = radiusPlus1 * pb,
+      aOutSum = radiusPlus1 * pa,
+      rSum = sumFactor * pr,
+      gSum = sumFactor * pg,
+      bSum = sumFactor * pb,
+      aSum = sumFactor * pa;
+
+    stack = stackStart;
+
+    for (let i = 0; i < radiusPlus1; i++) {
+      stack.r = pr;
+      stack.g = pg;
+      stack.b = pb;
+      stack.a = pa;
+      stack = stack.next;
+    }
+
+    let yp = width;
+
+    let gInSum = 0, bInSum = 0, aInSum = 0, rInSum = 0;
+    for (let i = 1; i <= radius; i++) {
+      yi = (yp + x) << 2;
+
+      const rbs = radiusPlus1 - i;
+      rSum += (stack.r = (pr = pixels[yi])) * rbs;
+      gSum += (stack.g = (pg = pixels[yi + 1])) * rbs;
+      bSum += (stack.b = (pb = pixels[yi + 2])) * rbs;
+      aSum += (stack.a = (pa = pixels[yi + 3])) * rbs;
+
+      rInSum += pr;
+      gInSum += pg;
+      bInSum += pb;
+      aInSum += pa;
+
+      stack = stack.next;
+
+      if (i < heightMinus1) {
+        yp += width;
+      }
+    }
+
+    yi = x;
+    stackIn = stackStart;
+    stackOut = stackEnd;
+    for (let y = 0; y < height; y++) {
+      let p = yi << 2;
+      pixels[p + 3] = pa = (aSum * mulSum) >>> shgSum;
+      if (pa > 0) {
+        pa = 255 / pa;
+        pixels[p] = ((rSum * mulSum) >>> shgSum) * pa;
+        pixels[p + 1] = ((gSum * mulSum) >>> shgSum) * pa;
+        pixels[p + 2] = ((bSum * mulSum) >>> shgSum) * pa;
+      } else {
+        pixels[p] = pixels[p + 1] = pixels[p + 2] = 0;
+      }
+
+      rSum -= rOutSum;
+      gSum -= gOutSum;
+      bSum -= bOutSum;
+      aSum -= aOutSum;
+
+      rOutSum -= stackIn.r;
+      gOutSum -= stackIn.g;
+      bOutSum -= stackIn.b;
+      aOutSum -= stackIn.a;
+
+      p = (x + (
+        ((p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1) *
+                width
+      )) << 2;
+
+      rSum += (rInSum += (stackIn.r = pixels[p]));
+      gSum += (gInSum += (stackIn.g = pixels[p + 1]));
+      bSum += (bInSum += (stackIn.b = pixels[p + 2]));
+      aSum += (aInSum += (stackIn.a = pixels[p + 3]));
+
+      stackIn = stackIn.next;
+
+      rOutSum += (pr = stackOut.r);
+      gOutSum += (pg = stackOut.g);
+      bOutSum += (pb = stackOut.b);
+      aOutSum += (pa = stackOut.a);
+
+      rInSum -= pr;
+      gInSum -= pg;
+      bInSum -= pb;
+      aInSum -= pa;
+
+      stackOut = stackOut.next;
+
+      yi += width;
+    }
+  }
+  return imageData;
+}
+
+/**
+ * @param {HTMLCanvasElement} canvas
+ * @param {Integer} topX
+ * @param {Integer} topY
+ * @param {Integer} width
+ * @param {Integer} height
+ * @param {Float} radius
+ * @returns {undefined}
+ */
+function processCanvasRGB (canvas, topX, topY, width, height, radius) {
+  if (isNaN(radius) || radius < 1) { return; }
+  radius |= 0;
+
+  let imageData = getImageDataFromCanvas(canvas, topX, topY, width, height);
+  imageData = processImageDataRGB(
+    imageData, topX, topY, width, height, radius
+  );
+
+  canvas.getContext('2d').putImageData(imageData, topX, topY);
+}
+
+/**
+ * @param {ImageData} imageData
+ * @param {Integer} topX
+ * @param {Integer} topY
+ * @param {Integer} width
+ * @param {Integer} height
+ * @param {Float} radius
+ * @returns {ImageData}
+ */
+function processImageDataRGB (imageData, topX, topY, width, height, radius) {
+  const pixels = imageData.data;
+
+  const div = 2 * radius + 1;
+  // const w4 = width << 2;
+  const widthMinus1 = width - 1;
+  const heightMinus1 = height - 1;
+  const radiusPlus1 = radius + 1;
+  const sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;
+
+  const stackStart = new BlurStack();
+  let stack = stackStart;
+  let stackEnd;
+  for (let i = 1; i < div; i++) {
+    stack = stack.next = new BlurStack();
+    if (i === radiusPlus1) {
+      stackEnd = stack;
+    }
+  }
+  stack.next = stackStart;
+  let stackIn = null;
+  let stackOut = null;
+
+  const mulSum = mulTable[radius];
+  const shgSum = shgTable[radius];
+
+  let p, rbs;
+  let yw = 0, yi = 0;
+
+  for (let y = 0; y < height; y++) {
+    let pr = pixels[yi],
+      pg = pixels[yi + 1],
+      pb = pixels[yi + 2],
+      rOutSum = radiusPlus1 * pr,
+      gOutSum = radiusPlus1 * pg,
+      bOutSum = radiusPlus1 * pb,
+      rSum = sumFactor * pr,
+      gSum = sumFactor * pg,
+      bSum = sumFactor * pb;
+
+    stack = stackStart;
+
+    for (let i = 0; i < radiusPlus1; i++) {
+      stack.r = pr;
+      stack.g = pg;
+      stack.b = pb;
+      stack = stack.next;
+    }
+
+    let rInSum = 0, gInSum = 0, bInSum = 0;
+    for (let i = 1; i < radiusPlus1; i++) {
+      p = yi + ((widthMinus1 < i ? widthMinus1 : i) << 2);
+      rSum += (stack.r = (pr = pixels[p])) * (rbs = radiusPlus1 - i);
+      gSum += (stack.g = (pg = pixels[p + 1])) * rbs;
+      bSum += (stack.b = (pb = pixels[p + 2])) * rbs;
+
+      rInSum += pr;
+      gInSum += pg;
+      bInSum += pb;
+
+      stack = stack.next;
+    }
+
+    stackIn = stackStart;
+    stackOut = stackEnd;
+    for (let x = 0; x < width; x++) {
+      pixels[yi] = (rSum * mulSum) >>> shgSum;
+      pixels[yi + 1] = (gSum * mulSum) >>> shgSum;
+      pixels[yi + 2] = (bSum * mulSum) >>> shgSum;
+
+      rSum -= rOutSum;
+      gSum -= gOutSum;
+      bSum -= bOutSum;
+
+      rOutSum -= stackIn.r;
+      gOutSum -= stackIn.g;
+      bOutSum -= stackIn.b;
+
+      p = (yw + (
+        (p = x + radius + 1) < widthMinus1 ? p : widthMinus1
+      )) << 2;
+
+      rInSum += (stackIn.r = pixels[p]);
+      gInSum += (stackIn.g = pixels[p + 1]);
+      bInSum += (stackIn.b = pixels[p + 2]);
+
+      rSum += rInSum;
+      gSum += gInSum;
+      bSum += bInSum;
+
+      stackIn = stackIn.next;
+
+      rOutSum += (pr = stackOut.r);
+      gOutSum += (pg = stackOut.g);
+      bOutSum += (pb = stackOut.b);
+
+      rInSum -= pr;
+      gInSum -= pg;
+      bInSum -= pb;
+
+      stackOut = stackOut.next;
+
+      yi += 4;
+    }
+    yw += width;
+  }
+
+  for (let x = 0; x < width; x++) {
+    yi = x << 2;
+    let pr = pixels[yi],
+      pg = pixels[yi + 1],
+      pb = pixels[yi + 2],
+      rOutSum = radiusPlus1 * pr,
+      gOutSum = radiusPlus1 * pg,
+      bOutSum = radiusPlus1 * pb,
+      rSum = sumFactor * pr,
+      gSum = sumFactor * pg,
+      bSum = sumFactor * pb;
+
+    stack = stackStart;
+
+    for (let i = 0; i < radiusPlus1; i++) {
+      stack.r = pr;
+      stack.g = pg;
+      stack.b = pb;
+      stack = stack.next;
+    }
+
+    let rInSum = 0, gInSum = 0, bInSum = 0;
+    for (let i = 1, yp = width; i <= radius; i++) {
+      yi = (yp + x) << 2;
+
+      rSum += (stack.r = (pr = pixels[yi])) * (rbs = radiusPlus1 - i);
+      gSum += (stack.g = (pg = pixels[yi + 1])) * rbs;
+      bSum += (stack.b = (pb = pixels[yi + 2])) * rbs;
+
+      rInSum += pr;
+      gInSum += pg;
+      bInSum += pb;
+
+      stack = stack.next;
+
+      if (i < heightMinus1) {
+        yp += width;
+      }
+    }
+
+    yi = x;
+    stackIn = stackStart;
+    stackOut = stackEnd;
+    for (let y = 0; y < height; y++) {
+      p = yi << 2;
+      pixels[p] = (rSum * mulSum) >>> shgSum;
+      pixels[p + 1] = (gSum * mulSum) >>> shgSum;
+      pixels[p + 2] = (bSum * mulSum) >>> shgSum;
+
+      rSum -= rOutSum;
+      gSum -= gOutSum;
+      bSum -= bOutSum;
+
+      rOutSum -= stackIn.r;
+      gOutSum -= stackIn.g;
+      bOutSum -= stackIn.b;
+
+      p = (x + (
+        ((p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1) *
+                width
+      )) << 2;
+
+      rSum += (rInSum += (stackIn.r = pixels[p]));
+      gSum += (gInSum += (stackIn.g = pixels[p + 1]));
+      bSum += (bInSum += (stackIn.b = pixels[p + 2]));
+
+      stackIn = stackIn.next;
+
+      rOutSum += (pr = stackOut.r);
+      gOutSum += (pg = stackOut.g);
+      bOutSum += (pb = stackOut.b);
+
+      rInSum -= pr;
+      gInSum -= pg;
+      bInSum -= pb;
+
+      stackOut = stackOut.next;
+
+      yi += width;
+    }
+  }
+
+  return imageData;
+}
+
+/**
+ *
+ */
+export class BlurStack {
+  /**
+   * Set properties.
+   */
+  constructor () {
+    this.r = 0;
+    this.g = 0;
+    this.b = 0;
+    this.a = 0;
+    this.next = null;
+  }
+}
+
+export {
+  /**
+    * @function module:StackBlur.image
+    * @see module:StackBlur~processImage
+    */
+  processImage as image,
+  /**
+    * @function module:StackBlur.canvasRGBA
+    * @see module:StackBlur~processCanvasRGBA
+    */
+  processCanvasRGBA as canvasRGBA,
+  /**
+    * @function module:StackBlur.canvasRGB
+    * @see module:StackBlur~processCanvasRGB
+    */
+  processCanvasRGB as canvasRGB,
+  /**
+    * @function module:StackBlur.imageDataRGBA
+    * @see module:StackBlur~processImageDataRGBA
+    */
+  processImageDataRGBA as imageDataRGBA,
+  /**
+    * @function module:StackBlur.imageDataRGB
+    * @see module:StackBlur~processImageDataRGB
+    */
+  processImageDataRGB as imageDataRGB
+};
diff --git a/node_modules/svg-pathdata/CHANGELOG.md b/node_modules/svg-pathdata/CHANGELOG.md
new file mode 100644
index 0000000..cfcd369
--- /dev/null
+++ b/node_modules/svg-pathdata/CHANGELOG.md
@@ -0,0 +1,248 @@
+## [6.0.3](https://github.com/nfroidure/svg-pathdata/compare/v6.0.2...v6.0.3) (2021-09-18)
+
+
+
+# [6.0.2](https://github.com/nfroidure/svg-pathdata/compare/v6.0.1...v6.0.2) (2021-09-17)
+
+
+# [6.0.1](https://github.com/nfroidure/svg-pathdata/compare/v6.0.0...v6.0.1) (2021-09-12)
+
+
+# [6.0.0](https://github.com/nfroidure/svg-pathdata/compare/v5.0.5...v6.0.0) (2021-04-02)
+
+
+## [5.0.5](https://github.com/nfroidure/svg-pathdata/compare/v5.0.4...v5.0.5) (2020-06-06)
+
+
+
+## [5.0.4](https://github.com/nfroidure/svg-pathdata/compare/v4.0.0...v5.0.4) (2020-02-14)
+
+
+### Bug Fixes
+
+* **parser:** fix parsing merged numbers with arc flags ([d55d9f0](https://github.com/nfroidure/svg-pathdata/commit/d55d9f0db00c1bb341eecaea786ca05dd2c51e95))
+
+
+
+## [5.0.3](https://github.com/nfroidure/svg-pathdata/compare/v4.0.0...v5.0.3) (2020-02-04)
+
+
+
+<a name="5.0.2"></a>
+## [5.0.2](https://github.com/nfroidure/svg-pathdata/compare/v5.0.1...v5.0.2) (2018-06-05)
+
+
+
+<a name="5.0.1"></a>
+## [5.0.1](https://github.com/nfroidure/svg-pathdata/compare/v5.0.0...v5.0.1) (2018-06-03)
+
+
+
+<a name="5.0.0"></a>
+# [5.0.0](https://github.com/nfroidure/svg-pathdata/compare/v4.0.0...v5.0.0) (2018-06-02)
+
+
+
+<a name="4.0.1"></a>
+## [4.0.1](https://github.com/nfroidure/svg-pathdata/compare/v4.0.0...v4.0.1) (2017-08-22)
+
+
+
+<a name="4.0.0"></a>
+# [4.0.0](https://github.com/nfroidure/svg-pathdata/compare/v3.2.3...v4.0.0) (2017-08-22)
+
+
+
+<a name="3.2.3"></a>
+## [3.2.3](https://github.com/nfroidure/svg-pathdata/compare/v3.2.2...v3.2.3) (2017-08-13)
+
+
+
+<a name="3.2.2"></a>
+## [3.2.2](https://github.com/nfroidure/svg-pathdata/compare/v3.2.1...v3.2.2) (2017-08-13)
+
+
+
+<a name="3.2.1"></a>
+## [3.2.1](https://github.com/nfroidure/svg-pathdata/compare/v3.2.0...v3.2.1) (2017-08-13)
+
+
+
+<a name="3.2.0"></a>
+# [3.2.0](https://github.com/nfroidure/svg-pathdata/compare/v3.1.1...v3.2.0) (2017-08-12)
+
+
+
+<a name="3.1.1"></a>
+## [3.1.1](https://github.com/nfroidure/svg-pathdata/compare/v3.1.0...v3.1.1) (2017-08-12)
+
+
+
+<a name="3.1.0"></a>
+# [3.1.0](https://github.com/nfroidure/SVGPathData/compare/v3.0.0...v3.1.0) (2017-05-19)
+
+
+
+<a name="3.0.0"></a>
+# [3.0.0](https://github.com/nfroidure/SVGPathData/compare/v2.0.3...v3.0.0) (2017-05-02)
+
+
+
+<a name="2.0.3"></a>
+## [2.0.3](https://github.com/nfroidure/SVGPathData/compare/v2.0.2...v2.0.3) (2017-04-21)
+
+
+
+<a name="2.0.2"></a>
+## [2.0.2](https://github.com/nfroidure/SVGPathData/compare/v2.0.1...v2.0.2) (2017-04-05)
+
+
+### Bug Fixes
+
+* **build:** Fix tests and regenerate the changelog ([fa281fa](https://github.com/nfroidure/SVGPathData/commit/fa281fa))
+
+
+### build
+
+* **metapak-nfroidure:** Add metapak-nfroidure ([6be898c](https://github.com/nfroidure/SVGPathData/commit/6be898c))
+
+
+### Code Refactoring
+
+* **dist:** No more build ([8ce46da](https://github.com/nfroidure/SVGPathData/commit/8ce46da))
+
+
+### BREAKING CHANGES
+
+* **dist:** No more dist, please transpile in your own builds.
+* **metapak-nfroidure:** Since the eslint --fix option were used, there may be some breaking features but
+this very old codebase really need a total cleanup.
+
+
+
+### v2.0.0 (2017/02/22 08:23 +00:00)
+- [8a33721](https://github.com/nfroidure/SVGPathData/commit/8a33721a08ee1cf837ebf41699c6ab93648ad998) 2.0.0 (@NaridaL)
+- [8c840ab](https://github.com/nfroidure/SVGPathData/commit/8c840ab66ee30139921a9d7d75c3f042d422e97a) Changed x1/y1 and x2/y2 around for C and c commands. (@NaridaL)
+- [#20](https://github.com/nfroidure/SVGPathData/pull/20) Normalization and Sanitation Transformers (@NaridaL)
+- [214f5ee](https://github.com/nfroidure/SVGPathData/commit/214f5ee4718792c17ef703ab4c34e3c0a2b6dfe0) Added transformers: (@NaridaL)
+
+### v1.0.4 (2016/11/07 15:18 +00:00)
+- [bb3beb7](https://github.com/nfroidure/SVGPathData/commit/bb3beb7fe18cf933254dd02ca22677bc95e4c993) 1.0.4 (@huerlisi)
+- [#13](https://github.com/nfroidure/SVGPathData/pull/13) Ignore the coverage/ directory in git (@nfroidure)
+- [#14](https://github.com/nfroidure/SVGPathData/pull/14) Use master branch travis badge in README (@nfroidure)
+- [56cbd18](https://github.com/nfroidure/SVGPathData/commit/56cbd186d27a21fce3c21fddc3399e26e985e99a) Use master branch travis badge in README (@huerlisi)
+- [5293f0b](https://github.com/nfroidure/SVGPathData/commit/5293f0bce88e4a2a18bc4e3679f4b3f53d9c86b6) Ignore the coverage/ directory in git (@huerlisi)
+- [#9](https://github.com/nfroidure/SVGPathData/pull/9) Support transforming arc commands (@rhendric)
+- [#11](https://github.com/nfroidure/SVGPathData/pull/11) Moveto commands start a new subpath (@rhendric)
+- [#10](https://github.com/nfroidure/SVGPathData/pull/10) Remove Grunt references from Travis (@rhendric)
+- [9906542](https://github.com/nfroidure/SVGPathData/commit/9906542f722e830e19ca401ccec1d33e6a8474ce) Support transforming arc commands (@rhendric)
+- [25d1dc9](https://github.com/nfroidure/SVGPathData/commit/25d1dc90d2a66573e04b339d9139838625380b84) Fix test expectations (@rhendric)
+- [c9e3747](https://github.com/nfroidure/SVGPathData/commit/c9e3747afdfd269a320e3ff9d474e83a56a2cecb) Remove Grunt references from Travis (@rhendric)
+- [efc5f29](https://github.com/nfroidure/SVGPathData/commit/efc5f298340adb19374b967e11b40e09a892358f) Moveto commands start a new subpath (@rhendric)
+
+### v1.0.3 (2015/11/20 20:08 +00:00)
+- [d52943d](https://github.com/nfroidure/SVGPathData/commit/d52943d3aa4ef339f8e29fb321e5a23fb415c8c0) 1.0.3 (@nfroidure)
+- [06fbcd1](https://github.com/nfroidure/SVGPathData/commit/06fbcd18a10ac0e4ed43fa2acb87e79ab0963355) Cannot use preversion lint right now, too much work (@nfroidure)
+- [7d3d11e](https://github.com/nfroidure/SVGPathData/commit/7d3d11e4d9be6214d5e5a1da94761cb983ab9f80) Suppressing some linting errors (@nfroidure)
+- [7337440](https://github.com/nfroidure/SVGPathData/commit/7337440e21037d83d66cfb051f60c2e7013c5c22) Updating deps (@nfroidure)
+- [17a3934](https://github.com/nfroidure/SVGPathData/commit/17a39346a14b3aae7fca4240d818f16e5712bacb) Removing grunt (@nfroidure)
+- [06d6a69](https://github.com/nfroidure/SVGPathData/commit/06d6a69abb42cdf01aff1ec40af50490c7e5c9c4) Adding eslint config file (@nfroidure)
+
+### v1.0.2 (2015/10/10 10:57 +00:00)
+- [3aa2cd6](https://github.com/nfroidure/SVGPathData/commit/3aa2cd603e9ef078b2394a5463dfcc6267fa1a21) 1.0.2 (@nfroidure)
+- [179416d](https://github.com/nfroidure/SVGPathData/commit/179416d7ed7cbb7a5e4417a89b9528e865e31932) Fixing the arc reverted issue #44 (@nfroidure)
+
+### v1.0.1 (2015/06/27 08:41 +00:00)
+- [a8f1fb6](https://github.com/nfroidure/SVGPathData/commit/a8f1fb63ea3d1ace5038ec278911c50d807913cc) 1.0.1 (@nfroidure)
+- [027ba05](https://github.com/nfroidure/SVGPathData/commit/027ba0540c2ee368df9b4adeb8e0c70a578264da) Suppressing hints (@nfroidure)
+- [183ccd8](https://github.com/nfroidure/SVGPathData/commit/183ccd8b4dec15fa70a6bbcc8ed47d855689c83e) Cleaning up repo (@nfroidure)
+- [7418a31](https://github.com/nfroidure/SVGPathData/commit/7418a3174c8b49e26e06229d7a0a06d0233afd81) Update deps, set the engines to Node > 0.10 (@nfroidure)
+
+### v1.0.0 (2014/11/16 16:05 +00:00)
+- [d043a52](https://github.com/nfroidure/SVGPathData/commit/d043a522d1e759a19e2b9a241772839f403a8f46) 1.0.0 (@nfroidure)
+- [da9671b](https://github.com/nfroidure/SVGPathData/commit/da9671b5eed778a07b094e8a92d589e32b684943) Fixing rel 2 abs for multipath pathdatas (@nfroidure)
+- [68d0e70](https://github.com/nfroidure/SVGPathData/commit/68d0e70a749de73c7d6d0279219b487b9f0e7d64) Adding the forgotten licence file closes #7 (@nfroidure)
+- [2b7bd20](https://github.com/nfroidure/SVGPathData/commit/2b7bd200a3be95afb5cd9c534b08846f4edd7339) Updating version number (@nfroidure)
+- [2b1e277](https://github.com/nfroidure/SVGPathData/commit/2b1e277a6e36f8fc6e5880d323b8534aa46dab56) Removing unecessary dependency (@nfroidure)
+- [cf3f3e4](https://github.com/nfroidure/SVGPathData/commit/cf3f3e4ee2a0a9495eb7f1958a03d8037d488926) Do not use data event anymore (@nfroidure)
+- [5cb5c80](https://github.com/nfroidure/SVGPathData/commit/5cb5c805a333d314641f2dbaa449385054e444f0) Improved transform functions (@nfroidure)
+- [1f567e1](https://github.com/nfroidure/SVGPathData/commit/1f567e11c2d5e086dfa1689e6772eae2eeeef0d8) Improved transform function (@nfroidure)
+- [4724965](https://github.com/nfroidure/SVGPathData/commit/47249651346f98e7ee30cab32579f6ac8edf3c2c) New version (@nfroidure)
+- [2d726ec](https://github.com/nfroidure/SVGPathData/commit/2d726ecb8e2dcd3ac3d6006e53a84f82e8e03dff) Fucking grunt-browserify (@nfroidure)
+- [3587d82](https://github.com/nfroidure/SVGPathData/commit/3587d82648965988f32053901c1669ac584c4621) Adding forgottent tests (@nfroidure)
+- [5a29acb](https://github.com/nfroidure/SVGPathData/commit/5a29acb45605db5d715acedd4238a1e046bd3372) Removing errors that cannot happen (@nfroidure)
+- [3425078](https://github.com/nfroidure/SVGPathData/commit/342507854c0ad5e1894108b7cf4a742e2c289e3e) Adding forgotten new operator for errors (@nfroidure)
+- [54b7538](https://github.com/nfroidure/SVGPathData/commit/54b75386eecc0c518fb2f1dfb190bf91bfcb3ad3) No more EOF and STATE_ENDED for the parser (@nfroidure)
+- [f2609e3](https://github.com/nfroidure/SVGPathData/commit/f2609e3dc78d801e1e112644b211e41ca246cbf7) Fixing encoder output to buffer modewq (@nfroidure)
+- [2c03487](https://github.com/nfroidure/SVGPathData/commit/2c0348746bbacb4da7d2e97cd0e2d18fc5df5fd7) Improving code coverage, allowing constructors omission (@nfroidure)
+- [237898e](https://github.com/nfroidure/SVGPathData/commit/237898e4cd1e9a762f836a265295a658c4a8f5f6) Updating dependencies (@nfroidure)
+- [d35369c](https://github.com/nfroidure/SVGPathData/commit/d35369c12e93b6c20cbd9846f0eab15652ca034e) Fix matrix transformation formula closes #2 (@nfroidure)
+- [e218385](https://github.com/nfroidure/SVGPathData/commit/e218385b4e2bb238231a5a86a05d0e604d125123) Fixing tests, improving A to C transformer (@nfroidure)
+- [49fe80a](https://github.com/nfroidure/SVGPathData/commit/49fe80af60a4dedc68341466f86aa93d67d19882) New version 0.0.4 (@nfroidure)
+- [a0e8a63](https://github.com/nfroidure/SVGPathData/commit/a0e8a63f160cc5dad0b4eb702dfb712785467f66) Added stats (@nfroidure)
+- [#3](https://github.com/nfroidure/SVGPathData/pull/3) Depend on readable-stream from npm (@Raynos)
+- [#4](https://github.com/nfroidure/SVGPathData/pull/4) clean up the scripts (@calvinmetcalf)
+- [0c2cfde](https://github.com/nfroidure/SVGPathData/commit/0c2cfde170ca5f7621a4f6bc246f319aa5ae02d5) change | to && (@calvinmetcalf)
+- [071215f](https://github.com/nfroidure/SVGPathData/commit/071215ff3d78db451e4aa2e39b8c9cee28b5668c) clean up the scripts (@calvinmetcalf)
+- [19a4daa](https://github.com/nfroidure/SVGPathData/commit/19a4daaee107a25f9c422dc05c317c12808c94ca) convert other files to readable-stream too (@Raynos)
+- [50dd97a](https://github.com/nfroidure/SVGPathData/commit/50dd97ab76f37c36ccf6519c2cd0ffd841ca0f98) depend on readable-stream in p.json (@Raynos)
+- [181f63b](https://github.com/nfroidure/SVGPathData/commit/181f63b7eb1e79f80a258626da913123af5f73c3) Use readable-stream instead (@Raynos)
+- [ce11d07](https://github.com/nfroidure/SVGPathData/commit/ce11d07e8d04ef446d4e49f83c582a88a1f49c68) Readme fix (@nfroidure)
+- [c521987](https://github.com/nfroidure/SVGPathData/commit/c5219871629b8fafb8cea85a0ed158080af8acb0) Added coverage tests (@nfroidure)
+- [11d22fc](https://github.com/nfroidure/SVGPathData/commit/11d22fc3360cd44e166e4a46935f94196ba19dce) Added a round transformation (@nfroidure)
+- [0bf6fa4](https://github.com/nfroidure/SVGPathData/commit/0bf6fa4a20deba65e61b63d33a3e56ab7fdef675) Do not parse incomplete L,M,S incomplete commands anymore (@nfroidure)
+- [653a4d3](https://github.com/nfroidure/SVGPathData/commit/653a4d3b214e13682aa0ecba80b71aaf069e540a) Improved sapegin test (@nfroidure)
+- [60ee34e](https://github.com/nfroidure/SVGPathData/commit/60ee34ef8da8a798f2dfd7642555dcb71b83186e) Added sapegin test (@nfroidure)
+- [908da2a](https://github.com/nfroidure/SVGPathData/commit/908da2a4ce2cf69990d73a267e7e124ca955008c) Added arc to curve conversionwq (@nfroidure)
+- [b341fde](https://github.com/nfroidure/SVGPathData/commit/b341fdef1503ff0eb414a5b1bbcd9eb40cd75dbd) Main file is the src not the build (@nfroidure)
+- [0d8608e](https://github.com/nfroidure/SVGPathData/commit/0d8608e9ead3fff8b22e37581098bdda7eb6dc99) Version updated (@nfroidure)
+- [28a1cd1](https://github.com/nfroidure/SVGPathData/commit/28a1cd11205e8876d8a17112fcb5bd261a337685) Tests updated (@nfroidure)
+- [63ac182](https://github.com/nfroidure/SVGPathData/commit/63ac182d17c8f99cf8cba8c978bfc05102832d1c) Fix for X/Y transforms (@nfroidure)
+- [b4196ce](https://github.com/nfroidure/SVGPathData/commit/b4196ce375c43e1dd66659abf3b25e1c2f6e6d8e) Removed unnecessary absolute conversions (@nfroidure)
+- [4a38ad0](https://github.com/nfroidure/SVGPathData/commit/4a38ad09fe38c32a97a790e88605b0a28efc3c92) Added x symetry (@nfroidure)
+- [e34a0e3](https://github.com/nfroidure/SVGPathData/commit/e34a0e34ae7ccc1572920dc43e3c58c993885513) Based y symetry on other transformations (@nfroidure)
+- [392152d](https://github.com/nfroidure/SVGPathData/commit/392152dc8aafcb3709d5c83915437e0c56638f51) Checking transformations arguments (@nfroidure)
+- [177f586](https://github.com/nfroidure/SVGPathData/commit/177f5867e376fd8bcc6c8da77c8829c3296e07ee) Updated REAMDE and package.json (@nfroidure)
+- [60a2819](https://github.com/nfroidure/SVGPathData/commit/60a2819bc2ce39c039f34169b58791195d73df56) Some transformations converted to their idioins matrixes (@nfroidure)
+- [a24a2a5](https://github.com/nfroidure/SVGPathData/commit/a24a2a55efd1a5b740133967786cddc5cc6c4823) Skew transformations added2 (@nfroidure)
+- [930b9c4](https://github.com/nfroidure/SVGPathData/commit/930b9c4f9a823b57a22a1f2061d4cd7c35a83c9f) Skew transformations added (@nfroidure)
+- [7bc0390](https://github.com/nfroidure/SVGPathData/commit/7bc03902ffd6723f53f263d5ae875d727803f961) Rotation transformation added (@nfroidure)
+- [3191815](https://github.com/nfroidure/SVGPathData/commit/31918152a99e30b856cd2c527aecb437d076cb41) Added scale transformation (@nfroidure)
+- [0e15916](https://github.com/nfroidure/SVGPathData/commit/0e1591638e0c0e9da0de9f4de59f3cb0e68ff4c4) Added translation transformation (@nfroidure)
+- [6cfd826](https://github.com/nfroidure/SVGPathData/commit/6cfd826478cbe52b100a7632027046dfca59fd5b) Fix for y symetry problems (@nfroidure)
+- [7d0576c](https://github.com/nfroidure/SVGPathData/commit/7d0576c6f83c61d449fac26b67d6b54ee3ea7655) Support decpoint separated numbers 2 (@nfroidure)
+- [92391ec](https://github.com/nfroidure/SVGPathData/commit/92391eca9f73a2007c3f155977a19a7d7dd56e0e) Support sign separated numbers 2 (@nfroidure)
+- [5b536c1](https://github.com/nfroidure/SVGPathData/commit/5b536c17b9e754d5d8dd569422bb4b30d7a41739) Support sign separated numbers (@nfroidure)
+- [d37ea0a](https://github.com/nfroidure/SVGPathData/commit/d37ea0aee50de8fc311d652dd76c43094d1dcfd5) Added ySymetry transformer2 (@nfroidure)
+- [647fdf4](https://github.com/nfroidure/SVGPathData/commit/647fdf4ce9f99411d2433247af5bbdde32ea2759) Added ySymetry transformer (@nfroidure)
+- [377518f](https://github.com/nfroidure/SVGPathData/commit/377518fc292a08ec6b292262f46454f7d91071b5) Added toRel transformer2 (@nfroidure)
+- [dd00037](https://github.com/nfroidure/SVGPathData/commit/dd0003784e04086890f76a1abadd4d4871a8695e) Added toAbs transformer2 (@nfroidure)
+- [d0d8332](https://github.com/nfroidure/SVGPathData/commit/d0d833242c9121dfe0a1f171ebea9f7744631958) Added toAbs transformer (@nfroidure)
+- [b1e24a6](https://github.com/nfroidure/SVGPathData/commit/b1e24a63c4b3646e5af996b12c80abd53b4614cc) Now based on Node stream module (@nfroidure)
+- [1bfbeea](https://github.com/nfroidure/SVGPathData/commit/1bfbeea6b429762477473b958e90739cb782b6aa) Updated dependencies (@nfroidure)
+- [a267550](https://github.com/nfroidure/SVGPathData/commit/a267550c013538d23b2ba292d0f9358d950f4b8c) Added the distribution file (@nfroidure)
+- [b8f0c7e](https://github.com/nfroidure/SVGPathData/commit/b8f0c7ee00367aac72177b689455d049c3ff2915) Added encoding use samples (@nfroidure)
+- [bbd8955](https://github.com/nfroidure/SVGPathData/commit/bbd8955eb82ff57f1dd57cdb0f3cdff4868070a4) Switch to line to n+1 move to declarated commands (@nfroidure)
+- [667f390](https://github.com/nfroidure/SVGPathData/commit/667f390209048f63e4e2cca3ae714e5821cbe70c) Added an encoder (@nfroidure)
+- [78ef5ce](https://github.com/nfroidure/SVGPathData/commit/78ef5ce99598a6fc0edf9f83306f86e4ff9d3571) Contributing (@nfroidure)
+- [c6d4db4](https://github.com/nfroidure/SVGPathData/commit/c6d4db4cc5879fdefd7697d2bba44b60f337e6e3) Added usage in the README file (@nfroidure)
+- [bd69b1c](https://github.com/nfroidure/SVGPathData/commit/bd69b1ce492492d4b1b60d5e1d632558427bc1bd) Const naming uniformized (@nfroidure)
+- [3b21f06](https://github.com/nfroidure/SVGPathData/commit/3b21f06e40c91a1761b5c5a86b5fb36d0044f690) New Grunt/Package files (@nfroidure)
+- [f84959e](https://github.com/nfroidure/SVGPathData/commit/f84959e2833af79024ed356a5cdabbc331a5e028) Small refactoring (@nfroidure)
+- [726e85f](https://github.com/nfroidure/SVGPathData/commit/726e85f575550ef13ff85a74ba312ee48fb2ac78) Added eliptic arc commands error detection tests (@nfroidure)
+- [7bb6671](https://github.com/nfroidure/SVGPathData/commit/7bb6671b59ad35f73fa81d61cbc75f5424a099c0) Added eliptic arc commands (@nfroidure)
+- [7099de1](https://github.com/nfroidure/SVGPathData/commit/7099de12fda674ad43f9200d1f92d81110dfe43f) Added smooth quadratic curve to commands (@nfroidure)
+- [97c7575](https://github.com/nfroidure/SVGPathData/commit/97c7575823eb6f0a4215ba8c0b2387724ce75d5f) Added quadratic curve to commands (@nfroidure)
+- [0499dcb](https://github.com/nfroidure/SVGPathData/commit/0499dcbe01caf609fb55e888376b2fd6aab14f00) Added curve to commands2 (@nfroidure)
+- [fdb154e](https://github.com/nfroidure/SVGPathData/commit/fdb154e6fd07eab2b49737c32e2c14e2c9bd603a) Added curve to commands (@nfroidure)
+- [111c42c](https://github.com/nfroidure/SVGPathData/commit/111c42cd3f4c115dfa93c171acc7fcc8bf605ea0) Better syntax error handling (@nfroidure)
+- [52727ae](https://github.com/nfroidure/SVGPathData/commit/52727ae6303a7ca4c3f2817d6e41051ea679698b) Added smooth curveto commands (@nfroidure)
+- [4fae609](https://github.com/nfroidure/SVGPathData/commit/4fae609bb17b1f866af6b47074762c9613d271c7) Added line to and closepath commands parsing (@nfroidure)
+- [d7cdfad](https://github.com/nfroidure/SVGPathData/commit/d7cdfadf1024eb4d7bd51f6d6d487a4577b5a524) Move to commands parsing added (@nfroidure)
+- [d10264e](https://github.com/nfroidure/SVGPathData/commit/d10264eda8d10b5200cffdfe8d08a239b4679c42) parse mthod returns commands (@nfroidure)
+- [280ffe0](https://github.com/nfroidure/SVGPathData/commit/280ffe072cebe7abc2ec3bab2fb563e76a326bca) Build info (@nfroidure)
+- [ac6b856](https://github.com/nfroidure/SVGPathData/commit/ac6b856c9c0338042ec10f45b0da9ce151d42411) Added vertical/horizontal commands2 (@nfroidure)
+- [f785f6b](https://github.com/nfroidure/SVGPathData/commit/f785f6bf1a558caf1e60bb4d561b37139a082f61) Added vertical/horizontal commands (@nfroidure)
+- [2f9b8da](https://github.com/nfroidure/SVGPathData/commit/2f9b8da11568d0079c101277ea8ec103e2434df1) Full support for numbers parsing (@nfroidure)
+- [699bf87](https://github.com/nfroidure/SVGPathData/commit/699bf87bb27ed93b5075155308b48a1a574b015a) Fixed tests (@nfroidure)
+- [04450cc](https://github.com/nfroidure/SVGPathData/commit/04450cc0938a5d883338362ceb167ca59e9d1c7f) First Commit (@nfroidure)
diff --git a/node_modules/svg-pathdata/LICENSE b/node_modules/svg-pathdata/LICENSE
new file mode 100644
index 0000000..df9966e
--- /dev/null
+++ b/node_modules/svg-pathdata/LICENSE
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+Copyright © 2017 Nicolas Froidure
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the “Software”), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/svg-pathdata/README.md b/node_modules/svg-pathdata/README.md
new file mode 100644
index 0000000..0a80793
--- /dev/null
+++ b/node_modules/svg-pathdata/README.md
@@ -0,0 +1,162 @@
+# svg-pathdata
+> Manipulate SVG path data (path[d] attribute content) simply and efficiently.
+
+[![NPM version](https://badge.fury.io/js/svg-pathdata.svg)](https://npmjs.org/package/svg-pathdata)
+[![Run tests](https://github.com/nfroidure/svg-pathdata/actions/workflows/test.yml/badge.svg)](https://github.com/nfroidure/svg-pathdata/actions/workflows/test.yml)
+[![Dependency Status](https://david-dm.org/nfroidure/svg-pathdata.svg)](https://david-dm.org/nfroidure/svg-pathdata)
+[![devDependency Status](https://david-dm.org/nfroidure/svg-pathdata/dev-status.svg)](https://david-dm.org/nfroidure/svg-pathdata#info=devDependencies)
+[![Coverage Status](https://coveralls.io/repos/nfroidure/svg-pathdata/badge.svg?branch=master)](https://coveralls.io/r/nfroidure/svg-pathdata?branch=master)
+[![Code Climate](https://codeclimate.com/github/nfroidure/svg-pathdata.svg)](https://codeclimate.com/github/nfroidure/svg-pathdata)
+[![Dependency Status](https://dependencyci.com/github/nfroidure/svg-pathdata/badge)](https://dependencyci.com/github/nfroidure/svg-pathdata)
+
+## Usage
+
+Install the module:
+```sh
+npm install --save svg-pathdata
+```
+or add the [bundle](https://github.com/nfroidure/svg-pathdata/blob/master/lib/SVGPathData.js) to a script in your HTML.
+
+Then in your JavaScript files:
+```js
+const {SVGPathData, SVGPathDataTransformer, SVGPathDataEncoder, SVGPathDataParser} = require('svg-pathdata');
+```
+
+With import syntax in TypeScript/ES6:
+```ts
+import {SVGPathData, SVGPathDataTransformer, SVGPathDataEncoder, SVGPathDataParser} from 'svg-pathdata';
+```
+
+Without modules, using the global in the bundle:
+```js
+const {SVGPathData, SVGPathDataTransformer, SVGPathDataEncoder, SVGPathDataParser} = svgpathdata;
+```
+
+
+## Reading PathData
+```js
+const pathData = new SVGPathData (`
+  M 10 10
+  H 60
+  V 60
+  L 10 60
+  Z`);
+
+
+console.log(pathData.commands);
+
+
+// [  {type: SVGPathData.MOVE_TO,       relative: false,  x: 10,  y: 10},
+//    {type: SVGPathData.HORIZ_LINE_TO, relative: false,  x: 60},
+//    {type: SVGPathData.VERT_LINE_TO,  relative: false,          y: 60},
+//    {type: SVGPathData.LINE_TO,       relative: false,  x: 10,  y: 60},
+//    {type: SVGPathData.CLOSE_PATH}]
+```
+
+## Reading PathData in chunks
+```js
+const parser = new SVGPathDataParser();
+
+parser.parse('   '); // returns []
+parser.parse('M 10'); // returns []
+parser.parse(' 10'); // returns [{type: SVGPathData.MOVE_TO, relative: false, x: 10, y: 10 }]
+
+parser.write('H 60'); // returns [{type: SVGPathData.HORIZ_LINE_TO, relative: false, x: 60 }]
+
+parser.write('V'); // returns []
+parser.write('60'); // returns [{type: SVGPathData.VERT_LINE_TO, relative: false, y: 60 }]
+
+parser.write('L 10 60 \n  Z');
+// returns [
+//   {type: SVGPathData.LINE_TO, relative: false, x: 10, y: 60 },
+//   {type: SVGPathData.CLOSE_PATH }]
+
+parser.finish(); // tell parser there is no more data: will throw if there are unfinished commands.
+```
+
+## Outputting PathData
+```js
+const pathData = new SVGPathData (`
+  M 10 10
+  H 60
+  V 60
+  L 10 60
+  Z`);
+// returns "M10 10H60V60L10 60Z"
+
+encodeSVGPath({ type: SVGPathData.MOVE_TO,       relative: false, x: 10, y: 10 });
+// returns "M10 10"
+
+encodeSVGPath({ type: SVGPathData.HORIZ_LINE_TO, relative: false, x: 60 });
+// returns "H60"
+
+encodeSVGPath([
+  { type: SVGPathData.VERT_LINE_TO,  relative: false,        y: 60 },
+  { type: SVGPathData.LINE_TO,       relative: false, x: 10, y: 60 },
+  { type: SVGPathData.CLOSE_PATH}])
+// returns "V60L10 60Z"
+
+```
+
+## Transforming PathData
+This library can perform transformations on SVG paths. Here is
+ [an example of that kind of use](https://github.com/nfroidure/svgicons2svgfont/blob/aa6df0211419e9d61c417c63bcc353f0cb2ea0c8/src/index.js#L192).
+
+### Transforming entire paths
+```js
+  new SVGPathData (`
+   m 10,10
+   h 60
+   v 60
+   l 10,60
+   z`)
+  .toAbs()
+  .encode();
+// return s"M10,10 H70 V70 L80,130 Z"
+```
+
+### Transforming partial data
+Here, we take SVGPathData from stdin and output it transformed to stdout.
+```js
+const transformingParser = new SVGPathDataParser().toAbs().scale(2, 2);
+transformingParser.parse('m 0 0') // returns [{ type: SVGPathData.MOVE_TO,       relative: false, x: 0, y: 0 }]
+transformingParser.parse('l 2 3') // returns [{ type: SVGPathData.LINE_TO,       relative: false, x: 4, y: 6 }]
+```
+
+## Supported transformations
+You can find all supported transformations in
+ [src/SVGPathDataTransformer.ts](https://github.com/nfroidure/SVGPathData/blob/master/src/SVGPathDataTransformer.ts#L47).
+ Additionally, you can create your own by writing a function with the following signature:
+```js
+type TransformFunction = (command: SVGCommand) => SVGCommand | SVGCommand[];
+
+function SET_X_TO(xValue = 10) {
+  return function(command) {
+    command.x = xValue; // transform command objects and return them
+    return command;
+  };
+};
+
+// Synchronous usage
+new SVGPathData('...')
+  .transform(SET_X_TO(25))
+  .encode();
+
+// Chunk usage
+new SVGPathDataParser().transform(SET_X_TO(25));
+```
+
+
+## Stats
+
+[![NPM](https://nodei.co/npm/svg-pathdata.png?downloads=true&stars=true)](https://nodei.co/npm/svg-pathdata/)
+[![NPM](https://nodei.co/npm-dl/svg-pathdata.png)](https://nodei.co/npm/svg-pathdata/)
+
+## Contributing
+Clone this project, run:
+```sh
+npm install; npm test
+```
+
+# License
+[MIT](https://github.com/nfroidure/svg-pathdata/blob/master/LICENSE)
diff --git a/node_modules/svg-pathdata/index.d.ts b/node_modules/svg-pathdata/index.d.ts
new file mode 100644
index 0000000..84bd0d9
--- /dev/null
+++ b/node_modules/svg-pathdata/index.d.ts
@@ -0,0 +1,2 @@
+export * from "./lib/SVGPathData";
+export as namespace svgpathdata;
diff --git a/node_modules/svg-pathdata/karma.conf.js b/node_modules/svg-pathdata/karma.conf.js
new file mode 100644
index 0000000..4115f98
--- /dev/null
+++ b/node_modules/svg-pathdata/karma.conf.js
@@ -0,0 +1,69 @@
+// Karma configuration
+// Generated on Tue Oct 15 2013 15:27:53 GMT+0200 (CEST)
+
+module.exports = function(config) {
+  config.set({
+
+    // base path, that will be used to resolve files and exclude
+    basePath: '',
+
+
+    // frameworks to use
+    frameworks: ['mocha', 'chai'],
+
+
+    // list of files / patterns to load in the browser
+    files: [
+      'dist/SVGPathData.js',
+      'tests/**/*.mocha.js'
+    ],
+
+
+    // list of files to exclude
+    exclude: [
+      
+    ],
+
+
+    // test results reporter to use
+    // possible values: 'dots', 'progress', 'junit', 'growl', 'coverage'
+    reporters: ['progress'],
+
+
+    // web server port
+    port: 9876,
+
+
+    // enable / disable colors in the output (reporters and logs)
+    colors: true,
+
+
+    // level of logging
+    // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
+    logLevel: config.LOG_INFO,
+
+
+    // enable / disable watching file and executing tests whenever any file changes
+    autoWatch: true,
+
+
+    // Start these browsers, currently available:
+    // - Chrome
+    // - ChromeCanary
+    // - Firefox
+    // - Opera
+    // - Safari (only Mac)
+    // - PhantomJS
+    // - IE (only Windows)
+    browsers: ['Chrome', 'Firefox', 'PhantomJS'],
+
+
+    // If browser does not capture in given timeout [ms], kill it
+    captureTimeout: 60000,
+
+
+    // Continuous Integration mode
+    // if true, it capture browsers, run tests and exit
+    singleRun: false
+  });
+};
diff --git a/node_modules/svg-pathdata/lib/SVGPathData.cjs b/node_modules/svg-pathdata/lib/SVGPathData.cjs
new file mode 100644
index 0000000..1880334
--- /dev/null
+++ b/node_modules/svg-pathdata/lib/SVGPathData.cjs
@@ -0,0 +1,16 @@
+!function(t,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r((t="undefined"!=typeof globalThis?globalThis:t||self).svgpathdata={})}(this,(function(t){"use strict";
+/*! *****************************************************************************
+    Copyright (c) Microsoft Corporation.
+
+    Permission to use, copy, modify, and/or distribute this software for any
+    purpose with or without fee is hereby granted.
+
+    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+    PERFORMANCE OF THIS SOFTWARE.
+    ***************************************************************************** */var r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var e in r)Object.prototype.hasOwnProperty.call(r,e)&&(t[e]=r[e])})(t,e)};function e(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function a(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(a.prototype=e.prototype,new a)}var a=" ";function i(t){var r="";Array.isArray(t)||(t=[t]);for(var e=0;e<t.length;e++){var i=t[e];if(i.type===N.CLOSE_PATH)r+="z";else if(i.type===N.HORIZ_LINE_TO)r+=(i.relative?"h":"H")+i.x;else if(i.type===N.VERT_LINE_TO)r+=(i.relative?"v":"V")+i.y;else if(i.type===N.MOVE_TO)r+=(i.relative?"m":"M")+i.x+a+i.y;else if(i.type===N.LINE_TO)r+=(i.relative?"l":"L")+i.x+a+i.y;else if(i.type===N.CURVE_TO)r+=(i.relative?"c":"C")+i.x1+a+i.y1+a+i.x2+a+i.y2+a+i.x+a+i.y;else if(i.type===N.SMOOTH_CURVE_TO)r+=(i.relative?"s":"S")+i.x2+a+i.y2+a+i.x+a+i.y;else if(i.type===N.QUAD_TO)r+=(i.relative?"q":"Q")+i.x1+a+i.y1+a+i.x+a+i.y;else if(i.type===N.SMOOTH_QUAD_TO)r+=(i.relative?"t":"T")+i.x+a+i.y;else{if(i.type!==N.ARC)throw new Error('Unexpected command type "'+i.type+'" at index '+e+".");r+=(i.relative?"a":"A")+i.rX+a+i.rY+a+i.xRot+a+ +i.lArcFlag+a+ +i.sweepFlag+a+i.x+a+i.y}}return r}function n(t,r){var e=t[0],a=t[1];return[e*Math.cos(r)-a*Math.sin(r),e*Math.sin(r)+a*Math.cos(r)]}function o(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];for(var e=0;e<t.length;e++)if("number"!=typeof t[e])throw new Error("assertNumbers arguments["+e+"] is not a number. "+typeof t[e]+" == typeof "+t[e]);return!0}var s=Math.PI;function u(t,r,e){t.lArcFlag=0===t.lArcFlag?0:1,t.sweepFlag=0===t.sweepFlag?0:1;var a=t.rX,i=t.rY,o=t.x,u=t.y;a=Math.abs(t.rX),i=Math.abs(t.rY);var h=n([(r-o)/2,(e-u)/2],-t.xRot/180*s),c=h[0],m=h[1],y=Math.pow(c,2)/Math.pow(a,2)+Math.pow(m,2)/Math.pow(i,2);1<y&&(a*=Math.sqrt(y),i*=Math.sqrt(y)),t.rX=a,t.rY=i;var p=Math.pow(a,2)*Math.pow(m,2)+Math.pow(i,2)*Math.pow(c,2),f=(t.lArcFlag!==t.sweepFlag?1:-1)*Math.sqrt(Math.max(0,(Math.pow(a,2)*Math.pow(i,2)-p)/p)),T=a*m/i*f,O=-i*c/a*f,l=n([T,O],t.xRot/180*s);t.cX=l[0]+(r+o)/2,t.cY=l[1]+(e+u)/2,t.phi1=Math.atan2((m-O)/i,(c-T)/a),t.phi2=Math.atan2((-m-O)/i,(-c-T)/a),0===t.sweepFlag&&t.phi2>t.phi1&&(t.phi2-=2*s),1===t.sweepFlag&&t.phi2<t.phi1&&(t.phi2+=2*s),t.phi1*=180/s,t.phi2*=180/s}function h(t,r,e){o(t,r,e);var a=t*t+r*r-e*e;if(0>a)return[];if(0===a)return[[t*e/(t*t+r*r),r*e/(t*t+r*r)]];var i=Math.sqrt(a);return[[(t*e+r*i)/(t*t+r*r),(r*e-t*i)/(t*t+r*r)],[(t*e-r*i)/(t*t+r*r),(r*e+t*i)/(t*t+r*r)]]}var c=Math.PI/180;function m(t,r,e){return(1-e)*t+e*r}function y(t,r,e,a){return t+Math.cos(a/180*s)*r+Math.sin(a/180*s)*e}function p(t,r,e,a){var i=1e-6,n=r-t,o=e-r,s=3*n+3*(a-e)-6*o,u=6*(o-n),h=3*n;return Math.abs(s)<i?[-h/u]:function(t,r,e){void 0===e&&(e=1e-6);var a=t*t/4-r;if(a<-e)return[];if(a<=e)return[-t/2];var i=Math.sqrt(a);return[-t/2-i,-t/2+i]}(u/s,h/s,i)}function f(t,r,e,a,i){var n=1-i;return t*(n*n*n)+r*(3*n*n*i)+e*(3*n*i*i)+a*(i*i*i)}t.SVGPathDataTransformer=void 0,function(t){function r(){return i((function(t,r,e){return t.relative&&(void 0!==t.x1&&(t.x1+=r),void 0!==t.y1&&(t.y1+=e),void 0!==t.x2&&(t.x2+=r),void 0!==t.y2&&(t.y2+=e),void 0!==t.x&&(t.x+=r),void 0!==t.y&&(t.y+=e),t.relative=!1),t}))}function e(){var t=NaN,r=NaN,e=NaN,a=NaN;return i((function(i,n,o){return i.type&N.SMOOTH_CURVE_TO&&(i.type=N.CURVE_TO,t=isNaN(t)?n:t,r=isNaN(r)?o:r,i.x1=i.relative?n-t:2*n-t,i.y1=i.relative?o-r:2*o-r),i.type&N.CURVE_TO?(t=i.relative?n+i.x2:i.x2,r=i.relative?o+i.y2:i.y2):(t=NaN,r=NaN),i.type&N.SMOOTH_QUAD_TO&&(i.type=N.QUAD_TO,e=isNaN(e)?n:e,a=isNaN(a)?o:a,i.x1=i.relative?n-e:2*n-e,i.y1=i.relative?o-a:2*o-a),i.type&N.QUAD_TO?(e=i.relative?n+i.x1:i.x1,a=i.relative?o+i.y1:i.y1):(e=NaN,a=NaN),i}))}function a(){var t=NaN,r=NaN;return i((function(e,a,i){if(e.type&N.SMOOTH_QUAD_TO&&(e.type=N.QUAD_TO,t=isNaN(t)?a:t,r=isNaN(r)?i:r,e.x1=e.relative?a-t:2*a-t,e.y1=e.relative?i-r:2*i-r),e.type&N.QUAD_TO){t=e.relative?a+e.x1:e.x1,r=e.relative?i+e.y1:e.y1;var n=e.x1,o=e.y1;e.type=N.CURVE_TO,e.x1=((e.relative?0:a)+2*n)/3,e.y1=((e.relative?0:i)+2*o)/3,e.x2=(e.x+2*n)/3,e.y2=(e.y+2*o)/3}else t=NaN,r=NaN;return e}))}function i(t){var r=0,e=0,a=NaN,i=NaN;return function(n){if(isNaN(a)&&!(n.type&N.MOVE_TO))throw new Error("path must start with moveto");var o=t(n,r,e,a,i);return n.type&N.CLOSE_PATH&&(r=a,e=i),void 0!==n.x&&(r=n.relative?r+n.x:n.x),void 0!==n.y&&(e=n.relative?e+n.y:n.y),n.type&N.MOVE_TO&&(a=r,i=e),o}}function s(t,r,e,a,n,s){return o(t,r,e,a,n,s),i((function(i,o,u,h){var c=i.x1,m=i.x2,y=i.relative&&!isNaN(h),p=void 0!==i.x?i.x:y?0:o,f=void 0!==i.y?i.y:y?0:u;function T(t){return t*t}i.type&N.HORIZ_LINE_TO&&0!==r&&(i.type=N.LINE_TO,i.y=i.relative?0:u),i.type&N.VERT_LINE_TO&&0!==e&&(i.type=N.LINE_TO,i.x=i.relative?0:o),void 0!==i.x&&(i.x=i.x*t+f*e+(y?0:n)),void 0!==i.y&&(i.y=p*r+i.y*a+(y?0:s)),void 0!==i.x1&&(i.x1=i.x1*t+i.y1*e+(y?0:n)),void 0!==i.y1&&(i.y1=c*r+i.y1*a+(y?0:s)),void 0!==i.x2&&(i.x2=i.x2*t+i.y2*e+(y?0:n)),void 0!==i.y2&&(i.y2=m*r+i.y2*a+(y?0:s));var O=t*a-r*e;if(void 0!==i.xRot&&(1!==t||0!==r||0!==e||1!==a))if(0===O)delete i.rX,delete i.rY,delete i.xRot,delete i.lArcFlag,delete i.sweepFlag,i.type=N.LINE_TO;else{var l=i.xRot*Math.PI/180,v=Math.sin(l),_=Math.cos(l),d=1/T(i.rX),x=1/T(i.rY),A=T(_)*d+T(v)*x,E=2*v*_*(d-x),C=T(v)*d+T(_)*x,M=A*a*a-E*r*a+C*r*r,R=E*(t*a+r*e)-2*(A*e*a+C*t*r),S=A*e*e-E*t*e+C*t*t,g=(Math.atan2(R,M-S)+Math.PI)%Math.PI/2,I=Math.sin(g),V=Math.cos(g);i.rX=Math.abs(O)/Math.sqrt(M*T(V)+R*I*V+S*T(I)),i.rY=Math.abs(O)/Math.sqrt(M*T(I)-R*I*V+S*T(V)),i.xRot=180*g/Math.PI}return void 0!==i.sweepFlag&&0>O&&(i.sweepFlag=+!i.sweepFlag),i}))}function T(){return function(t){var r={};for(var e in t)r[e]=t[e];return r}}t.ROUND=function(t){function r(r){return Math.round(r*t)/t}return void 0===t&&(t=1e13),o(t),function(t){return void 0!==t.x1&&(t.x1=r(t.x1)),void 0!==t.y1&&(t.y1=r(t.y1)),void 0!==t.x2&&(t.x2=r(t.x2)),void 0!==t.y2&&(t.y2=r(t.y2)),void 0!==t.x&&(t.x=r(t.x)),void 0!==t.y&&(t.y=r(t.y)),void 0!==t.rX&&(t.rX=r(t.rX)),void 0!==t.rY&&(t.rY=r(t.rY)),t}},t.TO_ABS=r,t.TO_REL=function(){return i((function(t,r,e){return t.relative||(void 0!==t.x1&&(t.x1-=r),void 0!==t.y1&&(t.y1-=e),void 0!==t.x2&&(t.x2-=r),void 0!==t.y2&&(t.y2-=e),void 0!==t.x&&(t.x-=r),void 0!==t.y&&(t.y-=e),t.relative=!0),t}))},t.NORMALIZE_HVZ=function(t,r,e){return void 0===t&&(t=!0),void 0===r&&(r=!0),void 0===e&&(e=!0),i((function(a,i,n,o,s){if(isNaN(o)&&!(a.type&N.MOVE_TO))throw new Error("path must start with moveto");return r&&a.type&N.HORIZ_LINE_TO&&(a.type=N.LINE_TO,a.y=a.relative?0:n),e&&a.type&N.VERT_LINE_TO&&(a.type=N.LINE_TO,a.x=a.relative?0:i),t&&a.type&N.CLOSE_PATH&&(a.type=N.LINE_TO,a.x=a.relative?o-i:o,a.y=a.relative?s-n:s),a.type&N.ARC&&(0===a.rX||0===a.rY)&&(a.type=N.LINE_TO,delete a.rX,delete a.rY,delete a.xRot,delete a.lArcFlag,delete a.sweepFlag),a}))},t.NORMALIZE_ST=e,t.QT_TO_C=a,t.INFO=i,t.SANITIZE=function(t){void 0===t&&(t=0),o(t);var r=NaN,e=NaN,a=NaN,n=NaN;return i((function(i,o,s,u,h){var c=Math.abs,m=!1,y=0,p=0;if(i.type&N.SMOOTH_CURVE_TO&&(y=isNaN(r)?0:o-r,p=isNaN(e)?0:s-e),i.type&(N.CURVE_TO|N.SMOOTH_CURVE_TO)?(r=i.relative?o+i.x2:i.x2,e=i.relative?s+i.y2:i.y2):(r=NaN,e=NaN),i.type&N.SMOOTH_QUAD_TO?(a=isNaN(a)?o:2*o-a,n=isNaN(n)?s:2*s-n):i.type&N.QUAD_TO?(a=i.relative?o+i.x1:i.x1,n=i.relative?s+i.y1:i.y2):(a=NaN,n=NaN),i.type&N.LINE_COMMANDS||i.type&N.ARC&&(0===i.rX||0===i.rY||!i.lArcFlag)||i.type&N.CURVE_TO||i.type&N.SMOOTH_CURVE_TO||i.type&N.QUAD_TO||i.type&N.SMOOTH_QUAD_TO){var f=void 0===i.x?0:i.relative?i.x:i.x-o,T=void 0===i.y?0:i.relative?i.y:i.y-s;y=isNaN(a)?void 0===i.x1?y:i.relative?i.x:i.x1-o:a-o,p=isNaN(n)?void 0===i.y1?p:i.relative?i.y:i.y1-s:n-s;var O=void 0===i.x2?0:i.relative?i.x:i.x2-o,l=void 0===i.y2?0:i.relative?i.y:i.y2-s;c(f)<=t&&c(T)<=t&&c(y)<=t&&c(p)<=t&&c(O)<=t&&c(l)<=t&&(m=!0)}return i.type&N.CLOSE_PATH&&c(o-u)<=t&&c(s-h)<=t&&(m=!0),m?[]:i}))},t.MATRIX=s,t.ROTATE=function(t,r,e){void 0===r&&(r=0),void 0===e&&(e=0),o(t,r,e);var a=Math.sin(t),i=Math.cos(t);return s(i,a,-a,i,r-r*i+e*a,e-r*a-e*i)},t.TRANSLATE=function(t,r){return void 0===r&&(r=0),o(t,r),s(1,0,0,1,t,r)},t.SCALE=function(t,r){return void 0===r&&(r=t),o(t,r),s(t,0,0,r,0,0)},t.SKEW_X=function(t){return o(t),s(1,0,Math.atan(t),1,0,0)},t.SKEW_Y=function(t){return o(t),s(1,Math.atan(t),0,1,0,0)},t.X_AXIS_SYMMETRY=function(t){return void 0===t&&(t=0),o(t),s(-1,0,0,1,t,0)},t.Y_AXIS_SYMMETRY=function(t){return void 0===t&&(t=0),o(t),s(1,0,0,-1,0,t)},t.A_TO_C=function(){return i((function(t,r,e){return N.ARC===t.type?function(t,r,e){var a,i,o,s;t.cX||u(t,r,e);for(var h=Math.min(t.phi1,t.phi2),y=Math.max(t.phi1,t.phi2)-h,p=Math.ceil(y/90),f=new Array(p),T=r,O=e,l=0;l<p;l++){var v=m(t.phi1,t.phi2,l/p),_=m(t.phi1,t.phi2,(l+1)/p),d=_-v,x=4/3*Math.tan(d*c/4),A=[Math.cos(v*c)-x*Math.sin(v*c),Math.sin(v*c)+x*Math.cos(v*c)],E=A[0],C=A[1],M=[Math.cos(_*c),Math.sin(_*c)],R=M[0],S=M[1],g=[R+x*Math.sin(_*c),S-x*Math.cos(_*c)],I=g[0],V=g[1];f[l]={relative:t.relative,type:N.CURVE_TO};var D=function(r,e){var a=n([r*t.rX,e*t.rY],t.xRot),i=a[0],o=a[1];return[t.cX+i,t.cY+o]};a=D(E,C),f[l].x1=a[0],f[l].y1=a[1],i=D(I,V),f[l].x2=i[0],f[l].y2=i[1],o=D(R,S),f[l].x=o[0],f[l].y=o[1],t.relative&&(f[l].x1-=T,f[l].y1-=O,f[l].x2-=T,f[l].y2-=O,f[l].x-=T,f[l].y-=O),T=(s=[f[l].x,f[l].y])[0],O=s[1]}return f}(t,t.relative?0:r,t.relative?0:e):t}))},t.ANNOTATE_ARCS=function(){return i((function(t,r,e){return t.relative&&(r=0,e=0),N.ARC===t.type&&u(t,r,e),t}))},t.CLONE=T,t.CALCULATE_BOUNDS=function(){var t=function(t){var r={};for(var e in t)r[e]=t[e];return r},n=r(),o=a(),s=e(),c=i((function(r,e,a){var i=s(o(n(t(r))));function m(t){t>c.maxX&&(c.maxX=t),t<c.minX&&(c.minX=t)}function T(t){t>c.maxY&&(c.maxY=t),t<c.minY&&(c.minY=t)}if(i.type&N.DRAWING_COMMANDS&&(m(e),T(a)),i.type&N.HORIZ_LINE_TO&&m(i.x),i.type&N.VERT_LINE_TO&&T(i.y),i.type&N.LINE_TO&&(m(i.x),T(i.y)),i.type&N.CURVE_TO){m(i.x),T(i.y);for(var O=0,l=p(e,i.x1,i.x2,i.x);O<l.length;O++){0<(H=l[O])&&1>H&&m(f(e,i.x1,i.x2,i.x,H))}for(var v=0,_=p(a,i.y1,i.y2,i.y);v<_.length;v++){0<(H=_[v])&&1>H&&T(f(a,i.y1,i.y2,i.y,H))}}if(i.type&N.ARC){m(i.x),T(i.y),u(i,e,a);for(var d=i.xRot/180*Math.PI,x=Math.cos(d)*i.rX,A=Math.sin(d)*i.rX,E=-Math.sin(d)*i.rY,C=Math.cos(d)*i.rY,M=i.phi1<i.phi2?[i.phi1,i.phi2]:-180>i.phi2?[i.phi2+360,i.phi1+360]:[i.phi2,i.phi1],R=M[0],S=M[1],g=function(t){var r=t[0],e=t[1],a=180*Math.atan2(e,r)/Math.PI;return a<R?a+360:a},I=0,V=h(E,-x,0).map(g);I<V.length;I++){(H=V[I])>R&&H<S&&m(y(i.cX,x,E,H))}for(var D=0,L=h(C,-A,0).map(g);D<L.length;D++){var H;(H=L[D])>R&&H<S&&T(y(i.cY,A,C,H))}}return r}));return c.minX=1/0,c.maxX=-1/0,c.minY=1/0,c.maxY=-1/0,c}}(t.SVGPathDataTransformer||(t.SVGPathDataTransformer={}));var T,O=function(){function r(){}return r.prototype.round=function(r){return this.transform(t.SVGPathDataTransformer.ROUND(r))},r.prototype.toAbs=function(){return this.transform(t.SVGPathDataTransformer.TO_ABS())},r.prototype.toRel=function(){return this.transform(t.SVGPathDataTransformer.TO_REL())},r.prototype.normalizeHVZ=function(r,e,a){return this.transform(t.SVGPathDataTransformer.NORMALIZE_HVZ(r,e,a))},r.prototype.normalizeST=function(){return this.transform(t.SVGPathDataTransformer.NORMALIZE_ST())},r.prototype.qtToC=function(){return this.transform(t.SVGPathDataTransformer.QT_TO_C())},r.prototype.aToC=function(){return this.transform(t.SVGPathDataTransformer.A_TO_C())},r.prototype.sanitize=function(r){return this.transform(t.SVGPathDataTransformer.SANITIZE(r))},r.prototype.translate=function(r,e){return this.transform(t.SVGPathDataTransformer.TRANSLATE(r,e))},r.prototype.scale=function(r,e){return this.transform(t.SVGPathDataTransformer.SCALE(r,e))},r.prototype.rotate=function(r,e,a){return this.transform(t.SVGPathDataTransformer.ROTATE(r,e,a))},r.prototype.matrix=function(r,e,a,i,n,o){return this.transform(t.SVGPathDataTransformer.MATRIX(r,e,a,i,n,o))},r.prototype.skewX=function(r){return this.transform(t.SVGPathDataTransformer.SKEW_X(r))},r.prototype.skewY=function(r){return this.transform(t.SVGPathDataTransformer.SKEW_Y(r))},r.prototype.xSymmetry=function(r){return this.transform(t.SVGPathDataTransformer.X_AXIS_SYMMETRY(r))},r.prototype.ySymmetry=function(r){return this.transform(t.SVGPathDataTransformer.Y_AXIS_SYMMETRY(r))},r.prototype.annotateArcs=function(){return this.transform(t.SVGPathDataTransformer.ANNOTATE_ARCS())},r}(),l=function(t){return" "===t||"\t"===t||"\r"===t||"\n"===t},v=function(t){return"0".charCodeAt(0)<=t.charCodeAt(0)&&t.charCodeAt(0)<="9".charCodeAt(0)},_=function(t){function r(){var r=t.call(this)||this;return r.curNumber="",r.curCommandType=-1,r.curCommandRelative=!1,r.canParseCommandOrComma=!0,r.curNumberHasExp=!1,r.curNumberHasExpDigits=!1,r.curNumberHasDecimal=!1,r.curArgs=[],r}return e(r,t),r.prototype.finish=function(t){if(void 0===t&&(t=[]),this.parse(" ",t),0!==this.curArgs.length||!this.canParseCommandOrComma)throw new SyntaxError("Unterminated command at the path end.");return t},r.prototype.parse=function(t,r){var e=this;void 0===r&&(r=[]);for(var a=function(t){r.push(t),e.curArgs.length=0,e.canParseCommandOrComma=!0},i=0;i<t.length;i++){var n=t[i],o=!(this.curCommandType!==N.ARC||3!==this.curArgs.length&&4!==this.curArgs.length||1!==this.curNumber.length||"0"!==this.curNumber&&"1"!==this.curNumber),s=v(n)&&("0"===this.curNumber&&"0"===n||o);if(!v(n)||s)if("e"!==n&&"E"!==n)if("-"!==n&&"+"!==n||!this.curNumberHasExp||this.curNumberHasExpDigits)if("."!==n||this.curNumberHasExp||this.curNumberHasDecimal||o){if(this.curNumber&&-1!==this.curCommandType){var u=Number(this.curNumber);if(isNaN(u))throw new SyntaxError("Invalid number ending at "+i);if(this.curCommandType===N.ARC)if(0===this.curArgs.length||1===this.curArgs.length){if(0>u)throw new SyntaxError('Expected positive number, got "'+u+'" at index "'+i+'"')}else if((3===this.curArgs.length||4===this.curArgs.length)&&"0"!==this.curNumber&&"1"!==this.curNumber)throw new SyntaxError('Expected a flag, got "'+this.curNumber+'" at index "'+i+'"');this.curArgs.push(u),this.curArgs.length===d[this.curCommandType]&&(N.HORIZ_LINE_TO===this.curCommandType?a({type:N.HORIZ_LINE_TO,relative:this.curCommandRelative,x:u}):N.VERT_LINE_TO===this.curCommandType?a({type:N.VERT_LINE_TO,relative:this.curCommandRelative,y:u}):this.curCommandType===N.MOVE_TO||this.curCommandType===N.LINE_TO||this.curCommandType===N.SMOOTH_QUAD_TO?(a({type:this.curCommandType,relative:this.curCommandRelative,x:this.curArgs[0],y:this.curArgs[1]}),N.MOVE_TO===this.curCommandType&&(this.curCommandType=N.LINE_TO)):this.curCommandType===N.CURVE_TO?a({type:N.CURVE_TO,relative:this.curCommandRelative,x1:this.curArgs[0],y1:this.curArgs[1],x2:this.curArgs[2],y2:this.curArgs[3],x:this.curArgs[4],y:this.curArgs[5]}):this.curCommandType===N.SMOOTH_CURVE_TO?a({type:N.SMOOTH_CURVE_TO,relative:this.curCommandRelative,x2:this.curArgs[0],y2:this.curArgs[1],x:this.curArgs[2],y:this.curArgs[3]}):this.curCommandType===N.QUAD_TO?a({type:N.QUAD_TO,relative:this.curCommandRelative,x1:this.curArgs[0],y1:this.curArgs[1],x:this.curArgs[2],y:this.curArgs[3]}):this.curCommandType===N.ARC&&a({type:N.ARC,relative:this.curCommandRelative,rX:this.curArgs[0],rY:this.curArgs[1],xRot:this.curArgs[2],lArcFlag:this.curArgs[3],sweepFlag:this.curArgs[4],x:this.curArgs[5],y:this.curArgs[6]})),this.curNumber="",this.curNumberHasExpDigits=!1,this.curNumberHasExp=!1,this.curNumberHasDecimal=!1,this.canParseCommandOrComma=!0}if(!l(n))if(","===n&&this.canParseCommandOrComma)this.canParseCommandOrComma=!1;else if("+"!==n&&"-"!==n&&"."!==n)if(s)this.curNumber=n,this.curNumberHasDecimal=!1;else{if(0!==this.curArgs.length)throw new SyntaxError("Unterminated command at index "+i+".");if(!this.canParseCommandOrComma)throw new SyntaxError('Unexpected character "'+n+'" at index '+i+". Command cannot follow comma");if(this.canParseCommandOrComma=!1,"z"!==n&&"Z"!==n)if("h"===n||"H"===n)this.curCommandType=N.HORIZ_LINE_TO,this.curCommandRelative="h"===n;else if("v"===n||"V"===n)this.curCommandType=N.VERT_LINE_TO,this.curCommandRelative="v"===n;else if("m"===n||"M"===n)this.curCommandType=N.MOVE_TO,this.curCommandRelative="m"===n;else if("l"===n||"L"===n)this.curCommandType=N.LINE_TO,this.curCommandRelative="l"===n;else if("c"===n||"C"===n)this.curCommandType=N.CURVE_TO,this.curCommandRelative="c"===n;else if("s"===n||"S"===n)this.curCommandType=N.SMOOTH_CURVE_TO,this.curCommandRelative="s"===n;else if("q"===n||"Q"===n)this.curCommandType=N.QUAD_TO,this.curCommandRelative="q"===n;else if("t"===n||"T"===n)this.curCommandType=N.SMOOTH_QUAD_TO,this.curCommandRelative="t"===n;else{if("a"!==n&&"A"!==n)throw new SyntaxError('Unexpected character "'+n+'" at index '+i+".");this.curCommandType=N.ARC,this.curCommandRelative="a"===n}else r.push({type:N.CLOSE_PATH}),this.canParseCommandOrComma=!0,this.curCommandType=-1}else this.curNumber=n,this.curNumberHasDecimal="."===n}else this.curNumber+=n,this.curNumberHasDecimal=!0;else this.curNumber+=n;else this.curNumber+=n,this.curNumberHasExp=!0;else this.curNumber+=n,this.curNumberHasExpDigits=this.curNumberHasExp}return r},r.prototype.transform=function(t){return Object.create(this,{parse:{value:function(r,e){void 0===e&&(e=[]);for(var a=0,i=Object.getPrototypeOf(this).parse.call(this,r);a<i.length;a++){var n=i[a],o=t(n);Array.isArray(o)?e.push.apply(e,o):e.push(o)}return e}}})},r}(O),N=function(r){function a(t){var e=r.call(this)||this;return e.commands="string"==typeof t?a.parse(t):t,e}return e(a,r),a.prototype.encode=function(){return a.encode(this.commands)},a.prototype.getBounds=function(){var r=t.SVGPathDataTransformer.CALCULATE_BOUNDS();return this.transform(r),r},a.prototype.transform=function(t){for(var r=[],e=0,a=this.commands;e<a.length;e++){var i=t(a[e]);Array.isArray(i)?r.push.apply(r,i):r.push(i)}return this.commands=r,this},a.encode=function(t){return i(t)},a.parse=function(t){var r=new _,e=[];return r.parse(t,e),r.finish(e),e},a.CLOSE_PATH=1,a.MOVE_TO=2,a.HORIZ_LINE_TO=4,a.VERT_LINE_TO=8,a.LINE_TO=16,a.CURVE_TO=32,a.SMOOTH_CURVE_TO=64,a.QUAD_TO=128,a.SMOOTH_QUAD_TO=256,a.ARC=512,a.LINE_COMMANDS=a.LINE_TO|a.HORIZ_LINE_TO|a.VERT_LINE_TO,a.DRAWING_COMMANDS=a.HORIZ_LINE_TO|a.VERT_LINE_TO|a.LINE_TO|a.CURVE_TO|a.SMOOTH_CURVE_TO|a.QUAD_TO|a.SMOOTH_QUAD_TO|a.ARC,a}(O),d=((T={})[N.MOVE_TO]=2,T[N.LINE_TO]=2,T[N.HORIZ_LINE_TO]=1,T[N.VERT_LINE_TO]=1,T[N.CLOSE_PATH]=0,T[N.QUAD_TO]=4,T[N.SMOOTH_QUAD_TO]=2,T[N.CURVE_TO]=6,T[N.SMOOTH_CURVE_TO]=4,T[N.ARC]=7,T);t.COMMAND_ARG_COUNTS=d,t.SVGPathData=N,t.SVGPathDataParser=_,t.encodeSVGPath=i,Object.defineProperty(t,"__esModule",{value:!0})}));
+//# sourceMappingURL=SVGPathData.cjs.map
diff --git a/node_modules/svg-pathdata/lib/SVGPathData.cjs.map b/node_modules/svg-pathdata/lib/SVGPathData.cjs.map
new file mode 100644
index 0000000..cd87f56
--- /dev/null
+++ b/node_modules/svg-pathdata/lib/SVGPathData.cjs.map
@@ -0,0 +1 @@
+{"version":3,"file":"SVGPathData.cjs","sources":["../node_modules/tslib/tslib.es6.js","../src/SVGPathDataEncoder.ts","../src/mathUtils.ts","../src/SVGPathDataTransformer.ts","../src/TransformableSVG.ts","../src/SVGPathDataParser.ts","../src/SVGPathData.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n        to[j] = from[i];\r\n    return to;\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to get private field on non-instance\");\r\n    }\r\n    return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to set private field on non-instance\");\r\n    }\r\n    privateMap.set(receiver, value);\r\n    return value;\r\n}\r\n",null,null,null,null,null,null],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","WSP","encodeSVGPath","commands","str","isArray","i","length","command","type","SVGPathData","CLOSE_PATH","HORIZ_LINE_TO","relative","x","VERT_LINE_TO","y","MOVE_TO","LINE_TO","CURVE_TO","x1","y1","x2","y2","SMOOTH_CURVE_TO","QUAD_TO","SMOOTH_QUAD_TO","ARC","Error","rX","rY","xRot","lArcFlag","sweepFlag","rotate","_a","rad","Math","cos","sin","assertNumbers","_i","numbers","PI","annotateArcCommand","c","abs","x1_","y1_","testValue","pow","sqrt","c_ScaleTemp","c_Scale","max","cx_","cy_","cRot","cX","cY","phi1","atan2","phi2","intersectionUnitCircleLine","a","termSqr","term","DEG","lerp","t","arcAt","phiDeg","bezierRoot","x0","x3","EPS","x01","x12","q","PRECISION","discriminantX4","root","pqFormula","bezierAt","s","SVGPathDataTransformer","TO_ABS","INFO","prevX","prevY","NORMALIZE_ST","prevCurveC2X","NaN","prevCurveC2Y","prevQuadCX","prevQuadCY","isNaN","QT_TO_C","prevQuadX1","prevQuadY1","f","prevXAbs","prevYAbs","pathStartXAbs","pathStartYAbs","result","MATRIX","e","pathStartX","origX1","origX2","comRel","sqr","det","sinRot","cosRot","xCurve","yCurve","A","B","C","A1","B1","C1","newXRot","newSinRot","newCosRot","CLONE","key","roundVal","rf","val","round","normalizeZ","normalizeH","normalizeV","pathStartY","skip","x1Rel","y1Rel","LINE_COMMANDS","xRel","yRel","x2Rel","y2Rel","dX","dY","atan","xOffset","yOffset","arc","y0","phiMin","min","deltaPhi","partCount","ceil","phiStart","phiEnd","deltaPhi_1","tan","_e","_f","_g","transform","xTemp","yTemp","_b","_c","_d","a2c","clone","toAbs","qtToC","normST","fixX","absX","maxX","minX","fixY","absY","maxY","minY","DRAWING_COMMANDS","xDerivRoots_1","derivRoot","yDerivRoots_1","xRotRad","x90","y90","phiMin_1","phiMax","normalizeXiEta","xi","eta","phi","xDerivRoots_2","map","yDerivRoots_2","Infinity","TransformableSVG","ROUND","TO_REL","NORMALIZE_HVZ","A_TO_C","eps","SANITIZE","TRANSLATE","SCALE","ROTATE","SKEW_X","SKEW_Y","X_AXIS_SYMMETRY","Y_AXIS_SYMMETRY","ANNOTATE_ARCS","isWhiteSpace","isDigit","charCodeAt","_super","_this","SVGPathDataParser","parse","curArgs","canParseCommandOrComma","SyntaxError","finishCommand","push","isAArcFlag","curCommandType","curNumber","isEndingDigit","curNumberHasExp","curNumberHasExpDigits","curNumberHasDecimal","Number","COMMAND_ARG_COUNTS","curCommandRelative","value","chunk","parsedCommands_1","getPrototypeOf","cT","content","encode","boundsTransform","CALCULATE_BOUNDS","transformFunction","newCommands","transformedCommand","path","parser","finish"],"mappings":";;;;;;;;;;;;;;oFAgBA,IAAIA,EAAgB,SAASC,EAAGC,GAI5B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOC,OAAOK,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,MAC3EN,EAAGC,IAGrB,SAASS,EAAUV,EAAGC,GACzB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIU,UAAU,uBAAyBC,OAAOX,GAAK,iCAE7D,SAASY,IAAOC,KAAKC,YAAcf,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaC,OAAOc,OAAOf,IAAMY,EAAGN,UAAYN,EAAEM,UAAW,IAAIM,GCrBnF,IAAMI,EAAM,aAEIC,EAAcC,GAC5B,IAAIC,EAAM,GAELf,MAAMgB,QAAQF,KACjBA,EAAW,CAACA,IAEd,IAAK,IAAIG,EAAI,EAAGA,EAAIH,EAASI,OAAQD,IAAK,CACxC,IAAME,EAAUL,EAASG,GACzB,GAAIE,EAAQC,OAASC,EAAYC,WAC/BP,GAAO,SACF,GAAII,EAAQC,OAASC,EAAYE,cACtCR,IAAQI,EAAQK,SAAW,IAAM,KAC/BL,EAAQM,OACL,GAAIN,EAAQC,OAASC,EAAYK,aACtCX,IAAQI,EAAQK,SAAW,IAAM,KAC/BL,EAAQQ,OACL,GAAIR,EAAQC,OAASC,EAAYO,QACtCb,IAAQI,EAAQK,SAAW,IAAM,KAC/BL,EAAQM,EAAIb,EAAMO,EAAQQ,OACvB,GAAIR,EAAQC,OAASC,EAAYQ,QACtCd,IAAQI,EAAQK,SAAW,IAAM,KAC/BL,EAAQM,EAAIb,EAAMO,EAAQQ,OACvB,GAAIR,EAAQC,OAASC,EAAYS,SACtCf,IAAQI,EAAQK,SAAW,IAAM,KAC/BL,EAAQY,GAAKnB,EAAMO,EAAQa,GAC3BpB,EAAMO,EAAQc,GAAKrB,EAAMO,EAAQe,GACjCtB,EAAMO,EAAQM,EAAIb,EAAMO,EAAQQ,OAC7B,GAAIR,EAAQC,OAASC,EAAYc,gBACtCpB,IAAQI,EAAQK,SAAW,IAAM,KAC/BL,EAAQc,GAAKrB,EAAMO,EAAQe,GAC3BtB,EAAMO,EAAQM,EAAIb,EAAMO,EAAQQ,OAC7B,GAAIR,EAAQC,OAASC,EAAYe,QACtCrB,IAAQI,EAAQK,SAAW,IAAM,KAC/BL,EAAQY,GAAKnB,EAAMO,EAAQa,GAC3BpB,EAAMO,EAAQM,EAAIb,EAAMO,EAAQQ,OAC7B,GAAIR,EAAQC,OAASC,EAAYgB,eACtCtB,IAAQI,EAAQK,SAAW,IAAM,KAC/BL,EAAQM,EAAIb,EAAMO,EAAQQ,MACvB,CAAA,GAAIR,EAAQC,OAASC,EAAYiB,IAQtC,MAAM,IAAIC,MACR,4BAA8BpB,EAAgBC,mBAAkBH,OARlEF,IAAQI,EAAQK,SAAW,IAAM,KAC/BL,EAAQqB,GAAK5B,EAAMO,EAAQsB,GAC3B7B,EAAMO,EAAQuB,KACd9B,IAAQO,EAAQwB,SAAY/B,IAAQO,EAAQyB,UAC5ChC,EAAMO,EAAQM,EAAIb,EAAMO,EAAQQ,GAQtC,OAAOZ,WCzDO8B,EAAOC,EAA0BC,OAAzBtB,OAAGE,OACzB,MAAO,CACLF,EAAIuB,KAAKC,IAAIF,GAAOpB,EAAIqB,KAAKE,IAAIH,GACjCtB,EAAIuB,KAAKE,IAAIH,GAAOpB,EAAIqB,KAAKC,IAAIF,aAKrBI,QAAc,aAAAC,mBAAAA,IAAAC,kBAE1B,IAAK,IAAIpC,EAAI,EAAGA,EAAIoC,EAAQnC,OAAQD,IAClC,GAAI,iBAAoBoC,EAAQpC,GAC9B,MAAM,IAAIsB,MACR,2BAA2BtB,+BAA8BoC,EAAQpC,iBAAgBoC,EAAQpC,IAIjG,OAAO,EAGT,IAAMqC,EAAKN,KAAKM,YASAC,EAAmBC,EAAazB,EAAYC,GAC1DwB,EAAEb,SAAY,IAAMa,EAAEb,SAAY,EAAI,EACtCa,EAAEZ,UAAa,IAAMY,EAAEZ,UAAa,EAAI,EAEnC,IAAAJ,EAAgBgB,KAAZf,EAAYe,KAAR/B,EAAQ+B,IAAL7B,EAAK6B,IAErBhB,EAAKQ,KAAKS,IAAID,EAAEhB,IAChBC,EAAKO,KAAKS,IAAID,EAAEf,IACV,IAAAK,EAAaD,EAAO,EAAEd,EAAKN,GAAK,GAAIO,EAAKL,GAAK,IAAK6B,EAAEd,KAAO,IAAMY,GAAjEI,OAAKC,OACNC,EAAYZ,KAAKa,IAAIH,EAAK,GAAKV,KAAKa,IAAIrB,EAAI,GAAKQ,KAAKa,IAAIF,EAAK,GAAKX,KAAKa,IAAIpB,EAAI,GAEnF,EAAImB,IACNpB,GAAMQ,KAAKc,KAAKF,GAChBnB,GAAMO,KAAKc,KAAKF,IAElBJ,EAAEhB,GAAKA,EACPgB,EAAEf,GAAKA,EACP,IAAMsB,EAAef,KAAKa,IAAIrB,EAAI,GAAKQ,KAAKa,IAAIF,EAAK,GAAKX,KAAKa,IAAIpB,EAAI,GAAKO,KAAKa,IAAIH,EAAK,GACpFM,GAAWR,EAAEb,WAAaa,EAAEZ,UAAY,GAAK,GACjDI,KAAKc,KAAKd,KAAKiB,IAAI,GAAIjB,KAAKa,IAAIrB,EAAI,GAAKQ,KAAKa,IAAIpB,EAAI,GAAKsB,GAAeA,IACtEG,EAAM1B,EAAKmB,EAAMlB,EAAKuB,EACtBG,GAAO1B,EAAKiB,EAAMlB,EAAKwB,EACvBI,EAAOvB,EAAO,CAACqB,EAAKC,GAAMX,EAAEd,KAAO,IAAMY,GAE/CE,EAAEa,GAAKD,EAAK,IAAMrC,EAAKN,GAAK,EAC5B+B,EAAEc,GAAKF,EAAK,IAAMpC,EAAKL,GAAK,EAC5B6B,EAAEe,KAAOvB,KAAKwB,OAAOb,EAAMQ,GAAO1B,GAAKiB,EAAMQ,GAAO1B,GACpDgB,EAAEiB,KAAOzB,KAAKwB,QAAQb,EAAMQ,GAAO1B,IAAMiB,EAAMQ,GAAO1B,GAClD,IAAMgB,EAAEZ,WAAaY,EAAEiB,KAAOjB,EAAEe,OAClCf,EAAEiB,MAAQ,EAAInB,GAEZ,IAAME,EAAEZ,WAAaY,EAAEiB,KAAOjB,EAAEe,OAClCf,EAAEiB,MAAQ,EAAInB,GAEhBE,EAAEe,MAAQ,IAAMjB,EAChBE,EAAEiB,MAAQ,IAAMnB,WAaFoB,EAA2BC,EAAW/E,EAAW4D,GAC/DL,EAAcwB,EAAG/E,EAAG4D,GAEpB,IAAMoB,EAAUD,EAAIA,EAAI/E,EAAIA,EAAI4D,EAAIA,EAEpC,GAAI,EAAIoB,EACN,MAAO,GACF,GAAI,IAAMA,EACf,MAAO,CACL,CACGD,EAAInB,GAAMmB,EAAIA,EAAI/E,EAAIA,GACtBA,EAAI4D,GAAMmB,EAAIA,EAAI/E,EAAIA,KAE7B,IAAMiF,EAAO7B,KAAKc,KAAKc,GAEvB,MAAO,CACL,EACGD,EAAInB,EAAI5D,EAAIiF,IAASF,EAAIA,EAAI/E,EAAIA,IACjCA,EAAI4D,EAAImB,EAAIE,IAASF,EAAIA,EAAI/E,EAAIA,IACpC,EACG+E,EAAInB,EAAI5D,EAAIiF,IAASF,EAAIA,EAAI/E,EAAIA,IACjCA,EAAI4D,EAAImB,EAAIE,IAASF,EAAIA,EAAI/E,EAAIA,KAIjC,IAAMkF,EAAM9B,KAAKM,GAAK,aAEbyB,EAAKJ,EAAW/E,EAAWoF,GACzC,OAAQ,EAAIA,GAAKL,EAAIK,EAAIpF,WAGXqF,EAAMzB,EAAWzB,EAAYE,EAAYiD,GACvD,OAAO1B,EAAIR,KAAKC,IAAIiC,EAAS,IAAM5B,GAAMvB,EAAKiB,KAAKE,IAAIgC,EAAS,IAAM5B,GAAMrB,WAG9DkD,EAAWC,EAAYrD,EAAYE,EAAYoD,GAC7D,IAAMC,EAAM,KACNC,EAAMxD,EAAKqD,EACXI,EAAMvD,EAAKF,EAEX4C,EAAI,EAAIY,EAAM,GADRF,EAAKpD,GACa,EAAIuD,EAC5B5F,EAAkB,GAAb4F,EAAMD,GACX/B,EAAI,EAAI+B,EAGd,OAAIvC,KAAKS,IAAIkB,GAAKW,EAET,EAAE9B,EAAI5D,GAiBjB,SAAmBK,EAAWwF,EAAWC,gBAAAA,QAEvC,IAAMC,EAAiB1F,EAAIA,EAAI,EAAIwF,EAEnC,GAAIE,GAAkBD,EACpB,MAAO,GACF,GAAIC,GAAkBD,EAC3B,MAAO,EAAEzF,EAAI,GAEf,IAAM2F,EAAO5C,KAAKc,KAAK6B,GAEvB,MAAO,EAAG1F,EAAI,EAAK2F,GAAQ3F,EAAI,EAAK2F,GA1B7BC,CAAUjG,EAAI+E,EAAGnB,EAAImB,EAAGW,YAIjBQ,EAASV,EAAYrD,EAAYE,EAAYoD,EAAYL,GAEvE,IAAMe,EAAI,EAAIf,EAMd,OAAOI,GALIW,EAAIA,EAAIA,GAKFhE,GAJN,EAAIgE,EAAIA,EAAIf,GAII/C,GAHhB,EAAI8D,EAAIf,EAAIA,GAGcK,GAF1BL,EAAIA,EAAIA,mCCnIrB,SAAiBgB,GAuCf,SAAgBC,IACd,OAAOC,GAAK,SAAC/E,EAASgF,EAAOC,GAyB3B,OAxBIjF,EAAQK,gBAEN,IAAuBL,EAAQY,KACjCZ,EAAQY,IAAMoE,QAEZ,IAAuBhF,EAAQa,KACjCb,EAAQa,IAAMoE,QAGZ,IAAuBjF,EAAQc,KACjCd,EAAQc,IAAMkE,QAEZ,IAAuBhF,EAAQe,KACjCf,EAAQe,IAAMkE,QAGZ,IAAuBjF,EAAQM,IACjCN,EAAQM,GAAK0E,QAEX,IAAuBhF,EAAQQ,IACjCR,EAAQQ,GAAKyE,GAEfjF,EAAQK,UAAW,GAEdL,KAkEX,SAAgBkF,IACd,IAAIC,EAAeC,IACfC,EAAeD,IACfE,EAAaF,IACbG,EAAaH,IAEjB,OAAOL,GAAK,SAAC/E,EAASgF,EAAOC,GA8B3B,OA7BIjF,EAAQC,KAAOC,EAAYc,kBAC7BhB,EAAQC,KAAOC,EAAYS,SAC3BwE,EAAeK,MAAML,GAAgBH,EAAQG,EAC7CE,EAAeG,MAAMH,GAAgBJ,EAAQI,EAC7CrF,EAAQY,GAAKZ,EAAQK,SAAW2E,EAAQG,EAAe,EAAIH,EAAQG,EACnEnF,EAAQa,GAAKb,EAAQK,SAAW4E,EAAQI,EAAe,EAAIJ,EAAQI,GAEjErF,EAAQC,KAAOC,EAAYS,UAC7BwE,EAAenF,EAAQK,SAAW2E,EAAQhF,EAAQc,GAAKd,EAAQc,GAC/DuE,EAAerF,EAAQK,SAAW4E,EAAQjF,EAAQe,GAAKf,EAAQe,KAE/DoE,EAAeC,IACfC,EAAeD,KAEbpF,EAAQC,KAAOC,EAAYgB,iBAC7BlB,EAAQC,KAAOC,EAAYe,QAC3BqE,EAAaE,MAAMF,GAAcN,EAAQM,EACzCC,EAAaC,MAAMD,GAAcN,EAAQM,EACzCvF,EAAQY,GAAKZ,EAAQK,SAAW2E,EAAQM,EAAa,EAAIN,EAAQM,EACjEtF,EAAQa,GAAKb,EAAQK,SAAW4E,EAAQM,EAAa,EAAIN,EAAQM,GAE/DvF,EAAQC,KAAOC,EAAYe,SAC7BqE,EAAatF,EAAQK,SAAW2E,EAAQhF,EAAQY,GAAKZ,EAAQY,GAC7D2E,EAAavF,EAAQK,SAAW4E,EAAQjF,EAAQa,GAAKb,EAAQa,KAE7DyE,EAAaF,IACbG,EAAaH,KAGRpF,KAYX,SAAgByF,IACd,IAAIC,EAAaN,IACbO,EAAaP,IAEjB,OAAOL,GAAK,SAAC/E,EAASgF,EAAOC,GAQ3B,GAPIjF,EAAQC,KAAOC,EAAYgB,iBAC7BlB,EAAQC,KAAOC,EAAYe,QAC3ByE,EAAaF,MAAME,GAAcV,EAAQU,EACzCC,EAAaH,MAAMG,GAAcV,EAAQU,EACzC3F,EAAQY,GAAKZ,EAAQK,SAAW2E,EAAQU,EAAa,EAAIV,EAAQU,EACjE1F,EAAQa,GAAKb,EAAQK,SAAW4E,EAAQU,EAAa,EAAIV,EAAQU,GAE/D3F,EAAQC,KAAOC,EAAYe,QAAS,CACtCyE,EAAa1F,EAAQK,SAAW2E,EAAQhF,EAAQY,GAAKZ,EAAQY,GAC7D+E,EAAa3F,EAAQK,SAAW4E,EAAQjF,EAAQa,GAAKb,EAAQa,GAC7D,IAAMD,EAAKZ,EAAQY,GACbC,EAAKb,EAAQa,GAEnBb,EAAQC,KAAOC,EAAYS,SAC3BX,EAAQY,KAAOZ,EAAQK,SAAW,EAAI2E,GAAc,EAALpE,GAAU,EACzDZ,EAAQa,KAAOb,EAAQK,SAAW,EAAI4E,GAAc,EAALpE,GAAU,EACzDb,EAAQc,IAAMd,EAAQM,EAAS,EAALM,GAAU,EACpCZ,EAAQe,IAAMf,EAAQQ,EAAS,EAALK,GAAU,OAEpC6E,EAAaN,IACbO,EAAaP,IAGf,OAAOpF,KAGX,SAAgB+E,EACda,GAEA,IAAIC,EAAW,EACXC,EAAW,EACXC,EAAgBX,IAChBY,EAAgBZ,IAEpB,OAAO,SAAmBpF,GACxB,GAAIwF,MAAMO,MAAoB/F,EAAQC,KAAOC,EAAYO,SACvD,MAAM,IAAIW,MAAM,+BAGlB,IAAM6E,EAASL,EAAE5F,EAAS6F,EAAUC,EAAUC,EAAeC,GAmB7D,OAjBIhG,EAAQC,KAAOC,EAAYC,aAC7B0F,EAAWE,EACXD,EAAWE,QAGT,IAAuBhG,EAAQM,IACjCuF,EAAY7F,EAAQK,SAAWwF,EAAW7F,EAAQM,EAAIN,EAAQM,QAE5D,IAAuBN,EAAQQ,IACjCsF,EAAY9F,EAAQK,SAAWyF,EAAW9F,EAAQQ,EAAIR,EAAQQ,GAG5DR,EAAQC,KAAOC,EAAYO,UAC7BsF,EAAgBF,EAChBG,EAAgBF,GAGXG,GAoFX,SAAgBC,EAAO1C,EAAW/E,EAAW4D,EAAW7D,EAAW2H,EAAWP,GAG5E,OAFA5D,EAAcwB,EAAG/E,EAAG4D,EAAG7D,EAAG2H,EAAGP,GAEtBb,GAAK,SAAC/E,EAASgF,EAAOC,EAAOmB,GAClC,IAAMC,EAASrG,EAAQY,GACjB0F,EAAStG,EAAQc,GAGjByF,EAASvG,EAAQK,WAAamF,MAAMY,GACpC9F,OAAI,IAAuBN,EAAQM,EAAIN,EAAQM,EAAKiG,EAAS,EAAIvB,EACjExE,OAAI,IAAuBR,EAAQQ,EAAIR,EAAQQ,EAAK+F,EAAS,EAAItB,EA6BvE,SAASuB,EAAIlG,GAAa,OAAOA,EAAIA,EA3BjCN,EAAQC,KAAOC,EAAYE,eAAiB,IAAM3B,IACpDuB,EAAQC,KAAOC,EAAYQ,QAC3BV,EAAQQ,EAAIR,EAAQK,SAAW,EAAI4E,GAEjCjF,EAAQC,KAAOC,EAAYK,cAAgB,IAAM8B,IACnDrC,EAAQC,KAAOC,EAAYQ,QAC3BV,EAAQM,EAAIN,EAAQK,SAAW,EAAI2E,QAGjC,IAAuBhF,EAAQM,IACjCN,EAAQM,EAAKN,EAAQM,EAAIkD,EAAMhD,EAAI6B,GAAMkE,EAAS,EAAIJ,SAEpD,IAAuBnG,EAAQQ,IACjCR,EAAQQ,EAAKF,EAAI7B,EAAKuB,EAAQQ,EAAIhC,GAAK+H,EAAS,EAAIX,SAElD,IAAuB5F,EAAQY,KACjCZ,EAAQY,GAAKZ,EAAQY,GAAK4C,EAAIxD,EAAQa,GAAKwB,GAAKkE,EAAS,EAAIJ,SAE3D,IAAuBnG,EAAQa,KACjCb,EAAQa,GAAKwF,EAAS5H,EAAIuB,EAAQa,GAAKrC,GAAK+H,EAAS,EAAIX,SAEvD,IAAuB5F,EAAQc,KACjCd,EAAQc,GAAKd,EAAQc,GAAK0C,EAAIxD,EAAQe,GAAKsB,GAAKkE,EAAS,EAAIJ,SAE3D,IAAuBnG,EAAQe,KACjCf,EAAQe,GAAKuF,EAAS7H,EAAIuB,EAAQe,GAAKvC,GAAK+H,EAAS,EAAIX,IAG3D,IAAMa,EAAMjD,EAAIhF,EAAIC,EAAI4D,EAExB,QAAI,IAAuBrC,EAAQuB,OAE7B,IAAMiC,GAAK,IAAM/E,GAAK,IAAM4D,GAAK,IAAM7D,GAEzC,GAAI,IAAMiI,SAIDzG,EAAQqB,UACRrB,EAAQsB,UACRtB,EAAQuB,YACRvB,EAAQwB,gBACRxB,EAAQyB,UACfzB,EAAQC,KAAOC,EAAYQ,YACtB,CAEL,IAAMa,EAAOvB,EAAQuB,KAAOM,KAAKM,GAAK,IAOhCuE,EAAS7E,KAAKE,IAAIR,GAClBoF,EAAS9E,KAAKC,IAAIP,GAClBqF,EAAS,EAAIJ,EAAIxG,EAAQqB,IACzBwF,EAAS,EAAIL,EAAIxG,EAAQsB,IACzBwF,EAAIN,EAAIG,GAAUC,EAASJ,EAAIE,GAAUG,EACzCE,EAAI,EAAIL,EAASC,GAAUC,EAASC,GACpCG,EAAIR,EAAIE,GAAUE,EAASJ,EAAIG,GAAUE,EAOzCI,EAAKH,EAAItI,EAAIA,EAAIuI,EAAItI,EAAID,EAAIwI,EAAIvI,EAAIA,EACrCyI,EAAKH,GAAKvD,EAAIhF,EAAIC,EAAI4D,GAAK,GAAKyE,EAAIzE,EAAI7D,EAAIwI,EAAIxD,EAAI/E,GACpD0I,EAAKL,EAAIzE,EAAIA,EAAI0E,EAAIvD,EAAInB,EAAI2E,EAAIxD,EAAIA,EAerC4D,GAAYvF,KAAKwB,MAAM6D,EAAID,EAAKE,GAAMtF,KAAKM,IAAMN,KAAKM,GAAM,EAM5DkF,EAAYxF,KAAKE,IAAIqF,GACrBE,EAAYzF,KAAKC,IAAIsF,GAE3BpH,EAAQqB,GAAKQ,KAAKS,IAAImE,GACpB5E,KAAKc,KAAKsE,EAAKT,EAAIc,GAAaJ,EAAKG,EAAYC,EAAYH,EAAKX,EAAIa,IACxErH,EAAQsB,GAAKO,KAAKS,IAAImE,GACpB5E,KAAKc,KAAKsE,EAAKT,EAAIa,GAAaH,EAAKG,EAAYC,EAAYH,EAAKX,EAAIc,IACxEtH,EAAQuB,KAAiB,IAAV6F,EAAgBvF,KAAKM,GAW1C,YAHI,IAAuBnC,EAAQyB,WAAa,EAAIgF,IAClDzG,EAAQyB,YAAczB,EAAQyB,WAEzBzB,KAwDX,SAAgBuH,IACd,OAAO,SAAClF,GACN,IAAM4D,EAAS,GAEf,IAAK,IAAMuB,KAAOnF,EAChB4D,EAAOuB,GAA2BnF,EAAEmF,GAEtC,OAAOvB,GAzfKpB,QAAhB,SAAsB4C,GAEpB,SAASC,EAAGC,GAAe,OAAO9F,KAAK+F,MAAMD,EAAMF,GAAYA,EAC/D,oBAHoBA,QACpBzF,EAAcyF,GAEP,SAAezH,GA6BpB,YA5BI,IAAuBA,EAAQY,KACjCZ,EAAQY,GAAK8G,EAAG1H,EAAQY,UAEtB,IAAuBZ,EAAQa,KACjCb,EAAQa,GAAK6G,EAAG1H,EAAQa,UAGtB,IAAuBb,EAAQc,KACjCd,EAAQc,GAAK4G,EAAG1H,EAAQc,UAEtB,IAAuBd,EAAQe,KACjCf,EAAQe,GAAK2G,EAAG1H,EAAQe,UAGtB,IAAuBf,EAAQM,IACjCN,EAAQM,EAAIoH,EAAG1H,EAAQM,SAErB,IAAuBN,EAAQQ,IACjCR,EAAQQ,EAAIkH,EAAG1H,EAAQQ,SAGrB,IAAuBR,EAAQqB,KACjCrB,EAAQqB,GAAKqG,EAAG1H,EAAQqB,UAEtB,IAAuBrB,EAAQsB,KACjCtB,EAAQsB,GAAKoG,EAAG1H,EAAQsB,KAGnBtB,IAIK6E,WA8BAA,SAAhB,WACE,OAAOE,GAAK,SAAC/E,EAASgF,EAAOC,GAyB3B,OAxBKjF,EAAQK,gBAEP,IAAuBL,EAAQY,KACjCZ,EAAQY,IAAMoE,QAEZ,IAAuBhF,EAAQa,KACjCb,EAAQa,IAAMoE,QAGZ,IAAuBjF,EAAQc,KACjCd,EAAQc,IAAMkE,QAEZ,IAAuBhF,EAAQe,KACjCf,EAAQe,IAAMkE,QAGZ,IAAuBjF,EAAQM,IACjCN,EAAQM,GAAK0E,QAEX,IAAuBhF,EAAQQ,IACjCR,EAAQQ,GAAKyE,GAEfjF,EAAQK,UAAW,GAEdL,MAIK6E,gBAAhB,SAA8BgD,EAAmBC,EAAmBC,GAClE,oBAD4BF,mBAAmBC,mBAAmBC,MAC3DhD,GAAK,SAAC/E,EAASgF,EAAOC,EAAOmB,EAAY4B,GAC9C,GAAIxC,MAAMY,MAAiBpG,EAAQC,KAAOC,EAAYO,SACpD,MAAM,IAAIW,MAAM,+BAuBlB,OArBI0G,GAAc9H,EAAQC,KAAOC,EAAYE,gBAC3CJ,EAAQC,KAAOC,EAAYQ,QAC3BV,EAAQQ,EAAIR,EAAQK,SAAW,EAAI4E,GAEjC8C,GAAc/H,EAAQC,KAAOC,EAAYK,eAC3CP,EAAQC,KAAOC,EAAYQ,QAC3BV,EAAQM,EAAIN,EAAQK,SAAW,EAAI2E,GAEjC6C,GAAc7H,EAAQC,KAAOC,EAAYC,aAC3CH,EAAQC,KAAOC,EAAYQ,QAC3BV,EAAQM,EAAIN,EAAQK,SAAW+F,EAAapB,EAAQoB,EACpDpG,EAAQQ,EAAIR,EAAQK,SAAW2H,EAAa/C,EAAQ+C,GAElDhI,EAAQC,KAAOC,EAAYiB,MAAQ,IAAMnB,EAAQqB,IAAM,IAAMrB,EAAQsB,MACvEtB,EAAQC,KAAOC,EAAYQ,eACpBV,EAAQqB,UACRrB,EAAQsB,UACRtB,EAAQuB,YACRvB,EAAQwB,gBACRxB,EAAQyB,WAEVzB,MAMK6E,iBAgDAA,YA+BAA,SAsCAA,WAAhB,SAAyBV,gBAAAA,KACvBnC,EAAcmC,GACd,IAAIgB,EAAeC,IACfC,EAAeD,IACfE,EAAaF,IACbG,EAAaH,IAEjB,OAAOL,GAAK,SAAC/E,EAASgF,EAAOC,EAAOmB,EAAY4B,GAC9C,IAAM1F,EAAMT,KAAKS,IACb2F,GAAO,EACPC,EAAQ,EACRC,EAAQ,EAwBZ,GAtBInI,EAAQC,KAAOC,EAAYc,kBAC7BkH,EAAQ1C,MAAML,GAAgB,EAAIH,EAAQG,EAC1CgD,EAAQ3C,MAAMH,GAAgB,EAAIJ,EAAQI,GAExCrF,EAAQC,MAAQC,EAAYS,SAAWT,EAAYc,kBACrDmE,EAAenF,EAAQK,SAAW2E,EAAQhF,EAAQc,GAAKd,EAAQc,GAC/DuE,EAAerF,EAAQK,SAAW4E,EAAQjF,EAAQe,GAAKf,EAAQe,KAE/DoE,EAAeC,IACfC,EAAeD,KAEbpF,EAAQC,KAAOC,EAAYgB,gBAC7BoE,EAAaE,MAAMF,GAAcN,EAAQ,EAAIA,EAAQM,EACrDC,EAAaC,MAAMD,GAAcN,EAAQ,EAAIA,EAAQM,GAC5CvF,EAAQC,KAAOC,EAAYe,SACpCqE,EAAatF,EAAQK,SAAW2E,EAAQhF,EAAQY,GAAKZ,EAAQY,GAC7D2E,EAAavF,EAAQK,SAAW4E,EAAQjF,EAAQa,GAAKb,EAAQe,KAE7DuE,EAAaF,IACbG,EAAaH,KAGXpF,EAAQC,KAAOC,EAAYkI,eAC7BpI,EAAQC,KAAOC,EAAYiB,MAAQ,IAAMnB,EAAQqB,IAAM,IAAMrB,EAAQsB,KAAOtB,EAAQwB,WACpFxB,EAAQC,KAAOC,EAAYS,UAAYX,EAAQC,KAAOC,EAAYc,iBAClEhB,EAAQC,KAAOC,EAAYe,SAAWjB,EAAQC,KAAOC,EAAYgB,eAAgB,CACjF,IAAMmH,OAAO,IAAuBrI,EAAQM,EAAI,EAC7CN,EAAQK,SAAWL,EAAQM,EAAIN,EAAQM,EAAI0E,EACxCsD,OAAO,IAAuBtI,EAAQQ,EAAI,EAC7CR,EAAQK,SAAWL,EAAQQ,EAAIR,EAAQQ,EAAIyE,EAE9CiD,EAAS1C,MAAMF,QACb,IAAuBtF,EAAQY,GAAKsH,EAClClI,EAAQK,SAAWL,EAAQM,EACzBN,EAAQY,GAAKoE,EAHUM,EAAaN,EAI1CmD,EAAS3C,MAAMD,QACb,IAAuBvF,EAAQa,GAAKsH,EAClCnI,EAAQK,SAAWL,EAAQQ,EACzBR,EAAQa,GAAKoE,EAHUM,EAAaN,EAK1C,IAAMsD,OAAQ,IAAuBvI,EAAQc,GAAK,EAC/Cd,EAAQK,SAAWL,EAAQM,EAAIN,EAAQc,GAAKkE,EACzCwD,OAAQ,IAAuBxI,EAAQe,GAAK,EAC/Cf,EAAQK,SAAWL,EAAQQ,EAAIR,EAAQe,GAAKkE,EAE3C3C,EAAI+F,IAASlE,GAAO7B,EAAIgG,IAASnE,GACnC7B,EAAI4F,IAAU/D,GAAO7B,EAAI6F,IAAUhE,GACnC7B,EAAIiG,IAAUpE,GAAO7B,EAAIkG,IAAUrE,IACnC8D,GAAO,GAUX,OANIjI,EAAQC,KAAOC,EAAYC,YACzBmC,EAAI0C,EAAQoB,IAAejC,GAAO7B,EAAI2C,EAAQ+C,IAAe7D,IAC/D8D,GAAO,GAIJA,EAAO,GAAKjI,MAOP6E,WA0HAA,SAAhB,SAAuBrB,EAAWlD,EAAOE,gBAAPF,kBAAOE,KACvCwB,EAAcwB,EAAGlD,EAAGE,GACpB,IAAMuB,EAAMF,KAAKE,IAAIyB,GACf1B,EAAMD,KAAKC,IAAI0B,GAErB,OAAO0C,EAAOpE,EAAKC,GAAMA,EAAKD,EAAKxB,EAAIA,EAAIwB,EAAMtB,EAAIuB,EAAKvB,EAAIF,EAAIyB,EAAMvB,EAAIsB,IAE9D+C,YAAhB,SAA0B4D,EAAYC,GAEpC,oBAFoCA,KACpC1G,EAAcyG,EAAIC,GACXxC,EAAO,EAAG,EAAG,EAAG,EAAGuC,EAAIC,IAEhB7D,QAAhB,SAAsB4D,EAAYC,GAEhC,oBAFgCA,KAChC1G,EAAcyG,EAAIC,GACXxC,EAAOuC,EAAI,EAAG,EAAGC,EAAI,EAAG,IAEjB7D,SAAhB,SAAuBrB,GAErB,OADAxB,EAAcwB,GACP0C,EAAO,EAAG,EAAGrE,KAAK8G,KAAKnF,GAAI,EAAG,EAAG,IAE1BqB,SAAhB,SAAuBrB,GAErB,OADAxB,EAAcwB,GACP0C,EAAO,EAAGrE,KAAK8G,KAAKnF,GAAI,EAAG,EAAG,EAAG,IAE1BqB,kBAAhB,SAAgC+D,GAE9B,oBAF8BA,KAC9B5G,EAAc4G,GACP1C,GAAQ,EAAG,EAAG,EAAG,EAAG0C,EAAS,IAEtB/D,kBAAhB,SAAgCgE,GAE9B,oBAF8BA,KAC9B7G,EAAc6G,GACP3C,EAAO,EAAG,EAAG,GAAI,EAAG,EAAG2C,IAGhBhE,SAAhB,WACE,OAAOE,GAAK,SAAC/E,EAASgF,EAAOC,GAC3B,OAAI/E,EAAYiB,MAAQnB,EAAQC,cD3UlB6I,EAAe7E,EAAY8E,eACxCD,EAAI5F,IACPd,EAAmB0G,EAAK7E,EAAI8E,GAQ9B,IALA,IAAMC,EAASnH,KAAKoH,IAAIH,EAAI1F,KAAO0F,EAAIxF,MAAiD4F,EAAhCrH,KAAKiB,IAAIgG,EAAI1F,KAAO0F,EAAIxF,MAA4B0F,EACtGG,EAAYtH,KAAKuH,KAAKF,EAAW,IAEjCjD,EAAqB,IAAIpH,MAAMsK,GACjCnE,EAAQf,EAAIgB,EAAQ8D,EACfjJ,EAAI,EAAGA,EAAIqJ,EAAWrJ,IAAK,CAClC,IAAMuJ,EAAWzF,EAAKkF,EAAI1F,KAAO0F,EAAIxF,KAAOxD,EAAIqJ,GAC1CG,EAAS1F,EAAKkF,EAAI1F,KAAO0F,EAAIxF,MAAQxD,EAAI,GAAKqJ,GAC9CI,EAAWD,EAASD,EACpBzD,EAAI,EAAI,EAAI/D,KAAK2H,IAAID,EAAW5F,EAAM,GAEtC8F,EAAW,CACf5H,KAAKC,IAAIuH,EAAW1F,GAAOiC,EAAI/D,KAAKE,IAAIsH,EAAW1F,GACnD9B,KAAKE,IAAIsH,EAAW1F,GAAOiC,EAAI/D,KAAKC,IAAIuH,EAAW1F,IAF9C/C,OAAIC,OAGL6I,EAAS,CAAC7H,KAAKC,IAAIwH,EAAS3F,GAAM9B,KAAKE,IAAIuH,EAAS3F,IAAnDrD,OAAGE,OACJmJ,EAAW,CAACrJ,EAAIsF,EAAI/D,KAAKE,IAAIuH,EAAS3F,GAAMnD,EAAIoF,EAAI/D,KAAKC,IAAIwH,EAAS3F,IAArE7C,OAAIC,OACXkF,EAAOnG,GAAK,CAACO,SAAUyI,EAAIzI,SAAUJ,KAAMC,EAAYS,UACvD,IAAMiJ,EAAY,SAACtJ,EAAWE,GACtB,IAAAmB,EAAiBD,EAAO,CAACpB,EAAIwI,EAAIzH,GAAIb,EAAIsI,EAAIxH,IAAKwH,EAAIvH,MAArDsI,OAAOC,OACd,MAAO,CAAChB,EAAI5F,GAAM2G,EAAOf,EAAI3F,GAAM2G,IAErCnI,EAA+BiI,EAAUhJ,EAAIC,GAA5CoF,EAAOnG,GAAGc,QAAIqF,EAAOnG,GAAGe,QACzBkJ,EAA+BH,EAAU9I,EAAIC,GAA5CkF,EAAOnG,GAAGgB,QAAImF,EAAOnG,GAAGiB,QACzBiJ,EAA6BJ,EAAUtJ,EAAGE,GAAzCyF,EAAOnG,GAAGQ,OAAG2F,EAAOnG,GAAGU,OACpBsI,EAAIzI,WACN4F,EAAOnG,GAAGc,IAAMoE,EAChBiB,EAAOnG,GAAGe,IAAMoE,EAChBgB,EAAOnG,GAAGgB,IAAMkE,EAChBiB,EAAOnG,GAAGiB,IAAMkE,EAChBgB,EAAOnG,GAAGQ,GAAK0E,EACfiB,EAAOnG,GAAGU,GAAKyE,GAEhBD,GAADiF,EAAiB,CAAChE,EAAOnG,GAAGQ,EAAG2F,EAAOnG,GAAGU,OAAjCyE,OAEV,OAAOgB,ECqSMiE,CAAIlK,EAASA,EAAQK,SAAW,EAAI2E,EAAOhF,EAAQK,SAAW,EAAI4E,GAEpEjF,MAIK6E,gBAAhB,WACE,OAAOE,GAAK,SAAC1C,EAAGzB,EAAIC,GAQlB,OAPIwB,EAAEhC,WACJO,EAAK,EACLC,EAAK,GAEHX,EAAYiB,MAAQkB,EAAEpC,MACxBmC,EAAmBC,EAAGzB,EAAIC,GAErBwB,MAGKwC,UAWAA,mBAAhB,WACE,IAAMsF,EAXC,SAAC9H,GACN,IAAM4D,EAAS,GAEf,IAAK,IAAMuB,KAAOnF,EAChB4D,EAAOuB,GAA2BnF,EAAEmF,GAEtC,OAAOvB,GAMHmE,EAAQtF,IACRuF,EAAQ5E,IACR6E,EAASpF,IACTU,EACFb,GAAK,SAAC/E,EAAS6F,EAAUC,GAC3B,IAAMzD,EAAIiI,EAAOD,EAAMD,EAAMD,EAAMnK,MACnC,SAASuK,EAAKC,GACRA,EAAO5E,EAAE6E,OAAQ7E,EAAE6E,KAAOD,GAC1BA,EAAO5E,EAAE8E,OAAQ9E,EAAE8E,KAAOF,GAEhC,SAASG,EAAKC,GACRA,EAAOhF,EAAEiF,OAAQjF,EAAEiF,KAAOD,GAC1BA,EAAOhF,EAAEkF,OAAQlF,EAAEkF,KAAOF,GAgBhC,GAdIvI,EAAEpC,KAAOC,EAAY6K,mBACvBR,EAAK1E,GACL8E,EAAK7E,IAEHzD,EAAEpC,KAAOC,EAAYE,eACvBmK,EAAKlI,EAAE/B,GAEL+B,EAAEpC,KAAOC,EAAYK,cACvBoK,EAAKtI,EAAE7B,GAEL6B,EAAEpC,KAAOC,EAAYQ,UACvB6J,EAAKlI,EAAE/B,GACPqK,EAAKtI,EAAE7B,IAEL6B,EAAEpC,KAAOC,EAAYS,SAAU,CAEjC4J,EAAKlI,EAAE/B,GACPqK,EAAKtI,EAAE7B,GAGP,IAFA,QAEwBwK,EAFJhH,EAAW6B,EAAUxD,EAAEzB,GAAIyB,EAAEvB,GAAIuB,EAAE/B,GAE/B2B,WAAAA,IAAa,CAC/B,GADKgJ,SACY,EAAIA,GACvBV,EAAK5F,EAASkB,EAAUxD,EAAEzB,GAAIyB,EAAEvB,GAAIuB,EAAE/B,EAAG2K,IAK7C,IAFA,QAEwBC,EAFJlH,EAAW8B,EAAUzD,EAAExB,GAAIwB,EAAEtB,GAAIsB,EAAE7B,GAE/BmB,WAAAA,IAAa,CAC/B,GADKsJ,SACY,EAAIA,GACvBN,EAAKhG,EAASmB,EAAUzD,EAAExB,GAAIwB,EAAEtB,GAAIsB,EAAE7B,EAAGyK,KAI/C,GAAI5I,EAAEpC,KAAOC,EAAYiB,IAAK,CAE5BoJ,EAAKlI,EAAE/B,GACPqK,EAAKtI,EAAE7B,GACP4B,EAAmBC,EAAGwD,EAAUC,GAwBhC,IArBA,IAAMqF,EAAU9I,EAAEd,KAAO,IAAMM,KAAKM,GAE9B8B,EAAKpC,KAAKC,IAAIqJ,GAAW9I,EAAEhB,GAC3B0H,EAAKlH,KAAKE,IAAIoJ,GAAW9I,EAAEhB,GAC3B+J,GAAOvJ,KAAKE,IAAIoJ,GAAW9I,EAAEf,GAC7B+J,EAAMxJ,KAAKC,IAAIqJ,GAAW9I,EAAEf,GAI5ByI,EAAmB1H,EAAEe,KAAOf,EAAEiB,KAClC,CAACjB,EAAEe,KAAMf,EAAEiB,OACT,IAAMjB,EAAEiB,KAAO,CAACjB,EAAEiB,KAAO,IAAKjB,EAAEe,KAAO,KAAO,CAACf,EAAEiB,KAAMjB,EAAEe,MAFtDkI,OAAQC,OAGTC,EAAiB,SAAC7J,OAAC8J,OAAIC,OAErBC,EAAe,IADN9J,KAAKwB,MAAMqI,EAAKD,GACJ5J,KAAKM,GAEhC,OAAOwJ,EAAML,EAASK,EAAM,IAAMA,OAKZC,EADJrI,EAA2B6H,GAAMnH,EAAI,GAAG4H,IAAIL,GACxCxB,WAAAA,IAAa,EAA1BiB,QACOK,GAAUL,EAAYM,GACpChB,EAAKzG,EAAMzB,EAAEa,GAAIe,EAAImH,EAAKH,IAK9B,IADA,QACwBa,EADJvI,EAA2B8H,GAAMtC,EAAI,GAAG8C,IAAIL,GACxCvB,WAAAA,IAAa,CAAhC,IAAMgB,GAAAA,QACOK,GAAUL,EAAYM,GACpCZ,EAAK7G,EAAMzB,EAAEc,GAAI4F,EAAIsC,EAAKJ,KAIhC,OAAOjL,KAOT,OAJA4F,EAAE8E,KAAOqB,EAAAA,EACTnG,EAAE6E,MAAQsB,EAAAA,EACVnG,EAAEkF,KAAOiB,EAAAA,EACTnG,EAAEiF,MAAQkB,EAAAA,EACHnG,GAjmBX,CAAiBf,2BAAAA,8BCLjB,mBAAA,cAsEA,OArEEmH,kBAAA,SAAM1L,GACJ,OAAOhB,KAAKsK,UAAU/E,yBAAuBoH,MAAM3L,KAGrD0L,kBAAA,WACE,OAAO1M,KAAKsK,UAAU/E,yBAAuBC,WAG/CkH,kBAAA,WACE,OAAO1M,KAAKsK,UAAU/E,yBAAuBqH,WAG/CF,yBAAA,SAAaxI,EAAa/E,EAAa4D,GACrC,OAAO/C,KAAKsK,UAAU/E,yBAAuBsH,cAAc3I,EAAG/E,EAAG4D,KAGnE2J,wBAAA,WACE,OAAO1M,KAAKsK,UAAU/E,yBAAuBK,iBAG/C8G,kBAAA,WACE,OAAO1M,KAAKsK,UAAU/E,yBAAuBY,YAG/CuG,iBAAA,WACE,OAAO1M,KAAKsK,UAAU/E,yBAAuBuH,WAG/CJ,qBAAA,SAASK,GACP,OAAO/M,KAAKsK,UAAU/E,yBAAuByH,SAASD,KAGxDL,sBAAA,SAAU1L,EAAWE,GACnB,OAAOlB,KAAKsK,UAAU/E,yBAAuB0H,UAAUjM,EAAGE,KAG5DwL,kBAAA,SAAM1L,EAAWE,GACf,OAAOlB,KAAKsK,UAAU/E,yBAAuB2H,MAAMlM,EAAGE,KAGxDwL,mBAAA,SAAOxI,EAAWlD,EAAYE,GAC5B,OAAOlB,KAAKsK,UAAU/E,yBAAuB4H,OAAOjJ,EAAGlD,EAAGE,KAG5DwL,mBAAA,SAAOxI,EAAW/E,EAAW4D,EAAW7D,EAAW2H,EAAWP,GAC5D,OAAOtG,KAAKsK,UAAU/E,yBAAuBqB,OAAO1C,EAAG/E,EAAG4D,EAAG7D,EAAG2H,EAAGP,KAGrEoG,kBAAA,SAAMxI,GACJ,OAAOlE,KAAKsK,UAAU/E,yBAAuB6H,OAAOlJ,KAGtDwI,kBAAA,SAAMxI,GACJ,OAAOlE,KAAKsK,UAAU/E,yBAAuB8H,OAAOnJ,KAGtDwI,sBAAA,SAAUpD,GACR,OAAOtJ,KAAKsK,UAAU/E,yBAAuB+H,gBAAgBhE,KAG/DoD,sBAAA,SAAUnD,GACR,OAAOvJ,KAAKsK,UAAU/E,yBAAuBgI,gBAAgBhE,KAG/DmD,yBAAA,WACE,OAAO1M,KAAKsK,UAAU/E,yBAAuBiI,uBC/D3CC,EAAe,SAAC1K,GACpB,MAAA,MAAQA,GAAK,OAASA,GAAK,OAASA,GAAK,OAASA,GAC9C2K,EAAU,SAAC3K,GACf,MAAA,IAAI4K,WAAW,IAAM5K,EAAE4K,WAAW,IAAM5K,EAAE4K,WAAW,IAAM,IAAIA,WAAW,kBAa1E,aAAA,MACEC,0BAVMC,YAAoB,GACpBA,kBAA2C,EAC3CA,sBAAqB,EACrBA,0BAAyB,EACzBA,mBAAkB,EAClBA,yBAAwB,EACxBA,uBAAsB,EACtBA,UAAoB,KA6Q9B,OArRuCjO,OAcrCkO,mBAAA,SAAOzN,GAGL,gBAHKA,MACLL,KAAK+N,MAAM,IAAK1N,GAEZ,IAAML,KAAKgO,QAAQvN,SAAWT,KAAKiO,uBACrC,MAAM,IAAIC,YAAY,yCAExB,OAAO7N,GAGTyN,kBAAA,SAAMxN,EAAaD,GAAnB,wBAAmBA,MAOjB,IANA,IAAM8N,EAAgB,SAACzN,GACrBL,EAAS+N,KAAK1N,GACdmN,EAAKG,QAAQvN,OAAS,EACtBoN,EAAKI,wBAAyB,GAGvBzN,EAAI,EAAGA,EAAIF,EAAIG,OAAQD,IAAK,CACnC,IAAMuC,EAAIzC,EAAIE,GAER6N,IAAarO,KAAKsO,iBAAmB1N,EAAYiB,KAC5B,IAAxB7B,KAAKgO,QAAQvN,QAAwC,IAAxBT,KAAKgO,QAAQvN,QACjB,IAA1BT,KAAKuO,UAAU9N,QACK,MAAnBT,KAAKuO,WAAwC,MAAnBvO,KAAKuO,WAC5BC,EAAgBd,EAAQ3K,KACR,MAAnB/C,KAAKuO,WAA2B,MAANxL,GAC3BsL,GAGF,IACEX,EAAQ3K,IACPyL,EAMH,GAAI,MAAQzL,GAAK,MAAQA,EAKzB,GACG,MAAQA,GAAK,MAAQA,IACtB/C,KAAKyO,iBACJzO,KAAK0O,sBAMR,GAAI,MAAQ3L,GAAM/C,KAAKyO,iBAAoBzO,KAAK2O,qBAAwBN,EAAxE,CAOA,GAAIrO,KAAKuO,YAAc,IAAMvO,KAAKsO,eAAgB,CAChD,IAAMjG,EAAMuG,OAAO5O,KAAKuO,WACxB,GAAIrI,MAAMmC,GACR,MAAM,IAAI6F,YAAY,4BAA4B1N,GAEpD,GAAIR,KAAKsO,iBAAmB1N,EAAYiB,IACtC,GAAI,IAAM7B,KAAKgO,QAAQvN,QAAU,IAAMT,KAAKgO,QAAQvN,QAClD,GAAI,EAAI4H,EACN,MAAM,IAAI6F,YACR,kCAAkC7F,iBAAkB7H,YAGnD,IAAI,IAAMR,KAAKgO,QAAQvN,QAAU,IAAMT,KAAKgO,QAAQvN,SACrD,MAAQT,KAAKuO,WAAa,MAAQvO,KAAKuO,UACzC,MAAM,IAAIL,YACR,yBAAyBlO,KAAKuO,yBAAwB/N,OAK9DR,KAAKgO,QAAQI,KAAK/F,GACdrI,KAAKgO,QAAQvN,SAAWoO,EAAmB7O,KAAKsO,kBAC9C1N,EAAYE,gBAAkBd,KAAKsO,eACrCH,EAAc,CACZxN,KAAMC,EAAYE,cAClBC,SAAUf,KAAK8O,mBACf9N,EAAGqH,IAEIzH,EAAYK,eAAiBjB,KAAKsO,eAC3CH,EAAc,CACZxN,KAAMC,EAAYK,aAClBF,SAAUf,KAAK8O,mBACf5N,EAAGmH,IAILrI,KAAKsO,iBAAmB1N,EAAYO,SACpCnB,KAAKsO,iBAAmB1N,EAAYQ,SACpCpB,KAAKsO,iBAAmB1N,EAAYgB,gBAEpCuM,EAAc,CACZxN,KAAMX,KAAKsO,eACXvN,SAAUf,KAAK8O,mBACf9N,EAAGhB,KAAKgO,QAAQ,GAChB9M,EAAGlB,KAAKgO,QAAQ,KAGdpN,EAAYO,UAAYnB,KAAKsO,iBAC/BtO,KAAKsO,eAAiB1N,EAAYQ,UAE3BpB,KAAKsO,iBAAmB1N,EAAYS,SAC7C8M,EAAc,CACZxN,KAAMC,EAAYS,SAClBN,SAAUf,KAAK8O,mBACfxN,GAAItB,KAAKgO,QAAQ,GACjBzM,GAAIvB,KAAKgO,QAAQ,GACjBxM,GAAIxB,KAAKgO,QAAQ,GACjBvM,GAAIzB,KAAKgO,QAAQ,GACjBhN,EAAGhB,KAAKgO,QAAQ,GAChB9M,EAAGlB,KAAKgO,QAAQ,KAEThO,KAAKsO,iBAAmB1N,EAAYc,gBAC7CyM,EAAc,CACZxN,KAAMC,EAAYc,gBAClBX,SAAUf,KAAK8O,mBACftN,GAAIxB,KAAKgO,QAAQ,GACjBvM,GAAIzB,KAAKgO,QAAQ,GACjBhN,EAAGhB,KAAKgO,QAAQ,GAChB9M,EAAGlB,KAAKgO,QAAQ,KAEThO,KAAKsO,iBAAmB1N,EAAYe,QAC7CwM,EAAc,CACZxN,KAAMC,EAAYe,QAClBZ,SAAUf,KAAK8O,mBACfxN,GAAItB,KAAKgO,QAAQ,GACjBzM,GAAIvB,KAAKgO,QAAQ,GACjBhN,EAAGhB,KAAKgO,QAAQ,GAChB9M,EAAGlB,KAAKgO,QAAQ,KAEThO,KAAKsO,iBAAmB1N,EAAYiB,KAC7CsM,EAAc,CACZxN,KAAMC,EAAYiB,IAClBd,SAAUf,KAAK8O,mBACf/M,GAAI/B,KAAKgO,QAAQ,GACjBhM,GAAIhC,KAAKgO,QAAQ,GACjB/L,KAAMjC,KAAKgO,QAAQ,GACnB9L,SAAUlC,KAAKgO,QAAQ,GACvB7L,UAAWnC,KAAKgO,QAAQ,GACxBhN,EAAGhB,KAAKgO,QAAQ,GAChB9M,EAAGlB,KAAKgO,QAAQ,MAItBhO,KAAKuO,UAAY,GACjBvO,KAAK0O,uBAAwB,EAC7B1O,KAAKyO,iBAAkB,EACvBzO,KAAK2O,qBAAsB,EAC3B3O,KAAKiO,wBAAyB,EAGhC,IAAIR,EAAa1K,GAGjB,GAAI,MAAQA,GAAK/C,KAAKiO,uBAEpBjO,KAAKiO,wBAAyB,OAIhC,GAAI,MAAQlL,GAAK,MAAQA,GAAK,MAAQA,EAMtC,GAAIyL,EACFxO,KAAKuO,UAAYxL,EACjB/C,KAAK2O,qBAAsB,MAF7B,CAOA,GAAI,IAAM3O,KAAKgO,QAAQvN,OACrB,MAAM,IAAIyN,YAAY,iCAAiC1N,OAEzD,IAAKR,KAAKiO,uBACR,MAAM,IAAIC,YACR,yBAAyBnL,gBAAevC,mCAK5C,GAFAR,KAAKiO,wBAAyB,EAE1B,MAAQlL,GAAK,MAAQA,EAQlB,GAAI,MAAQA,GAAK,MAAQA,EAC9B/C,KAAKsO,eAAiB1N,EAAYE,cAClCd,KAAK8O,mBAAqB,MAAQ/L,OAE7B,GAAI,MAAQA,GAAK,MAAQA,EAC9B/C,KAAKsO,eAAiB1N,EAAYK,aAClCjB,KAAK8O,mBAAqB,MAAQ/L,OAE7B,GAAI,MAAQA,GAAK,MAAQA,EAC9B/C,KAAKsO,eAAiB1N,EAAYO,QAClCnB,KAAK8O,mBAAqB,MAAQ/L,OAE7B,GAAI,MAAQA,GAAK,MAAQA,EAC9B/C,KAAKsO,eAAiB1N,EAAYQ,QAClCpB,KAAK8O,mBAAqB,MAAQ/L,OAE7B,GAAI,MAAQA,GAAK,MAAQA,EAC9B/C,KAAKsO,eAAiB1N,EAAYS,SAClCrB,KAAK8O,mBAAqB,MAAQ/L,OAE7B,GAAI,MAAQA,GAAK,MAAQA,EAC9B/C,KAAKsO,eAAiB1N,EAAYc,gBAClC1B,KAAK8O,mBAAqB,MAAQ/L,OAE7B,GAAI,MAAQA,GAAK,MAAQA,EAC9B/C,KAAKsO,eAAiB1N,EAAYe,QAClC3B,KAAK8O,mBAAqB,MAAQ/L,OAE7B,GAAI,MAAQA,GAAK,MAAQA,EAC9B/C,KAAKsO,eAAiB1N,EAAYgB,eAClC5B,KAAK8O,mBAAqB,MAAQ/L,MAE7B,CAAA,GAAI,MAAQA,GAAK,MAAQA,EAI9B,MAAM,IAAImL,YAAY,yBAAyBnL,gBAAevC,OAH9DR,KAAKsO,eAAiB1N,EAAYiB,IAClC7B,KAAK8O,mBAAqB,MAAQ/L,OAzClC1C,EAAS+N,KAAK,CACZzN,KAAMC,EAAYC,aAEpBb,KAAKiO,wBAAyB,EAC9BjO,KAAKsO,gBAAkB,OA3BvBtO,KAAKuO,UAAYxL,EACjB/C,KAAK2O,oBAAsB,MAAQ5L,OArHnC/C,KAAKuO,WAAaxL,EAClB/C,KAAK2O,qBAAsB,OAN3B3O,KAAKuO,WAAaxL,OATlB/C,KAAKuO,WAAaxL,EAClB/C,KAAKyO,iBAAkB,OANvBzO,KAAKuO,WAAaxL,EAClB/C,KAAK0O,sBAAwB1O,KAAKyO,gBA2MtC,OAAOpO,GAKTyN,sBAAA,SAAUxD,GAoBR,OAnBelL,OAAOc,OAAOF,KAAM,CACjC+N,MAAO,CACLgB,MAAA,SAAMC,EAAe3O,gBAAAA,MAKnB,IAJA,QAIgB4O,EAJO7P,OAAO8P,eAAelP,MAAM+N,MAAMpO,KACvDK,KACAgP,GAEcrM,WAAAA,IAAgB,CAA3B,IAAMI,OACHoM,EAAK7E,EAAUvH,GACjBxD,MAAMgB,QAAQ4O,GAChB9O,EAAS+N,WAAT/N,EAAiB8O,GAEjB9O,EAAS+N,KAAKe,GAGlB,OAAO9O,UA/QsBqM,iBCJrC,WAAY0C,GAAZ,MACExB,0BAEEC,EAAKxN,SADH,iBAAoB+O,EACNxO,EAAYmN,MAAMqB,GAElBA,IA2DtB,OAlEiCxP,OAW/BgB,mBAAA,WACE,OAAOA,EAAYyO,OAAOrP,KAAKK,WAGjCO,sBAAA,WACE,IAAM0O,EAAkB/J,yBAAuBgK,mBAG/C,OADAvP,KAAKsK,UAAUgF,GACRA,GAGT1O,sBAAA,SACE4O,GAIA,IAFA,IAAMC,EAAc,OAEEpN,EAAArC,KAAKK,SAALsC,WAAAA,IAAe,CAAhC,IACG+M,EAAqBF,QAEvBjQ,MAAMgB,QAAQmP,GAChBD,EAAYrB,WAAZqB,EAAoBC,GAEpBD,EAAYrB,KAAKsB,GAIrB,OADA1P,KAAKK,SAAWoP,EACTzP,MAGFY,SAAP,SAAcP,GACZ,OAAOD,EAAcC,IAGhBO,QAAP,SAAa+O,GACX,IAAMC,EAAS,IAAI9B,EACbzN,EAAyB,GAG/B,OAFAuP,EAAO7B,MAAM4B,EAAMtP,GACnBuP,EAAOC,OAAOxP,GACPA,GAGOO,aAAgB,EAChBA,UAAa,EACbA,gBAAmB,EACnBA,eAAkB,EAClBA,UAAc,GACdA,WAAe,GACfA,kBAAsB,GACtBA,UAAe,IACfA,iBAAsB,IACtBA,MAAW,IACXA,gBAAgBA,EAAYQ,QAAUR,EAAYE,cAAgBF,EAAYK,aAC9EL,mBAAmBA,EAAYE,cAAgBF,EAAYK,aAAeL,EAAYQ,QACtGR,EAAYS,SAAWT,EAAYc,gBAAkBd,EAAYe,QACjEf,EAAYgB,eAAiBhB,EAAYiB,OAjEV6K,GAoEpBmC,UACRjO,EAAYO,SAAU,EACvBkB,EAACzB,EAAYQ,SAAU,EACvBiB,EAACzB,EAAYE,eAAgB,EAC7BuB,EAACzB,EAAYK,cAAe,EAC5BoB,EAACzB,EAAYC,YAAa,EAC1BwB,EAACzB,EAAYe,SAAU,EACvBU,EAACzB,EAAYgB,gBAAiB,EAC9BS,EAACzB,EAAYS,UAAW,EACxBgB,EAACzB,EAAYc,iBAAkB,EAC/BW,EAACzB,EAAYiB,KAAM"}
\ No newline at end of file
diff --git a/node_modules/svg-pathdata/lib/SVGPathData.d.ts b/node_modules/svg-pathdata/lib/SVGPathData.d.ts
new file mode 100644
index 0000000..b7db2ba
--- /dev/null
+++ b/node_modules/svg-pathdata/lib/SVGPathData.d.ts
@@ -0,0 +1,43 @@
+import { TransformableSVG } from "./TransformableSVG";
+import { SVGCommand } from "./types";
+export declare class SVGPathData extends TransformableSVG {
+    commands: SVGCommand[];
+    constructor(content: string | SVGCommand[]);
+    encode(): string;
+    getBounds(): import("./types").TransformFunction & {
+        minX: number;
+        maxX: number;
+        minY: number;
+        maxY: number;
+    };
+    transform(transformFunction: (input: SVGCommand) => SVGCommand | SVGCommand[]): this;
+    static encode(commands: SVGCommand[]): string;
+    static parse(path: string): SVGCommand[];
+    static readonly CLOSE_PATH: 1;
+    static readonly MOVE_TO: 2;
+    static readonly HORIZ_LINE_TO: 4;
+    static readonly VERT_LINE_TO: 8;
+    static readonly LINE_TO: 16;
+    static readonly CURVE_TO: 32;
+    static readonly SMOOTH_CURVE_TO: 64;
+    static readonly QUAD_TO: 128;
+    static readonly SMOOTH_QUAD_TO: 256;
+    static readonly ARC: 512;
+    static readonly LINE_COMMANDS: number;
+    static readonly DRAWING_COMMANDS: number;
+}
+export declare const COMMAND_ARG_COUNTS: {
+    2: number;
+    16: number;
+    4: number;
+    8: number;
+    1: number;
+    128: number;
+    256: number;
+    32: number;
+    64: number;
+    512: number;
+};
+export { encodeSVGPath } from "./SVGPathDataEncoder";
+export { SVGPathDataParser } from "./SVGPathDataParser";
+export { SVGPathDataTransformer } from "./SVGPathDataTransformer";
diff --git a/node_modules/svg-pathdata/lib/SVGPathData.module.js b/node_modules/svg-pathdata/lib/SVGPathData.module.js
new file mode 100644
index 0000000..394e9fc
--- /dev/null
+++ b/node_modules/svg-pathdata/lib/SVGPathData.module.js
@@ -0,0 +1,16 @@
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+var t=function(r,e){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var e in r)Object.prototype.hasOwnProperty.call(r,e)&&(t[e]=r[e])})(r,e)};function r(r,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function i(){this.constructor=r}t(r,e),r.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}function e(t){var r="";Array.isArray(t)||(t=[t]);for(var e=0;e<t.length;e++){var i=t[e];if(i.type===_.CLOSE_PATH)r+="z";else if(i.type===_.HORIZ_LINE_TO)r+=(i.relative?"h":"H")+i.x;else if(i.type===_.VERT_LINE_TO)r+=(i.relative?"v":"V")+i.y;else if(i.type===_.MOVE_TO)r+=(i.relative?"m":"M")+i.x+" "+i.y;else if(i.type===_.LINE_TO)r+=(i.relative?"l":"L")+i.x+" "+i.y;else if(i.type===_.CURVE_TO)r+=(i.relative?"c":"C")+i.x1+" "+i.y1+" "+i.x2+" "+i.y2+" "+i.x+" "+i.y;else if(i.type===_.SMOOTH_CURVE_TO)r+=(i.relative?"s":"S")+i.x2+" "+i.y2+" "+i.x+" "+i.y;else if(i.type===_.QUAD_TO)r+=(i.relative?"q":"Q")+i.x1+" "+i.y1+" "+i.x+" "+i.y;else if(i.type===_.SMOOTH_QUAD_TO)r+=(i.relative?"t":"T")+i.x+" "+i.y;else{if(i.type!==_.ARC)throw new Error('Unexpected command type "'+i.type+'" at index '+e+".");r+=(i.relative?"a":"A")+i.rX+" "+i.rY+" "+i.xRot+" "+ +i.lArcFlag+" "+ +i.sweepFlag+" "+i.x+" "+i.y}}return r}function i(t,r){var e=t[0],i=t[1];return[e*Math.cos(r)-i*Math.sin(r),e*Math.sin(r)+i*Math.cos(r)]}function a(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];for(var e=0;e<t.length;e++)if("number"!=typeof t[e])throw new Error("assertNumbers arguments["+e+"] is not a number. "+typeof t[e]+" == typeof "+t[e]);return!0}var n=Math.PI;function o(t,r,e){t.lArcFlag=0===t.lArcFlag?0:1,t.sweepFlag=0===t.sweepFlag?0:1;var a=t.rX,o=t.rY,s=t.x,u=t.y;a=Math.abs(t.rX),o=Math.abs(t.rY);var h=i([(r-s)/2,(e-u)/2],-t.xRot/180*n),c=h[0],y=h[1],p=Math.pow(c,2)/Math.pow(a,2)+Math.pow(y,2)/Math.pow(o,2);1<p&&(a*=Math.sqrt(p),o*=Math.sqrt(p)),t.rX=a,t.rY=o;var m=Math.pow(a,2)*Math.pow(y,2)+Math.pow(o,2)*Math.pow(c,2),O=(t.lArcFlag!==t.sweepFlag?1:-1)*Math.sqrt(Math.max(0,(Math.pow(a,2)*Math.pow(o,2)-m)/m)),l=a*y/o*O,T=-o*c/a*O,v=i([l,T],t.xRot/180*n);t.cX=v[0]+(r+s)/2,t.cY=v[1]+(e+u)/2,t.phi1=Math.atan2((y-T)/o,(c-l)/a),t.phi2=Math.atan2((-y-T)/o,(-c-l)/a),0===t.sweepFlag&&t.phi2>t.phi1&&(t.phi2-=2*n),1===t.sweepFlag&&t.phi2<t.phi1&&(t.phi2+=2*n),t.phi1*=180/n,t.phi2*=180/n}function s(t,r,e){a(t,r,e);var i=t*t+r*r-e*e;if(0>i)return[];if(0===i)return[[t*e/(t*t+r*r),r*e/(t*t+r*r)]];var n=Math.sqrt(i);return[[(t*e+r*n)/(t*t+r*r),(r*e-t*n)/(t*t+r*r)],[(t*e-r*n)/(t*t+r*r),(r*e+t*n)/(t*t+r*r)]]}var u,h=Math.PI/180;function c(t,r,e){return(1-e)*t+e*r}function y(t,r,e,i){return t+Math.cos(i/180*n)*r+Math.sin(i/180*n)*e}function p(t,r,e,i){var a=1e-6,n=r-t,o=e-r,s=3*n+3*(i-e)-6*o,u=6*(o-n),h=3*n;return Math.abs(s)<a?[-h/u]:function(t,r,e){void 0===e&&(e=1e-6);var i=t*t/4-r;if(i<-e)return[];if(i<=e)return[-t/2];var a=Math.sqrt(i);return[-t/2-a,-t/2+a]}(u/s,h/s,a)}function m(t,r,e,i,a){var n=1-a;return t*(n*n*n)+r*(3*n*n*a)+e*(3*n*a*a)+i*(a*a*a)}!function(t){function r(){return u((function(t,r,e){return t.relative&&(void 0!==t.x1&&(t.x1+=r),void 0!==t.y1&&(t.y1+=e),void 0!==t.x2&&(t.x2+=r),void 0!==t.y2&&(t.y2+=e),void 0!==t.x&&(t.x+=r),void 0!==t.y&&(t.y+=e),t.relative=!1),t}))}function e(){var t=NaN,r=NaN,e=NaN,i=NaN;return u((function(a,n,o){return a.type&_.SMOOTH_CURVE_TO&&(a.type=_.CURVE_TO,t=isNaN(t)?n:t,r=isNaN(r)?o:r,a.x1=a.relative?n-t:2*n-t,a.y1=a.relative?o-r:2*o-r),a.type&_.CURVE_TO?(t=a.relative?n+a.x2:a.x2,r=a.relative?o+a.y2:a.y2):(t=NaN,r=NaN),a.type&_.SMOOTH_QUAD_TO&&(a.type=_.QUAD_TO,e=isNaN(e)?n:e,i=isNaN(i)?o:i,a.x1=a.relative?n-e:2*n-e,a.y1=a.relative?o-i:2*o-i),a.type&_.QUAD_TO?(e=a.relative?n+a.x1:a.x1,i=a.relative?o+a.y1:a.y1):(e=NaN,i=NaN),a}))}function n(){var t=NaN,r=NaN;return u((function(e,i,a){if(e.type&_.SMOOTH_QUAD_TO&&(e.type=_.QUAD_TO,t=isNaN(t)?i:t,r=isNaN(r)?a:r,e.x1=e.relative?i-t:2*i-t,e.y1=e.relative?a-r:2*a-r),e.type&_.QUAD_TO){t=e.relative?i+e.x1:e.x1,r=e.relative?a+e.y1:e.y1;var n=e.x1,o=e.y1;e.type=_.CURVE_TO,e.x1=((e.relative?0:i)+2*n)/3,e.y1=((e.relative?0:a)+2*o)/3,e.x2=(e.x+2*n)/3,e.y2=(e.y+2*o)/3}else t=NaN,r=NaN;return e}))}function u(t){var r=0,e=0,i=NaN,a=NaN;return function(n){if(isNaN(i)&&!(n.type&_.MOVE_TO))throw new Error("path must start with moveto");var o=t(n,r,e,i,a);return n.type&_.CLOSE_PATH&&(r=i,e=a),void 0!==n.x&&(r=n.relative?r+n.x:n.x),void 0!==n.y&&(e=n.relative?e+n.y:n.y),n.type&_.MOVE_TO&&(i=r,a=e),o}}function O(t,r,e,i,n,o){return a(t,r,e,i,n,o),u((function(a,s,u,h){var c=a.x1,y=a.x2,p=a.relative&&!isNaN(h),m=void 0!==a.x?a.x:p?0:s,O=void 0!==a.y?a.y:p?0:u;function l(t){return t*t}a.type&_.HORIZ_LINE_TO&&0!==r&&(a.type=_.LINE_TO,a.y=a.relative?0:u),a.type&_.VERT_LINE_TO&&0!==e&&(a.type=_.LINE_TO,a.x=a.relative?0:s),void 0!==a.x&&(a.x=a.x*t+O*e+(p?0:n)),void 0!==a.y&&(a.y=m*r+a.y*i+(p?0:o)),void 0!==a.x1&&(a.x1=a.x1*t+a.y1*e+(p?0:n)),void 0!==a.y1&&(a.y1=c*r+a.y1*i+(p?0:o)),void 0!==a.x2&&(a.x2=a.x2*t+a.y2*e+(p?0:n)),void 0!==a.y2&&(a.y2=y*r+a.y2*i+(p?0:o));var T=t*i-r*e;if(void 0!==a.xRot&&(1!==t||0!==r||0!==e||1!==i))if(0===T)delete a.rX,delete a.rY,delete a.xRot,delete a.lArcFlag,delete a.sweepFlag,a.type=_.LINE_TO;else{var v=a.xRot*Math.PI/180,f=Math.sin(v),N=Math.cos(v),x=1/l(a.rX),d=1/l(a.rY),E=l(N)*x+l(f)*d,A=2*f*N*(x-d),C=l(f)*x+l(N)*d,M=E*i*i-A*r*i+C*r*r,R=A*(t*i+r*e)-2*(E*e*i+C*t*r),g=E*e*e-A*t*e+C*t*t,I=(Math.atan2(R,M-g)+Math.PI)%Math.PI/2,S=Math.sin(I),L=Math.cos(I);a.rX=Math.abs(T)/Math.sqrt(M*l(L)+R*S*L+g*l(S)),a.rY=Math.abs(T)/Math.sqrt(M*l(S)-R*S*L+g*l(L)),a.xRot=180*I/Math.PI}return void 0!==a.sweepFlag&&0>T&&(a.sweepFlag=+!a.sweepFlag),a}))}function l(){return function(t){var r={};for(var e in t)r[e]=t[e];return r}}t.ROUND=function(t){function r(r){return Math.round(r*t)/t}return void 0===t&&(t=1e13),a(t),function(t){return void 0!==t.x1&&(t.x1=r(t.x1)),void 0!==t.y1&&(t.y1=r(t.y1)),void 0!==t.x2&&(t.x2=r(t.x2)),void 0!==t.y2&&(t.y2=r(t.y2)),void 0!==t.x&&(t.x=r(t.x)),void 0!==t.y&&(t.y=r(t.y)),void 0!==t.rX&&(t.rX=r(t.rX)),void 0!==t.rY&&(t.rY=r(t.rY)),t}},t.TO_ABS=r,t.TO_REL=function(){return u((function(t,r,e){return t.relative||(void 0!==t.x1&&(t.x1-=r),void 0!==t.y1&&(t.y1-=e),void 0!==t.x2&&(t.x2-=r),void 0!==t.y2&&(t.y2-=e),void 0!==t.x&&(t.x-=r),void 0!==t.y&&(t.y-=e),t.relative=!0),t}))},t.NORMALIZE_HVZ=function(t,r,e){return void 0===t&&(t=!0),void 0===r&&(r=!0),void 0===e&&(e=!0),u((function(i,a,n,o,s){if(isNaN(o)&&!(i.type&_.MOVE_TO))throw new Error("path must start with moveto");return r&&i.type&_.HORIZ_LINE_TO&&(i.type=_.LINE_TO,i.y=i.relative?0:n),e&&i.type&_.VERT_LINE_TO&&(i.type=_.LINE_TO,i.x=i.relative?0:a),t&&i.type&_.CLOSE_PATH&&(i.type=_.LINE_TO,i.x=i.relative?o-a:o,i.y=i.relative?s-n:s),i.type&_.ARC&&(0===i.rX||0===i.rY)&&(i.type=_.LINE_TO,delete i.rX,delete i.rY,delete i.xRot,delete i.lArcFlag,delete i.sweepFlag),i}))},t.NORMALIZE_ST=e,t.QT_TO_C=n,t.INFO=u,t.SANITIZE=function(t){void 0===t&&(t=0),a(t);var r=NaN,e=NaN,i=NaN,n=NaN;return u((function(a,o,s,u,h){var c=Math.abs,y=!1,p=0,m=0;if(a.type&_.SMOOTH_CURVE_TO&&(p=isNaN(r)?0:o-r,m=isNaN(e)?0:s-e),a.type&(_.CURVE_TO|_.SMOOTH_CURVE_TO)?(r=a.relative?o+a.x2:a.x2,e=a.relative?s+a.y2:a.y2):(r=NaN,e=NaN),a.type&_.SMOOTH_QUAD_TO?(i=isNaN(i)?o:2*o-i,n=isNaN(n)?s:2*s-n):a.type&_.QUAD_TO?(i=a.relative?o+a.x1:a.x1,n=a.relative?s+a.y1:a.y2):(i=NaN,n=NaN),a.type&_.LINE_COMMANDS||a.type&_.ARC&&(0===a.rX||0===a.rY||!a.lArcFlag)||a.type&_.CURVE_TO||a.type&_.SMOOTH_CURVE_TO||a.type&_.QUAD_TO||a.type&_.SMOOTH_QUAD_TO){var O=void 0===a.x?0:a.relative?a.x:a.x-o,l=void 0===a.y?0:a.relative?a.y:a.y-s;p=isNaN(i)?void 0===a.x1?p:a.relative?a.x:a.x1-o:i-o,m=isNaN(n)?void 0===a.y1?m:a.relative?a.y:a.y1-s:n-s;var T=void 0===a.x2?0:a.relative?a.x:a.x2-o,v=void 0===a.y2?0:a.relative?a.y:a.y2-s;c(O)<=t&&c(l)<=t&&c(p)<=t&&c(m)<=t&&c(T)<=t&&c(v)<=t&&(y=!0)}return a.type&_.CLOSE_PATH&&c(o-u)<=t&&c(s-h)<=t&&(y=!0),y?[]:a}))},t.MATRIX=O,t.ROTATE=function(t,r,e){void 0===r&&(r=0),void 0===e&&(e=0),a(t,r,e);var i=Math.sin(t),n=Math.cos(t);return O(n,i,-i,n,r-r*n+e*i,e-r*i-e*n)},t.TRANSLATE=function(t,r){return void 0===r&&(r=0),a(t,r),O(1,0,0,1,t,r)},t.SCALE=function(t,r){return void 0===r&&(r=t),a(t,r),O(t,0,0,r,0,0)},t.SKEW_X=function(t){return a(t),O(1,0,Math.atan(t),1,0,0)},t.SKEW_Y=function(t){return a(t),O(1,Math.atan(t),0,1,0,0)},t.X_AXIS_SYMMETRY=function(t){return void 0===t&&(t=0),a(t),O(-1,0,0,1,t,0)},t.Y_AXIS_SYMMETRY=function(t){return void 0===t&&(t=0),a(t),O(1,0,0,-1,0,t)},t.A_TO_C=function(){return u((function(t,r,e){return _.ARC===t.type?function(t,r,e){var a,n,s,u;t.cX||o(t,r,e);for(var y=Math.min(t.phi1,t.phi2),p=Math.max(t.phi1,t.phi2)-y,m=Math.ceil(p/90),O=new Array(m),l=r,T=e,v=0;v<m;v++){var f=c(t.phi1,t.phi2,v/m),N=c(t.phi1,t.phi2,(v+1)/m),x=N-f,d=4/3*Math.tan(x*h/4),E=[Math.cos(f*h)-d*Math.sin(f*h),Math.sin(f*h)+d*Math.cos(f*h)],A=E[0],C=E[1],M=[Math.cos(N*h),Math.sin(N*h)],R=M[0],g=M[1],I=[R+d*Math.sin(N*h),g-d*Math.cos(N*h)],S=I[0],L=I[1];O[v]={relative:t.relative,type:_.CURVE_TO};var H=function(r,e){var a=i([r*t.rX,e*t.rY],t.xRot),n=a[0],o=a[1];return[t.cX+n,t.cY+o]};a=H(A,C),O[v].x1=a[0],O[v].y1=a[1],n=H(S,L),O[v].x2=n[0],O[v].y2=n[1],s=H(R,g),O[v].x=s[0],O[v].y=s[1],t.relative&&(O[v].x1-=l,O[v].y1-=T,O[v].x2-=l,O[v].y2-=T,O[v].x-=l,O[v].y-=T),l=(u=[O[v].x,O[v].y])[0],T=u[1]}return O}(t,t.relative?0:r,t.relative?0:e):t}))},t.ANNOTATE_ARCS=function(){return u((function(t,r,e){return t.relative&&(r=0,e=0),_.ARC===t.type&&o(t,r,e),t}))},t.CLONE=l,t.CALCULATE_BOUNDS=function(){var t=function(t){var r={};for(var e in t)r[e]=t[e];return r},i=r(),a=n(),h=e(),c=u((function(r,e,n){var u=h(a(i(t(r))));function O(t){t>c.maxX&&(c.maxX=t),t<c.minX&&(c.minX=t)}function l(t){t>c.maxY&&(c.maxY=t),t<c.minY&&(c.minY=t)}if(u.type&_.DRAWING_COMMANDS&&(O(e),l(n)),u.type&_.HORIZ_LINE_TO&&O(u.x),u.type&_.VERT_LINE_TO&&l(u.y),u.type&_.LINE_TO&&(O(u.x),l(u.y)),u.type&_.CURVE_TO){O(u.x),l(u.y);for(var T=0,v=p(e,u.x1,u.x2,u.x);T<v.length;T++){0<(w=v[T])&&1>w&&O(m(e,u.x1,u.x2,u.x,w))}for(var f=0,N=p(n,u.y1,u.y2,u.y);f<N.length;f++){0<(w=N[f])&&1>w&&l(m(n,u.y1,u.y2,u.y,w))}}if(u.type&_.ARC){O(u.x),l(u.y),o(u,e,n);for(var x=u.xRot/180*Math.PI,d=Math.cos(x)*u.rX,E=Math.sin(x)*u.rX,A=-Math.sin(x)*u.rY,C=Math.cos(x)*u.rY,M=u.phi1<u.phi2?[u.phi1,u.phi2]:-180>u.phi2?[u.phi2+360,u.phi1+360]:[u.phi2,u.phi1],R=M[0],g=M[1],I=function(t){var r=t[0],e=t[1],i=180*Math.atan2(e,r)/Math.PI;return i<R?i+360:i},S=0,L=s(A,-d,0).map(I);S<L.length;S++){(w=L[S])>R&&w<g&&O(y(u.cX,d,A,w))}for(var H=0,U=s(C,-E,0).map(I);H<U.length;H++){var w;(w=U[H])>R&&w<g&&l(y(u.cY,E,C,w))}}return r}));return c.minX=1/0,c.maxX=-1/0,c.minY=1/0,c.maxY=-1/0,c}}(u||(u={}));var O,l=function(){function t(){}return t.prototype.round=function(t){return this.transform(u.ROUND(t))},t.prototype.toAbs=function(){return this.transform(u.TO_ABS())},t.prototype.toRel=function(){return this.transform(u.TO_REL())},t.prototype.normalizeHVZ=function(t,r,e){return this.transform(u.NORMALIZE_HVZ(t,r,e))},t.prototype.normalizeST=function(){return this.transform(u.NORMALIZE_ST())},t.prototype.qtToC=function(){return this.transform(u.QT_TO_C())},t.prototype.aToC=function(){return this.transform(u.A_TO_C())},t.prototype.sanitize=function(t){return this.transform(u.SANITIZE(t))},t.prototype.translate=function(t,r){return this.transform(u.TRANSLATE(t,r))},t.prototype.scale=function(t,r){return this.transform(u.SCALE(t,r))},t.prototype.rotate=function(t,r,e){return this.transform(u.ROTATE(t,r,e))},t.prototype.matrix=function(t,r,e,i,a,n){return this.transform(u.MATRIX(t,r,e,i,a,n))},t.prototype.skewX=function(t){return this.transform(u.SKEW_X(t))},t.prototype.skewY=function(t){return this.transform(u.SKEW_Y(t))},t.prototype.xSymmetry=function(t){return this.transform(u.X_AXIS_SYMMETRY(t))},t.prototype.ySymmetry=function(t){return this.transform(u.Y_AXIS_SYMMETRY(t))},t.prototype.annotateArcs=function(){return this.transform(u.ANNOTATE_ARCS())},t}(),T=function(t){return" "===t||"\t"===t||"\r"===t||"\n"===t},v=function(t){return"0".charCodeAt(0)<=t.charCodeAt(0)&&t.charCodeAt(0)<="9".charCodeAt(0)},f=function(t){function e(){var r=t.call(this)||this;return r.curNumber="",r.curCommandType=-1,r.curCommandRelative=!1,r.canParseCommandOrComma=!0,r.curNumberHasExp=!1,r.curNumberHasExpDigits=!1,r.curNumberHasDecimal=!1,r.curArgs=[],r}return r(e,t),e.prototype.finish=function(t){if(void 0===t&&(t=[]),this.parse(" ",t),0!==this.curArgs.length||!this.canParseCommandOrComma)throw new SyntaxError("Unterminated command at the path end.");return t},e.prototype.parse=function(t,r){var e=this;void 0===r&&(r=[]);for(var i=function(t){r.push(t),e.curArgs.length=0,e.canParseCommandOrComma=!0},a=0;a<t.length;a++){var n=t[a],o=!(this.curCommandType!==_.ARC||3!==this.curArgs.length&&4!==this.curArgs.length||1!==this.curNumber.length||"0"!==this.curNumber&&"1"!==this.curNumber),s=v(n)&&("0"===this.curNumber&&"0"===n||o);if(!v(n)||s)if("e"!==n&&"E"!==n)if("-"!==n&&"+"!==n||!this.curNumberHasExp||this.curNumberHasExpDigits)if("."!==n||this.curNumberHasExp||this.curNumberHasDecimal||o){if(this.curNumber&&-1!==this.curCommandType){var u=Number(this.curNumber);if(isNaN(u))throw new SyntaxError("Invalid number ending at "+a);if(this.curCommandType===_.ARC)if(0===this.curArgs.length||1===this.curArgs.length){if(0>u)throw new SyntaxError('Expected positive number, got "'+u+'" at index "'+a+'"')}else if((3===this.curArgs.length||4===this.curArgs.length)&&"0"!==this.curNumber&&"1"!==this.curNumber)throw new SyntaxError('Expected a flag, got "'+this.curNumber+'" at index "'+a+'"');this.curArgs.push(u),this.curArgs.length===N[this.curCommandType]&&(_.HORIZ_LINE_TO===this.curCommandType?i({type:_.HORIZ_LINE_TO,relative:this.curCommandRelative,x:u}):_.VERT_LINE_TO===this.curCommandType?i({type:_.VERT_LINE_TO,relative:this.curCommandRelative,y:u}):this.curCommandType===_.MOVE_TO||this.curCommandType===_.LINE_TO||this.curCommandType===_.SMOOTH_QUAD_TO?(i({type:this.curCommandType,relative:this.curCommandRelative,x:this.curArgs[0],y:this.curArgs[1]}),_.MOVE_TO===this.curCommandType&&(this.curCommandType=_.LINE_TO)):this.curCommandType===_.CURVE_TO?i({type:_.CURVE_TO,relative:this.curCommandRelative,x1:this.curArgs[0],y1:this.curArgs[1],x2:this.curArgs[2],y2:this.curArgs[3],x:this.curArgs[4],y:this.curArgs[5]}):this.curCommandType===_.SMOOTH_CURVE_TO?i({type:_.SMOOTH_CURVE_TO,relative:this.curCommandRelative,x2:this.curArgs[0],y2:this.curArgs[1],x:this.curArgs[2],y:this.curArgs[3]}):this.curCommandType===_.QUAD_TO?i({type:_.QUAD_TO,relative:this.curCommandRelative,x1:this.curArgs[0],y1:this.curArgs[1],x:this.curArgs[2],y:this.curArgs[3]}):this.curCommandType===_.ARC&&i({type:_.ARC,relative:this.curCommandRelative,rX:this.curArgs[0],rY:this.curArgs[1],xRot:this.curArgs[2],lArcFlag:this.curArgs[3],sweepFlag:this.curArgs[4],x:this.curArgs[5],y:this.curArgs[6]})),this.curNumber="",this.curNumberHasExpDigits=!1,this.curNumberHasExp=!1,this.curNumberHasDecimal=!1,this.canParseCommandOrComma=!0}if(!T(n))if(","===n&&this.canParseCommandOrComma)this.canParseCommandOrComma=!1;else if("+"!==n&&"-"!==n&&"."!==n)if(s)this.curNumber=n,this.curNumberHasDecimal=!1;else{if(0!==this.curArgs.length)throw new SyntaxError("Unterminated command at index "+a+".");if(!this.canParseCommandOrComma)throw new SyntaxError('Unexpected character "'+n+'" at index '+a+". Command cannot follow comma");if(this.canParseCommandOrComma=!1,"z"!==n&&"Z"!==n)if("h"===n||"H"===n)this.curCommandType=_.HORIZ_LINE_TO,this.curCommandRelative="h"===n;else if("v"===n||"V"===n)this.curCommandType=_.VERT_LINE_TO,this.curCommandRelative="v"===n;else if("m"===n||"M"===n)this.curCommandType=_.MOVE_TO,this.curCommandRelative="m"===n;else if("l"===n||"L"===n)this.curCommandType=_.LINE_TO,this.curCommandRelative="l"===n;else if("c"===n||"C"===n)this.curCommandType=_.CURVE_TO,this.curCommandRelative="c"===n;else if("s"===n||"S"===n)this.curCommandType=_.SMOOTH_CURVE_TO,this.curCommandRelative="s"===n;else if("q"===n||"Q"===n)this.curCommandType=_.QUAD_TO,this.curCommandRelative="q"===n;else if("t"===n||"T"===n)this.curCommandType=_.SMOOTH_QUAD_TO,this.curCommandRelative="t"===n;else{if("a"!==n&&"A"!==n)throw new SyntaxError('Unexpected character "'+n+'" at index '+a+".");this.curCommandType=_.ARC,this.curCommandRelative="a"===n}else r.push({type:_.CLOSE_PATH}),this.canParseCommandOrComma=!0,this.curCommandType=-1}else this.curNumber=n,this.curNumberHasDecimal="."===n}else this.curNumber+=n,this.curNumberHasDecimal=!0;else this.curNumber+=n;else this.curNumber+=n,this.curNumberHasExp=!0;else this.curNumber+=n,this.curNumberHasExpDigits=this.curNumberHasExp}return r},e.prototype.transform=function(t){return Object.create(this,{parse:{value:function(r,e){void 0===e&&(e=[]);for(var i=0,a=Object.getPrototypeOf(this).parse.call(this,r);i<a.length;i++){var n=a[i],o=t(n);Array.isArray(o)?e.push.apply(e,o):e.push(o)}return e}}})},e}(l),_=function(t){function i(r){var e=t.call(this)||this;return e.commands="string"==typeof r?i.parse(r):r,e}return r(i,t),i.prototype.encode=function(){return i.encode(this.commands)},i.prototype.getBounds=function(){var t=u.CALCULATE_BOUNDS();return this.transform(t),t},i.prototype.transform=function(t){for(var r=[],e=0,i=this.commands;e<i.length;e++){var a=t(i[e]);Array.isArray(a)?r.push.apply(r,a):r.push(a)}return this.commands=r,this},i.encode=function(t){return e(t)},i.parse=function(t){var r=new f,e=[];return r.parse(t,e),r.finish(e),e},i.CLOSE_PATH=1,i.MOVE_TO=2,i.HORIZ_LINE_TO=4,i.VERT_LINE_TO=8,i.LINE_TO=16,i.CURVE_TO=32,i.SMOOTH_CURVE_TO=64,i.QUAD_TO=128,i.SMOOTH_QUAD_TO=256,i.ARC=512,i.LINE_COMMANDS=i.LINE_TO|i.HORIZ_LINE_TO|i.VERT_LINE_TO,i.DRAWING_COMMANDS=i.HORIZ_LINE_TO|i.VERT_LINE_TO|i.LINE_TO|i.CURVE_TO|i.SMOOTH_CURVE_TO|i.QUAD_TO|i.SMOOTH_QUAD_TO|i.ARC,i}(l),N=((O={})[_.MOVE_TO]=2,O[_.LINE_TO]=2,O[_.HORIZ_LINE_TO]=1,O[_.VERT_LINE_TO]=1,O[_.CLOSE_PATH]=0,O[_.QUAD_TO]=4,O[_.SMOOTH_QUAD_TO]=2,O[_.CURVE_TO]=6,O[_.SMOOTH_CURVE_TO]=4,O[_.ARC]=7,O);export{N as COMMAND_ARG_COUNTS,_ as SVGPathData,f as SVGPathDataParser,u as SVGPathDataTransformer,e as encodeSVGPath};
+//# sourceMappingURL=SVGPathData.module.js.map
diff --git a/node_modules/svg-pathdata/lib/SVGPathData.module.js.map b/node_modules/svg-pathdata/lib/SVGPathData.module.js.map
new file mode 100644
index 0000000..8aab0a8
--- /dev/null
+++ b/node_modules/svg-pathdata/lib/SVGPathData.module.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"SVGPathData.module.js","sources":["../node_modules/tslib/tslib.es6.js","../src/SVGPathDataEncoder.ts","../src/mathUtils.ts","../src/SVGPathDataTransformer.ts","../src/TransformableSVG.ts","../src/SVGPathDataParser.ts","../src/SVGPathData.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n        to[j] = from[i];\r\n    return to;\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to get private field on non-instance\");\r\n    }\r\n    return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to set private field on non-instance\");\r\n    }\r\n    privateMap.set(receiver, value);\r\n    return value;\r\n}\r\n",null,null,null,null,null,null],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","encodeSVGPath","commands","str","isArray","i","length","command","type","SVGPathData","CLOSE_PATH","HORIZ_LINE_TO","relative","x","VERT_LINE_TO","y","MOVE_TO","LINE_TO","CURVE_TO","x1","y1","x2","y2","SMOOTH_CURVE_TO","QUAD_TO","SMOOTH_QUAD_TO","ARC","Error","rX","rY","xRot","lArcFlag","sweepFlag","rotate","_a","rad","Math","cos","sin","assertNumbers","_i","numbers","PI","annotateArcCommand","c","abs","x1_","y1_","testValue","pow","sqrt","c_ScaleTemp","c_Scale","max","cx_","cy_","cRot","cX","cY","phi1","atan2","phi2","intersectionUnitCircleLine","a","termSqr","term","SVGPathDataTransformer","DEG","lerp","t","arcAt","phiDeg","bezierRoot","x0","x3","EPS","x01","x12","q","PRECISION","discriminantX4","root","pqFormula","bezierAt","s","TO_ABS","INFO","prevX","prevY","NORMALIZE_ST","prevCurveC2X","NaN","prevCurveC2Y","prevQuadCX","prevQuadCY","isNaN","QT_TO_C","prevQuadX1","prevQuadY1","f","prevXAbs","prevYAbs","pathStartXAbs","pathStartYAbs","result","MATRIX","e","pathStartX","origX1","origX2","comRel","sqr","det","sinRot","cosRot","xCurve","yCurve","A","B","C","A1","B1","C1","newXRot","newSinRot","newCosRot","CLONE","key","roundVal","rf","val","round","normalizeZ","normalizeH","normalizeV","pathStartY","skip","x1Rel","y1Rel","LINE_COMMANDS","xRel","yRel","x2Rel","y2Rel","dX","dY","atan","xOffset","yOffset","arc","y0","phiMin","min","deltaPhi","partCount","ceil","phiStart","phiEnd","deltaPhi_1","tan","_e","_f","_g","transform","xTemp","yTemp","_b","_c","_d","a2c","clone","toAbs","qtToC","normST","fixX","absX","maxX","minX","fixY","absY","maxY","minY","DRAWING_COMMANDS","xDerivRoots_1","derivRoot","yDerivRoots_1","xRotRad","x90","y90","phiMin_1","phiMax","normalizeXiEta","xi","eta","phi","xDerivRoots_2","map","yDerivRoots_2","Infinity","TransformableSVG","ROUND","TO_REL","NORMALIZE_HVZ","A_TO_C","eps","SANITIZE","TRANSLATE","SCALE","ROTATE","SKEW_X","SKEW_Y","X_AXIS_SYMMETRY","Y_AXIS_SYMMETRY","ANNOTATE_ARCS","isWhiteSpace","isDigit","charCodeAt","_super","_this","SVGPathDataParser","parse","curArgs","canParseCommandOrComma","SyntaxError","finishCommand","push","isAArcFlag","curCommandType","curNumber","isEndingDigit","curNumberHasExp","curNumberHasExpDigits","curNumberHasDecimal","Number","COMMAND_ARG_COUNTS","curCommandRelative","value","chunk","parsedCommands_1","getPrototypeOf","cT","content","encode","boundsTransform","CALCULATE_BOUNDS","transformFunction","newCommands","transformedCommand","path","parser","finish"],"mappings":";;;;;;;;;;;;;;AAgBA,IAAIA,EAAgB,SAASC,EAAGC,GAI5B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOC,OAAOK,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,MAC3EN,EAAGC,IAGrB,SAASS,EAAUV,EAAGC,GACzB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIU,UAAU,uBAAyBC,OAAOX,GAAK,iCAE7D,SAASY,IAAOC,KAAKC,YAAcf,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaC,OAAOc,OAAOf,IAAMY,EAAGN,UAAYN,EAAEM,UAAW,IAAIM,YCnBnEI,EAAcC,GAC5B,IAAIC,EAAM,GAELd,MAAMe,QAAQF,KACjBA,EAAW,CAACA,IAEd,IAAK,IAAIG,EAAI,EAAGA,EAAIH,EAASI,OAAQD,IAAK,CACxC,IAAME,EAAUL,EAASG,GACzB,GAAIE,EAAQC,OAASC,EAAYC,WAC/BP,GAAO,SACF,GAAII,EAAQC,OAASC,EAAYE,cACtCR,IAAQI,EAAQK,SAAW,IAAM,KAC/BL,EAAQM,OACL,GAAIN,EAAQC,OAASC,EAAYK,aACtCX,IAAQI,EAAQK,SAAW,IAAM,KAC/BL,EAAQQ,OACL,GAAIR,EAAQC,OAASC,EAAYO,QACtCb,IAAQI,EAAQK,SAAW,IAAM,KAC/BL,EAAQM,EApBJ,IAoBcN,EAAQQ,OACvB,GAAIR,EAAQC,OAASC,EAAYQ,QACtCd,IAAQI,EAAQK,SAAW,IAAM,KAC/BL,EAAQM,EAvBJ,IAuBcN,EAAQQ,OACvB,GAAIR,EAAQC,OAASC,EAAYS,SACtCf,IAAQI,EAAQK,SAAW,IAAM,KAC/BL,EAAQY,GA1BJ,IA0BeZ,EAAQa,GA1BvB,IA2BEb,EAAQc,GA3BV,IA2BqBd,EAAQe,GA3B7B,IA4BEf,EAAQM,EA5BV,IA4BoBN,EAAQQ,OAC7B,GAAIR,EAAQC,OAASC,EAAYc,gBACtCpB,IAAQI,EAAQK,SAAW,IAAM,KAC/BL,EAAQc,GA/BJ,IA+Bed,EAAQe,GA/BvB,IAgCEf,EAAQM,EAhCV,IAgCoBN,EAAQQ,OAC7B,GAAIR,EAAQC,OAASC,EAAYe,QACtCrB,IAAQI,EAAQK,SAAW,IAAM,KAC/BL,EAAQY,GAnCJ,IAmCeZ,EAAQa,GAnCvB,IAoCEb,EAAQM,EApCV,IAoCoBN,EAAQQ,OAC7B,GAAIR,EAAQC,OAASC,EAAYgB,eACtCtB,IAAQI,EAAQK,SAAW,IAAM,KAC/BL,EAAQM,EAvCJ,IAuCcN,EAAQQ,MACvB,CAAA,GAAIR,EAAQC,OAASC,EAAYiB,IAQtC,MAAM,IAAIC,MACR,4BAA8BpB,EAAgBC,mBAAkBH,OARlEF,IAAQI,EAAQK,SAAW,IAAM,KAC/BL,EAAQqB,GA1CJ,IA0CerB,EAAQsB,GA1CvB,IA2CEtB,EAAQuB,KA3CV,MA4CIvB,EAAQwB,SA5CZ,MA4CgCxB,EAAQyB,UA5CxC,IA6CEzB,EAAQM,EA7CV,IA6CoBN,EAAQQ,GAQtC,OAAOZ,WCzDO8B,EAAOC,EAA0BC,OAAzBtB,OAAGE,OACzB,MAAO,CACLF,EAAIuB,KAAKC,IAAIF,GAAOpB,EAAIqB,KAAKE,IAAIH,GACjCtB,EAAIuB,KAAKE,IAAIH,GAAOpB,EAAIqB,KAAKC,IAAIF,aAKrBI,QAAc,aAAAC,mBAAAA,IAAAC,kBAE1B,IAAK,IAAIpC,EAAI,EAAGA,EAAIoC,EAAQnC,OAAQD,IAClC,GAAI,iBAAoBoC,EAAQpC,GAC9B,MAAM,IAAIsB,MACR,2BAA2BtB,+BAA8BoC,EAAQpC,iBAAgBoC,EAAQpC,IAIjG,OAAO,EAGT,IAAMqC,EAAKN,KAAKM,YASAC,EAAmBC,EAAazB,EAAYC,GAC1DwB,EAAEb,SAAY,IAAMa,EAAEb,SAAY,EAAI,EACtCa,EAAEZ,UAAa,IAAMY,EAAEZ,UAAa,EAAI,EAEnC,IAAAJ,EAAgBgB,KAAZf,EAAYe,KAAR/B,EAAQ+B,IAAL7B,EAAK6B,IAErBhB,EAAKQ,KAAKS,IAAID,EAAEhB,IAChBC,EAAKO,KAAKS,IAAID,EAAEf,IACV,IAAAK,EAAaD,EAAO,EAAEd,EAAKN,GAAK,GAAIO,EAAKL,GAAK,IAAK6B,EAAEd,KAAO,IAAMY,GAAjEI,OAAKC,OACNC,EAAYZ,KAAKa,IAAIH,EAAK,GAAKV,KAAKa,IAAIrB,EAAI,GAAKQ,KAAKa,IAAIF,EAAK,GAAKX,KAAKa,IAAIpB,EAAI,GAEnF,EAAImB,IACNpB,GAAMQ,KAAKc,KAAKF,GAChBnB,GAAMO,KAAKc,KAAKF,IAElBJ,EAAEhB,GAAKA,EACPgB,EAAEf,GAAKA,EACP,IAAMsB,EAAef,KAAKa,IAAIrB,EAAI,GAAKQ,KAAKa,IAAIF,EAAK,GAAKX,KAAKa,IAAIpB,EAAI,GAAKO,KAAKa,IAAIH,EAAK,GACpFM,GAAWR,EAAEb,WAAaa,EAAEZ,UAAY,GAAK,GACjDI,KAAKc,KAAKd,KAAKiB,IAAI,GAAIjB,KAAKa,IAAIrB,EAAI,GAAKQ,KAAKa,IAAIpB,EAAI,GAAKsB,GAAeA,IACtEG,EAAM1B,EAAKmB,EAAMlB,EAAKuB,EACtBG,GAAO1B,EAAKiB,EAAMlB,EAAKwB,EACvBI,EAAOvB,EAAO,CAACqB,EAAKC,GAAMX,EAAEd,KAAO,IAAMY,GAE/CE,EAAEa,GAAKD,EAAK,IAAMrC,EAAKN,GAAK,EAC5B+B,EAAEc,GAAKF,EAAK,IAAMpC,EAAKL,GAAK,EAC5B6B,EAAEe,KAAOvB,KAAKwB,OAAOb,EAAMQ,GAAO1B,GAAKiB,EAAMQ,GAAO1B,GACpDgB,EAAEiB,KAAOzB,KAAKwB,QAAQb,EAAMQ,GAAO1B,IAAMiB,EAAMQ,GAAO1B,GAClD,IAAMgB,EAAEZ,WAAaY,EAAEiB,KAAOjB,EAAEe,OAClCf,EAAEiB,MAAQ,EAAInB,GAEZ,IAAME,EAAEZ,WAAaY,EAAEiB,KAAOjB,EAAEe,OAClCf,EAAEiB,MAAQ,EAAInB,GAEhBE,EAAEe,MAAQ,IAAMjB,EAChBE,EAAEiB,MAAQ,IAAMnB,WAaFoB,EAA2BC,EAAW9E,EAAW2D,GAC/DL,EAAcwB,EAAG9E,EAAG2D,GAEpB,IAAMoB,EAAUD,EAAIA,EAAI9E,EAAIA,EAAI2D,EAAIA,EAEpC,GAAI,EAAIoB,EACN,MAAO,GACF,GAAI,IAAMA,EACf,MAAO,CACL,CACGD,EAAInB,GAAMmB,EAAIA,EAAI9E,EAAIA,GACtBA,EAAI2D,GAAMmB,EAAIA,EAAI9E,EAAIA,KAE7B,IAAMgF,EAAO7B,KAAKc,KAAKc,GAEvB,MAAO,CACL,EACGD,EAAInB,EAAI3D,EAAIgF,IAASF,EAAIA,EAAI9E,EAAIA,IACjCA,EAAI2D,EAAImB,EAAIE,IAASF,EAAIA,EAAI9E,EAAIA,IACpC,EACG8E,EAAInB,EAAI3D,EAAIgF,IAASF,EAAIA,EAAI9E,EAAIA,IACjCA,EAAI2D,EAAImB,EAAIE,IAASF,EAAIA,EAAI9E,EAAIA,KAIjC,ICjGUiF,EDiGJC,EAAM/B,KAAKM,GAAK,aAEb0B,EAAKL,EAAW9E,EAAWoF,GACzC,OAAQ,EAAIA,GAAKN,EAAIM,EAAIpF,WAGXqF,EAAM1B,EAAWzB,EAAYE,EAAYkD,GACvD,OAAO3B,EAAIR,KAAKC,IAAIkC,EAAS,IAAM7B,GAAMvB,EAAKiB,KAAKE,IAAIiC,EAAS,IAAM7B,GAAMrB,WAG9DmD,EAAWC,EAAYtD,EAAYE,EAAYqD,GAC7D,IAAMC,EAAM,KACNC,EAAMzD,EAAKsD,EACXI,EAAMxD,EAAKF,EAEX4C,EAAI,EAAIa,EAAM,GADRF,EAAKrD,GACa,EAAIwD,EAC5B5F,EAAkB,GAAb4F,EAAMD,GACXhC,EAAI,EAAIgC,EAGd,OAAIxC,KAAKS,IAAIkB,GAAKY,EAET,EAAE/B,EAAI3D,GAiBjB,SAAmBK,EAAWwF,EAAWC,gBAAAA,QAEvC,IAAMC,EAAiB1F,EAAIA,EAAI,EAAIwF,EAEnC,GAAIE,GAAkBD,EACpB,MAAO,GACF,GAAIC,GAAkBD,EAC3B,MAAO,EAAEzF,EAAI,GAEf,IAAM2F,EAAO7C,KAAKc,KAAK8B,GAEvB,MAAO,EAAG1F,EAAI,EAAK2F,GAAQ3F,EAAI,EAAK2F,GA1B7BC,CAAUjG,EAAI8E,EAAGnB,EAAImB,EAAGY,YAIjBQ,EAASV,EAAYtD,EAAYE,EAAYqD,EAAYL,GAEvE,IAAMe,EAAI,EAAIf,EAMd,OAAOI,GALIW,EAAIA,EAAIA,GAKFjE,GAJN,EAAIiE,EAAIA,EAAIf,GAIIhD,GAHhB,EAAI+D,EAAIf,EAAIA,GAGcK,GAF1BL,EAAIA,EAAIA,ICnIrB,SAAiBH,GAuCf,SAAgBmB,IACd,OAAOC,GAAK,SAAC/E,EAASgF,EAAOC,GAyB3B,OAxBIjF,EAAQK,gBAEN,IAAuBL,EAAQY,KACjCZ,EAAQY,IAAMoE,QAEZ,IAAuBhF,EAAQa,KACjCb,EAAQa,IAAMoE,QAGZ,IAAuBjF,EAAQc,KACjCd,EAAQc,IAAMkE,QAEZ,IAAuBhF,EAAQe,KACjCf,EAAQe,IAAMkE,QAGZ,IAAuBjF,EAAQM,IACjCN,EAAQM,GAAK0E,QAEX,IAAuBhF,EAAQQ,IACjCR,EAAQQ,GAAKyE,GAEfjF,EAAQK,UAAW,GAEdL,KAkEX,SAAgBkF,IACd,IAAIC,EAAeC,IACfC,EAAeD,IACfE,EAAaF,IACbG,EAAaH,IAEjB,OAAOL,GAAK,SAAC/E,EAASgF,EAAOC,GA8B3B,OA7BIjF,EAAQC,KAAOC,EAAYc,kBAC7BhB,EAAQC,KAAOC,EAAYS,SAC3BwE,EAAeK,MAAML,GAAgBH,EAAQG,EAC7CE,EAAeG,MAAMH,GAAgBJ,EAAQI,EAC7CrF,EAAQY,GAAKZ,EAAQK,SAAW2E,EAAQG,EAAe,EAAIH,EAAQG,EACnEnF,EAAQa,GAAKb,EAAQK,SAAW4E,EAAQI,EAAe,EAAIJ,EAAQI,GAEjErF,EAAQC,KAAOC,EAAYS,UAC7BwE,EAAenF,EAAQK,SAAW2E,EAAQhF,EAAQc,GAAKd,EAAQc,GAC/DuE,EAAerF,EAAQK,SAAW4E,EAAQjF,EAAQe,GAAKf,EAAQe,KAE/DoE,EAAeC,IACfC,EAAeD,KAEbpF,EAAQC,KAAOC,EAAYgB,iBAC7BlB,EAAQC,KAAOC,EAAYe,QAC3BqE,EAAaE,MAAMF,GAAcN,EAAQM,EACzCC,EAAaC,MAAMD,GAAcN,EAAQM,EACzCvF,EAAQY,GAAKZ,EAAQK,SAAW2E,EAAQM,EAAa,EAAIN,EAAQM,EACjEtF,EAAQa,GAAKb,EAAQK,SAAW4E,EAAQM,EAAa,EAAIN,EAAQM,GAE/DvF,EAAQC,KAAOC,EAAYe,SAC7BqE,EAAatF,EAAQK,SAAW2E,EAAQhF,EAAQY,GAAKZ,EAAQY,GAC7D2E,EAAavF,EAAQK,SAAW4E,EAAQjF,EAAQa,GAAKb,EAAQa,KAE7DyE,EAAaF,IACbG,EAAaH,KAGRpF,KAYX,SAAgByF,IACd,IAAIC,EAAaN,IACbO,EAAaP,IAEjB,OAAOL,GAAK,SAAC/E,EAASgF,EAAOC,GAQ3B,GAPIjF,EAAQC,KAAOC,EAAYgB,iBAC7BlB,EAAQC,KAAOC,EAAYe,QAC3ByE,EAAaF,MAAME,GAAcV,EAAQU,EACzCC,EAAaH,MAAMG,GAAcV,EAAQU,EACzC3F,EAAQY,GAAKZ,EAAQK,SAAW2E,EAAQU,EAAa,EAAIV,EAAQU,EACjE1F,EAAQa,GAAKb,EAAQK,SAAW4E,EAAQU,EAAa,EAAIV,EAAQU,GAE/D3F,EAAQC,KAAOC,EAAYe,QAAS,CACtCyE,EAAa1F,EAAQK,SAAW2E,EAAQhF,EAAQY,GAAKZ,EAAQY,GAC7D+E,EAAa3F,EAAQK,SAAW4E,EAAQjF,EAAQa,GAAKb,EAAQa,GAC7D,IAAMD,EAAKZ,EAAQY,GACbC,EAAKb,EAAQa,GAEnBb,EAAQC,KAAOC,EAAYS,SAC3BX,EAAQY,KAAOZ,EAAQK,SAAW,EAAI2E,GAAc,EAALpE,GAAU,EACzDZ,EAAQa,KAAOb,EAAQK,SAAW,EAAI4E,GAAc,EAALpE,GAAU,EACzDb,EAAQc,IAAMd,EAAQM,EAAS,EAALM,GAAU,EACpCZ,EAAQe,IAAMf,EAAQQ,EAAS,EAALK,GAAU,OAEpC6E,EAAaN,IACbO,EAAaP,IAGf,OAAOpF,KAGX,SAAgB+E,EACda,GAEA,IAAIC,EAAW,EACXC,EAAW,EACXC,EAAgBX,IAChBY,EAAgBZ,IAEpB,OAAO,SAAmBpF,GACxB,GAAIwF,MAAMO,MAAoB/F,EAAQC,KAAOC,EAAYO,SACvD,MAAM,IAAIW,MAAM,+BAGlB,IAAM6E,EAASL,EAAE5F,EAAS6F,EAAUC,EAAUC,EAAeC,GAmB7D,OAjBIhG,EAAQC,KAAOC,EAAYC,aAC7B0F,EAAWE,EACXD,EAAWE,QAGT,IAAuBhG,EAAQM,IACjCuF,EAAY7F,EAAQK,SAAWwF,EAAW7F,EAAQM,EAAIN,EAAQM,QAE5D,IAAuBN,EAAQQ,IACjCsF,EAAY9F,EAAQK,SAAWyF,EAAW9F,EAAQQ,EAAIR,EAAQQ,GAG5DR,EAAQC,KAAOC,EAAYO,UAC7BsF,EAAgBF,EAChBG,EAAgBF,GAGXG,GAoFX,SAAgBC,EAAO1C,EAAW9E,EAAW2D,EAAW5D,EAAW0H,EAAWP,GAG5E,OAFA5D,EAAcwB,EAAG9E,EAAG2D,EAAG5D,EAAG0H,EAAGP,GAEtBb,GAAK,SAAC/E,EAASgF,EAAOC,EAAOmB,GAClC,IAAMC,EAASrG,EAAQY,GACjB0F,EAAStG,EAAQc,GAGjByF,EAASvG,EAAQK,WAAamF,MAAMY,GACpC9F,OAAI,IAAuBN,EAAQM,EAAIN,EAAQM,EAAKiG,EAAS,EAAIvB,EACjExE,OAAI,IAAuBR,EAAQQ,EAAIR,EAAQQ,EAAK+F,EAAS,EAAItB,EA6BvE,SAASuB,EAAIlG,GAAa,OAAOA,EAAIA,EA3BjCN,EAAQC,KAAOC,EAAYE,eAAiB,IAAM1B,IACpDsB,EAAQC,KAAOC,EAAYQ,QAC3BV,EAAQQ,EAAIR,EAAQK,SAAW,EAAI4E,GAEjCjF,EAAQC,KAAOC,EAAYK,cAAgB,IAAM8B,IACnDrC,EAAQC,KAAOC,EAAYQ,QAC3BV,EAAQM,EAAIN,EAAQK,SAAW,EAAI2E,QAGjC,IAAuBhF,EAAQM,IACjCN,EAAQM,EAAKN,EAAQM,EAAIkD,EAAMhD,EAAI6B,GAAMkE,EAAS,EAAIJ,SAEpD,IAAuBnG,EAAQQ,IACjCR,EAAQQ,EAAKF,EAAI5B,EAAKsB,EAAQQ,EAAI/B,GAAK8H,EAAS,EAAIX,SAElD,IAAuB5F,EAAQY,KACjCZ,EAAQY,GAAKZ,EAAQY,GAAK4C,EAAIxD,EAAQa,GAAKwB,GAAKkE,EAAS,EAAIJ,SAE3D,IAAuBnG,EAAQa,KACjCb,EAAQa,GAAKwF,EAAS3H,EAAIsB,EAAQa,GAAKpC,GAAK8H,EAAS,EAAIX,SAEvD,IAAuB5F,EAAQc,KACjCd,EAAQc,GAAKd,EAAQc,GAAK0C,EAAIxD,EAAQe,GAAKsB,GAAKkE,EAAS,EAAIJ,SAE3D,IAAuBnG,EAAQe,KACjCf,EAAQe,GAAKuF,EAAS5H,EAAIsB,EAAQe,GAAKtC,GAAK8H,EAAS,EAAIX,IAG3D,IAAMa,EAAMjD,EAAI/E,EAAIC,EAAI2D,EAExB,QAAI,IAAuBrC,EAAQuB,OAE7B,IAAMiC,GAAK,IAAM9E,GAAK,IAAM2D,GAAK,IAAM5D,GAEzC,GAAI,IAAMgI,SAIDzG,EAAQqB,UACRrB,EAAQsB,UACRtB,EAAQuB,YACRvB,EAAQwB,gBACRxB,EAAQyB,UACfzB,EAAQC,KAAOC,EAAYQ,YACtB,CAEL,IAAMa,EAAOvB,EAAQuB,KAAOM,KAAKM,GAAK,IAOhCuE,EAAS7E,KAAKE,IAAIR,GAClBoF,EAAS9E,KAAKC,IAAIP,GAClBqF,EAAS,EAAIJ,EAAIxG,EAAQqB,IACzBwF,EAAS,EAAIL,EAAIxG,EAAQsB,IACzBwF,EAAIN,EAAIG,GAAUC,EAASJ,EAAIE,GAAUG,EACzCE,EAAI,EAAIL,EAASC,GAAUC,EAASC,GACpCG,EAAIR,EAAIE,GAAUE,EAASJ,EAAIG,GAAUE,EAOzCI,EAAKH,EAAIrI,EAAIA,EAAIsI,EAAIrI,EAAID,EAAIuI,EAAItI,EAAIA,EACrCwI,EAAKH,GAAKvD,EAAI/E,EAAIC,EAAI2D,GAAK,GAAKyE,EAAIzE,EAAI5D,EAAIuI,EAAIxD,EAAI9E,GACpDyI,EAAKL,EAAIzE,EAAIA,EAAI0E,EAAIvD,EAAInB,EAAI2E,EAAIxD,EAAIA,EAerC4D,GAAYvF,KAAKwB,MAAM6D,EAAID,EAAKE,GAAMtF,KAAKM,IAAMN,KAAKM,GAAM,EAM5DkF,EAAYxF,KAAKE,IAAIqF,GACrBE,EAAYzF,KAAKC,IAAIsF,GAE3BpH,EAAQqB,GAAKQ,KAAKS,IAAImE,GACpB5E,KAAKc,KAAKsE,EAAKT,EAAIc,GAAaJ,EAAKG,EAAYC,EAAYH,EAAKX,EAAIa,IACxErH,EAAQsB,GAAKO,KAAKS,IAAImE,GACpB5E,KAAKc,KAAKsE,EAAKT,EAAIa,GAAaH,EAAKG,EAAYC,EAAYH,EAAKX,EAAIc,IACxEtH,EAAQuB,KAAiB,IAAV6F,EAAgBvF,KAAKM,GAW1C,YAHI,IAAuBnC,EAAQyB,WAAa,EAAIgF,IAClDzG,EAAQyB,YAAczB,EAAQyB,WAEzBzB,KAwDX,SAAgBuH,IACd,OAAO,SAAClF,GACN,IAAM4D,EAAS,GAEf,IAAK,IAAMuB,KAAOnF,EAChB4D,EAAOuB,GAA2BnF,EAAEmF,GAEtC,OAAOvB,GAzfKtC,QAAhB,SAAsB8D,GAEpB,SAASC,EAAGC,GAAe,OAAO9F,KAAK+F,MAAMD,EAAMF,GAAYA,EAC/D,oBAHoBA,QACpBzF,EAAcyF,GAEP,SAAezH,GA6BpB,YA5BI,IAAuBA,EAAQY,KACjCZ,EAAQY,GAAK8G,EAAG1H,EAAQY,UAEtB,IAAuBZ,EAAQa,KACjCb,EAAQa,GAAK6G,EAAG1H,EAAQa,UAGtB,IAAuBb,EAAQc,KACjCd,EAAQc,GAAK4G,EAAG1H,EAAQc,UAEtB,IAAuBd,EAAQe,KACjCf,EAAQe,GAAK2G,EAAG1H,EAAQe,UAGtB,IAAuBf,EAAQM,IACjCN,EAAQM,EAAIoH,EAAG1H,EAAQM,SAErB,IAAuBN,EAAQQ,IACjCR,EAAQQ,EAAIkH,EAAG1H,EAAQQ,SAGrB,IAAuBR,EAAQqB,KACjCrB,EAAQqB,GAAKqG,EAAG1H,EAAQqB,UAEtB,IAAuBrB,EAAQsB,KACjCtB,EAAQsB,GAAKoG,EAAG1H,EAAQsB,KAGnBtB,IAIK2D,WA8BAA,SAAhB,WACE,OAAOoB,GAAK,SAAC/E,EAASgF,EAAOC,GAyB3B,OAxBKjF,EAAQK,gBAEP,IAAuBL,EAAQY,KACjCZ,EAAQY,IAAMoE,QAEZ,IAAuBhF,EAAQa,KACjCb,EAAQa,IAAMoE,QAGZ,IAAuBjF,EAAQc,KACjCd,EAAQc,IAAMkE,QAEZ,IAAuBhF,EAAQe,KACjCf,EAAQe,IAAMkE,QAGZ,IAAuBjF,EAAQM,IACjCN,EAAQM,GAAK0E,QAEX,IAAuBhF,EAAQQ,IACjCR,EAAQQ,GAAKyE,GAEfjF,EAAQK,UAAW,GAEdL,MAIK2D,gBAAhB,SAA8BkE,EAAmBC,EAAmBC,GAClE,oBAD4BF,mBAAmBC,mBAAmBC,MAC3DhD,GAAK,SAAC/E,EAASgF,EAAOC,EAAOmB,EAAY4B,GAC9C,GAAIxC,MAAMY,MAAiBpG,EAAQC,KAAOC,EAAYO,SACpD,MAAM,IAAIW,MAAM,+BAuBlB,OArBI0G,GAAc9H,EAAQC,KAAOC,EAAYE,gBAC3CJ,EAAQC,KAAOC,EAAYQ,QAC3BV,EAAQQ,EAAIR,EAAQK,SAAW,EAAI4E,GAEjC8C,GAAc/H,EAAQC,KAAOC,EAAYK,eAC3CP,EAAQC,KAAOC,EAAYQ,QAC3BV,EAAQM,EAAIN,EAAQK,SAAW,EAAI2E,GAEjC6C,GAAc7H,EAAQC,KAAOC,EAAYC,aAC3CH,EAAQC,KAAOC,EAAYQ,QAC3BV,EAAQM,EAAIN,EAAQK,SAAW+F,EAAapB,EAAQoB,EACpDpG,EAAQQ,EAAIR,EAAQK,SAAW2H,EAAa/C,EAAQ+C,GAElDhI,EAAQC,KAAOC,EAAYiB,MAAQ,IAAMnB,EAAQqB,IAAM,IAAMrB,EAAQsB,MACvEtB,EAAQC,KAAOC,EAAYQ,eACpBV,EAAQqB,UACRrB,EAAQsB,UACRtB,EAAQuB,YACRvB,EAAQwB,gBACRxB,EAAQyB,WAEVzB,MAMK2D,iBAgDAA,YA+BAA,SAsCAA,WAAhB,SAAyBS,gBAAAA,KACvBpC,EAAcoC,GACd,IAAIe,EAAeC,IACfC,EAAeD,IACfE,EAAaF,IACbG,EAAaH,IAEjB,OAAOL,GAAK,SAAC/E,EAASgF,EAAOC,EAAOmB,EAAY4B,GAC9C,IAAM1F,EAAMT,KAAKS,IACb2F,GAAO,EACPC,EAAQ,EACRC,EAAQ,EAwBZ,GAtBInI,EAAQC,KAAOC,EAAYc,kBAC7BkH,EAAQ1C,MAAML,GAAgB,EAAIH,EAAQG,EAC1CgD,EAAQ3C,MAAMH,GAAgB,EAAIJ,EAAQI,GAExCrF,EAAQC,MAAQC,EAAYS,SAAWT,EAAYc,kBACrDmE,EAAenF,EAAQK,SAAW2E,EAAQhF,EAAQc,GAAKd,EAAQc,GAC/DuE,EAAerF,EAAQK,SAAW4E,EAAQjF,EAAQe,GAAKf,EAAQe,KAE/DoE,EAAeC,IACfC,EAAeD,KAEbpF,EAAQC,KAAOC,EAAYgB,gBAC7BoE,EAAaE,MAAMF,GAAcN,EAAQ,EAAIA,EAAQM,EACrDC,EAAaC,MAAMD,GAAcN,EAAQ,EAAIA,EAAQM,GAC5CvF,EAAQC,KAAOC,EAAYe,SACpCqE,EAAatF,EAAQK,SAAW2E,EAAQhF,EAAQY,GAAKZ,EAAQY,GAC7D2E,EAAavF,EAAQK,SAAW4E,EAAQjF,EAAQa,GAAKb,EAAQe,KAE7DuE,EAAaF,IACbG,EAAaH,KAGXpF,EAAQC,KAAOC,EAAYkI,eAC7BpI,EAAQC,KAAOC,EAAYiB,MAAQ,IAAMnB,EAAQqB,IAAM,IAAMrB,EAAQsB,KAAOtB,EAAQwB,WACpFxB,EAAQC,KAAOC,EAAYS,UAAYX,EAAQC,KAAOC,EAAYc,iBAClEhB,EAAQC,KAAOC,EAAYe,SAAWjB,EAAQC,KAAOC,EAAYgB,eAAgB,CACjF,IAAMmH,OAAO,IAAuBrI,EAAQM,EAAI,EAC7CN,EAAQK,SAAWL,EAAQM,EAAIN,EAAQM,EAAI0E,EACxCsD,OAAO,IAAuBtI,EAAQQ,EAAI,EAC7CR,EAAQK,SAAWL,EAAQQ,EAAIR,EAAQQ,EAAIyE,EAE9CiD,EAAS1C,MAAMF,QACb,IAAuBtF,EAAQY,GAAKsH,EAClClI,EAAQK,SAAWL,EAAQM,EACzBN,EAAQY,GAAKoE,EAHUM,EAAaN,EAI1CmD,EAAS3C,MAAMD,QACb,IAAuBvF,EAAQa,GAAKsH,EAClCnI,EAAQK,SAAWL,EAAQQ,EACzBR,EAAQa,GAAKoE,EAHUM,EAAaN,EAK1C,IAAMsD,OAAQ,IAAuBvI,EAAQc,GAAK,EAC/Cd,EAAQK,SAAWL,EAAQM,EAAIN,EAAQc,GAAKkE,EACzCwD,OAAQ,IAAuBxI,EAAQe,GAAK,EAC/Cf,EAAQK,SAAWL,EAAQQ,EAAIR,EAAQe,GAAKkE,EAE3C3C,EAAI+F,IAASjE,GAAO9B,EAAIgG,IAASlE,GACnC9B,EAAI4F,IAAU9D,GAAO9B,EAAI6F,IAAU/D,GACnC9B,EAAIiG,IAAUnE,GAAO9B,EAAIkG,IAAUpE,IACnC6D,GAAO,GAUX,OANIjI,EAAQC,KAAOC,EAAYC,YACzBmC,EAAI0C,EAAQoB,IAAehC,GAAO9B,EAAI2C,EAAQ+C,IAAe5D,IAC/D6D,GAAO,GAIJA,EAAO,GAAKjI,MAOP2D,WA0HAA,SAAhB,SAAuBH,EAAWlD,EAAOE,gBAAPF,kBAAOE,KACvCwB,EAAcwB,EAAGlD,EAAGE,GACpB,IAAMuB,EAAMF,KAAKE,IAAIyB,GACf1B,EAAMD,KAAKC,IAAI0B,GAErB,OAAO0C,EAAOpE,EAAKC,GAAMA,EAAKD,EAAKxB,EAAIA,EAAIwB,EAAMtB,EAAIuB,EAAKvB,EAAIF,EAAIyB,EAAMvB,EAAIsB,IAE9D6B,YAAhB,SAA0B8E,EAAYC,GAEpC,oBAFoCA,KACpC1G,EAAcyG,EAAIC,GACXxC,EAAO,EAAG,EAAG,EAAG,EAAGuC,EAAIC,IAEhB/E,QAAhB,SAAsB8E,EAAYC,GAEhC,oBAFgCA,KAChC1G,EAAcyG,EAAIC,GACXxC,EAAOuC,EAAI,EAAG,EAAGC,EAAI,EAAG,IAEjB/E,SAAhB,SAAuBH,GAErB,OADAxB,EAAcwB,GACP0C,EAAO,EAAG,EAAGrE,KAAK8G,KAAKnF,GAAI,EAAG,EAAG,IAE1BG,SAAhB,SAAuBH,GAErB,OADAxB,EAAcwB,GACP0C,EAAO,EAAGrE,KAAK8G,KAAKnF,GAAI,EAAG,EAAG,EAAG,IAE1BG,kBAAhB,SAAgCiF,GAE9B,oBAF8BA,KAC9B5G,EAAc4G,GACP1C,GAAQ,EAAG,EAAG,EAAG,EAAG0C,EAAS,IAEtBjF,kBAAhB,SAAgCkF,GAE9B,oBAF8BA,KAC9B7G,EAAc6G,GACP3C,EAAO,EAAG,EAAG,GAAI,EAAG,EAAG2C,IAGhBlF,SAAhB,WACE,OAAOoB,GAAK,SAAC/E,EAASgF,EAAOC,GAC3B,OAAI/E,EAAYiB,MAAQnB,EAAQC,cD3UlB6I,EAAe5E,EAAY6E,eACxCD,EAAI5F,IACPd,EAAmB0G,EAAK5E,EAAI6E,GAQ9B,IALA,IAAMC,EAASnH,KAAKoH,IAAIH,EAAI1F,KAAO0F,EAAIxF,MAAiD4F,EAAhCrH,KAAKiB,IAAIgG,EAAI1F,KAAO0F,EAAIxF,MAA4B0F,EACtGG,EAAYtH,KAAKuH,KAAKF,EAAW,IAEjCjD,EAAqB,IAAInH,MAAMqK,GACjCnE,EAAQd,EAAIe,EAAQ8D,EACfjJ,EAAI,EAAGA,EAAIqJ,EAAWrJ,IAAK,CAClC,IAAMuJ,EAAWxF,EAAKiF,EAAI1F,KAAO0F,EAAIxF,KAAOxD,EAAIqJ,GAC1CG,EAASzF,EAAKiF,EAAI1F,KAAO0F,EAAIxF,MAAQxD,EAAI,GAAKqJ,GAC9CI,EAAWD,EAASD,EACpBzD,EAAI,EAAI,EAAI/D,KAAK2H,IAAID,EAAW3F,EAAM,GAEtC6F,EAAW,CACf5H,KAAKC,IAAIuH,EAAWzF,GAAOgC,EAAI/D,KAAKE,IAAIsH,EAAWzF,GACnD/B,KAAKE,IAAIsH,EAAWzF,GAAOgC,EAAI/D,KAAKC,IAAIuH,EAAWzF,IAF9ChD,OAAIC,OAGL6I,EAAS,CAAC7H,KAAKC,IAAIwH,EAAS1F,GAAM/B,KAAKE,IAAIuH,EAAS1F,IAAnDtD,OAAGE,OACJmJ,EAAW,CAACrJ,EAAIsF,EAAI/D,KAAKE,IAAIuH,EAAS1F,GAAMpD,EAAIoF,EAAI/D,KAAKC,IAAIwH,EAAS1F,IAArE9C,OAAIC,OACXkF,EAAOnG,GAAK,CAACO,SAAUyI,EAAIzI,SAAUJ,KAAMC,EAAYS,UACvD,IAAMiJ,EAAY,SAACtJ,EAAWE,GACtB,IAAAmB,EAAiBD,EAAO,CAACpB,EAAIwI,EAAIzH,GAAIb,EAAIsI,EAAIxH,IAAKwH,EAAIvH,MAArDsI,OAAOC,OACd,MAAO,CAAChB,EAAI5F,GAAM2G,EAAOf,EAAI3F,GAAM2G,IAErCnI,EAA+BiI,EAAUhJ,EAAIC,GAA5CoF,EAAOnG,GAAGc,QAAIqF,EAAOnG,GAAGe,QACzBkJ,EAA+BH,EAAU9I,EAAIC,GAA5CkF,EAAOnG,GAAGgB,QAAImF,EAAOnG,GAAGiB,QACzBiJ,EAA6BJ,EAAUtJ,EAAGE,GAAzCyF,EAAOnG,GAAGQ,OAAG2F,EAAOnG,GAAGU,OACpBsI,EAAIzI,WACN4F,EAAOnG,GAAGc,IAAMoE,EAChBiB,EAAOnG,GAAGe,IAAMoE,EAChBgB,EAAOnG,GAAGgB,IAAMkE,EAChBiB,EAAOnG,GAAGiB,IAAMkE,EAChBgB,EAAOnG,GAAGQ,GAAK0E,EACfiB,EAAOnG,GAAGU,GAAKyE,GAEhBD,GAADiF,EAAiB,CAAChE,EAAOnG,GAAGQ,EAAG2F,EAAOnG,GAAGU,OAAjCyE,OAEV,OAAOgB,ECqSMiE,CAAIlK,EAASA,EAAQK,SAAW,EAAI2E,EAAOhF,EAAQK,SAAW,EAAI4E,GAEpEjF,MAIK2D,gBAAhB,WACE,OAAOoB,GAAK,SAAC1C,EAAGzB,EAAIC,GAQlB,OAPIwB,EAAEhC,WACJO,EAAK,EACLC,EAAK,GAEHX,EAAYiB,MAAQkB,EAAEpC,MACxBmC,EAAmBC,EAAGzB,EAAIC,GAErBwB,MAGKsB,UAWAA,mBAAhB,WACE,IAAMwG,EAXC,SAAC9H,GACN,IAAM4D,EAAS,GAEf,IAAK,IAAMuB,KAAOnF,EAChB4D,EAAOuB,GAA2BnF,EAAEmF,GAEtC,OAAOvB,GAMHmE,EAAQtF,IACRuF,EAAQ5E,IACR6E,EAASpF,IACTU,EACFb,GAAK,SAAC/E,EAAS6F,EAAUC,GAC3B,IAAMzD,EAAIiI,EAAOD,EAAMD,EAAMD,EAAMnK,MACnC,SAASuK,EAAKC,GACRA,EAAO5E,EAAE6E,OAAQ7E,EAAE6E,KAAOD,GAC1BA,EAAO5E,EAAE8E,OAAQ9E,EAAE8E,KAAOF,GAEhC,SAASG,EAAKC,GACRA,EAAOhF,EAAEiF,OAAQjF,EAAEiF,KAAOD,GAC1BA,EAAOhF,EAAEkF,OAAQlF,EAAEkF,KAAOF,GAgBhC,GAdIvI,EAAEpC,KAAOC,EAAY6K,mBACvBR,EAAK1E,GACL8E,EAAK7E,IAEHzD,EAAEpC,KAAOC,EAAYE,eACvBmK,EAAKlI,EAAE/B,GAEL+B,EAAEpC,KAAOC,EAAYK,cACvBoK,EAAKtI,EAAE7B,GAEL6B,EAAEpC,KAAOC,EAAYQ,UACvB6J,EAAKlI,EAAE/B,GACPqK,EAAKtI,EAAE7B,IAEL6B,EAAEpC,KAAOC,EAAYS,SAAU,CAEjC4J,EAAKlI,EAAE/B,GACPqK,EAAKtI,EAAE7B,GAGP,IAFA,QAEwBwK,EAFJ/G,EAAW4B,EAAUxD,EAAEzB,GAAIyB,EAAEvB,GAAIuB,EAAE/B,GAE/B2B,WAAAA,IAAa,CAC/B,GADKgJ,SACY,EAAIA,GACvBV,EAAK3F,EAASiB,EAAUxD,EAAEzB,GAAIyB,EAAEvB,GAAIuB,EAAE/B,EAAG2K,IAK7C,IAFA,QAEwBC,EAFJjH,EAAW6B,EAAUzD,EAAExB,GAAIwB,EAAEtB,GAAIsB,EAAE7B,GAE/BmB,WAAAA,IAAa,CAC/B,GADKsJ,SACY,EAAIA,GACvBN,EAAK/F,EAASkB,EAAUzD,EAAExB,GAAIwB,EAAEtB,GAAIsB,EAAE7B,EAAGyK,KAI/C,GAAI5I,EAAEpC,KAAOC,EAAYiB,IAAK,CAE5BoJ,EAAKlI,EAAE/B,GACPqK,EAAKtI,EAAE7B,GACP4B,EAAmBC,EAAGwD,EAAUC,GAwBhC,IArBA,IAAMqF,EAAU9I,EAAEd,KAAO,IAAMM,KAAKM,GAE9B+B,EAAKrC,KAAKC,IAAIqJ,GAAW9I,EAAEhB,GAC3B0H,EAAKlH,KAAKE,IAAIoJ,GAAW9I,EAAEhB,GAC3B+J,GAAOvJ,KAAKE,IAAIoJ,GAAW9I,EAAEf,GAC7B+J,EAAMxJ,KAAKC,IAAIqJ,GAAW9I,EAAEf,GAI5ByI,EAAmB1H,EAAEe,KAAOf,EAAEiB,KAClC,CAACjB,EAAEe,KAAMf,EAAEiB,OACT,IAAMjB,EAAEiB,KAAO,CAACjB,EAAEiB,KAAO,IAAKjB,EAAEe,KAAO,KAAO,CAACf,EAAEiB,KAAMjB,EAAEe,MAFtDkI,OAAQC,OAGTC,EAAiB,SAAC7J,OAAC8J,OAAIC,OAErBC,EAAe,IADN9J,KAAKwB,MAAMqI,EAAKD,GACJ5J,KAAKM,GAEhC,OAAOwJ,EAAML,EAASK,EAAM,IAAMA,OAKZC,EADJrI,EAA2B6H,GAAMlH,EAAI,GAAG2H,IAAIL,GACxCxB,WAAAA,IAAa,EAA1BiB,QACOK,GAAUL,EAAYM,GACpChB,EAAKxG,EAAM1B,EAAEa,GAAIgB,EAAIkH,EAAKH,IAK9B,IADA,QACwBa,EADJvI,EAA2B8H,GAAMtC,EAAI,GAAG8C,IAAIL,GACxCvB,WAAAA,IAAa,CAAhC,IAAMgB,GAAAA,QACOK,GAAUL,EAAYM,GACpCZ,EAAK5G,EAAM1B,EAAEc,GAAI4F,EAAIsC,EAAKJ,KAIhC,OAAOjL,KAOT,OAJA4F,EAAE8E,KAAOqB,EAAAA,EACTnG,EAAE6E,MAAQsB,EAAAA,EACVnG,EAAEkF,KAAOiB,EAAAA,EACTnG,EAAEiF,MAAQkB,EAAAA,EACHnG,GAjmBX,CAAiBjC,IAAAA,OCLjB,mBAAA,cAsEA,OArEEqI,kBAAA,SAAM1L,GACJ,OAAOf,KAAKqK,UAAUjG,EAAuBsI,MAAM3L,KAGrD0L,kBAAA,WACE,OAAOzM,KAAKqK,UAAUjG,EAAuBmB,WAG/CkH,kBAAA,WACE,OAAOzM,KAAKqK,UAAUjG,EAAuBuI,WAG/CF,yBAAA,SAAaxI,EAAa9E,EAAa2D,GACrC,OAAO9C,KAAKqK,UAAUjG,EAAuBwI,cAAc3I,EAAG9E,EAAG2D,KAGnE2J,wBAAA,WACE,OAAOzM,KAAKqK,UAAUjG,EAAuBuB,iBAG/C8G,kBAAA,WACE,OAAOzM,KAAKqK,UAAUjG,EAAuB8B,YAG/CuG,iBAAA,WACE,OAAOzM,KAAKqK,UAAUjG,EAAuByI,WAG/CJ,qBAAA,SAASK,GACP,OAAO9M,KAAKqK,UAAUjG,EAAuB2I,SAASD,KAGxDL,sBAAA,SAAU1L,EAAWE,GACnB,OAAOjB,KAAKqK,UAAUjG,EAAuB4I,UAAUjM,EAAGE,KAG5DwL,kBAAA,SAAM1L,EAAWE,GACf,OAAOjB,KAAKqK,UAAUjG,EAAuB6I,MAAMlM,EAAGE,KAGxDwL,mBAAA,SAAOxI,EAAWlD,EAAYE,GAC5B,OAAOjB,KAAKqK,UAAUjG,EAAuB8I,OAAOjJ,EAAGlD,EAAGE,KAG5DwL,mBAAA,SAAOxI,EAAW9E,EAAW2D,EAAW5D,EAAW0H,EAAWP,GAC5D,OAAOrG,KAAKqK,UAAUjG,EAAuBuC,OAAO1C,EAAG9E,EAAG2D,EAAG5D,EAAG0H,EAAGP,KAGrEoG,kBAAA,SAAMxI,GACJ,OAAOjE,KAAKqK,UAAUjG,EAAuB+I,OAAOlJ,KAGtDwI,kBAAA,SAAMxI,GACJ,OAAOjE,KAAKqK,UAAUjG,EAAuBgJ,OAAOnJ,KAGtDwI,sBAAA,SAAUpD,GACR,OAAOrJ,KAAKqK,UAAUjG,EAAuBiJ,gBAAgBhE,KAG/DoD,sBAAA,SAAUnD,GACR,OAAOtJ,KAAKqK,UAAUjG,EAAuBkJ,gBAAgBhE,KAG/DmD,yBAAA,WACE,OAAOzM,KAAKqK,UAAUjG,EAAuBmJ,uBC/D3CC,EAAe,SAAC1K,GACpB,MAAA,MAAQA,GAAK,OAASA,GAAK,OAASA,GAAK,OAASA,GAC9C2K,EAAU,SAAC3K,GACf,MAAA,IAAI4K,WAAW,IAAM5K,EAAE4K,WAAW,IAAM5K,EAAE4K,WAAW,IAAM,IAAIA,WAAW,kBAa1E,aAAA,MACEC,0BAVMC,YAAoB,GACpBA,kBAA2C,EAC3CA,sBAAqB,EACrBA,0BAAyB,EACzBA,mBAAkB,EAClBA,yBAAwB,EACxBA,uBAAsB,EACtBA,UAAoB,KA6Q9B,OArRuChO,OAcrCiO,mBAAA,SAAOzN,GAGL,gBAHKA,MACLJ,KAAK8N,MAAM,IAAK1N,GAEZ,IAAMJ,KAAK+N,QAAQvN,SAAWR,KAAKgO,uBACrC,MAAM,IAAIC,YAAY,yCAExB,OAAO7N,GAGTyN,kBAAA,SAAMxN,EAAaD,GAAnB,wBAAmBA,MAOjB,IANA,IAAM8N,EAAgB,SAACzN,GACrBL,EAAS+N,KAAK1N,GACdmN,EAAKG,QAAQvN,OAAS,EACtBoN,EAAKI,wBAAyB,GAGvBzN,EAAI,EAAGA,EAAIF,EAAIG,OAAQD,IAAK,CACnC,IAAMuC,EAAIzC,EAAIE,GAER6N,IAAapO,KAAKqO,iBAAmB1N,EAAYiB,KAC5B,IAAxB5B,KAAK+N,QAAQvN,QAAwC,IAAxBR,KAAK+N,QAAQvN,QACjB,IAA1BR,KAAKsO,UAAU9N,QACK,MAAnBR,KAAKsO,WAAwC,MAAnBtO,KAAKsO,WAC5BC,EAAgBd,EAAQ3K,KACR,MAAnB9C,KAAKsO,WAA2B,MAANxL,GAC3BsL,GAGF,IACEX,EAAQ3K,IACPyL,EAMH,GAAI,MAAQzL,GAAK,MAAQA,EAKzB,GACG,MAAQA,GAAK,MAAQA,IACtB9C,KAAKwO,iBACJxO,KAAKyO,sBAMR,GAAI,MAAQ3L,GAAM9C,KAAKwO,iBAAoBxO,KAAK0O,qBAAwBN,EAAxE,CAOA,GAAIpO,KAAKsO,YAAc,IAAMtO,KAAKqO,eAAgB,CAChD,IAAMjG,EAAMuG,OAAO3O,KAAKsO,WACxB,GAAIrI,MAAMmC,GACR,MAAM,IAAI6F,YAAY,4BAA4B1N,GAEpD,GAAIP,KAAKqO,iBAAmB1N,EAAYiB,IACtC,GAAI,IAAM5B,KAAK+N,QAAQvN,QAAU,IAAMR,KAAK+N,QAAQvN,QAClD,GAAI,EAAI4H,EACN,MAAM,IAAI6F,YACR,kCAAkC7F,iBAAkB7H,YAGnD,IAAI,IAAMP,KAAK+N,QAAQvN,QAAU,IAAMR,KAAK+N,QAAQvN,SACrD,MAAQR,KAAKsO,WAAa,MAAQtO,KAAKsO,UACzC,MAAM,IAAIL,YACR,yBAAyBjO,KAAKsO,yBAAwB/N,OAK9DP,KAAK+N,QAAQI,KAAK/F,GACdpI,KAAK+N,QAAQvN,SAAWoO,EAAmB5O,KAAKqO,kBAC9C1N,EAAYE,gBAAkBb,KAAKqO,eACrCH,EAAc,CACZxN,KAAMC,EAAYE,cAClBC,SAAUd,KAAK6O,mBACf9N,EAAGqH,IAEIzH,EAAYK,eAAiBhB,KAAKqO,eAC3CH,EAAc,CACZxN,KAAMC,EAAYK,aAClBF,SAAUd,KAAK6O,mBACf5N,EAAGmH,IAILpI,KAAKqO,iBAAmB1N,EAAYO,SACpClB,KAAKqO,iBAAmB1N,EAAYQ,SACpCnB,KAAKqO,iBAAmB1N,EAAYgB,gBAEpCuM,EAAc,CACZxN,KAAMV,KAAKqO,eACXvN,SAAUd,KAAK6O,mBACf9N,EAAGf,KAAK+N,QAAQ,GAChB9M,EAAGjB,KAAK+N,QAAQ,KAGdpN,EAAYO,UAAYlB,KAAKqO,iBAC/BrO,KAAKqO,eAAiB1N,EAAYQ,UAE3BnB,KAAKqO,iBAAmB1N,EAAYS,SAC7C8M,EAAc,CACZxN,KAAMC,EAAYS,SAClBN,SAAUd,KAAK6O,mBACfxN,GAAIrB,KAAK+N,QAAQ,GACjBzM,GAAItB,KAAK+N,QAAQ,GACjBxM,GAAIvB,KAAK+N,QAAQ,GACjBvM,GAAIxB,KAAK+N,QAAQ,GACjBhN,EAAGf,KAAK+N,QAAQ,GAChB9M,EAAGjB,KAAK+N,QAAQ,KAET/N,KAAKqO,iBAAmB1N,EAAYc,gBAC7CyM,EAAc,CACZxN,KAAMC,EAAYc,gBAClBX,SAAUd,KAAK6O,mBACftN,GAAIvB,KAAK+N,QAAQ,GACjBvM,GAAIxB,KAAK+N,QAAQ,GACjBhN,EAAGf,KAAK+N,QAAQ,GAChB9M,EAAGjB,KAAK+N,QAAQ,KAET/N,KAAKqO,iBAAmB1N,EAAYe,QAC7CwM,EAAc,CACZxN,KAAMC,EAAYe,QAClBZ,SAAUd,KAAK6O,mBACfxN,GAAIrB,KAAK+N,QAAQ,GACjBzM,GAAItB,KAAK+N,QAAQ,GACjBhN,EAAGf,KAAK+N,QAAQ,GAChB9M,EAAGjB,KAAK+N,QAAQ,KAET/N,KAAKqO,iBAAmB1N,EAAYiB,KAC7CsM,EAAc,CACZxN,KAAMC,EAAYiB,IAClBd,SAAUd,KAAK6O,mBACf/M,GAAI9B,KAAK+N,QAAQ,GACjBhM,GAAI/B,KAAK+N,QAAQ,GACjB/L,KAAMhC,KAAK+N,QAAQ,GACnB9L,SAAUjC,KAAK+N,QAAQ,GACvB7L,UAAWlC,KAAK+N,QAAQ,GACxBhN,EAAGf,KAAK+N,QAAQ,GAChB9M,EAAGjB,KAAK+N,QAAQ,MAItB/N,KAAKsO,UAAY,GACjBtO,KAAKyO,uBAAwB,EAC7BzO,KAAKwO,iBAAkB,EACvBxO,KAAK0O,qBAAsB,EAC3B1O,KAAKgO,wBAAyB,EAGhC,IAAIR,EAAa1K,GAGjB,GAAI,MAAQA,GAAK9C,KAAKgO,uBAEpBhO,KAAKgO,wBAAyB,OAIhC,GAAI,MAAQlL,GAAK,MAAQA,GAAK,MAAQA,EAMtC,GAAIyL,EACFvO,KAAKsO,UAAYxL,EACjB9C,KAAK0O,qBAAsB,MAF7B,CAOA,GAAI,IAAM1O,KAAK+N,QAAQvN,OACrB,MAAM,IAAIyN,YAAY,iCAAiC1N,OAEzD,IAAKP,KAAKgO,uBACR,MAAM,IAAIC,YACR,yBAAyBnL,gBAAevC,mCAK5C,GAFAP,KAAKgO,wBAAyB,EAE1B,MAAQlL,GAAK,MAAQA,EAQlB,GAAI,MAAQA,GAAK,MAAQA,EAC9B9C,KAAKqO,eAAiB1N,EAAYE,cAClCb,KAAK6O,mBAAqB,MAAQ/L,OAE7B,GAAI,MAAQA,GAAK,MAAQA,EAC9B9C,KAAKqO,eAAiB1N,EAAYK,aAClChB,KAAK6O,mBAAqB,MAAQ/L,OAE7B,GAAI,MAAQA,GAAK,MAAQA,EAC9B9C,KAAKqO,eAAiB1N,EAAYO,QAClClB,KAAK6O,mBAAqB,MAAQ/L,OAE7B,GAAI,MAAQA,GAAK,MAAQA,EAC9B9C,KAAKqO,eAAiB1N,EAAYQ,QAClCnB,KAAK6O,mBAAqB,MAAQ/L,OAE7B,GAAI,MAAQA,GAAK,MAAQA,EAC9B9C,KAAKqO,eAAiB1N,EAAYS,SAClCpB,KAAK6O,mBAAqB,MAAQ/L,OAE7B,GAAI,MAAQA,GAAK,MAAQA,EAC9B9C,KAAKqO,eAAiB1N,EAAYc,gBAClCzB,KAAK6O,mBAAqB,MAAQ/L,OAE7B,GAAI,MAAQA,GAAK,MAAQA,EAC9B9C,KAAKqO,eAAiB1N,EAAYe,QAClC1B,KAAK6O,mBAAqB,MAAQ/L,OAE7B,GAAI,MAAQA,GAAK,MAAQA,EAC9B9C,KAAKqO,eAAiB1N,EAAYgB,eAClC3B,KAAK6O,mBAAqB,MAAQ/L,MAE7B,CAAA,GAAI,MAAQA,GAAK,MAAQA,EAI9B,MAAM,IAAImL,YAAY,yBAAyBnL,gBAAevC,OAH9DP,KAAKqO,eAAiB1N,EAAYiB,IAClC5B,KAAK6O,mBAAqB,MAAQ/L,OAzClC1C,EAAS+N,KAAK,CACZzN,KAAMC,EAAYC,aAEpBZ,KAAKgO,wBAAyB,EAC9BhO,KAAKqO,gBAAkB,OA3BvBrO,KAAKsO,UAAYxL,EACjB9C,KAAK0O,oBAAsB,MAAQ5L,OArHnC9C,KAAKsO,WAAaxL,EAClB9C,KAAK0O,qBAAsB,OAN3B1O,KAAKsO,WAAaxL,OATlB9C,KAAKsO,WAAaxL,EAClB9C,KAAKwO,iBAAkB,OANvBxO,KAAKsO,WAAaxL,EAClB9C,KAAKyO,sBAAwBzO,KAAKwO,gBA2MtC,OAAOpO,GAKTyN,sBAAA,SAAUxD,GAoBR,OAnBejL,OAAOc,OAAOF,KAAM,CACjC8N,MAAO,CACLgB,MAAA,SAAMC,EAAe3O,gBAAAA,MAKnB,IAJA,QAIgB4O,EAJO5P,OAAO6P,eAAejP,MAAM8N,MAAMnO,KACvDK,KACA+O,GAEcrM,WAAAA,IAAgB,CAA3B,IAAMI,OACHoM,EAAK7E,EAAUvH,GACjBvD,MAAMe,QAAQ4O,GAChB9O,EAAS+N,WAAT/N,EAAiB8O,GAEjB9O,EAAS+N,KAAKe,GAGlB,OAAO9O,UA/QsBqM,iBCJrC,WAAY0C,GAAZ,MACExB,0BAEEC,EAAKxN,SADH,iBAAoB+O,EACNxO,EAAYmN,MAAMqB,GAElBA,IA2DtB,OAlEiCvP,OAW/Be,mBAAA,WACE,OAAOA,EAAYyO,OAAOpP,KAAKI,WAGjCO,sBAAA,WACE,IAAM0O,EAAkBjL,EAAuBkL,mBAG/C,OADAtP,KAAKqK,UAAUgF,GACRA,GAGT1O,sBAAA,SACE4O,GAIA,IAFA,IAAMC,EAAc,OAEEpN,EAAApC,KAAKI,SAALsC,WAAAA,IAAe,CAAhC,IACG+M,EAAqBF,QAEvBhQ,MAAMe,QAAQmP,GAChBD,EAAYrB,WAAZqB,EAAoBC,GAEpBD,EAAYrB,KAAKsB,GAIrB,OADAzP,KAAKI,SAAWoP,EACTxP,MAGFW,SAAP,SAAcP,GACZ,OAAOD,EAAcC,IAGhBO,QAAP,SAAa+O,GACX,IAAMC,EAAS,IAAI9B,EACbzN,EAAyB,GAG/B,OAFAuP,EAAO7B,MAAM4B,EAAMtP,GACnBuP,EAAOC,OAAOxP,GACPA,GAGOO,aAAgB,EAChBA,UAAa,EACbA,gBAAmB,EACnBA,eAAkB,EAClBA,UAAc,GACdA,WAAe,GACfA,kBAAsB,GACtBA,UAAe,IACfA,iBAAsB,IACtBA,MAAW,IACXA,gBAAgBA,EAAYQ,QAAUR,EAAYE,cAAgBF,EAAYK,aAC9EL,mBAAmBA,EAAYE,cAAgBF,EAAYK,aAAeL,EAAYQ,QACtGR,EAAYS,SAAWT,EAAYc,gBAAkBd,EAAYe,QACjEf,EAAYgB,eAAiBhB,EAAYiB,OAjEV6K,GAoEpBmC,UACRjO,EAAYO,SAAU,EACvBkB,EAACzB,EAAYQ,SAAU,EACvBiB,EAACzB,EAAYE,eAAgB,EAC7BuB,EAACzB,EAAYK,cAAe,EAC5BoB,EAACzB,EAAYC,YAAa,EAC1BwB,EAACzB,EAAYe,SAAU,EACvBU,EAACzB,EAAYgB,gBAAiB,EAC9BS,EAACzB,EAAYS,UAAW,EACxBgB,EAACzB,EAAYc,iBAAkB,EAC/BW,EAACzB,EAAYiB,KAAM"}
\ No newline at end of file
diff --git a/node_modules/svg-pathdata/lib/SVGPathDataEncoder.d.ts b/node_modules/svg-pathdata/lib/SVGPathDataEncoder.d.ts
new file mode 100644
index 0000000..127ba33
--- /dev/null
+++ b/node_modules/svg-pathdata/lib/SVGPathDataEncoder.d.ts
@@ -0,0 +1,2 @@
+import { SVGCommand } from "./types";
+export declare function encodeSVGPath(commands: SVGCommand | SVGCommand[]): string;
diff --git a/node_modules/svg-pathdata/lib/SVGPathDataParser.d.ts b/node_modules/svg-pathdata/lib/SVGPathDataParser.d.ts
new file mode 100644
index 0000000..89b3a9c
--- /dev/null
+++ b/node_modules/svg-pathdata/lib/SVGPathDataParser.d.ts
@@ -0,0 +1,19 @@
+import { TransformableSVG } from "./TransformableSVG";
+import { SVGCommand, TransformFunction } from "./types";
+export declare class SVGPathDataParser extends TransformableSVG {
+    private curNumber;
+    private curCommandType;
+    private curCommandRelative;
+    private canParseCommandOrComma;
+    private curNumberHasExp;
+    private curNumberHasExpDigits;
+    private curNumberHasDecimal;
+    private curArgs;
+    constructor();
+    finish(commands?: SVGCommand[]): SVGCommand[];
+    parse(str: string, commands?: SVGCommand[]): SVGCommand[];
+    /**
+     * Return a wrapper around this parser which applies the transformation on parsed commands.
+     */
+    transform(transform: TransformFunction): this;
+}
diff --git a/node_modules/svg-pathdata/lib/SVGPathDataTransformer.d.ts b/node_modules/svg-pathdata/lib/SVGPathDataTransformer.d.ts
new file mode 100644
index 0000000..76a9d2a
--- /dev/null
+++ b/node_modules/svg-pathdata/lib/SVGPathDataTransformer.d.ts
@@ -0,0 +1,28 @@
+import { SVGCommand, TransformFunction } from "./types";
+export declare namespace SVGPathDataTransformer {
+    function ROUND(roundVal?: number): (command: any) => any;
+    function TO_ABS(): (command: any) => any;
+    function TO_REL(): (command: any) => any;
+    function NORMALIZE_HVZ(normalizeZ?: boolean, normalizeH?: boolean, normalizeV?: boolean): (command: any) => any;
+    function NORMALIZE_ST(): (command: any) => any;
+    function QT_TO_C(): (command: any) => any;
+    function INFO(f: (command: any, prevXAbs: number, prevYAbs: number, pathStartXAbs: number, pathStartYAbs: number) => any | any[]): (command: any) => any;
+    function SANITIZE(EPS?: number): (command: any) => any;
+    function MATRIX(a: number, b: number, c: number, d: number, e: number, f: number): (command: any) => any;
+    function ROTATE(a: number, x?: number, y?: number): (command: any) => any;
+    function TRANSLATE(dX: number, dY?: number): (command: any) => any;
+    function SCALE(dX: number, dY?: number): (command: any) => any;
+    function SKEW_X(a: number): (command: any) => any;
+    function SKEW_Y(a: number): (command: any) => any;
+    function X_AXIS_SYMMETRY(xOffset?: number): (command: any) => any;
+    function Y_AXIS_SYMMETRY(yOffset?: number): (command: any) => any;
+    function A_TO_C(): (command: any) => any;
+    function ANNOTATE_ARCS(): (command: any) => any;
+    function CLONE(): (c: SVGCommand) => SVGCommand;
+    function CALCULATE_BOUNDS(): TransformFunction & {
+        minX: number;
+        maxX: number;
+        minY: number;
+        maxY: number;
+    };
+}
diff --git a/node_modules/svg-pathdata/lib/TransformableSVG.d.ts b/node_modules/svg-pathdata/lib/TransformableSVG.d.ts
new file mode 100644
index 0000000..1b85391
--- /dev/null
+++ b/node_modules/svg-pathdata/lib/TransformableSVG.d.ts
@@ -0,0 +1,21 @@
+import { TransformFunction } from "./types";
+export declare abstract class TransformableSVG {
+    round(x?: number): this;
+    toAbs(): this;
+    toRel(): this;
+    normalizeHVZ(a?: boolean, b?: boolean, c?: boolean): this;
+    normalizeST(): this;
+    qtToC(): this;
+    aToC(): this;
+    sanitize(eps?: number): this;
+    translate(x: number, y?: number): this;
+    scale(x: number, y?: number): this;
+    rotate(a: number, x?: number, y?: number): this;
+    matrix(a: number, b: number, c: number, d: number, e: number, f: number): this;
+    skewX(a: number): this;
+    skewY(a: number): this;
+    xSymmetry(xOffset?: number): this;
+    ySymmetry(yOffset?: number): this;
+    annotateArcs(): this;
+    abstract transform(transformFunction: TransformFunction): this;
+}
diff --git a/node_modules/svg-pathdata/lib/mathUtils.d.ts b/node_modules/svg-pathdata/lib/mathUtils.d.ts
new file mode 100644
index 0000000..d4cdef5
--- /dev/null
+++ b/node_modules/svg-pathdata/lib/mathUtils.d.ts
@@ -0,0 +1,28 @@
+import { CommandA, CommandC } from "./types";
+export declare function rotate([x, y]: [number, number], rad: number): number[];
+export declare function assertNumbers(...numbers: number[]): boolean;
+/**
+ * https://www.w3.org/TR/SVG/implnote.html#ArcImplementationNotes
+ * Fixes rX and rY.
+ * Ensures lArcFlag and sweepFlag are 0 or 1
+ * Adds center coordinates: command.cX, command.cY (relative or absolute, depending on command.relative)
+ * Adds start and end arc parameters (in degrees): command.phi1, command.phi2; phi1 < phi2 iff. c.sweepFlag == true
+ */
+export declare function annotateArcCommand(c: CommandA, x1: number, y1: number): void;
+/**
+ * Solves a quadratic system of equations of the form
+ *      a * x + b * y = c
+ *      x² + y² = 1
+ * This can be understood as the intersection of the unit circle with a line.
+ *      => y = (c - a x) / b
+ *      => x² + (c - a x)² / b² = 1
+ *      => x² b² + c² - 2 c a x + a² x² = b²
+ *      => (a² + b²) x² - 2 a c x + (c² - b²) = 0
+ */
+export declare function intersectionUnitCircleLine(a: number, b: number, c: number): [number, number][];
+export declare const DEG: number;
+export declare function lerp(a: number, b: number, t: number): number;
+export declare function arcAt(c: number, x1: number, x2: number, phiDeg: number): number;
+export declare function bezierRoot(x0: number, x1: number, x2: number, x3: number): number[];
+export declare function bezierAt(x0: number, x1: number, x2: number, x3: number, t: number): number;
+export declare function a2c(arc: CommandA, x0: number, y0: number): CommandC[];
diff --git a/node_modules/svg-pathdata/lib/types.d.ts b/node_modules/svg-pathdata/lib/types.d.ts
new file mode 100644
index 0000000..19ebd42
--- /dev/null
+++ b/node_modules/svg-pathdata/lib/types.d.ts
@@ -0,0 +1,75 @@
+import { SVGPathData } from "./SVGPathData";
+export declare type CommandM = {
+    relative: boolean;
+    type: typeof SVGPathData.MOVE_TO;
+    x: number;
+    y: number;
+};
+export declare type CommandL = {
+    relative: boolean;
+    type: typeof SVGPathData.LINE_TO;
+    x: number;
+    y: number;
+};
+export declare type CommandH = {
+    relative: boolean;
+    type: typeof SVGPathData.HORIZ_LINE_TO;
+    x: number;
+};
+export declare type CommandV = {
+    relative: boolean;
+    type: typeof SVGPathData.VERT_LINE_TO;
+    y: number;
+};
+export declare type CommandZ = {
+    type: typeof SVGPathData.CLOSE_PATH;
+};
+export declare type CommandQ = {
+    relative: boolean;
+    type: typeof SVGPathData.QUAD_TO;
+    x1: number;
+    y1: number;
+    x: number;
+    y: number;
+};
+export declare type CommandT = {
+    relative: boolean;
+    type: typeof SVGPathData.SMOOTH_QUAD_TO;
+    x: number;
+    y: number;
+};
+export declare type CommandC = {
+    relative: boolean;
+    type: typeof SVGPathData.CURVE_TO;
+    x1: number;
+    y1: number;
+    x2: number;
+    y2: number;
+    x: number;
+    y: number;
+};
+export declare type CommandS = {
+    relative: boolean;
+    type: typeof SVGPathData.SMOOTH_CURVE_TO;
+    x2: number;
+    y2: number;
+    x: number;
+    y: number;
+};
+export declare type CommandA = {
+    relative: boolean;
+    type: typeof SVGPathData.ARC;
+    rX: number;
+    rY: number;
+    xRot: number;
+    sweepFlag: 0 | 1;
+    lArcFlag: 0 | 1;
+    x: number;
+    y: number;
+    cX?: number;
+    cY?: number;
+    phi1?: number;
+    phi2?: number;
+};
+export declare type SVGCommand = CommandM | CommandL | CommandH | CommandV | CommandZ | CommandQ | CommandT | CommandC | CommandS | CommandA;
+export declare type TransformFunction = (input: SVGCommand) => SVGCommand | SVGCommand[];
diff --git a/node_modules/svg-pathdata/package.json b/node_modules/svg-pathdata/package.json
new file mode 100644
index 0000000..ad4b4b0
--- /dev/null
+++ b/node_modules/svg-pathdata/package.json
@@ -0,0 +1,95 @@
+{
+  "name": "svg-pathdata",
+  "version": "6.0.3",
+  "description": "Manipulate SVG path data (path[d] attribute content) simply and efficiently.",
+  "main": "lib/SVGPathData.cjs",
+  "module": "lib/SVGPathData.module.js",
+  "exports": {
+    "import": "./lib/SVGPathData.module.js",
+    "require": "./lib/SVGPathData.cjs"
+  },
+  "type": "module",
+  "types": "lib/SVGPathData.d.ts",
+  "scripts": {
+    "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s",
+    "cli": "env NODE_ENV=${NODE_ENV:-cli}",
+    "cover": "istanbul cover _mocha --report html -- tests/*.mocha.js -R spec -t 5000",
+    "coveralls": "istanbul cover _mocha --report lcovonly -- tests/*.mocha.js -R spec -t 5000 && cat ./coverage/lcov.info | coveralls && rm -rf ./coverage",
+    "cz": "env NODE_ENV=${NODE_ENV:-cli} git cz",
+    "lint": "eslint tests/*.mocha.js && tslint -p tsconfig.json",
+    "preversion": "npm run test:ci",
+    "test": "mocha tests/*.mocha.js",
+    "version": "npm run changelog && git add CHANGELOG.md",
+    "test:ci": "npm run lint && npm run build && npm run test",
+    "build": "rollup -c rollup.config.js",
+    "watch": "rollup -c rollup.config.js -w"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/nfroidure/svg-pathdata.git"
+  },
+  "keywords": [
+    "svg",
+    "path",
+    "data",
+    "parser",
+    "encoder",
+    "transformer",
+    "reader",
+    "writer",
+    "stream",
+    "typescript"
+  ],
+  "author": "Nicolas Froidure",
+  "contributors": [
+    {
+      "name": "Anders Kaseorg",
+      "email": "andersk@mit.edu"
+    }
+  ],
+  "license": "MIT",
+  "bugs": {
+    "url": "https://github.com/nfroidure/SVGPathData/issues"
+  },
+  "engines": {
+    "node": ">=12.0.0"
+  },
+  "devDependencies": {
+    "@rollup/plugin-typescript": "^8.2.1",
+    "chai": "^4.3.4",
+    "chai-stats": "^0.3.0",
+    "commitizen": "^4.2.3",
+    "conventional-changelog-cli": "^2.1.1",
+    "coveralls": "^3.1.0",
+    "cz-conventional-changelog": "^3.3.0",
+    "eslint": "^7.23.0",
+    "eslint-config-simplifield": "^12.0.0",
+    "istanbul": "0.4.5",
+    "mocha": "^9.0.2",
+    "mocha-lcov-reporter": "1.3.0",
+    "rollup": "^2.44.0",
+    "rollup-plugin-terser": "^7.0.2",
+    "tslib": "2.1.0",
+    "tslint": "^6.1.3",
+    "typescript": "^4.2.3"
+  },
+  "config": {
+    "commitizen": {
+      "path": "./node_modules/cz-conventional-changelog"
+    }
+  },
+  "greenkeeper": {
+    "ignore": [
+      "debug",
+      "eslint",
+      "eslint-config-simplifield",
+      "mocha",
+      "mocha-lcov-reporter",
+      "commitizen",
+      "cz-conventional-changelog",
+      "coveralls",
+      "istanbul",
+      "conventional-changelog-cli"
+    ]
+  }
+}
diff --git a/node_modules/svg-pathdata/src/SVGPathData.ts b/node_modules/svg-pathdata/src/SVGPathData.ts
new file mode 100644
index 0000000..46526b8
--- /dev/null
+++ b/node_modules/svg-pathdata/src/SVGPathData.ts
@@ -0,0 +1,90 @@
+import { encodeSVGPath } from "./SVGPathDataEncoder";
+import { SVGPathDataParser } from "./SVGPathDataParser";
+import { SVGPathDataTransformer } from "./SVGPathDataTransformer";
+import { TransformableSVG } from "./TransformableSVG";
+import { SVGCommand } from "./types";
+
+export class SVGPathData extends TransformableSVG {
+  commands: SVGCommand[];
+  constructor(content: string | SVGCommand[]) {
+    super();
+    if ("string" === typeof content) {
+      this.commands = SVGPathData.parse(content);
+    } else {
+      this.commands = content;
+    }
+  }
+
+  encode() {
+    return SVGPathData.encode(this.commands);
+  }
+
+  getBounds() {
+    const boundsTransform = SVGPathDataTransformer.CALCULATE_BOUNDS();
+
+    this.transform(boundsTransform);
+    return boundsTransform;
+  }
+
+  transform(
+    transformFunction: (input: SVGCommand) => SVGCommand | SVGCommand[],
+  ) {
+    const newCommands = [];
+
+    for (const command of this.commands) {
+      const transformedCommand = transformFunction(command);
+
+      if (Array.isArray(transformedCommand)) {
+        newCommands.push(...transformedCommand);
+      } else {
+        newCommands.push(transformedCommand);
+      }
+    }
+    this.commands = newCommands;
+    return this;
+  }
+
+  static encode(commands: SVGCommand[]) {
+    return encodeSVGPath(commands);
+      }
+
+  static parse(path: string) {
+    const parser = new SVGPathDataParser();
+    const commands: SVGCommand[] = [];
+    parser.parse(path, commands);
+    parser.finish(commands);
+    return commands;
+  }
+
+  static readonly CLOSE_PATH: 1 = 1;
+  static readonly MOVE_TO: 2 = 2;
+  static readonly HORIZ_LINE_TO: 4 = 4;
+  static readonly VERT_LINE_TO: 8 = 8;
+  static readonly LINE_TO: 16 = 16;
+  static readonly CURVE_TO: 32 = 32;
+  static readonly SMOOTH_CURVE_TO: 64 = 64;
+  static readonly QUAD_TO: 128 = 128;
+  static readonly SMOOTH_QUAD_TO: 256 = 256;
+  static readonly ARC: 512 = 512;
+  static readonly LINE_COMMANDS = SVGPathData.LINE_TO | SVGPathData.HORIZ_LINE_TO | SVGPathData.VERT_LINE_TO;
+  static readonly DRAWING_COMMANDS = SVGPathData.HORIZ_LINE_TO | SVGPathData.VERT_LINE_TO | SVGPathData.LINE_TO |
+  SVGPathData.CURVE_TO | SVGPathData.SMOOTH_CURVE_TO | SVGPathData.QUAD_TO |
+  SVGPathData.SMOOTH_QUAD_TO | SVGPathData.ARC;
+}
+
+export const COMMAND_ARG_COUNTS = {
+    [SVGPathData.MOVE_TO]: 2,
+    [SVGPathData.LINE_TO]: 2,
+    [SVGPathData.HORIZ_LINE_TO]: 1,
+    [SVGPathData.VERT_LINE_TO]: 1,
+    [SVGPathData.CLOSE_PATH]: 0,
+    [SVGPathData.QUAD_TO]: 4,
+    [SVGPathData.SMOOTH_QUAD_TO]: 2,
+    [SVGPathData.CURVE_TO]: 6,
+    [SVGPathData.SMOOTH_CURVE_TO]: 4,
+    [SVGPathData.ARC]: 7,
+};
+
+export {encodeSVGPath} from "./SVGPathDataEncoder";
+export {SVGPathDataParser} from "./SVGPathDataParser";
+export {SVGPathDataTransformer} from "./SVGPathDataTransformer";
diff --git a/node_modules/svg-pathdata/src/SVGPathDataEncoder.ts b/node_modules/svg-pathdata/src/SVGPathDataEncoder.ts
new file mode 100644
index 0000000..b8fc4c0
--- /dev/null
+++ b/node_modules/svg-pathdata/src/SVGPathDataEncoder.ts
@@ -0,0 +1,62 @@
+import { SVGPathData } from "./SVGPathData";
+import { SVGCommand } from "./types";
+
+// Encode SVG PathData
+// http://www.w3.org/TR/SVG/paths.html#PathDataBNF
+
+// Private consts : Char groups
+const WSP = " ";
+
+export function encodeSVGPath(commands: SVGCommand | SVGCommand[]) {
+  let str = "";
+
+  if (!Array.isArray(commands)) {
+    commands = [commands];
+  }
+  for (let i = 0; i < commands.length; i++) {
+    const command = commands[i];
+    if (command.type === SVGPathData.CLOSE_PATH) {
+      str += "z";
+    } else if (command.type === SVGPathData.HORIZ_LINE_TO) {
+      str += (command.relative ? "h" : "H") +
+        command.x;
+    } else if (command.type === SVGPathData.VERT_LINE_TO) {
+      str += (command.relative ? "v" : "V") +
+        command.y;
+    } else if (command.type === SVGPathData.MOVE_TO) {
+      str += (command.relative ? "m" : "M") +
+        command.x + WSP + command.y;
+    } else if (command.type === SVGPathData.LINE_TO) {
+      str += (command.relative ? "l" : "L") +
+        command.x + WSP + command.y;
+    } else if (command.type === SVGPathData.CURVE_TO) {
+      str += (command.relative ? "c" : "C") +
+        command.x1 + WSP + command.y1 +
+        WSP + command.x2 + WSP + command.y2 +
+        WSP + command.x + WSP + command.y;
+    } else if (command.type === SVGPathData.SMOOTH_CURVE_TO) {
+      str += (command.relative ? "s" : "S") +
+        command.x2 + WSP + command.y2 +
+        WSP + command.x + WSP + command.y;
+    } else if (command.type === SVGPathData.QUAD_TO) {
+      str += (command.relative ? "q" : "Q") +
+        command.x1 + WSP + command.y1 +
+        WSP + command.x + WSP + command.y;
+    } else if (command.type === SVGPathData.SMOOTH_QUAD_TO) {
+      str += (command.relative ? "t" : "T") +
+        command.x + WSP + command.y;
+    } else if (command.type === SVGPathData.ARC) {
+      str += (command.relative ? "a" : "A") +
+        command.rX + WSP + command.rY +
+        WSP + command.xRot +
+        WSP + (+command.lArcFlag) + WSP + (+command.sweepFlag) +
+        WSP + command.x + WSP + command.y;
+    } else {
+      // Unknown command
+      throw new Error(
+        `Unexpected command type "${ (command as any).type}" at index ${i}.`);
+    }
+  }
+
+  return str;
+}
diff --git a/node_modules/svg-pathdata/src/SVGPathDataParser.ts b/node_modules/svg-pathdata/src/SVGPathDataParser.ts
new file mode 100644
index 0000000..09c4406
--- /dev/null
+++ b/node_modules/svg-pathdata/src/SVGPathDataParser.ts
@@ -0,0 +1,290 @@
+// Parse SVG PathData
+// http://www.w3.org/TR/SVG/paths.html#PathDataBNF
+import { COMMAND_ARG_COUNTS, SVGPathData } from "./SVGPathData";
+import { TransformableSVG } from "./TransformableSVG";
+import { SVGCommand, TransformFunction } from "./types";
+// Private consts : Char groups
+const isWhiteSpace = (c: string) =>
+  " " === c || "\t" === c || "\r" === c || "\n" === c;
+const isDigit = (c: string) =>
+  "0".charCodeAt(0) <= c.charCodeAt(0) && c.charCodeAt(0) <= "9".charCodeAt(0);
+const COMMANDS = "mMzZlLhHvVcCsSqQtTaA";
+
+export class SVGPathDataParser extends TransformableSVG {
+  private curNumber: string = "";
+  private curCommandType: SVGCommand["type"] | -1 = -1;
+  private curCommandRelative = false;
+  private canParseCommandOrComma = true;
+  private curNumberHasExp = false;
+  private curNumberHasExpDigits = false;
+  private curNumberHasDecimal = false;
+  private curArgs: number[] = [];
+
+  constructor() {
+    super();
+  }
+
+  finish(commands: SVGCommand[] = []) {
+    this.parse(" ", commands);
+    // Adding residual command
+    if (0 !== this.curArgs.length || !this.canParseCommandOrComma) {
+      throw new SyntaxError("Unterminated command at the path end.");
+    }
+    return commands;
+  }
+
+  parse(str: string, commands: SVGCommand[] = []) {
+    const finishCommand = (command: SVGCommand) => {
+      commands.push(command);
+      this.curArgs.length = 0;
+      this.canParseCommandOrComma = true;
+    };
+
+    for (let i = 0; i < str.length; i++) {
+      const c = str[i];
+      // White spaces parsing
+      const isAArcFlag = this.curCommandType === SVGPathData.ARC &&
+        (this.curArgs.length === 3 || this.curArgs.length === 4) &&
+        this.curNumber.length === 1 &&
+        (this.curNumber === "0" || this.curNumber === "1");
+      const isEndingDigit = isDigit(c) && (
+        (this.curNumber === "0" && c === "0") ||
+        isAArcFlag
+      );
+
+      if (
+        isDigit(c) &&
+        !isEndingDigit
+      ) {
+        this.curNumber += c;
+        this.curNumberHasExpDigits = this.curNumberHasExp;
+        continue;
+      }
+      if ("e" === c || "E" === c) {
+        this.curNumber += c;
+        this.curNumberHasExp = true;
+        continue;
+      }
+      if (
+        ("-" === c || "+" === c) &&
+        this.curNumberHasExp &&
+        !this.curNumberHasExpDigits
+      ) {
+        this.curNumber += c;
+        continue;
+      }
+      // if we already have a ".", it means we are starting a new number
+      if ("." === c && !this.curNumberHasExp && !this.curNumberHasDecimal && !isAArcFlag) {
+        this.curNumber += c;
+        this.curNumberHasDecimal = true;
+        continue;
+      }
+
+      // New number
+      if (this.curNumber && -1 !== this.curCommandType) {
+        const val = Number(this.curNumber);
+        if (isNaN(val)) {
+          throw new SyntaxError(`Invalid number ending at ${i}`);
+        }
+        if (this.curCommandType === SVGPathData.ARC) {
+          if (0 === this.curArgs.length || 1 === this.curArgs.length) {
+            if (0 > val) {
+              throw new SyntaxError(
+                `Expected positive number, got "${val}" at index "${i}"`,
+              );
+            }
+          } else if (3 === this.curArgs.length || 4 === this.curArgs.length) {
+            if ("0" !== this.curNumber && "1" !== this.curNumber) {
+              throw new SyntaxError(
+                `Expected a flag, got "${this.curNumber}" at index "${i}"`,
+              );
+            }
+          }
+        }
+        this.curArgs.push(val);
+        if (this.curArgs.length === COMMAND_ARG_COUNTS[this.curCommandType]) {
+          if (SVGPathData.HORIZ_LINE_TO === this.curCommandType) {
+            finishCommand({
+              type: SVGPathData.HORIZ_LINE_TO,
+              relative: this.curCommandRelative,
+              x: val,
+            });
+          } else if (SVGPathData.VERT_LINE_TO === this.curCommandType) {
+            finishCommand({
+              type: SVGPathData.VERT_LINE_TO,
+              relative: this.curCommandRelative,
+              y: val,
+            });
+            // Move to / line to / smooth quadratic curve to commands (x, y)
+          } else if (
+            this.curCommandType === SVGPathData.MOVE_TO ||
+            this.curCommandType === SVGPathData.LINE_TO ||
+            this.curCommandType === SVGPathData.SMOOTH_QUAD_TO
+          ) {
+            finishCommand({
+              type: this.curCommandType,
+              relative: this.curCommandRelative,
+              x: this.curArgs[0],
+              y: this.curArgs[1],
+            } as SVGCommand);
+            // Switch to line to state
+            if (SVGPathData.MOVE_TO === this.curCommandType) {
+              this.curCommandType = SVGPathData.LINE_TO;
+            }
+          } else if (this.curCommandType === SVGPathData.CURVE_TO) {
+            finishCommand({
+              type: SVGPathData.CURVE_TO,
+              relative: this.curCommandRelative,
+              x1: this.curArgs[0],
+              y1: this.curArgs[1],
+              x2: this.curArgs[2],
+              y2: this.curArgs[3],
+              x: this.curArgs[4],
+              y: this.curArgs[5],
+            });
+          } else if (this.curCommandType === SVGPathData.SMOOTH_CURVE_TO) {
+            finishCommand({
+              type: SVGPathData.SMOOTH_CURVE_TO,
+              relative: this.curCommandRelative,
+              x2: this.curArgs[0],
+              y2: this.curArgs[1],
+              x: this.curArgs[2],
+              y: this.curArgs[3],
+            });
+          } else if (this.curCommandType === SVGPathData.QUAD_TO) {
+            finishCommand({
+              type: SVGPathData.QUAD_TO,
+              relative: this.curCommandRelative,
+              x1: this.curArgs[0],
+              y1: this.curArgs[1],
+              x: this.curArgs[2],
+              y: this.curArgs[3],
+            });
+          } else if (this.curCommandType === SVGPathData.ARC) {
+            finishCommand({
+              type: SVGPathData.ARC,
+              relative: this.curCommandRelative,
+              rX: this.curArgs[0],
+              rY: this.curArgs[1],
+              xRot: this.curArgs[2],
+              lArcFlag: this.curArgs[3] as 0 | 1,
+              sweepFlag: this.curArgs[4] as 0 | 1,
+              x: this.curArgs[5],
+              y: this.curArgs[6],
+            });
+          }
+        }
+        this.curNumber = "";
+        this.curNumberHasExpDigits = false;
+        this.curNumberHasExp = false;
+        this.curNumberHasDecimal = false;
+        this.canParseCommandOrComma = true;
+      }
+      // Continue if a white space or a comma was detected
+      if (isWhiteSpace(c)) {
+        continue;
+      }
+      if ("," === c && this.canParseCommandOrComma) {
+        // L 0,0, H is not valid:
+        this.canParseCommandOrComma = false;
+        continue;
+      }
+      // if a sign is detected, then parse the new number
+      if ("+" === c || "-" === c || "." === c) {
+        this.curNumber = c;
+        this.curNumberHasDecimal = "." === c;
+        continue;
+      }
+      // if a 0 is detected, then parse the new number
+      if (isEndingDigit) {
+        this.curNumber = c;
+        this.curNumberHasDecimal = false;
+        continue;
+      }
+
+      // Adding residual command
+      if (0 !== this.curArgs.length) {
+        throw new SyntaxError(`Unterminated command at index ${i}.`);
+      }
+      if (!this.canParseCommandOrComma) {
+        throw new SyntaxError(
+          `Unexpected character "${c}" at index ${i}. Command cannot follow comma`,
+        );
+      }
+      this.canParseCommandOrComma = false;
+      // Detecting the next command
+      if ("z" === c || "Z" === c) {
+        commands.push({
+          type: SVGPathData.CLOSE_PATH,
+        });
+        this.canParseCommandOrComma = true;
+        this.curCommandType = -1;
+        continue;
+        // Horizontal move to command
+      } else if ("h" === c || "H" === c) {
+        this.curCommandType = SVGPathData.HORIZ_LINE_TO;
+        this.curCommandRelative = "h" === c;
+        // Vertical move to command
+      } else if ("v" === c || "V" === c) {
+        this.curCommandType = SVGPathData.VERT_LINE_TO;
+        this.curCommandRelative = "v" === c;
+        // Move to command
+      } else if ("m" === c || "M" === c) {
+        this.curCommandType = SVGPathData.MOVE_TO;
+        this.curCommandRelative = "m" === c;
+        // Line to command
+      } else if ("l" === c || "L" === c) {
+        this.curCommandType = SVGPathData.LINE_TO;
+        this.curCommandRelative = "l" === c;
+        // Curve to command
+      } else if ("c" === c || "C" === c) {
+        this.curCommandType = SVGPathData.CURVE_TO;
+        this.curCommandRelative = "c" === c;
+        // Smooth curve to command
+      } else if ("s" === c || "S" === c) {
+        this.curCommandType = SVGPathData.SMOOTH_CURVE_TO;
+        this.curCommandRelative = "s" === c;
+        // Quadratic bezier curve to command
+      } else if ("q" === c || "Q" === c) {
+        this.curCommandType = SVGPathData.QUAD_TO;
+        this.curCommandRelative = "q" === c;
+        // Smooth quadratic bezier curve to command
+      } else if ("t" === c || "T" === c) {
+        this.curCommandType = SVGPathData.SMOOTH_QUAD_TO;
+        this.curCommandRelative = "t" === c;
+        // Elliptic arc command
+      } else if ("a" === c || "A" === c) {
+        this.curCommandType = SVGPathData.ARC;
+        this.curCommandRelative = "a" === c;
+      } else {
+        throw new SyntaxError(`Unexpected character "${c}" at index ${i}.`);
+      }
+    }
+    return commands;
+  }
+  /**
+   * Return a wrapper around this parser which applies the transformation on parsed commands.
+   */
+  transform(transform: TransformFunction) {
+    const result = Object.create(this, {
+      parse: {
+        value(chunk: string, commands: SVGCommand[] = []) {
+          const parsedCommands = Object.getPrototypeOf(this).parse.call(
+            this,
+            chunk,
+          );
+          for (const c of parsedCommands) {
+            const cT = transform(c);
+            if (Array.isArray(cT)) {
+              commands.push(...cT);
+            } else {
+              commands.push(cT);
+            }
+          }
+          return commands;
+        },
+      },
+    });
+    return result as this;
+  }
+}
diff --git a/node_modules/svg-pathdata/src/SVGPathDataTransformer.ts b/node_modules/svg-pathdata/src/SVGPathDataTransformer.ts
new file mode 100644
index 0000000..57f1942
--- /dev/null
+++ b/node_modules/svg-pathdata/src/SVGPathDataTransformer.ts
@@ -0,0 +1,620 @@
+// Transform SVG PathData
+// http://www.w3.org/TR/SVG/paths.html#PathDataBNF
+
+import { a2c, annotateArcCommand, arcAt, assertNumbers, bezierAt, bezierRoot,
+  intersectionUnitCircleLine } from "./mathUtils";
+import { SVGPathData } from "./SVGPathData";
+import { SVGCommand, TransformFunction } from "./types";
+
+export namespace SVGPathDataTransformer {
+  // Predefined transforming functions
+  // Rounds commands values
+  export function ROUND(roundVal = 1e13) {
+    assertNumbers(roundVal);
+    function rf(val: number) { return Math.round(val * roundVal) / roundVal; }
+    return function round(command: any) {
+      if ("undefined" !== typeof command.x1) {
+        command.x1 = rf(command.x1);
+      }
+      if ("undefined" !== typeof command.y1) {
+        command.y1 = rf(command.y1);
+      }
+
+      if ("undefined" !== typeof command.x2) {
+        command.x2 = rf(command.x2);
+      }
+      if ("undefined" !== typeof command.y2) {
+        command.y2 = rf(command.y2);
+      }
+
+      if ("undefined" !== typeof command.x) {
+        command.x = rf(command.x);
+      }
+      if ("undefined" !== typeof command.y) {
+        command.y = rf(command.y);
+      }
+
+      if ("undefined" !== typeof command.rX) {
+        command.rX = rf(command.rX);
+      }
+      if ("undefined" !== typeof command.rY) {
+        command.rY = rf(command.rY);
+      }
+
+      return command;
+    };
+  }
+  // Relative to absolute commands
+  export function TO_ABS() {
+    return INFO((command, prevX, prevY) => {
+      if (command.relative) {
+        // x1/y1 values
+        if ("undefined" !== typeof command.x1) {
+          command.x1 += prevX;
+        }
+        if ("undefined" !== typeof command.y1) {
+          command.y1 += prevY;
+        }
+        // x2/y2 values
+        if ("undefined" !== typeof command.x2) {
+          command.x2 += prevX;
+        }
+        if ("undefined" !== typeof command.y2) {
+          command.y2 += prevY;
+        }
+        // Finally x/y values
+        if ("undefined" !== typeof command.x) {
+          command.x += prevX;
+        }
+        if ("undefined" !== typeof command.y) {
+          command.y += prevY;
+        }
+        command.relative = false;
+      }
+      return command;
+    });
+  }
+  // Absolute to relative commands
+  export function TO_REL() {
+    return INFO((command, prevX, prevY) => {
+      if (!command.relative) {
+        // x1/y1 values
+        if ("undefined" !== typeof command.x1) {
+          command.x1 -= prevX;
+        }
+        if ("undefined" !== typeof command.y1) {
+          command.y1 -= prevY;
+        }
+        // x2/y2 values
+        if ("undefined" !== typeof command.x2) {
+          command.x2 -= prevX;
+        }
+        if ("undefined" !== typeof command.y2) {
+          command.y2 -= prevY;
+        }
+        // Finally x/y values
+        if ("undefined" !== typeof command.x) {
+          command.x -= prevX;
+        }
+        if ("undefined" !== typeof command.y) {
+          command.y -= prevY;
+        }
+        command.relative = true;
+      }
+      return command;
+    });
+  }
+  // Convert H, V, Z and A with rX = 0 to L
+  export function NORMALIZE_HVZ(normalizeZ = true, normalizeH = true, normalizeV = true) {
+    return INFO((command, prevX, prevY, pathStartX, pathStartY) => {
+      if (isNaN(pathStartX) && !(command.type & SVGPathData.MOVE_TO)) {
+        throw new Error("path must start with moveto");
+      }
+      if (normalizeH && command.type & SVGPathData.HORIZ_LINE_TO) {
+        command.type = SVGPathData.LINE_TO;
+        command.y = command.relative ? 0 : prevY;
+      }
+      if (normalizeV && command.type & SVGPathData.VERT_LINE_TO) {
+        command.type = SVGPathData.LINE_TO;
+        command.x = command.relative ? 0 : prevX;
+      }
+      if (normalizeZ && command.type & SVGPathData.CLOSE_PATH) {
+        command.type = SVGPathData.LINE_TO;
+        command.x = command.relative ? pathStartX - prevX : pathStartX;
+        command.y = command.relative ? pathStartY - prevY : pathStartY;
+      }
+      if (command.type & SVGPathData.ARC && (0 === command.rX || 0 === command.rY)) {
+        command.type = SVGPathData.LINE_TO;
+        delete command.rX;
+        delete command.rY;
+        delete command.xRot;
+        delete command.lArcFlag;
+        delete command.sweepFlag;
+      }
+      return command;
+    });
+  }
+  /*
+   * Transforms smooth curves and quads to normal curves and quads (SsTt to CcQq)
+   */
+  export function NORMALIZE_ST() {
+    let prevCurveC2X = NaN;
+    let prevCurveC2Y = NaN;
+    let prevQuadCX = NaN;
+    let prevQuadCY = NaN;
+
+    return INFO((command, prevX, prevY) => {
+      if (command.type & SVGPathData.SMOOTH_CURVE_TO) {
+        command.type = SVGPathData.CURVE_TO;
+        prevCurveC2X = isNaN(prevCurveC2X) ? prevX : prevCurveC2X;
+        prevCurveC2Y = isNaN(prevCurveC2Y) ? prevY : prevCurveC2Y;
+        command.x1 = command.relative ? prevX - prevCurveC2X : 2 * prevX - prevCurveC2X;
+        command.y1 = command.relative ? prevY - prevCurveC2Y : 2 * prevY - prevCurveC2Y;
+      }
+      if (command.type & SVGPathData.CURVE_TO) {
+        prevCurveC2X = command.relative ? prevX + command.x2 : command.x2;
+        prevCurveC2Y = command.relative ? prevY + command.y2 : command.y2;
+      } else {
+        prevCurveC2X = NaN;
+        prevCurveC2Y = NaN;
+      }
+      if (command.type & SVGPathData.SMOOTH_QUAD_TO) {
+        command.type = SVGPathData.QUAD_TO;
+        prevQuadCX = isNaN(prevQuadCX) ? prevX : prevQuadCX;
+        prevQuadCY = isNaN(prevQuadCY) ? prevY : prevQuadCY;
+        command.x1 = command.relative ? prevX - prevQuadCX : 2 * prevX - prevQuadCX;
+        command.y1 = command.relative ? prevY - prevQuadCY : 2 * prevY - prevQuadCY;
+      }
+      if (command.type & SVGPathData.QUAD_TO) {
+        prevQuadCX = command.relative ? prevX + command.x1 : command.x1;
+        prevQuadCY = command.relative ? prevY + command.y1 : command.y1;
+      } else {
+        prevQuadCX = NaN;
+        prevQuadCY = NaN;
+      }
+
+      return command;
+    });
+  }
+  /*
+   * A quadratic bézier curve can be represented by a cubic bézier curve which has
+   * the same end points as the quadratic and both control points in place of the
+   * quadratic"s one.
+   *
+   * This transformer replaces QqTt commands with Cc commands respectively.
+   * This is useful for reading path data into a system which only has a
+   * representation for cubic curves.
+   */
+  export function QT_TO_C() {
+    let prevQuadX1 = NaN;
+    let prevQuadY1 = NaN;
+
+    return INFO((command, prevX, prevY) => {
+      if (command.type & SVGPathData.SMOOTH_QUAD_TO) {
+        command.type = SVGPathData.QUAD_TO;
+        prevQuadX1 = isNaN(prevQuadX1) ? prevX : prevQuadX1;
+        prevQuadY1 = isNaN(prevQuadY1) ? prevY : prevQuadY1;
+        command.x1 = command.relative ? prevX - prevQuadX1 : 2 * prevX - prevQuadX1;
+        command.y1 = command.relative ? prevY - prevQuadY1 : 2 * prevY - prevQuadY1;
+      }
+      if (command.type & SVGPathData.QUAD_TO) {
+        prevQuadX1 = command.relative ? prevX + command.x1 : command.x1;
+        prevQuadY1 = command.relative ? prevY + command.y1 : command.y1;
+        const x1 = command.x1;
+        const y1 = command.y1;
+
+        command.type = SVGPathData.CURVE_TO;
+        command.x1 = ((command.relative ? 0 : prevX) + x1 * 2) / 3;
+        command.y1 = ((command.relative ? 0 : prevY) + y1 * 2) / 3;
+        command.x2 = (command.x + x1 * 2) / 3;
+        command.y2 = (command.y + y1 * 2) / 3;
+      } else {
+        prevQuadX1 = NaN;
+        prevQuadY1 = NaN;
+      }
+
+      return command;
+    });
+  }
+  export function INFO(
+    f: (command: any, prevXAbs: number, prevYAbs: number,
+        pathStartXAbs: number, pathStartYAbs: number) => any | any[]) {
+    let prevXAbs = 0;
+    let prevYAbs = 0;
+    let pathStartXAbs = NaN;
+    let pathStartYAbs = NaN;
+
+    return function transform(command: any) {
+      if (isNaN(pathStartXAbs) && !(command.type & SVGPathData.MOVE_TO)) {
+        throw new Error("path must start with moveto");
+      }
+
+      const result = f(command, prevXAbs, prevYAbs, pathStartXAbs, pathStartYAbs);
+
+      if (command.type & SVGPathData.CLOSE_PATH) {
+        prevXAbs = pathStartXAbs;
+        prevYAbs = pathStartYAbs;
+      }
+
+      if ("undefined" !== typeof command.x) {
+        prevXAbs = (command.relative ? prevXAbs + command.x : command.x);
+      }
+      if ("undefined" !== typeof command.y) {
+        prevYAbs = (command.relative ? prevYAbs + command.y : command.y);
+      }
+
+      if (command.type & SVGPathData.MOVE_TO) {
+        pathStartXAbs = prevXAbs;
+        pathStartYAbs = prevYAbs;
+      }
+
+      return result;
+    };
+  }
+  /*
+   * remove 0-length segments
+   */
+  export function SANITIZE(EPS = 0) {
+    assertNumbers(EPS);
+    let prevCurveC2X = NaN;
+    let prevCurveC2Y = NaN;
+    let prevQuadCX = NaN;
+    let prevQuadCY = NaN;
+
+    return INFO((command, prevX, prevY, pathStartX, pathStartY) => {
+      const abs = Math.abs;
+      let skip = false;
+      let x1Rel = 0;
+      let y1Rel = 0;
+
+      if (command.type & SVGPathData.SMOOTH_CURVE_TO) {
+        x1Rel = isNaN(prevCurveC2X) ? 0 : prevX - prevCurveC2X;
+        y1Rel = isNaN(prevCurveC2Y) ? 0 : prevY - prevCurveC2Y;
+      }
+      if (command.type & (SVGPathData.CURVE_TO | SVGPathData.SMOOTH_CURVE_TO)) {
+        prevCurveC2X = command.relative ? prevX + command.x2 : command.x2;
+        prevCurveC2Y = command.relative ? prevY + command.y2 : command.y2;
+      } else {
+        prevCurveC2X = NaN;
+        prevCurveC2Y = NaN;
+      }
+      if (command.type & SVGPathData.SMOOTH_QUAD_TO) {
+        prevQuadCX = isNaN(prevQuadCX) ? prevX : 2 * prevX - prevQuadCX;
+        prevQuadCY = isNaN(prevQuadCY) ? prevY : 2 * prevY - prevQuadCY;
+      } else if (command.type & SVGPathData.QUAD_TO) {
+        prevQuadCX = command.relative ? prevX + command.x1 : command.x1;
+        prevQuadCY = command.relative ? prevY + command.y1 : command.y2;
+      } else {
+        prevQuadCX = NaN;
+        prevQuadCY = NaN;
+      }
+
+      if (command.type & SVGPathData.LINE_COMMANDS ||
+        command.type & SVGPathData.ARC && (0 === command.rX || 0 === command.rY || !command.lArcFlag) ||
+        command.type & SVGPathData.CURVE_TO || command.type & SVGPathData.SMOOTH_CURVE_TO ||
+        command.type & SVGPathData.QUAD_TO || command.type & SVGPathData.SMOOTH_QUAD_TO) {
+        const xRel = "undefined" === typeof command.x ? 0 :
+          (command.relative ? command.x : command.x - prevX);
+        const yRel = "undefined" === typeof command.y ? 0 :
+          (command.relative ? command.y : command.y - prevY);
+
+        x1Rel = !isNaN(prevQuadCX) ? prevQuadCX - prevX :
+          "undefined" === typeof command.x1 ? x1Rel :
+            command.relative ? command.x :
+              command.x1 - prevX;
+        y1Rel = !isNaN(prevQuadCY) ? prevQuadCY - prevY :
+          "undefined" === typeof command.y1 ? y1Rel :
+            command.relative ? command.y :
+              command.y1 - prevY;
+
+        const x2Rel = "undefined" === typeof command.x2 ? 0 :
+          (command.relative ? command.x : command.x2 - prevX);
+        const y2Rel = "undefined" === typeof command.y2 ? 0 :
+          (command.relative ? command.y : command.y2 - prevY);
+
+        if (abs(xRel) <= EPS && abs(yRel) <= EPS &&
+          abs(x1Rel) <= EPS && abs(y1Rel) <= EPS &&
+          abs(x2Rel) <= EPS && abs(y2Rel) <= EPS) {
+          skip = true;
+        }
+      }
+
+      if (command.type & SVGPathData.CLOSE_PATH) {
+        if (abs(prevX - pathStartX) <= EPS && abs(prevY - pathStartY) <= EPS) {
+          skip = true;
+        }
+      }
+
+      return skip ? [] : command;
+    });
+  }
+  // SVG Transforms : http://www.w3.org/TR/SVGTiny12/coords.html#TransformList
+  // Matrix : http://apike.ca/prog_svg_transform.html
+  // a c e
+  // b d f
+  export function MATRIX(a: number, b: number, c: number, d: number, e: number, f: number) {
+    assertNumbers(a, b, c, d, e, f);
+
+    return INFO((command, prevX, prevY, pathStartX) => {
+      const origX1 = command.x1;
+      const origX2 = command.x2;
+      // if isNaN(pathStartX), then this is the first command, which is ALWAYS an
+      // absolute MOVE_TO, regardless what the relative flag says
+      const comRel = command.relative && !isNaN(pathStartX);
+      const x = "undefined" !== typeof command.x ? command.x : (comRel ? 0 : prevX);
+      const y = "undefined" !== typeof command.y ? command.y : (comRel ? 0 : prevY);
+
+      if (command.type & SVGPathData.HORIZ_LINE_TO && 0 !== b) {
+        command.type = SVGPathData.LINE_TO;
+        command.y = command.relative ? 0 : prevY;
+      }
+      if (command.type & SVGPathData.VERT_LINE_TO && 0 !== c) {
+        command.type = SVGPathData.LINE_TO;
+        command.x = command.relative ? 0 : prevX;
+      }
+
+      if ("undefined" !== typeof command.x) {
+        command.x = (command.x * a) + (y * c) + (comRel ? 0 : e);
+      }
+      if ("undefined" !== typeof command.y) {
+        command.y = (x * b) + command.y * d + (comRel ? 0 : f);
+      }
+      if ("undefined" !== typeof command.x1) {
+        command.x1 = command.x1 * a + command.y1 * c + (comRel ? 0 : e);
+      }
+      if ("undefined" !== typeof command.y1) {
+        command.y1 = origX1 * b + command.y1 * d + (comRel ? 0 : f);
+      }
+      if ("undefined" !== typeof command.x2) {
+        command.x2 = command.x2 * a + command.y2 * c + (comRel ? 0 : e);
+      }
+      if ("undefined" !== typeof command.y2) {
+        command.y2 = origX2 * b + command.y2 * d + (comRel ? 0 : f);
+      }
+      function sqr(x: number) { return x * x; }
+      const det = a * d - b * c;
+
+      if ("undefined" !== typeof command.xRot) {
+        // Skip if this is a pure translation
+        if (1 !== a || 0 !== b || 0 !== c || 1 !== d) {
+          // Special case for singular matrix
+          if (0 === det) {
+            // In the singular case, the arc is compressed to a line. The actual geometric image of the original
+            // curve under this transform possibly extends beyond the starting and/or ending points of the segment, but
+            // for simplicity we ignore this detail and just replace this command with a single line segment.
+            delete command.rX;
+            delete command.rY;
+            delete command.xRot;
+            delete command.lArcFlag;
+            delete command.sweepFlag;
+            command.type = SVGPathData.LINE_TO;
+          } else {
+            // Convert to radians
+            const xRot = command.xRot * Math.PI / 180;
+
+            // Convert rotated ellipse to general conic form
+            // x0^2/rX^2 + y0^2/rY^2 - 1 = 0
+            // x0 = x*cos(xRot) + y*sin(xRot)
+            // y0 = -x*sin(xRot) + y*cos(xRot)
+            // --> A*x^2 + B*x*y + C*y^2 - 1 = 0, where
+            const sinRot = Math.sin(xRot);
+            const cosRot = Math.cos(xRot);
+            const xCurve = 1 / sqr(command.rX);
+            const yCurve = 1 / sqr(command.rY);
+            const A = sqr(cosRot) * xCurve + sqr(sinRot) * yCurve;
+            const B = 2 * sinRot * cosRot * (xCurve - yCurve);
+            const C = sqr(sinRot) * xCurve + sqr(cosRot) * yCurve;
+
+            // Apply matrix to A*x^2 + B*x*y + C*y^2 - 1 = 0
+            // x1 = a*x + c*y
+            // y1 = b*x + d*y
+            //      (we can ignore e and f, since pure translations don"t affect the shape of the ellipse)
+            // --> A1*x1^2 + B1*x1*y1 + C1*y1^2 - det^2 = 0, where
+            const A1 = A * d * d - B * b * d + C * b * b;
+            const B1 = B * (a * d + b * c) - 2 * (A * c * d + C * a * b);
+            const C1 = A * c * c - B * a * c + C * a * a;
+
+            // Unapply newXRot to get back to axis-aligned ellipse equation
+            // x1 = x2*cos(newXRot) - y2*sin(newXRot)
+            // y1 = x2*sin(newXRot) + y2*cos(newXRot)
+            // A1*x1^2 + B1*x1*y1 + C1*y1^2 - det^2 =
+            //   x2^2*(A1*cos(newXRot)^2 + B1*sin(newXRot)*cos(newXRot) + C1*sin(newXRot)^2)
+            //   + x2*y2*(2*(C1 - A1)*sin(newXRot)*cos(newXRot) + B1*(cos(newXRot)^2 - sin(newXRot)^2))
+            //   + y2^2*(A1*sin(newXRot)^2 - B1*sin(newXRot)*cos(newXRot) + C1*cos(newXRot)^2)
+            //   (which must have the same zeroes as)
+            // x2^2/newRX^2 + y2^2/newRY^2 - 1
+            //   (so we have)
+            // 2*(C1 - A1)*sin(newXRot)*cos(newXRot) + B1*(cos(newXRot)^2 - sin(newXRot)^2) = 0
+            // (A1 - C1)*sin(2*newXRot) = B1*cos(2*newXRot)
+            // 2*newXRot = atan2(B1, A1 - C1)
+            const newXRot = ((Math.atan2(B1, A1 - C1) + Math.PI) % Math.PI) / 2;
+            // For any integer n, (atan2(B1, A1 - C1) + n*pi)/2 is a solution to the above; incrementing n just swaps
+            // the x and y radii computed below (since that"s what rotating an ellipse by pi/2 does).  Choosing the
+            // rotation between 0 and pi/2 eliminates the ambiguity and leads to more predictable output.
+
+            // Finally, we get newRX and newRY from the same-zeroes relationship that gave us newXRot
+            const newSinRot = Math.sin(newXRot);
+            const newCosRot = Math.cos(newXRot);
+
+            command.rX = Math.abs(det) /
+              Math.sqrt(A1 * sqr(newCosRot) + B1 * newSinRot * newCosRot + C1 * sqr(newSinRot));
+            command.rY = Math.abs(det) /
+              Math.sqrt(A1 * sqr(newSinRot) - B1 * newSinRot * newCosRot + C1 * sqr(newCosRot));
+            command.xRot = newXRot * 180 / Math.PI;
+          }
+        }
+      }
+      // sweepFlag needs to be inverted when mirroring shapes
+      // see http://www.itk.ilstu.edu/faculty/javila/SVG/SVG_drawing1/elliptical_curve.htm
+      // m 65,10 a 50,25 0 1 0 50,25
+      // M 65,60 A 50,25 0 1 1 115,35
+      if ("undefined" !== typeof command.sweepFlag && 0 > det) {
+        command.sweepFlag = +!command.sweepFlag;
+      }
+      return command;
+    });
+  }
+  export function ROTATE(a: number, x = 0, y = 0) {
+    assertNumbers(a, x, y);
+    const sin = Math.sin(a);
+    const cos = Math.cos(a);
+
+    return MATRIX(cos, sin, -sin, cos, x - x * cos + y * sin, y - x * sin - y * cos);
+  }
+  export function TRANSLATE(dX: number, dY = 0) {
+    assertNumbers(dX, dY);
+    return MATRIX(1, 0, 0, 1, dX, dY);
+  }
+  export function SCALE(dX: number, dY = dX) {
+    assertNumbers(dX, dY);
+    return MATRIX(dX, 0, 0, dY, 0, 0);
+  }
+  export function SKEW_X(a: number) {
+    assertNumbers(a);
+    return MATRIX(1, 0, Math.atan(a), 1, 0, 0);
+  }
+  export function SKEW_Y(a: number) {
+    assertNumbers(a);
+    return MATRIX(1, Math.atan(a), 0, 1, 0, 0);
+  }
+  export function X_AXIS_SYMMETRY(xOffset = 0) {
+    assertNumbers(xOffset);
+    return MATRIX(-1, 0, 0, 1, xOffset, 0);
+  }
+  export function Y_AXIS_SYMMETRY(yOffset = 0) {
+    assertNumbers(yOffset);
+    return MATRIX(1, 0, 0, -1, 0, yOffset);
+  }
+  // Convert arc commands to curve commands
+  export function A_TO_C() {
+    return INFO((command, prevX, prevY) => {
+      if (SVGPathData.ARC === command.type) {
+        return a2c(command, command.relative ? 0 : prevX, command.relative ? 0 : prevY);
+      }
+      return command;
+    });
+  }
+  // @see annotateArcCommand
+  export function ANNOTATE_ARCS() {
+    return INFO((c, x1, y1) => {
+      if (c.relative) {
+        x1 = 0;
+        y1 = 0;
+      }
+      if (SVGPathData.ARC === c.type) {
+        annotateArcCommand(c, x1, y1);
+      }
+      return c;
+    });
+  }
+  export function CLONE() {
+    return (c: SVGCommand) => {
+      const result = {} as SVGCommand;
+      // tslint:disable-next-line
+      for (const key in c) {
+        result[key as keyof SVGCommand] = c[key as keyof SVGCommand];
+      }
+      return result;
+    };
+  }
+  // @see annotateArcCommand
+  export function CALCULATE_BOUNDS() {
+    const clone = CLONE();
+    const toAbs = TO_ABS();
+    const qtToC = QT_TO_C();
+    const normST = NORMALIZE_ST();
+    const f: TransformFunction & {minX: number, maxX: number, minY: number, maxY: number} =
+        INFO((command, prevXAbs, prevYAbs) => {
+      const c = normST(qtToC(toAbs(clone(command))));
+      function fixX(absX: number) {
+        if (absX > f.maxX) { f.maxX = absX; }
+        if (absX < f.minX) { f.minX = absX; }
+      }
+      function fixY(absY: number) {
+        if (absY > f.maxY) { f.maxY = absY; }
+        if (absY < f.minY) { f.minY = absY; }
+      }
+      if (c.type & SVGPathData.DRAWING_COMMANDS) {
+        fixX(prevXAbs);
+        fixY(prevYAbs);
+      }
+      if (c.type & SVGPathData.HORIZ_LINE_TO) {
+        fixX(c.x);
+      }
+      if (c.type & SVGPathData.VERT_LINE_TO) {
+        fixY(c.y);
+      }
+      if (c.type & SVGPathData.LINE_TO) {
+        fixX(c.x);
+        fixY(c.y);
+      }
+      if (c.type & SVGPathData.CURVE_TO) {
+        // add start and end points
+        fixX(c.x);
+        fixY(c.y);
+        const xDerivRoots = bezierRoot(prevXAbs, c.x1, c.x2, c.x);
+
+        for (const derivRoot of xDerivRoots) {
+          if (0 < derivRoot && 1 > derivRoot) {
+            fixX(bezierAt(prevXAbs, c.x1, c.x2, c.x, derivRoot));
+          }
+        }
+        const yDerivRoots = bezierRoot(prevYAbs, c.y1, c.y2, c.y);
+
+        for (const derivRoot of yDerivRoots) {
+          if (0 < derivRoot && 1 > derivRoot) {
+            fixY(bezierAt(prevYAbs, c.y1, c.y2, c.y, derivRoot));
+          }
+        }
+      }
+      if (c.type & SVGPathData.ARC) {
+        // add start and end points
+        fixX(c.x);
+        fixY(c.y);
+        annotateArcCommand(c, prevXAbs, prevYAbs);
+        // p = cos(phi) * xv + sin(phi) * yv
+        // dp = -sin(phi) * xv + cos(phi) * yv = 0
+        const xRotRad = c.xRot / 180 * Math.PI;
+        // points on ellipse for phi = 0° and phi = 90°
+        const x0 = Math.cos(xRotRad) * c.rX;
+        const y0 = Math.sin(xRotRad) * c.rX;
+        const x90 = -Math.sin(xRotRad) * c.rY;
+        const y90 = Math.cos(xRotRad) * c.rY;
+
+        // annotateArcCommand returns phi1 and phi2 such that -180° < phi1 < 180° and phi2 is smaller or greater
+        // depending on the sweep flag. Calculate phiMin, phiMax such that -180° < phiMin < 180° and phiMin < phiMax
+        const [phiMin, phiMax] = c.phi1 < c.phi2 ?
+          [c.phi1, c.phi2] :
+          (-180 > c.phi2 ? [c.phi2 + 360, c.phi1 + 360] : [c.phi2, c.phi1]);
+        const normalizeXiEta = ([xi, eta]: [number, number]) => {
+          const phiRad = Math.atan2(eta, xi);
+          const phi = phiRad * 180 / Math.PI;
+
+          return phi < phiMin ? phi + 360 : phi;
+        };
+        // xi = cos(phi), eta = sin(phi)
+
+        const xDerivRoots = intersectionUnitCircleLine(x90, -x0, 0).map(normalizeXiEta);
+        for (const derivRoot of xDerivRoots) {
+          if (derivRoot > phiMin && derivRoot < phiMax) {
+            fixX(arcAt(c.cX, x0, x90, derivRoot));
+          }
+        }
+
+        const yDerivRoots = intersectionUnitCircleLine(y90, -y0, 0).map(normalizeXiEta);
+        for (const derivRoot of yDerivRoots) {
+          if (derivRoot > phiMin && derivRoot < phiMax) {
+            fixY(arcAt(c.cY, y0, y90, derivRoot));
+          }
+        }
+      }
+      return command;
+    }) as any;
+
+    f.minX = Infinity;
+    f.maxX = -Infinity;
+    f.minY = Infinity;
+    f.maxY = -Infinity;
+    return f;
+  }
+}
diff --git a/node_modules/svg-pathdata/src/TransformableSVG.ts b/node_modules/svg-pathdata/src/TransformableSVG.ts
new file mode 100644
index 0000000..f0ca6e5
--- /dev/null
+++ b/node_modules/svg-pathdata/src/TransformableSVG.ts
@@ -0,0 +1,74 @@
+import { SVGPathDataTransformer } from "./SVGPathDataTransformer";
+import { TransformFunction } from "./types";
+
+export abstract class TransformableSVG {
+  round(x?: number) {
+    return this.transform(SVGPathDataTransformer.ROUND(x));
+  }
+
+  toAbs() {
+    return this.transform(SVGPathDataTransformer.TO_ABS());
+  }
+
+  toRel() {
+    return this.transform(SVGPathDataTransformer.TO_REL());
+  }
+
+  normalizeHVZ(a?: boolean, b?: boolean, c?: boolean) {
+    return this.transform(SVGPathDataTransformer.NORMALIZE_HVZ(a, b, c));
+  }
+
+  normalizeST() {
+    return this.transform(SVGPathDataTransformer.NORMALIZE_ST());
+  }
+
+  qtToC() {
+    return this.transform(SVGPathDataTransformer.QT_TO_C());
+  }
+
+  aToC() {
+    return this.transform(SVGPathDataTransformer.A_TO_C());
+  }
+
+  sanitize(eps?: number) {
+    return this.transform(SVGPathDataTransformer.SANITIZE(eps));
+  }
+
+  translate(x: number, y?: number) {
+    return this.transform(SVGPathDataTransformer.TRANSLATE(x, y));
+  }
+
+  scale(x: number, y?: number) {
+    return this.transform(SVGPathDataTransformer.SCALE(x, y));
+  }
+
+  rotate(a: number, x?: number, y?: number) {
+    return this.transform(SVGPathDataTransformer.ROTATE(a, x, y));
+  }
+
+  matrix(a: number, b: number, c: number, d: number, e: number, f: number) {
+    return this.transform(SVGPathDataTransformer.MATRIX(a, b, c, d, e, f));
+  }
+
+  skewX(a: number) {
+    return this.transform(SVGPathDataTransformer.SKEW_X(a));
+  }
+
+  skewY(a: number) {
+    return this.transform(SVGPathDataTransformer.SKEW_Y(a));
+  }
+
+  xSymmetry(xOffset?: number) {
+    return this.transform(SVGPathDataTransformer.X_AXIS_SYMMETRY(xOffset));
+  }
+
+  ySymmetry(yOffset?: number) {
+    return this.transform(SVGPathDataTransformer.Y_AXIS_SYMMETRY(yOffset));
+  }
+
+  annotateArcs() {
+    return this.transform(SVGPathDataTransformer.ANNOTATE_ARCS());
+  }
+
+  abstract transform(transformFunction: TransformFunction): this;
+}
diff --git a/node_modules/svg-pathdata/src/mathUtils.ts b/node_modules/svg-pathdata/src/mathUtils.ts
new file mode 100644
index 0000000..72b0621
--- /dev/null
+++ b/node_modules/svg-pathdata/src/mathUtils.ts
@@ -0,0 +1,200 @@
+import { SVGPathData } from "./SVGPathData";
+import { CommandA, CommandC } from "./types";
+
+export function rotate([x, y]: [number, number], rad: number) {
+  return [
+    x * Math.cos(rad) - y * Math.sin(rad),
+    x * Math.sin(rad) + y * Math.cos(rad),
+  ];
+}
+
+const DEBUG_CHECK_NUMBERS = true;
+export function assertNumbers(...numbers: number[]) {
+  if (DEBUG_CHECK_NUMBERS) {
+    for (let i = 0; i < numbers.length; i++) {
+      if ("number" !== typeof numbers[i]) {
+        throw new Error(
+          `assertNumbers arguments[${i}] is not a number. ${typeof numbers[i]} == typeof ${numbers[i]}`);
+      }
+    }
+  }
+  return true;
+}
+
+const PI = Math.PI;
+
+/**
+ * https://www.w3.org/TR/SVG/implnote.html#ArcImplementationNotes
+ * Fixes rX and rY.
+ * Ensures lArcFlag and sweepFlag are 0 or 1
+ * Adds center coordinates: command.cX, command.cY (relative or absolute, depending on command.relative)
+ * Adds start and end arc parameters (in degrees): command.phi1, command.phi2; phi1 < phi2 iff. c.sweepFlag == true
+ */
+export function annotateArcCommand(c: CommandA, x1: number, y1: number) {
+  c.lArcFlag = (0 === c.lArcFlag) ? 0 : 1;
+  c.sweepFlag = (0 === c.sweepFlag) ? 0 : 1;
+  // tslint:disable-next-line
+  let {rX, rY, x, y} = c;
+
+  rX = Math.abs(c.rX);
+  rY = Math.abs(c.rY);
+  const [x1_, y1_] = rotate([(x1 - x) / 2, (y1 - y) / 2], -c.xRot / 180 * PI);
+  const testValue = Math.pow(x1_, 2) / Math.pow(rX, 2) + Math.pow(y1_, 2) / Math.pow(rY, 2);
+
+  if (1 < testValue) {
+    rX *= Math.sqrt(testValue);
+    rY *= Math.sqrt(testValue);
+  }
+  c.rX = rX;
+  c.rY = rY;
+  const c_ScaleTemp = (Math.pow(rX, 2) * Math.pow(y1_, 2) + Math.pow(rY, 2) * Math.pow(x1_, 2));
+  const c_Scale = (c.lArcFlag !== c.sweepFlag ? 1 : -1) *
+    Math.sqrt(Math.max(0, (Math.pow(rX, 2) * Math.pow(rY, 2) - c_ScaleTemp) / c_ScaleTemp));
+  const cx_ = rX * y1_ / rY * c_Scale;
+  const cy_ = -rY * x1_ / rX * c_Scale;
+  const cRot = rotate([cx_, cy_], c.xRot / 180 * PI);
+
+  c.cX = cRot[0] + (x1 + x) / 2;
+  c.cY = cRot[1] + (y1 + y) / 2;
+  c.phi1 = Math.atan2((y1_ - cy_) / rY, (x1_ - cx_) / rX);
+  c.phi2 = Math.atan2((-y1_ - cy_) / rY, (-x1_ - cx_) / rX);
+  if (0 === c.sweepFlag && c.phi2 > c.phi1) {
+    c.phi2 -= 2 * PI;
+  }
+  if (1 === c.sweepFlag && c.phi2 < c.phi1) {
+    c.phi2 += 2 * PI;
+  }
+  c.phi1 *= 180 / PI;
+  c.phi2 *= 180 / PI;
+}
+
+/**
+ * Solves a quadratic system of equations of the form
+ *      a * x + b * y = c
+ *      x² + y² = 1
+ * This can be understood as the intersection of the unit circle with a line.
+ *      => y = (c - a x) / b
+ *      => x² + (c - a x)² / b² = 1
+ *      => x² b² + c² - 2 c a x + a² x² = b²
+ *      => (a² + b²) x² - 2 a c x + (c² - b²) = 0
+ */
+export function intersectionUnitCircleLine(a: number, b: number, c: number): [number, number][] {
+  assertNumbers(a, b, c);
+  // cf. pqFormula
+  const termSqr = a * a + b * b - c * c;
+
+  if (0 > termSqr) {
+    return [];
+  } else if (0 === termSqr) {
+    return [
+      [
+        (a * c) / (a * a + b * b),
+        (b * c) / (a * a + b * b)]];
+  }
+  const term = Math.sqrt(termSqr);
+
+  return [
+    [
+      (a * c + b * term) / (a * a + b * b),
+      (b * c - a * term) / (a * a + b * b)],
+    [
+      (a * c - b * term) / (a * a + b * b),
+      (b * c + a * term) / (a * a + b * b)]];
+
+}
+
+export const DEG = Math.PI / 180;
+
+export function lerp(a: number, b: number, t: number) {
+  return (1 - t) * a + t * b;
+}
+
+export function arcAt(c: number, x1: number, x2: number, phiDeg: number) {
+  return c + Math.cos(phiDeg / 180 * PI) * x1 + Math.sin(phiDeg / 180 * PI) * x2;
+}
+
+export function bezierRoot(x0: number, x1: number, x2: number, x3: number) {
+  const EPS = 1e-6;
+  const x01 = x1 - x0;
+  const x12 = x2 - x1;
+  const x23 = x3 - x2;
+  const a = 3 * x01 + 3 * x23 - 6 * x12;
+  const b = (x12 - x01) * 6;
+  const c = 3 * x01;
+  // solve a * t² + b * t + c = 0
+
+  if (Math.abs(a) < EPS) {
+    // equivalent to b * t + c =>
+    return [-c / b];
+  }
+  return pqFormula(b / a, c / a, EPS);
+
+}
+
+export function bezierAt(x0: number, x1: number, x2: number, x3: number, t: number) {
+  // console.log(x0, y0, x1, y1, x2, y2, x3, y3, t)
+  const s = 1 - t;
+  const c0 = s * s * s;
+  const c1 = 3 * s * s * t;
+  const c2 = 3 * s * t * t;
+  const c3 = t * t * t;
+
+  return x0 * c0 + x1 * c1 + x2 * c2 + x3 * c3;
+}
+
+function pqFormula(p: number, q: number, PRECISION = 1e-6) {
+  // 4 times the discriminant:in
+  const discriminantX4 = p * p / 4 - q;
+
+  if (discriminantX4 < -PRECISION) {
+    return [];
+  } else if (discriminantX4 <= PRECISION) {
+    return [-p / 2];
+  }
+  const root = Math.sqrt(discriminantX4);
+
+  return [-(p / 2) - root, -(p / 2) + root];
+
+}
+
+export function a2c(arc: CommandA, x0: number, y0: number): CommandC[] {
+  if (!arc.cX) {
+    annotateArcCommand(arc, x0, y0);
+  }
+
+  const phiMin = Math.min(arc.phi1!, arc.phi2!), phiMax = Math.max(arc.phi1!, arc.phi2!), deltaPhi = phiMax - phiMin;
+  const partCount = Math.ceil(deltaPhi / 90 );
+
+  const result: CommandC[] = new Array(partCount);
+  let prevX = x0, prevY = y0;
+  for (let i = 0; i < partCount; i++) {
+    const phiStart = lerp(arc.phi1!, arc.phi2!, i / partCount);
+    const phiEnd = lerp(arc.phi1!, arc.phi2!, (i + 1) / partCount);
+    const deltaPhi = phiEnd - phiStart;
+    const f = 4 / 3 * Math.tan(deltaPhi * DEG / 4);
+    // x1/y1, x2/y2 and x/y coordinates on the unit circle for phiStart/phiEnd
+    const [x1, y1] = [
+      Math.cos(phiStart * DEG) - f * Math.sin(phiStart * DEG),
+      Math.sin(phiStart * DEG) + f * Math.cos(phiStart * DEG)];
+    const [x, y] = [Math.cos(phiEnd * DEG), Math.sin(phiEnd * DEG)];
+    const [x2, y2] = [x + f * Math.sin(phiEnd * DEG), y - f * Math.cos(phiEnd * DEG)];
+    result[i] = {relative: arc.relative, type: SVGPathData.CURVE_TO } as any;
+    const transform = (x: number, y: number) => {
+      const [xTemp, yTemp] = rotate([x * arc.rX, y * arc.rY], arc.xRot);
+      return [arc.cX! + xTemp, arc.cY! + yTemp];
+    };
+    [result[i].x1, result[i].y1] = transform(x1, y1);
+    [result[i].x2, result[i].y2] = transform(x2, y2);
+    [result[i].x, result[i].y] = transform(x, y);
+    if (arc.relative) {
+      result[i].x1 -= prevX;
+      result[i].y1 -= prevY;
+      result[i].x2 -= prevX;
+      result[i].y2 -= prevY;
+      result[i].x -= prevX;
+      result[i].y -= prevY;
+    }
+    [prevX, prevY] = [result[i].x, result[i].y];
+  }
+  return result;
+}
diff --git a/node_modules/svg-pathdata/src/types.ts b/node_modules/svg-pathdata/src/types.ts
new file mode 100644
index 0000000..859a4a9
--- /dev/null
+++ b/node_modules/svg-pathdata/src/types.ts
@@ -0,0 +1,41 @@
+import { SVGPathData } from "./SVGPathData";
+
+export type CommandM = { relative: boolean, type: typeof SVGPathData.MOVE_TO, x: number, y: number };
+export type CommandL = { relative: boolean, type: typeof SVGPathData.LINE_TO, x: number, y: number };
+export type CommandH = { relative: boolean, type: typeof SVGPathData.HORIZ_LINE_TO, x: number };
+export type CommandV = { relative: boolean, type: typeof SVGPathData.VERT_LINE_TO, y: number };
+export type CommandZ = { type: typeof SVGPathData.CLOSE_PATH };
+export type CommandQ = {
+    relative: boolean;
+    type: typeof SVGPathData.QUAD_TO;
+    x1: number;
+    y1: number;
+    x: number;
+    y: number;
+};
+export type CommandT = { relative: boolean, type: typeof SVGPathData.SMOOTH_QUAD_TO, x: number, y: number };
+export type CommandC = {
+    relative: boolean,
+    type: typeof SVGPathData.CURVE_TO,
+    x1: number, y1: number,
+    x2: number, y2: number,
+    x: number, y: number };
+export type CommandS = {
+    relative: boolean;
+    type: typeof SVGPathData.SMOOTH_CURVE_TO;
+    x2: number;
+    y2: number;
+    x: number;
+    y: number;
+};
+export type CommandA = {
+    relative: boolean,
+    type: typeof SVGPathData.ARC,
+    rX: number, rY: number,
+    xRot: number, sweepFlag: 0 | 1, lArcFlag: 0 | 1,
+    x: number, y: number
+    cX?: number, cY?: number, phi1?: number, phi2?: number};
+export type SVGCommand = CommandM | CommandL | CommandH | CommandV | CommandZ | CommandQ |
+    CommandT | CommandC | CommandS | CommandA;
+
+export type TransformFunction = (input: SVGCommand) => SVGCommand | SVGCommand[];
diff --git a/node_modules/svg-pathdata/tsconfig.json b/node_modules/svg-pathdata/tsconfig.json
new file mode 100644
index 0000000..39cf311
--- /dev/null
+++ b/node_modules/svg-pathdata/tsconfig.json
@@ -0,0 +1,67 @@
+{
+  "compilerOptions": {
+    /* Basic Options */
+    "target": "es5",
+    /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', or 'ESNEXT'. */
+    "module": "ESNEXT",
+    /* Specify module code generation: 'none', commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
+    // "lib": [],                             /* Specify library files to be included in the compilation:  */
+    // "allowJs": true,                       /* Allow javascript files to be compiled. */
+    // "checkJs": true,                       /* Report errors in .js files. */
+    // "jsx": "preserve",                     /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
+    "declaration": true,
+    /* Generates corresponding '.d.ts' file. */
+    "sourceMap": true,
+    "sourceRoot": "./",
+    /* Generates corresponding '.map' file. */
+    // "outFile": "./",                       /* Concatenate and emit output to single file. */
+    "outDir": "./",
+    /* Redirect output structure to the directory. */
+    "rootDir": "./src",
+    /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
+    // "removeComments": true,                /* Do not emit comments to output. */
+    // "noEmit": true,                        /* Do not emit outputs. */
+    // "importHelpers": true,                 /* Import emit helpers from 'tslib'. */
+    // "downlevelIteration": true,            /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */
+    // "isolatedModules": true,               /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */
+
+    /* Strict Type-Checking Options */
+    "strict": true,
+    /* Enable all strict type-checking options. */
+    "noImplicitAny": true,
+    /* Raise error on expressions and declarations with an implied 'any' type. */
+    // "strictNullChecks": true,              /* Enable strict null checks. */
+    // "noImplicitThis": true,                /* Raise error on 'this' expressions with an implied 'any' type. */
+    "alwaysStrict": true
+    /* Parse in strict mode and emit "use strict" for each source file. */
+
+    /* Additional Checks */
+    // "noUnusedLocals": true,                /* Report errors on unused locals. */
+    // "noUnusedParameters": true,            /* Report errors on unused parameters. */
+    // "noImplicitReturns": true,             /* Report error when not all code paths in function return a value. */
+    // "noFallthroughCasesInSwitch": true,    /* Report errors for fallthrough cases in switch statement. */
+
+    /* Module Resolution Options */
+    // "moduleResolution": "node",            /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
+    // "baseUrl": "./",                       /* Base directory to resolve non-absolute module names. */
+    // "paths": {},                           /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
+    // "rootDirs": [],                        /* List of root folders whose combined content represents the structure of the project at runtime. */
+    // "typeRoots": [],                       /* List of folders to include type definitions from. */
+    // "types": [],                           /* Type declaration files to be included in compilation. */
+    // "allowSyntheticDefaultImports": true,  /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
+    // "preserveSymlinks": true,              /* Do not resolve the real path of symlinks. */
+
+    /* Source Map Options */
+    // "sourceRoot": "./",                    /* Specify the location where debugger should locate TypeScript files instead of source locations. */
+    // "mapRoot": "./",                       /* Specify the location where debugger should locate map files instead of generated locations. */
+    // "inlineSourceMap": true,               /* Emit a single file with source maps instead of having a separate file. */
+    // "inlineSources": true,                 /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
+
+    /* Experimental Options */
+    // "experimentalDecorators": true,        /* Enables experimental support for ES7 decorators. */
+    // "emitDecoratorMetadata": true,         /* Enables experimental support for emitting type metadata for decorators. */
+  },
+  "include": ["./src/**/*.ts"],
+  "exclude": ["./lib/**/*.*"]
+}
+
diff --git a/node_modules/svg-pathdata/tslint.json b/node_modules/svg-pathdata/tslint.json
new file mode 100644
index 0000000..9c4dd18
--- /dev/null
+++ b/node_modules/svg-pathdata/tslint.json
@@ -0,0 +1,19 @@
+{
+    "defaultSeverity": "error",
+    "extends": [
+        "tslint:recommended"
+    ],
+    "jsRules": {},
+    "rules": {
+      "no-shadowed-variable": false,
+      "one-variable-per-declaration": false,
+      "variable-name": ["allow-trailing-underscore", "allow-leading-underscore"],
+      "interface-over-type-literal": false,
+      "member-access": false,
+      "no-conditional-assignment": false,
+      "member-ordering": false,
+      "no-bitwise": false,
+      "object-literal-sort-keys": false
+    },
+    "rulesDirectory": []
+}
diff --git a/node_modules/text-segmentation/CHANGELOG.md b/node_modules/text-segmentation/CHANGELOG.md
new file mode 100644
index 0000000..ed7a0c2
--- /dev/null
+++ b/node_modules/text-segmentation/CHANGELOG.md
@@ -0,0 +1,43 @@
+# Changelog
+
+All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+
+## [1.0.3](https://github.com/niklasvh/text-segmentation/compare/v1.0.2...v1.0.3) (2022-01-22)
+
+
+### fix
+
+* source maps ([4108278](https://github.com/niklasvh/text-segmentation/commit/4108278c278b271543e9a997dbf14ce14e946fe7))
+
+
+
+## [1.0.2](https://github.com/niklasvh/text-segmentation/compare/v1.0.1...v1.0.2) (2021-08-10)
+
+
+### deps
+
+* update base64-arraybuffer ([3804223](https://github.com/niklasvh/text-segmentation/commit/3804223855fa4f37e8c784dca5ce5113c33d3e27))
+
+
+
+## [1.0.1](https://github.com/niklasvh/text-segmentation/compare/v1.0.0...v1.0.1) (2021-08-09)
+
+
+### docs
+
+* add readme ([c3f1dd3](https://github.com/niklasvh/text-segmentation/commit/c3f1dd31ef4880ad7b8ecab5155f7362d4d652d3))
+
+### feat
+
+* expose fromCodePoint / toCodePoints ([a497aeb](https://github.com/niklasvh/text-segmentation/commit/a497aeb75255fec597b8c4b0803e3b57d6a06a25))
+
+
+
+# 1.0.0 (2021-08-09)
+
+
+### feat
+
+* add grapheme breaker trie ([0e5a06b](https://github.com/niklasvh/text-segmentation/commit/0e5a06b4ab7f1eef9cf7b01fc47bdb270c5704c0))
+* implement grapheme breaker ([7e065b5](https://github.com/niklasvh/text-segmentation/commit/7e065b5b2484d2dcd06efc487d938289c197fee0))
+* implement splitter ([8a52b31](https://github.com/niklasvh/text-segmentation/commit/8a52b318368ea994b245daf4ac056319ee697f24))
diff --git a/node_modules/text-segmentation/LICENSE b/node_modules/text-segmentation/LICENSE
new file mode 100644
index 0000000..5baaf86
--- /dev/null
+++ b/node_modules/text-segmentation/LICENSE
@@ -0,0 +1,22 @@
+Copyright (c) 2021 Niklas von Hertzen
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/node_modules/text-segmentation/README.md b/node_modules/text-segmentation/README.md
new file mode 100644
index 0000000..ea7d4c6
--- /dev/null
+++ b/node_modules/text-segmentation/README.md
@@ -0,0 +1,27 @@
+text-segmentation
+==============
+
+![CI](https://github.com/niklasvh/text-segmentation/workflows/CI/badge.svg?branch=main)
+[![NPM Downloads](https://img.shields.io/npm/dm/text-segmentation.svg)](https://www.npmjs.org/package/text-segmentation)
+[![NPM Version](https://img.shields.io/npm/v/text-segmentation.svg)](https://www.npmjs.org/package/text-segmentation)
+
+A JavaScript library for Grapheme Breaking and identifying Grapheme Boundaries, [implementing the Unicode Line Breaking Algorithm (UAX #29)](https://unicode.org/reports/tr29/)
+
+### Installing
+You can install the module via npm:
+
+    npm install text-segmentation
+  
+### Example
+```javascript
+import {splitGraphemes} from 'text-segmentation';
+
+const graphemes =  splitGraphemes('Hello 👨‍👩‍👧‍👦!');
+```    
+
+### Testing
+You can run the test suite with:
+
+    npm test
+
+The library implements all the [GraphemeBreakTest.txt tests](https://www.unicode.org/Public/13.0.0/ucd/auxiliary/GraphemeBreakTest.txt).
diff --git a/node_modules/text-segmentation/package.json b/node_modules/text-segmentation/package.json
new file mode 100644
index 0000000..591a3af
--- /dev/null
+++ b/node_modules/text-segmentation/package.json
@@ -0,0 +1,55 @@
+{
+  "name": "text-segmentation",
+  "version": "1.0.3",
+  "description": "",
+  "main": "dist/text-segmentation.umd.js",
+  "module": "dist/text-segmentation.es5.js",
+  "typings": "dist/types/index.d.ts",
+  "scripts": {
+    "prebuild": "rimraf dist/",
+    "build": "tsc --module commonjs && rollup -c rollup.config.ts",
+    "format": "prettier --write \"{src,scripts}/**/*.ts\"",
+    "generate-trie": "ts-node scripts/generate_grapheme_break_trie.ts",
+    "generate-tests": "ts-node scripts/generate_grapheme_break_tests.ts",
+    "lint": "tslint -c tslint.json --project tsconfig.json -t codeFrame src/**/*.ts tests/**/*.ts scripts/**/*.ts",
+    "mocha": "mocha --require ts-node/register tests/*.ts",
+    "test": "npm run lint && npm run mocha",
+    "release": "standard-version"
+  },
+  "dependencies": {
+    "utrie": "^1.0.2"
+  },
+  "devDependencies": {
+    "@rollup/plugin-commonjs": "^19.0.0",
+    "@rollup/plugin-node-resolve": "^13.0.0",
+    "@rollup/plugin-typescript": "^8.2.1",
+    "@types/mocha": "^8.2.2",
+    "@types/node": "^16.0.0",
+    "mocha": "9.0.2",
+    "prettier": "^2.3.2",
+    "rimraf": "3.0.2",
+    "rollup": "^2.52.7",
+    "rollup-plugin-json": "^4.0.0",
+    "rollup-plugin-sourcemaps": "^0.6.3",
+    "standard-version": "^9.3.0",
+    "ts-node": "^10.0.0",
+    "tslib": "^2.3.0",
+    "tslint": "^6.1.3",
+    "tslint-config-prettier": "^1.18.0",
+    "typescript": "^4.3.5"
+  },
+  "author": {
+    "name": "Niklas von Hertzen",
+    "email": "niklasvh@gmail.com",
+    "url": "https://hertzen.com"
+  },
+  "license": "MIT",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/niklasvh/text-segmentation.git"
+  },
+  "bugs": {
+    "url": "https://github.com/niklasvh/text-segmentation/issues"
+  },
+  "homepage": "https://github.com/niklasvh/text-segmentation"
+}
diff --git a/node_modules/text-segmentation/rollup.config.ts b/node_modules/text-segmentation/rollup.config.ts
new file mode 100644
index 0000000..652fe03
--- /dev/null
+++ b/node_modules/text-segmentation/rollup.config.ts
@@ -0,0 +1,40 @@
+import resolve from '@rollup/plugin-node-resolve';
+import commonjs from '@rollup/plugin-commonjs';
+import sourceMaps from 'rollup-plugin-sourcemaps';
+import typescript from '@rollup/plugin-typescript';
+import json from 'rollup-plugin-json';
+
+const pkg = require('./package.json');
+
+const banner = `/*
+ * ${pkg.name} ${pkg.version} <${pkg.homepage}>
+ * Copyright (c) ${(new Date()).getFullYear()} ${pkg.author.name} <${pkg.author.url}>
+ * Released under ${pkg.license} License
+ */`;
+
+export default {
+    input: `src/index.ts`,
+    output: [
+        { file: pkg.main, name: pkg.name, format: 'umd', banner, sourcemap: true },
+        { file: pkg.module, format: 'esm', banner, sourcemap: true },
+    ],
+    external: [],
+    watch: {
+        include: 'src/**',
+    },
+    plugins: [
+        // Allow node_modules resolution, so you can use 'external' to control
+        // which external modules to include in the bundle
+        // https://github.com/rollup/rollup-plugin-node-resolve#usage
+        resolve(),
+        // Allow json resolution
+        json(),
+        // Compile TypeScript files
+        typescript({ sourceMap: true, inlineSources: true }),
+        // Allow bundling cjs modules (unlike webpack, rollup doesn't understand cjs)
+        commonjs(),
+
+        // Resolve source maps to the original source
+        sourceMaps(),
+    ],
+}
diff --git a/node_modules/utrie/CHANGELOG.md b/node_modules/utrie/CHANGELOG.md
new file mode 100644
index 0000000..c3396ca
--- /dev/null
+++ b/node_modules/utrie/CHANGELOG.md
@@ -0,0 +1,32 @@
+# Changelog
+
+All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+
+## [1.0.2](https://github.com/niklasvh/utrie/compare/v1.0.1...v1.0.2) (2022-01-22)
+
+
+### fix
+
+* sourcemaps ([1e6e126](https://github.com/niklasvh/utrie/commit/1e6e12671fa187b5fbaca893460f114b085ce054))
+
+
+
+## [1.0.1](https://github.com/niklasvh/utrie/compare/v1.0.0...v1.0.1) (2021-08-10)
+
+
+### deps
+
+* update base64-arraybuffer ([6a731a7](https://github.com/niklasvh/utrie/commit/6a731a77d34165905f7d91adc6fa3f4bb8a317d2))
+
+
+
+# 1.0.0 (2021-08-09)
+
+
+### deps
+
+* add tslib ([3aaa8b1](https://github.com/niklasvh/utrie/commit/3aaa8b181e4eede4b55e50b0145e4bffb1366f82))
+
+### fix
+
+* main branch ([54e8310](https://github.com/niklasvh/utrie/commit/54e83101d7443e8b0e5761c7985ec94ee8ad1f6d))
diff --git a/node_modules/utrie/LICENSE b/node_modules/utrie/LICENSE
new file mode 100644
index 0000000..5baaf86
--- /dev/null
+++ b/node_modules/utrie/LICENSE
@@ -0,0 +1,22 @@
+Copyright (c) 2021 Niklas von Hertzen
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/node_modules/utrie/package.json b/node_modules/utrie/package.json
new file mode 100644
index 0000000..efa9f2a
--- /dev/null
+++ b/node_modules/utrie/package.json
@@ -0,0 +1,53 @@
+{
+  "name": "utrie",
+  "version": "1.0.2",
+  "description": "Unicode Trie",
+  "main": "dist/utrie.umd.js",
+  "module": "dist/utrie.es5.js",
+  "typings": "dist/types/index.d.ts",
+  "scripts": {
+    "prebuild": "rimraf dist/",
+    "build": "tsc --module commonjs && rollup -c rollup.config.ts",
+    "format": "prettier --write \"{src,scripts}/**/*.ts\"",
+    "lint": "tslint -c tslint.json --project tsconfig.json -t codeFrame src/**/*.ts tests/**/*.ts scripts/**/*.ts",
+    "mocha": "mocha --require ts-node/register tests/*.ts",
+    "test": "npm run lint && npm run mocha",
+    "release": "standard-version"
+  },
+  "dependencies": {
+    "base64-arraybuffer": "^1.0.2"
+  },
+  "devDependencies": {
+    "@rollup/plugin-commonjs": "^19.0.0",
+    "@rollup/plugin-node-resolve": "^13.0.0",
+    "@rollup/plugin-typescript": "^8.2.1",
+    "@types/mocha": "^8.2.2",
+    "@types/node": "^16.0.0",
+    "mocha": "9.0.2",
+    "prettier": "^2.3.2",
+    "rimraf": "3.0.2",
+    "rollup": "^2.52.7",
+    "rollup-plugin-json": "^4.0.0",
+    "rollup-plugin-sourcemaps": "^0.6.3",
+    "standard-version": "^9.3.0",
+    "ts-node": "^10.0.0",
+    "tslib": "^2.3.0",
+    "tslint": "^6.1.3",
+    "tslint-config-prettier": "^1.18.0",
+    "typescript": "^4.3.5"
+  },
+  "author": {
+    "name": "Niklas von Hertzen",
+    "email": "niklasvh@gmail.com",
+    "url": "https://hertzen.com"
+  },
+  "license": "MIT",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/niklasvh/utrie.git"
+  },
+  "bugs": {
+    "url": "https://github.com/niklasvh/utrie/issues"
+  },
+  "homepage": "https://github.com/niklasvh/utrie"
+}
diff --git a/node_modules/utrie/rollup.config.ts b/node_modules/utrie/rollup.config.ts
new file mode 100644
index 0000000..652fe03
--- /dev/null
+++ b/node_modules/utrie/rollup.config.ts
@@ -0,0 +1,40 @@
+import resolve from '@rollup/plugin-node-resolve';
+import commonjs from '@rollup/plugin-commonjs';
+import sourceMaps from 'rollup-plugin-sourcemaps';
+import typescript from '@rollup/plugin-typescript';
+import json from 'rollup-plugin-json';
+
+const pkg = require('./package.json');
+
+const banner = `/*
+ * ${pkg.name} ${pkg.version} <${pkg.homepage}>
+ * Copyright (c) ${(new Date()).getFullYear()} ${pkg.author.name} <${pkg.author.url}>
+ * Released under ${pkg.license} License
+ */`;
+
+export default {
+    input: `src/index.ts`,
+    output: [
+        { file: pkg.main, name: pkg.name, format: 'umd', banner, sourcemap: true },
+        { file: pkg.module, format: 'esm', banner, sourcemap: true },
+    ],
+    external: [],
+    watch: {
+        include: 'src/**',
+    },
+    plugins: [
+        // Allow node_modules resolution, so you can use 'external' to control
+        // which external modules to include in the bundle
+        // https://github.com/rollup/rollup-plugin-node-resolve#usage
+        resolve(),
+        // Allow json resolution
+        json(),
+        // Compile TypeScript files
+        typescript({ sourceMap: true, inlineSources: true }),
+        // Allow bundling cjs modules (unlike webpack, rollup doesn't understand cjs)
+        commonjs(),
+
+        // Resolve source maps to the original source
+        sourceMaps(),
+    ],
+}
diff --git a/package-lock.json b/package-lock.json
index 760fe28..37ae9a4 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5,7 +5,20 @@
   "packages": {
     "": {
       "dependencies": {
-        "@supabase/supabase-js": "^2.49.1"
+        "@supabase/supabase-js": "^2.49.1",
+        "html2canvas": "^1.4.1",
+        "jspdf": "^3.0.0"
+      }
+    },
+    "node_modules/@babel/runtime": {
+      "version": "7.26.9",
+      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.9.tgz",
+      "integrity": "sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==",
+      "dependencies": {
+        "regenerator-runtime": "^0.14.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
       }
     },
     "node_modules/@supabase/auth-js": {
@@ -88,6 +101,18 @@
       "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.6.tgz",
       "integrity": "sha512-PIzZZlEppgrpoT2QgbnDU+MMzuR6BbCjllj0bM70lWoejMeNJAxCchxnv7J3XFkI8MpygtRpzXrIlmWUBclP5A=="
     },
+    "node_modules/@types/raf": {
+      "version": "3.4.3",
+      "resolved": "https://registry.npmjs.org/@types/raf/-/raf-3.4.3.tgz",
+      "integrity": "sha512-c4YAvMedbPZ5tEyxzQdMoOhhJ4RD3rngZIdwC2/qDN3d7JpEhB6fiBRKVY1lg5B7Wk+uPBjn5f39j1/2MY1oOw==",
+      "optional": true
+    },
+    "node_modules/@types/trusted-types": {
+      "version": "2.0.7",
+      "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
+      "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
+      "optional": true
+    },
     "node_modules/@types/ws": {
       "version": "8.5.14",
       "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.14.tgz",
@@ -96,6 +121,178 @@
         "@types/node": "*"
       }
     },
+    "node_modules/atob": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+      "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+      "bin": {
+        "atob": "bin/atob.js"
+      },
+      "engines": {
+        "node": ">= 4.5.0"
+      }
+    },
+    "node_modules/base64-arraybuffer": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
+      "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==",
+      "engines": {
+        "node": ">= 0.6.0"
+      }
+    },
+    "node_modules/btoa": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz",
+      "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==",
+      "bin": {
+        "btoa": "bin/btoa.js"
+      },
+      "engines": {
+        "node": ">= 0.4.0"
+      }
+    },
+    "node_modules/canvg": {
+      "version": "3.0.10",
+      "resolved": "https://registry.npmjs.org/canvg/-/canvg-3.0.10.tgz",
+      "integrity": "sha512-qwR2FRNO9NlzTeKIPIKpnTY6fqwuYSequ8Ru8c0YkYU7U0oW+hLUvWadLvAu1Rl72OMNiFhoLu4f8eUjQ7l/+Q==",
+      "optional": true,
+      "dependencies": {
+        "@babel/runtime": "^7.12.5",
+        "@types/raf": "^3.4.0",
+        "core-js": "^3.8.3",
+        "raf": "^3.4.1",
+        "regenerator-runtime": "^0.13.7",
+        "rgbcolor": "^1.0.1",
+        "stackblur-canvas": "^2.0.0",
+        "svg-pathdata": "^6.0.3"
+      },
+      "engines": {
+        "node": ">=10.0.0"
+      }
+    },
+    "node_modules/canvg/node_modules/regenerator-runtime": {
+      "version": "0.13.11",
+      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
+      "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==",
+      "optional": true
+    },
+    "node_modules/core-js": {
+      "version": "3.41.0",
+      "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.41.0.tgz",
+      "integrity": "sha512-SJ4/EHwS36QMJd6h/Rg+GyR4A5xE0FSI3eZ+iBVpfqf1x0eTSg1smWLHrA+2jQThZSh97fmSgFSU8B61nxosxA==",
+      "hasInstallScript": true,
+      "optional": true,
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/core-js"
+      }
+    },
+    "node_modules/css-line-break": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz",
+      "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==",
+      "dependencies": {
+        "utrie": "^1.0.2"
+      }
+    },
+    "node_modules/dompurify": {
+      "version": "3.2.4",
+      "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.4.tgz",
+      "integrity": "sha512-ysFSFEDVduQpyhzAob/kkuJjf5zWkZD8/A9ywSp1byueyuCfHamrCBa14/Oc2iiB0e51B+NpxSl5gmzn+Ms/mg==",
+      "optional": true,
+      "optionalDependencies": {
+        "@types/trusted-types": "^2.0.7"
+      }
+    },
+    "node_modules/fflate": {
+      "version": "0.8.2",
+      "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz",
+      "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A=="
+    },
+    "node_modules/html2canvas": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz",
+      "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==",
+      "dependencies": {
+        "css-line-break": "^2.1.0",
+        "text-segmentation": "^1.0.3"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/jspdf": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/jspdf/-/jspdf-3.0.0.tgz",
+      "integrity": "sha512-QvuQZvOI8CjfjVgtajdL0ihrDYif1cN5gXiF9lb9Pd9JOpmocvnNyFO9sdiJ/8RA5Bu8zyGOUjJLj5kiku16ug==",
+      "dependencies": {
+        "@babel/runtime": "^7.26.0",
+        "atob": "^2.1.2",
+        "btoa": "^1.2.1",
+        "fflate": "^0.8.1"
+      },
+      "optionalDependencies": {
+        "canvg": "^3.0.6",
+        "core-js": "^3.6.0",
+        "dompurify": "^3.2.4",
+        "html2canvas": "^1.0.0-rc.5"
+      }
+    },
+    "node_modules/performance-now": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+      "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==",
+      "optional": true
+    },
+    "node_modules/raf": {
+      "version": "3.4.1",
+      "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
+      "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
+      "optional": true,
+      "dependencies": {
+        "performance-now": "^2.1.0"
+      }
+    },
+    "node_modules/regenerator-runtime": {
+      "version": "0.14.1",
+      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+      "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
+    },
+    "node_modules/rgbcolor": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/rgbcolor/-/rgbcolor-1.0.1.tgz",
+      "integrity": "sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==",
+      "optional": true,
+      "engines": {
+        "node": ">= 0.8.15"
+      }
+    },
+    "node_modules/stackblur-canvas": {
+      "version": "2.7.0",
+      "resolved": "https://registry.npmjs.org/stackblur-canvas/-/stackblur-canvas-2.7.0.tgz",
+      "integrity": "sha512-yf7OENo23AGJhBriGx0QivY5JP6Y1HbrrDI6WLt6C5auYZXlQrheoY8hD4ibekFKz1HOfE48Ww8kMWMnJD/zcQ==",
+      "optional": true,
+      "engines": {
+        "node": ">=0.1.14"
+      }
+    },
+    "node_modules/svg-pathdata": {
+      "version": "6.0.3",
+      "resolved": "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-6.0.3.tgz",
+      "integrity": "sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==",
+      "optional": true,
+      "engines": {
+        "node": ">=12.0.0"
+      }
+    },
+    "node_modules/text-segmentation": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz",
+      "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==",
+      "dependencies": {
+        "utrie": "^1.0.2"
+      }
+    },
     "node_modules/tr46": {
       "version": "0.0.3",
       "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
@@ -106,6 +303,14 @@
       "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz",
       "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="
     },
+    "node_modules/utrie": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/utrie/-/utrie-1.0.2.tgz",
+      "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==",
+      "dependencies": {
+        "base64-arraybuffer": "^1.0.2"
+      }
+    },
     "node_modules/webidl-conversions": {
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
diff --git a/package.json b/package.json
index 9b6d9a4..b78eca1 100644
--- a/package.json
+++ b/package.json
@@ -1,5 +1,7 @@
 {
   "dependencies": {
-    "@supabase/supabase-js": "^2.49.1"
+    "@supabase/supabase-js": "^2.49.1",
+    "html2canvas": "^1.4.1",
+    "jspdf": "^3.0.0"
   }
 }
diff --git a/ventaboletos/public/search.jpg b/ventaboletos/public/search.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..d3bfeb56677376e05cdd8930ec5b25684435a067
GIT binary patch
literal 1249
zcmex=<NpH&0WUXCHwH#V1_nkTWcdGx@rI|fb9_LMzniCzD@5W10}!wnFfioil@tZJ
zJ1Im&Mk%mAfan0pB_<aafM^^5XzsUbAk!HbF6-h@gHM<<CAByisNe$-s}un(2Rc>+
z$QDV5ur)yJBnaCE#4ax>C;_So0I`cgf}DZu6d+q89f_TU#7-_K0;%r-s<Fw<DFxXD
z0w5Rjq~?VN18EK*mSHGn2x4$&a02-s$OnS_MGOoUUl|yfCm_U<W->5rZ)ISRxP=f?
zS-`-+-@?GK?L0yZ5hewRMTubJSb!u`S{ehxr{xR`ypaqH!WS4AxT3*wKmv!`6o67P
zKzHQ>VLC$&Ln?y;gC|2CLo$ONkY&VRz+lK=_Ww46GXpad2!KdtAYfr*0Rav+HdZ!H
z4lXWE4o*%k9)2D!Za!{KPF_J?K7IiKK>;ovAz>i_VIW%oWC$ZjCo>BNP@@1hCpS=(
zMDYIrgCGZk6oV8qqY?v?AS1IN<NqTJ(!lU$VTSn>M02pPv2!voG6N;G1sIq>_A)cG
zGD4IvGBLBTva@jrG6*Sh8aj$98wrajIRz#H6^npUGb#Xy3Sx@hV&GwB1Ui9Pkinjz
zE_Qw8;w$_{ujf=QD5^azo0wA?|E247?+nrP`>(G|IJK#Xqkn4haodGFsZ+cAuI&1q
za<e*XR?u#Px8a3S&$jLMcDNq(*KkFaYpm+6d8+T{S}Sw(R5MR#<(5w^&68edEq`KG
zcGk~o?YGXxcQe17J+?X2cZJE*W6u?uX1(>dT9bWS`@_PSO05%w|8#ropESWU_v*Xt
zLJ2;BwY%d=a~Ey;8J;(f+jJ7wil-~rttio&pX;fla727U-v!3+Dw^zmH$E@jT=>J?
zH+6Td)P>V!jgQwY3V$cEb)sco#z8x;?<=+ZC#_lje5Loo^vl-Lafa(Inyl6RQ8zdD
zSJv#$j(1NsS>AuE`JX}JSjUm-rX%tSUxG^n>xypM3E#<G#T^%Y;mh{&#m~Q$o_Nce
zs&Dtm^0DHf$xjxldNNO_c%^#m-ppvXW7A)Jl{IT!v;W$GGgtmI#I4KPk(m6(#YQK`
z{a|U5jo=gJi=o#_MCVF9Iq!95PId3)@Z9|oG4}dKS0c3JpZwu;kpGzO`fuGnomm%4
z7wo&WVtv`pGgrd7DqgKzqH*%RNSCDa)`r9r3LhMlpOo%iy6kGr!bvx)wgts#Jk>hy
dAIf!FSTy03*9L_Tr`Fh1D9HCsEs_6!699OfQr!Rm

literal 0
HcmV?d00001

diff --git a/ventaboletos/src/components/vistas/Reporte.jsx b/ventaboletos/src/components/vistas/Reporte.jsx
index 3a385bb..7d2ccf3 100644
--- a/ventaboletos/src/components/vistas/Reporte.jsx
+++ b/ventaboletos/src/components/vistas/Reporte.jsx
@@ -1,9 +1,13 @@
-import React, { useState } from "react";
+import React, { useState, useRef } from "react";
 import { Tabs, TabsList, TabsTrigger, TabsContent } from "@/components/ui/tabs";
 import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
 import { BarChart, Bar, XAxis, YAxis, Tooltip, ResponsiveContainer } from "recharts";
+import jsPDF from "jspdf";
+import html2canvas from "html2canvas";
 
 const Reporte = () => {
+  const chartRef = useRef(null); // Referencia para capturar la gráfica
+
   // Datos simulados de ventas
   const ventasDiarias = [
     { fecha: "2025-03-01", boletos: 20 },
@@ -23,7 +27,6 @@ const Reporte = () => {
     { mes: "Marzo", boletos: 700 },
   ];
 
-  // Estado para manejar la pestaña seleccionada
   const [selectedTab, setSelectedTab] = useState("diario");
 
   // Obtener datos según la pestaña activa
@@ -40,9 +43,28 @@ const Reporte = () => {
     }
   };
 
-  // Calcular el total de boletos vendidos según la pestaña activa
+  // Calcular el total de boletos vendidos
   const totalBoletos = getData().reduce((acc, item) => acc + item.boletos, 0);
 
+  // Función para generar y descargar el PDF
+  const generarPDF = async () => {
+    const pdf = new jsPDF();
+    pdf.setFontSize(18);
+    pdf.text("Reporte de Ventas", 10, 10);
+    pdf.setFontSize(14);
+    pdf.text(`Tipo de Reporte: ${selectedTab.toUpperCase()}`, 10, 20);
+    pdf.text(`Total de Boletos Vendidos: ${totalBoletos}`, 10, 30);
+
+    // Capturar la gráfica como imagen
+    if (chartRef.current) {
+      const canvas = await html2canvas(chartRef.current);
+      const imgData = canvas.toDataURL("image/png");
+      pdf.addImage(imgData, "PNG", 10, 40, 180, 90);
+    }
+
+    pdf.save(`reporte_${selectedTab}.pdf`);
+  };
+
   return (
     <div className="w-full max-w-3xl mx-auto p-4">
       <h2 className="text-2xl font-bold mb-4">Reporte de Ventas</h2>
@@ -51,7 +73,12 @@ const Reporte = () => {
           <TabsTrigger value="diario">Diario</TabsTrigger>
           <TabsTrigger value="semanal">Semanal</TabsTrigger>
           <TabsTrigger value="mensual">Mensual</TabsTrigger>
-          <img src="/pdf.svg" alt="pdf" className="h-7 w-7" />
+          <img
+            src="/pdf.svg"
+            alt="pdf"
+            className="h-7 w-7 cursor-pointer"
+            onClick={generarPDF}
+          />
         </TabsList>
 
         <Card>
@@ -60,7 +87,7 @@ const Reporte = () => {
               Total de Boletos Vendidos: <span className="text-blue-600">{totalBoletos}</span>
             </CardTitle>
           </CardHeader>
-          <CardContent>
+          <CardContent ref={chartRef}>
             <ResponsiveContainer width="100%" height={300}>
               <BarChart data={getData()}>
                 <XAxis dataKey={selectedTab === "diario" ? "fecha" : selectedTab === "semanal" ? "semana" : "mes"} />
diff --git a/ventaboletos/src/pages/index.js b/ventaboletos/src/pages/index.js
index ceed7ec..b1b4bb1 100644
--- a/ventaboletos/src/pages/index.js
+++ b/ventaboletos/src/pages/index.js
@@ -11,6 +11,7 @@ import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
 import Informacion from "@/components/vistas/Informacion";
 import Reporte from "@/components/vistas/Reporte";
 import Link from "next/link";
+import { Input } from "@/components/ui/input";
 
 export default function ConcertList() {
   return (
@@ -33,6 +34,12 @@ export default function ConcertList() {
                 <CardDescription></CardDescription>
               </CardHeader>
               <CardContent className="space-y-2">
+                <div className="w-full flex items-end">
+                  <div className="flex">
+                  <Input placeholder="Búsqueda por nombre" className="w-60"></Input>
+                  <img src="/search.jpg" alt="search" className="h-7 w-7"/>
+                  </div>
+                </div>
                 <Informacion />
               </CardContent>
               <CardFooter></CardFooter>